- Timestamp:
- 2020-04-08T21:37:59+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev _r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF5 ^/vendors/AGRIF/dev@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/sshwzv.F90
r12680 r12724 77 77 REAL(wp), DIMENSION(jpi,jpj,jpt), INTENT(inout) :: pssh ! sea-surface height 78 78 ! 79 INTEGER :: jk ! dummy loop indice80 REAL(wp) :: z 2dt, zcoef ! local scalars79 INTEGER :: jk ! dummy loop index 80 REAL(wp) :: zcoef ! local scalar 81 81 REAL(wp), DIMENSION(jpi,jpj) :: zhdiv ! 2D workspace 82 82 !!---------------------------------------------------------------------- … … 90 90 ENDIF 91 91 ! 92 z2dt = 2._wp * rdt ! set time step size (Euler/Leapfrog) 93 IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt 94 zcoef = 0.5_wp * r1_rau0 92 zcoef = 0.5_wp * r1_rho0 95 93 96 94 ! !------------------------------! … … 98 96 ! !------------------------------! 99 97 IF(ln_wd_il) THEN 100 CALL wad_lmt(pssh(:,:,Kbb), zcoef * (emp_b(:,:) + emp(:,:)), z2dt, Kmm, uu, vv )98 CALL wad_lmt(pssh(:,:,Kbb), zcoef * (emp_b(:,:) + emp(:,:)), rDt, Kmm, uu, vv ) 101 99 ENDIF 102 100 … … 111 109 ! compute the vertical velocity which can be used to compute the non-linear terms of the momentum equations. 112 110 ! 113 pssh(:,:,Kaa) = ( pssh(:,:,Kbb) - z2dt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) ) ) * ssmask(:,:)111 pssh(:,:,Kaa) = ( pssh(:,:,Kbb) - rDt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) ) ) * ssmask(:,:) 114 112 ! 115 113 #if defined key_agrif … … 155 153 ! 156 154 INTEGER :: ji, jj, jk ! dummy loop indices 157 REAL(wp) :: z1_2dt ! local scalars158 155 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zhdiv 159 156 !!---------------------------------------------------------------------- … … 168 165 pww(:,:,jpk) = 0._wp ! bottom boundary condition: w=0 (set once for all) 169 166 ENDIF 170 ! 171 z1_2dt = 1. / ( 2. * rdt ) ! set time step size (Euler/Leapfrog)172 IF( neuler == 0 .AND. kt == nit000 ) z1_2dt = 1. / rdt167 ! !------------------------------! 168 ! ! Now Vertical Velocity ! 169 ! !------------------------------! 173 170 ! 174 171 ! !===============================! … … 191 188 pww(:,:,jk) = pww(:,:,jk+1) - ( e3t(:,:,jk,Kmm) * hdiv(:,:,jk) & 192 189 & + zhdiv(:,:,jk) & 193 & + z1_2dt * (e3t(:,:,jk,Kaa) &190 & + r1_Dt * ( e3t(:,:,jk,Kaa) & 194 191 & - e3t(:,:,jk,Kbb) ) ) * tmask(:,:,jk) 195 192 END DO … … 206 203 ! !==========================================! 207 204 DO jk = jpkm1, 1, -1 ! integrate from the bottom the hor. divergence 208 pww(:,:,jk) = pww(:,:,jk+1) - ( e3t(:,:,jk,Kmm) * hdiv(:,:,jk) &209 & + z1_2dt * ( e3t(:,:,jk,Kaa)&210 & - e3t(:,:,jk,Kbb) )) * tmask(:,:,jk)205 pww(:,:,jk) = pww(:,:,jk+1) - ( e3t(:,:,jk,Kmm) * hdiv(:,:,jk) & 206 & + r1_Dt * ( e3t(:,:,jk,Kaa) & 207 & - e3t(:,:,jk,Kbb) ) ) * tmask(:,:,jk) 211 208 END DO 212 209 ENDIF … … 240 237 !! ** Method : - apply Asselin time fiter to now ssh (excluding the forcing 241 238 !! from the filter, see Leclair and Madec 2010) and swap : 242 !! pssh(:,:,Kmm) = pssh(:,:,Kaa) + atfp * ( pssh(:,:,Kbb) -2 pssh(:,:,Kmm) + pssh(:,:,Kaa) )243 !! - atfp * rdt * ( emp_b - emp ) / rau0239 !! pssh(:,:,Kmm) = pssh(:,:,Kaa) + rn_atfp * ( pssh(:,:,Kbb) -2 pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 240 !! - rn_atfp * rn_Dt * ( emp_b - emp ) / rho0 244 241 !! 245 242 !! ** action : - pssh(:,:,Kmm) time filtered … … 262 259 ENDIF 263 260 ! !== Euler time-stepping: no filter, just swap ==! 264 IF ( .NOT.( neuler == 0 .AND. kt == nit000) ) THEN ! Only do time filtering for leapfrog timesteps261 IF ( .NOT.( l_1st_euler ) ) THEN ! Only do time filtering for leapfrog timesteps 265 262 ! ! filtered "now" field 266 pssh(:,:,Kmm) = pssh(:,:,Kmm) + atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) )263 pssh(:,:,Kmm) = pssh(:,:,Kmm) + rn_atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 267 264 IF( .NOT.ln_linssh ) THEN ! "now" <-- with forcing removed 268 zcoef = atfp * rdt * r1_rau0265 zcoef = rn_atfp * rn_Dt * r1_rho0 269 266 pssh(:,:,Kmm) = pssh(:,:,Kmm) - zcoef * ( emp_b(:,:) - emp (:,:) & 270 267 & - rnf_b(:,:) + rnf (:,:) & … … 273 270 274 271 ! ice sheet coupling 275 IF ( ln_isf .AND. ln_isfcpl .AND. kt == nit000+1) pssh(:,:,Kbb) = pssh(:,:,Kbb) - atfp * rdt * ( risfcpl_ssh(:,:) - 0.0 ) * ssmask(:,:)272 IF ( ln_isf .AND. ln_isfcpl .AND. kt == nit000+1) pssh(:,:,Kbb) = pssh(:,:,Kbb) - rn_atfp * rn_Dt * ( risfcpl_ssh(:,:) - 0.0 ) * ssmask(:,:) 276 273 277 274 ENDIF … … 325 322 z1_e3t = 1._wp / e3t(ji,jj,jk,Kmm) 326 323 ! 2*rdt and not r2dt (for restartability) 327 Cu_adv(ji,jj,jk) = 2._wp * r dt * &324 Cu_adv(ji,jj,jk) = 2._wp * rDt * & 328 325 & ( ( MAX( ww(ji,jj,jk) , 0._wp ) - MIN( ww(ji,jj,jk+1) , 0._wp ) ) & 329 326 & + ( MAX( e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & … … 343 340 z1_e3t = 1._wp / e3t(ji,jj,jk,Kmm) 344 341 ! 2*rdt and not r2dt (for restartability) 345 Cu_adv(ji,jj,jk) = 2._wp * r dt * &342 Cu_adv(ji,jj,jk) = 2._wp * rDt * & 346 343 & ( ( MAX( ww(ji,jj,jk) , 0._wp ) - MIN( ww(ji,jj,jk+1) , 0._wp ) ) & 347 344 & + ( MAX( e2u(ji ,jj)*e3u(ji ,jj,jk,Kmm)*uu(ji ,jj,jk,Kmm), 0._wp ) - &
Note: See TracChangeset
for help on using the changeset viewer.