- Timestamp:
- 2020-04-09T21:06:01+02:00 (4 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/stpMLF.F90
r12731 r12732 1 MODULE step lf1 MODULE stepMLF 2 2 !!====================================================================== 3 3 !! *** MODULE step *** … … 35 35 36 36 !!---------------------------------------------------------------------- 37 !! stp lf: OPA system time-stepping38 !!---------------------------------------------------------------------- 39 USE step_oce 37 !! stp_MLF : OPA system time-stepping 38 !!---------------------------------------------------------------------- 39 USE step_oce ! time stepping definition modules 40 40 ! 41 USE iom 42 USE domq e43 USE traatfqco 44 USE dynatfqco 45 USE dynspg_ts 46 USE bdydyn 41 USE iom ! xIOs server 42 USE domqco 43 USE traatfqco ! time filtering (tra_atf_qco routine) 44 USE dynatfqco ! time filtering (dyn_atf_qco routine) 45 USE dynspg_ts ! surface pressure gradient: split-explicit scheme (define un_adv) 46 USE bdydyn ! ocean open boundary conditions (define bdy_dyn) 47 47 48 48 IMPLICIT NONE 49 49 PRIVATE 50 50 51 PUBLIC stp lf! called by nemogcm.F9051 PUBLIC stp_MLF ! called by nemogcm.F90 52 52 53 53 !!---------------------------------------------------------------------- … … 64 64 65 65 #if defined key_agrif 66 RECURSIVE SUBROUTINE stp lf( )66 RECURSIVE SUBROUTINE stp_MLF( ) 67 67 INTEGER :: kstp ! ocean time-step index 68 68 #else 69 SUBROUTINE stp lf( kstp )69 SUBROUTINE stp_MLF( kstp ) 70 70 INTEGER, INTENT(in) :: kstp ! ocean time-step index 71 71 #endif 72 72 !!---------------------------------------------------------------------- 73 !! *** ROUTINE stp lf***73 !! *** ROUTINE stp_MLF *** 74 74 !! 75 75 !! ** Purpose : - Time stepping of OPA (momentum and active tracer eqs.) … … 91 91 INTEGER :: kcall ! optional integer argument (dom_vvl_sf_nxt) 92 92 !!st patch 93 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgdept ! st patch93 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgdept 94 94 !! --------------------------------------------------------------------- 95 95 #if defined key_agrif … … 106 106 #endif 107 107 ! 108 IF( ln_timing ) CALL timing_start('stp lf')108 IF( ln_timing ) CALL timing_start('stp_MLF') 109 109 ! 110 110 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 142 142 IF( ln_isf ) CALL isf_stp ( kstp, Nnn ) 143 143 CALL sbc ( kstp, Nbb, Nnn ) ! Sea Boundary Condition (including sea-ice) 144 145 ! !!st !!!!!!!!!!!!!!!!!!!!!!!146 !147 ! emp = 0._wp148 ! emp_b = 0._wp149 ! qns = 0._wp150 ! qsr = 0._wp151 ! qns_b = 0._wp152 !153 ! !!st154 144 155 145 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 196 186 ! Ocean dynamics : hdiv, ssh, e3, u, v, w 197 187 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 198 !!st patch199 !!st patch to be able to use substitution200 188 DO jk = 1, jpk 201 189 zgdept(:,:,jk) = gdept(:,:,jk,Nnn) 202 190 END DO 203 !!st end 204 CALL ssh_nxt ( kstp, Nbb, Nnn, ssh, Naa ) ! after ssh (includes call to div_hor) 205 IF( .NOT.ln_linssh ) CALL dom_qe_r3c ( ssh(:,:,Naa), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa) ) 206 !!st IF( .NOT.ln_linssh ) CALL dom_h_nxt ( kstp, Nbb, Nnn, Naa ) ! after vertical scale factors 207 !IF( .NOT.ln_linssh ) CALL dom_qe_sf_nxt ( kstp, Nbb, Nnn, Naa ) ! after vertical scale factors 191 CALL ssh_nxt ( kstp, Nbb, Nnn, ssh, Naa ) ! after ssh (includes call to div_hor) 192 IF( .NOT.ln_linssh ) CALL dom_qco_r3c ( ssh(:,:,Naa), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa) ) ! "after" ssh./h._0 ratio 208 193 CALL wzv ( kstp, Nbb, Nnn, Naa, ww ) ! Nnn cross-level velocity 209 IF( ln_zad_Aimp ) CALL wAimp ( kstp, Nnn ) ! Adaptive-implicit vertical advection partitioning210 CALL eos ( ts(:,:,:,:,Nnn), rhd, rhop, zgdept ) 194 IF( ln_zad_Aimp ) CALL wAimp ( kstp, Nnn ) ! Adaptive-implicit vertical advection partitioning 195 CALL eos ( ts(:,:,:,:,Nnn), rhd, rhop, zgdept ) ! now in situ density for hpg computation 211 196 212 197 … … 231 216 IF( ln_dynspg_ts ) THEN ! vertical scale factors and vertical velocity need to be updated 232 217 CALL div_hor ( kstp, Nbb, Nnn ) ! Horizontal divergence (2nd call in time-split case) 233 IF(.NOT.ln_linssh) CALL dom_qe_r3c ( ssh(:,:,Naa), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa), r3f(:,:) ) 234 !IF(.NOT.ln_linssh) CALL dom_qe_sf_nxt ( kstp, Nbb, Nnn, Naa, kcall=2 ) ! after vertical scale factors (update depth average component) 235 !!st IF(.NOT.ln_linssh) CALL dom_h_nxt ( kstp, Nbb, Nnn, Naa, kcall=2 ) ! after vertical scale factors (update depth average component) 218 IF(.NOT.ln_linssh) CALL dom_qco_r3c ( ssh(:,:,Naa), r3t(:,:,Naa), r3u(:,:,Naa), r3v(:,:,Naa), r3f(:,:) ) ! "after" ssh./h._0 ratio 236 219 ENDIF 237 220 CALL dyn_zdf ( kstp, Nbb, Nnn, Nrhs, uu, vv, Naa ) ! vertical diffusion … … 311 294 !! place. 312 295 !! 313 CALL zdyn_ts ( Nnn, Naa, uu, vv ) ! barotrope ajustment314 CALL finalize_sbc ( kstp, Nbb, Naa, uu, vv, ts ) 315 CALL ssh_atf ( kstp, Nbb, Nnn, Naa, ssh ) 316 CALL dom_q e_r3c ( ssh(:,:,Nnn), r3t_f, r3u_f, r3v_f )! "now" ssh/h_0 ratio from filtrered ssh317 CALL tra_atf_qco ( kstp, Nbb, Nnn, Naa, ts ) 318 CALL dyn_atf_qco ( kstp, Nbb, Nnn, Naa, uu, vv ) ! time filtering of "now" velocities and scale factors296 CALL zdyn_ts ( Nnn, Naa, uu, vv ) ! barotrope ajustment 297 CALL finalize_sbc ( kstp, Nbb, Naa, uu, vv, ts ) ! boundary condifions 298 CALL ssh_atf ( kstp, Nbb, Nnn, Naa, ssh ) ! time filtering of "now" sea surface height 299 CALL dom_qco_r3c ( ssh(:,:,Nnn), r3t_f, r3u_f, r3v_f ) ! "now" ssh/h_0 ratio from filtrered ssh 300 CALL tra_atf_qco ( kstp, Nbb, Nnn, Naa, ts ) ! time filtering of "now" tracer arrays 301 CALL dyn_atf_qco ( kstp, Nbb, Nnn, Naa, uu, vv ) ! time filtering of "now" velocities and scale factors 319 302 r3t(:,:,Nnn) = r3t_f(:,:) 320 303 r3u(:,:,Nnn) = r3u_f(:,:) … … 328 311 Naa = Nrhs 329 312 ! 330 !IF(.NOT.ln_linssh) CALL dom_qe_sf_update( kstp, Nbb, Nnn, Naa ) ! recompute vertical scale factors331 !!st IF(.NOT.ln_linssh) CALL dom_h_update ( kstp, Nbb, Nnn, Naa ) ! recompute vertical scale factors332 313 ! 333 314 IF( ln_diahsb ) CALL dia_hsb ( kstp, Nbb, Nnn ) ! - ML - global conservation diagnostics … … 346 327 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 347 328 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices 348 CALL Agrif_Integrate_ChildGrids( stp lf) ! allows to finish all the Child Grids before updating329 CALL Agrif_Integrate_ChildGrids( stp_MLF ) ! allows to finish all the Child Grids before updating 349 330 350 331 IF( Agrif_NbStepint() == 0 ) THEN … … 385 366 ENDIF 386 367 ! 387 IF( ln_timing ) CALL timing_stop('stp lf')388 ! 389 END SUBROUTINE stp lf368 IF( ln_timing ) CALL timing_stop('stp_MLF') 369 ! 370 END SUBROUTINE stp_MLF 390 371 391 372 … … 481 462 ! 482 463 !!====================================================================== 483 END MODULE step lf464 END MODULE stepMLF
Note: See TracChangeset
for help on using the changeset viewer.