Changeset 12489 for NEMO/trunk/src/OCE/TRA/traatf.F90
- Timestamp:
- 2020-02-28T16:55:11+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/TRA/traatf.F90
r12377 r12489 113 113 IF( ln_bdy ) CALL bdy_tra( kt, Kbb, pts, Kaa ) ! BDY open boundaries 114 114 115 ! set time step size (Euler/Leapfrog)116 IF( neuler == 0 .AND. kt == nit000 ) THEN ; r2dt = rdt ! at nit000 (Euler)117 ELSEIF( kt <= nit000 + 1 ) THEN ; r2dt = 2._wp* rdt ! at nit000 or nit000+1 (Leapfrog)118 ENDIF119 120 115 ! trends computation initialisation 121 116 IF( l_trdtra ) THEN … … 128 123 ENDIF 129 124 ! total trend for the non-time-filtered variables. 130 zfact = 1.0 / r dt125 zfact = 1.0 / rn_Dt 131 126 ! G Nurser 23 Mar 2017. Recalculate trend as Delta(e3t*T)/e3tn; e3tn cancel from pts(Kmm) terms 132 127 DO jk = 1, jpkm1 … … 144 139 ENDIF 145 140 146 IF( neuler == 0 .AND. kt == nit000) THEN ! Euler time-stepping141 IF( l_1st_euler ) THEN ! Euler time-stepping 147 142 ! 148 143 IF (l_trdtra .AND. .NOT. ln_linssh ) THEN ! Zero Asselin filter contribution must be explicitly written out since for vvl … … 156 151 ELSE ! Leap-Frog + Asselin filter time stepping 157 152 ! 158 IF( ln_linssh ) THEN ; CALL tra_atf_fix( kt, Kbb, Kmm, Kaa, nit000, 'TRA', pts, jpts ) ! linear free surface159 ELSE ; CALL tra_atf_vvl( kt, Kbb, Kmm, Kaa, nit000, r dt, 'TRA', pts, sbc_tsc, sbc_tsc_b, jpts ) ! non-linear free surface153 IF( ln_linssh ) THEN ; CALL tra_atf_fix( kt, Kbb, Kmm, Kaa, nit000, 'TRA', pts, jpts ) ! linear free surface 154 ELSE ; CALL tra_atf_vvl( kt, Kbb, Kmm, Kaa, nit000, rn_Dt, 'TRA', pts, sbc_tsc, sbc_tsc_b, jpts ) ! non-linear free surface 160 155 ENDIF 161 156 ! … … 167 162 ! 168 163 IF( l_trdtra .AND. ln_linssh ) THEN ! trend of the Asselin filter (tb filtered - tb)/dt 169 zfact = 1._wp / r 2dt164 zfact = 1._wp / rDt 170 165 DO jk = 1, jpkm1 171 166 ztrdt(:,:,jk) = ( pts(:,:,jk,jp_tem,Kmm) - ztrdt(:,:,jk) ) * zfact … … 219 214 ztd = pt(ji,jj,jk,jn,Kaa) - 2._wp * ztn + pt(ji,jj,jk,jn,Kbb) ! time laplacian on tracers 220 215 ! 221 pt(ji,jj,jk,jn,Kmm) = ztn + atfp * ztd ! pt <-- filtered pt216 pt(ji,jj,jk,jn,Kmm) = ztn + rn_atfp * ztd ! pt <-- filtered pt 222 217 END_3D 223 218 ! … … 234 229 !! 235 230 !! ** Method : - Apply a thickness weighted Asselin time filter on now fields. 236 !! pt(Kmm) = ( e3t(Kmm)*pt(Kmm) + atfp*[ e3t(Kbb)*pt(Kbb) - 2 e3t(Kmm)*pt(Kmm) + e3t_a*pt(Kaa) ] )237 !! /( e3t(Kmm) + atfp*[ e3t(Kbb) - 2 e3t(Kmm) + e3t(Kaa) ] )231 !! pt(Kmm) = ( e3t(Kmm)*pt(Kmm) + rn_atfp*[ e3t(Kbb)*pt(Kbb) - 2 e3t(Kmm)*pt(Kmm) + e3t_a*pt(Kaa) ] ) 232 !! /( e3t(Kmm) + rn_atfp*[ e3t(Kbb) - 2 e3t(Kmm) + e3t(Kaa) ] ) 238 233 !! 239 234 !! ** Action : - pt(Kmm) ready for the next time step … … 277 272 ENDIF 278 273 zfact = 1._wp / p2dt 279 zfact1 = atfp * p2dt280 zfact2 = zfact1 * r1_r au0274 zfact1 = rn_atfp * p2dt 275 zfact2 = zfact1 * r1_rho0 281 276 DO jn = 1, kjpt 282 277 DO_3D_00_00( 1, jpkm1 ) … … 292 287 ztc_d = ztc_a - 2. * ztc_n + ztc_b 293 288 ! 294 ze3t_f = ze3t_n + atfp * ze3t_d295 ztc_f = ztc_n + atfp * ztc_d289 ze3t_f = ze3t_n + rn_atfp * ze3t_d 290 ztc_f = ztc_n + rn_atfp * ztc_d 296 291 ! 297 292 ! Add asselin correction on scale factors:
Note: See TracChangeset
for help on using the changeset viewer.