Changeset 14205 for NEMO/trunk/src/OCE/DYN/sshwzv.F90
- Timestamp:
- 2020-12-17T19:23:48+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/DYN/sshwzv.F90
r14139 r14205 261 261 262 262 263 SUBROUTINE ssh_atf( kt, Kbb, Kmm, Kaa, pssh , pssh_f)263 SUBROUTINE ssh_atf( kt, Kbb, Kmm, Kaa, pssh ) 264 264 !!---------------------------------------------------------------------- 265 265 !! *** ROUTINE ssh_atf *** … … 278 278 INTEGER , INTENT(in ) :: kt ! ocean time-step index 279 279 INTEGER , INTENT(in ) :: Kbb, Kmm, Kaa ! ocean time level indices 280 REAL(wp), DIMENSION(jpi,jpj,jpt) , TARGET, INTENT(inout) :: pssh ! SSH field 281 REAL(wp), DIMENSION(jpi,jpj ), OPTIONAL, TARGET, INTENT( out) :: pssh_f ! filtered SSH field 280 REAL(wp), DIMENSION(jpi,jpj,jpt), INTENT(inout) :: pssh ! SSH field 282 281 ! 283 282 REAL(wp) :: zcoef ! local scalar 284 REAL(wp), POINTER, DIMENSION(:,:) :: zssh ! pointer for filtered SSH285 283 !!---------------------------------------------------------------------- 286 284 ! … … 292 290 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 293 291 ENDIF 294 ! !== Euler time-stepping: no filter, just swap ==! 295 IF ( .NOT.( l_1st_euler ) ) THEN ! Only do time filtering for leapfrog timesteps 296 IF( PRESENT( pssh_f ) ) THEN ; zssh => pssh_f 297 ELSE ; zssh => pssh(:,:,Kmm) 298 ENDIF 299 ! ! filtered "now" field 300 pssh(:,:,Kmm) = pssh(:,:,Kmm) + rn_atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 292 ! 293 IF( .NOT.l_1st_euler ) THEN ! Apply Asselin time filter on Kmm field (not on euler 1st) 301 294 ! 302 IF( .NOT.ln_linssh ) THEN ! "now" <-- with forcing removed 295 IF( ln_linssh ) THEN ! filtered "now" field 296 pssh(:,:,Kmm) = pssh(:,:,Kmm) + rn_atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 297 ! 298 ELSE ! filtered "now" field with forcing removed 303 299 zcoef = rn_atfp * rn_Dt * r1_rho0 304 pssh(:,:,Kmm) = pssh(:,:,Kmm) - zcoef * ( emp_b(:,:) - emp (:,:) & 305 & - rnf_b(:,:) + rnf (:,:) & 306 & + fwfisf_cav_b(:,:) - fwfisf_cav(:,:) & 307 & + fwfisf_par_b(:,:) - fwfisf_par(:,:) ) * ssmask(:,:) 300 pssh(:,:,Kmm) = pssh(:,:,Kmm) + rn_atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) ) & 301 & - zcoef * ( emp_b(:,:) - emp(:,:) & 302 & - rnf_b(:,:) + rnf(:,:) & 303 & + fwfisf_cav_b(:,:) - fwfisf_cav(:,:) & 304 & + fwfisf_par_b(:,:) - fwfisf_par(:,:) ) * ssmask(:,:) 308 305 309 306 ! ice sheet coupling 310 307 IF( ln_isf .AND. ln_isfcpl .AND. kt == nit000+1 ) & 311 & pssh(:,:,Kbb) = pssh(:,:,Kbb) - rn_atfp * rn_Dt * ( risfcpl_ssh(:,:) - 0. 0) * ssmask(:,:)308 & pssh(:,:,Kbb) = pssh(:,:,Kbb) - rn_atfp * rn_Dt * ( risfcpl_ssh(:,:) - 0._wp ) * ssmask(:,:) 312 309 313 310 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.