- Timestamp:
- 2018-06-30T12:51:02+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r9838_ENHANCE04_MLF/src/OCE/DYN/sshwzv.F90
r9598 r9863 68 68 INTEGER, INTENT(in) :: kt ! time step 69 69 ! 70 INTEGER :: jk 71 REAL(wp) :: z 2dt, zcoef! local scalars70 INTEGER :: jk ! dummy loop indice 71 REAL(wp) :: z1_2rau0 ! local scalars 72 72 REAL(wp), DIMENSION(jpi,jpj) :: zhdiv ! 2D workspace 73 73 !!---------------------------------------------------------------------- … … 81 81 ENDIF 82 82 ! 83 z2dt = 2._wp * rdt ! set time step size (Euler/Leapfrog) 84 IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt 85 zcoef = 0.5_wp * r1_rau0 83 z1_2rau0 = 0.5_wp * r1_rau0 86 84 87 85 ! !------------------------------! 88 86 ! ! After Sea Surface Height ! 89 87 ! !------------------------------! 90 IF(ln_wd_il) THEN 91 CALL wad_lmt(sshb, zcoef * (emp_b(:,:) + emp(:,:)), z2dt) 92 ENDIF 88 89 IF(ln_wd_il) CALL wad_lmt( sshb, z1_2rau0 * (emp_b(:,:) + emp(:,:)), r2dt ) 93 90 94 91 CALL div_hor( kt ) ! Horizontal divergence … … 102 99 ! compute the vertical velocity which can be used to compute the non-linear terms of the momentum equations. 103 100 ! 104 ssha(:,:) = ( sshb(:,:) - z2dt * ( zcoef* ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) ) ) * ssmask(:,:)101 ssha(:,:) = ( sshb(:,:) - r2dt * ( z1_2rau0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) ) ) * ssmask(:,:) 105 102 ! 106 103 #if defined key_agrif … … 143 140 ! 144 141 INTEGER :: ji, jj, jk ! dummy loop indices 145 REAL(wp) :: z1_2dt ! local scalars146 142 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zhdiv 147 143 !!---------------------------------------------------------------------- … … 159 155 ! ! Now Vertical Velocity ! 160 156 ! !------------------------------! 161 z1_2dt = 1. / ( 2. * rdt ) ! set time step size (Euler/Leapfrog)162 IF( neuler == 0 .AND. kt == nit000 ) z1_2dt = 1. / rdt163 157 ! 164 158 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases … … 180 174 ! computation of w 181 175 wn(:,:,jk) = wn(:,:,jk+1) - ( e3t_n(:,:,jk) * hdivn(:,:,jk) + zhdiv(:,:,jk) & 182 & + z1_2dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) ) ) * tmask(:,:,jk)176 & + r1_2dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) ) ) * tmask(:,:,jk) 183 177 END DO 184 178 ! IF( ln_vvl_layer ) wn(:,:,:) = 0.e0 … … 188 182 ! computation of w 189 183 wn(:,:,jk) = wn(:,:,jk+1) - ( e3t_n(:,:,jk) * hdivn(:,:,jk) & 190 & + z1_2dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) ) ) * tmask(:,:,jk)184 & + r1_2dt * ( e3t_a(:,:,jk) - e3t_b(:,:,jk) ) ) * tmask(:,:,jk) 191 185 END DO 192 186 ENDIF … … 243 237 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 244 238 ENDIF 245 ! !== Euler time-stepping: no filter, just swap ==! 246 IF ( neuler == 0 .AND. kt == nit000 ) THEN 247 sshn(:,:) = ssha(:,:) ! now <-- after (before already = now) 248 ! 249 ELSE !== Leap-Frog time-stepping: Asselin filter + swap ==! 250 ! ! before <-- now filtered 239 ! 240 IF ( l_1st_euler ) THEN !== Euler time-stepping ==! no filter, just swap 241 ! 242 sshn(:,:) = ssha(:,:) ! now <-- after (before already = now) 243 ! 244 ELSE !== Leap-Frog time-stepping ==! Asselin filter + swap 245 ! 246 ! ! before <-- now filtered 251 247 sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) ) 252 IF( .NOT.ln_linssh ) THEN 248 IF( .NOT.ln_linssh ) THEN ! before <-- with forcing removed 253 249 zcoef = atfp * rdt * r1_rau0 254 250 sshb(:,:) = sshb(:,:) - zcoef * ( emp_b(:,:) - emp (:,:) & … … 256 252 & + fwfisf_b(:,:) - fwfisf(:,:) ) * ssmask(:,:) 257 253 ENDIF 258 sshn(:,:) = ssha(:,:) 254 sshn(:,:) = ssha(:,:) ! now <-- after 259 255 ENDIF 260 256 !
Note: See TracChangeset
for help on using the changeset viewer.