- Timestamp:
- 2021-03-19T15:42:32+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/stprk3_stg.F90
r14549 r14618 72 72 ! 73 73 INTEGER :: ji, jj, jk, jtile ! dummy loop indices 74 REAL(wp) :: ze3 Ub, ze3Vb, ze3Tb, ze3Sb, z1_e3t ! local scalars75 REAL(wp) :: ze3 Ur, ze3Vr, ze3Tr, ze3Sr ! - -74 REAL(wp) :: ze3Tb, ze3Sb, z1_e3t ! local scalars 75 REAL(wp) :: ze3Tr, ze3Sr ! - - 76 76 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zaU, zaV ! advective horizontal velocity 77 77 REAL(wp), DIMENSION(jpi,jpj) :: zub, zvb ! advective transport … … 211 211 CALL tra_adv( kstp, Kbb, Kmm, ts, Krhs, zaU, zaV, ww ) ! hor. + vert. advection ==> RHS 212 212 213 214 213 !===>>>>>> stg1&2: Verify the necessity of these trends (we may need it as there are in the RHS of dynspg_ts ?) 215 214 !!gm ====>>>> needed for heat and salt fluxes associated with mass/volume flux 216 ! CALL tra_sbc( kstp, Kmm, ts, Krhs ) ! surface boundary condition 217 ! IF( ln_isf ) CALL tra_isf( kstp, Kmm, ts, Krhs ) ! ice shelf heat flux 215 CALL tra_sbc( kstp, Kmm, ts, Krhs ) ! surface boundary condition 216 217 IF( ln_isf ) CALL tra_isf( kstp, Kmm, ts, Krhs ) ! ice shelf heat flux 218 IF( ln_traqsr ) CALL tra_qsr( kstp, Kmm, ts, Krhs ) ! penetrative solar radiation qsr 218 219 !!gm 219 220 … … 221 222 !!gm ===>>>>>> Verify the necessity of these trends at stages 1 and 2 222 223 ! (we may need it as they are in the RHS of dynspg_ts ?) 223 IF( lk_asminc .AND. ln_asmiau ) THEN ! apply assimilation increment224 IF( ln_dyninc ) CALL dyn_asm_inc( kstp, Kbb, Kmm, uu, vv, Krhs ) ! dynamics ==> RHS225 IF( ln_trainc ) CALL tra_asm_inc( kstp, Kbb, Kmm, ts , Krhs ) ! tracers ==> RHS226 ENDIF224 ! IF( lk_asminc .AND. ln_asmiau ) THEN ! apply assimilation increment 225 ! IF( ln_dyninc ) CALL dyn_asm_inc( kstp, Kbb, Kmm, uu, vv, Krhs ) ! dynamics ==> RHS 226 ! IF( ln_trainc ) CALL tra_asm_inc( kstp, Kbb, Kmm, ts , Krhs ) ! tracers ==> RHS 227 ! ENDIF 227 228 !!gm end Verif 228 229 … … 234 235 ! 235 236 ! !== time integration ==! ∆t = rn_Dt/3 (stg1) or rn_Dt/2 (stg2) 237 IF( ln_dynadv_vec .OR. ln_linssh ) THEN ! applied on velocity 238 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 239 uu(ji,jj,jk,Kaa) = ( uu(ji,jj,jk,Kbb) + rDt * uu(ji,jj,jk,Krhs) ) * umask(ji,jj,jk) 240 vv(ji,jj,jk,Kaa) = ( vv(ji,jj,jk,Kbb) + rDt * vv(ji,jj,jk,Krhs) ) * vmask(ji,jj,jk) 241 END_3D 242 ELSE ! applied on thickness weighted velocity 243 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 244 uu(ji,jj,jk,Kaa) = ( e3u(ji,jj,jk,Kbb) * uu(ji,jj,jk,Kbb ) & 245 & + rDt * e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Krhs) ) & 246 & / e3u(ji,jj,jk,Kaa) * umask(ji,jj,jk) 247 vv(ji,jj,jk,Kaa) = ( e3v(ji,jj,jk,Kbb) * vv(ji,jj,jk,Kbb ) & 248 & + rDt * e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Krhs) ) & 249 & / e3v(ji,jj,jk,Kaa) * vmask(ji,jj,jk) 250 END_3D 251 ENDIF 252 ! 236 253 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 237 ze3Ub = e3u(ji,jj,jk,Kbb) * uu(ji,jj,jk,Kbb )238 ze3Vb = e3v(ji,jj,jk,Kbb) * vv(ji,jj,jk,Kbb )239 ze3Ur = e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Krhs)240 ze3Vr = e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Krhs)241 uu(ji,jj,jk,Kaa) = ( ze3Ub + rDt * ze3Ur*umask(ji,jj,jk) ) / e3u(ji,jj,jk, Kaa)242 vv(ji,jj,jk,Kaa) = ( ze3Vb + rDt * ze3Vr*vmask(ji,jj,jk) ) / e3v(ji,jj,jk, Kaa)243 !244 254 ze3Tb = e3t(ji,jj,jk,Kbb) * ts(ji,jj,jk,jp_tem,Kbb ) 245 255 ze3Sb = e3t(ji,jj,jk,Kbb) * ts(ji,jj,jk,jp_sal,Kbb ) … … 291 301 ! 292 302 CALL tra_ldf( kstp, Kbb, Kmm, ts, Krhs ) ! lateral mixing 293 !!gm ====>>>> needed for heat and salt fluxes associated with mass/volume flux294 CALL tra_sbc( kstp, Kmm, ts, Krhs ) ! surface boundary condition295 IF( ln_isf ) CALL tra_isf( kstp, Kmm, ts, Krhs ) ! ice shelf heat flux303 !!gm ====>>>> already called in stage 1, 2 and 3 case 304 !!st CALL tra_sbc( kstp, Kmm, ts, Krhs ) ! surface boundary condition 305 !!st IF( ln_isf ) CALL tra_isf( kstp, Kmm, ts, Krhs ) ! ice shelf heat flux 296 306 !!gm 297 307 ! 298 IF( ln_traqsr ) CALL tra_qsr( kstp, Kmm, ts, Krhs ) ! penetrative solar radiation qsr308 !!st IF( ln_traqsr ) CALL tra_qsr( kstp, Kmm, ts, Krhs ) ! penetrative solar radiation qsr 299 309 IF( ln_trabbc ) CALL tra_bbc( kstp, Kmm, ts, Krhs ) ! bottom heat flux 300 310 IF( ln_trabbl ) CALL tra_bbl( kstp, Kbb, Kmm, ts, Krhs ) ! advective (and/or diffusive) bottom boundary layer scheme … … 320 330 ! 321 331 END SELECT 322 323 332 ! !== correction of the barotropic (all stages) ==! at Kaa = N+1/3, N+1/2 or N+1 324 333 ! ! barotropic velocity correction 325 zub(:,:) = uu_b(:,:,Kaa) - SUM( e3u_0(:,:,:)*uu(:,:,:,Kaa), 3 ) * r1_hu_0(:,:) 326 zvb(:,:) = vv_b(:,:,Kaa) - SUM( e3v_0(:,:,:)*vv(:,:,:,Kaa), 3 ) * r1_hv_0(:,:) 334 zub(A2D(0)) = uu_b(A2D(0),Kaa) - SUM( e3u_0(A2D(0),:)*uu(A2D(0),:,Kaa), 3 ) * r1_hu_0(A2D(0)) 335 zvb(A2D(0)) = vv_b(A2D(0),Kaa) - SUM( e3v_0(A2D(0),:)*vv(A2D(0),:,Kaa), 3 ) * r1_hv_0(A2D(0)) 336 337 !!st zub(:,:) = uu_b(:,:,Kaa) - SUM( e3u_0(:,:,:)*uu(:,:,:,Kaa), 3 ) * r1_hu_0(:,:) 338 !!st zvb(:,:) = vv_b(:,:,Kaa) - SUM( e3v_0(:,:,:)*vv(:,:,:,Kaa), 3 ) * r1_hv_0(:,:) 339 327 340 DO jk = 1, jpkm1 ! corrected horizontal velocity 328 341 uu(:,:,jk,Kaa) = uu(:,:,jk,Kaa) + zub(:,:)*umask(:,:,jk) 329 342 vv(:,:,jk,Kaa) = vv(:,:,jk,Kaa) + zvb(:,:)*vmask(:,:,jk) 330 343 END DO 344 345 !!st DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 346 !!st uu(ji,jj,jk,Kaa) = uu(ji,jj,jk,Kaa) + zub(ji,jj)*umask(ji,jj,jk) 347 !!st vv(ji,jj,jk,Kaa) = vv(ji,jj,jk,Kaa) + zvb(ji,jj)*vmask(ji,jj,jk) 348 !!st END_3D 349 331 350 332 351 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Note: See TracChangeset
for help on using the changeset viewer.