Changeset 14012 for NEMO/branches/2020/tickets_icb_1900/src/OCE/step.F90
- Timestamp:
- 2020-12-02T16:13:45+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/tickets_icb_1900
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/tickets_icb_1900
- Property svn:externals
-
old new 8 8 9 9 # SETTE 10 ^/utils/CI/sette @13559sette10 ^/utils/CI/sette_MPI3_LoopFusion@13943 sette
-
- Property svn:externals
-
NEMO/branches/2020/tickets_icb_1900/src/OCE/step.F90
r13237 r14012 55 55 INTEGER, PUBLIC :: Nbb, Nnn, Naa, Nrhs !! used by nemo_init 56 56 57 !! * Substitutions 58 # include "do_loop_substitute.h90" 57 59 !!---------------------------------------------------------------------- 58 60 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 85 87 !! -8- Outputs and diagnostics 86 88 !!---------------------------------------------------------------------- 87 INTEGER :: ji, jj, jk ! dummy loop indice89 INTEGER :: ji, jj, jk, jtile ! dummy loop indice 88 90 !!gm kcall can be removed, I guess 89 91 INTEGER :: kcall ! optional integer argument (dom_vvl_sf_nxt) … … 124 126 IF( ln_crs ) CALL iom_init( TRIM(cxios_context)//"_crs" ) ! for coarse grid 125 127 ENDIF 128 IF((kstp == nitrst) .AND. lwxios) THEN 129 CALL iom_swap( cw_ocerst_cxt ) 130 CALL iom_init_closedef(cw_ocerst_cxt) 131 CALL iom_setkt( kstp - nit000 + 1, cw_ocerst_cxt ) 132 #if defined key_top 133 CALL iom_swap( cw_toprst_cxt ) 134 CALL iom_init_closedef(cw_toprst_cxt) 135 CALL iom_setkt( kstp - nit000 + 1, cw_toprst_cxt ) 136 #endif 137 ENDIF 138 #if defined key_si3 139 IF(((kstp + nn_fsbc - 1) == nitrst) .AND. lwxios) THEN 140 CALL iom_swap( cw_icerst_cxt ) 141 CALL iom_init_closedef(cw_icerst_cxt) 142 CALL iom_setkt( kstp - nit000 + 1, cw_icerst_cxt ) 143 ENDIF 144 #endif 126 145 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) 127 146 CALL iom_setkt( kstp - nit000 + 1, cxios_context ) ! tell IOM we are at time step kstp … … 246 265 ! Active tracers 247 266 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 248 ts(:,:,:,:,Nrhs) = 0._wp ! set tracer trends to zero 249 250 IF( lk_asminc .AND. ln_asmiau .AND. & 251 & ln_trainc ) CALL tra_asm_inc( kstp, Nbb, Nnn, ts, Nrhs ) ! apply tracer assimilation increment 252 CALL tra_sbc ( kstp, Nnn, ts, Nrhs ) ! surface boundary condition 253 IF( ln_traqsr ) CALL tra_qsr ( kstp, Nnn, ts, Nrhs ) ! penetrative solar radiation qsr 254 IF( ln_isf ) CALL tra_isf ( kstp, Nnn, ts, Nrhs ) ! ice shelf heat flux 255 IF( ln_trabbc ) CALL tra_bbc ( kstp, Nnn, ts, Nrhs ) ! bottom heat flux 256 IF( ln_trabbl ) CALL tra_bbl ( kstp, Nbb, Nnn, ts, Nrhs ) ! advective (and/or diffusive) bottom boundary layer scheme 257 IF( ln_tradmp ) CALL tra_dmp ( kstp, Nbb, Nnn, ts, Nrhs ) ! internal damping trends 258 IF( ln_bdy ) CALL bdy_tra_dmp( kstp, Nbb, ts, Nrhs ) ! bdy damping trends 259 #if defined key_agrif 260 IF(.NOT. Agrif_Root()) & 261 & CALL Agrif_Sponge_tra ! tracers sponge 262 #endif 263 CALL tra_adv ( kstp, Nbb, Nnn, ts, Nrhs ) ! hor. + vert. advection ==> RHS 264 IF( ln_zdfosm ) CALL tra_osm ( kstp, Nnn, ts, Nrhs ) ! OSMOSIS non-local tracer fluxes ==> RHS 265 IF( lrst_oce .AND. ln_zdfosm ) & 266 & CALL osm_rst ( kstp, Nnn, 'WRITE' ) ! write OSMOSIS outputs + ww (so must do here) to restarts 267 CALL tra_ldf ( kstp, Nbb, Nnn, ts, Nrhs ) ! lateral mixing 268 269 CALL tra_zdf ( kstp, Nbb, Nnn, Nrhs, ts, Naa ) ! vertical mixing and after tracer fields 270 IF( ln_zdfnpc ) CALL tra_npc ( kstp, Nnn, Nrhs, ts, Naa ) ! update after fields by non-penetrative convection 271 267 ! Loop over tile domains 268 DO jtile = 1, nijtile 269 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = jtile ) 270 271 DO_3D( 0, 0, 0, 0, 1, jpk ) 272 ts(ji,jj,jk,:,Nrhs) = 0._wp ! set tracer trends to zero 273 END_3D 274 275 IF( lk_asminc .AND. ln_asmiau .AND. & 276 & ln_trainc ) CALL tra_asm_inc( kstp, Nbb, Nnn, ts, Nrhs ) ! apply tracer assimilation increment 277 CALL tra_sbc ( kstp, Nnn, ts, Nrhs ) ! surface boundary condition 278 IF( ln_traqsr ) CALL tra_qsr ( kstp, Nnn, ts, Nrhs ) ! penetrative solar radiation qsr 279 IF( ln_isf ) CALL tra_isf ( kstp, Nnn, ts, Nrhs ) ! ice shelf heat flux 280 IF( ln_trabbc ) CALL tra_bbc ( kstp, Nnn, ts, Nrhs ) ! bottom heat flux 281 IF( ln_trabbl ) CALL tra_bbl ( kstp, Nbb, Nnn, ts, Nrhs ) ! advective (and/or diffusive) bottom boundary layer scheme 282 IF( ln_tradmp ) CALL tra_dmp ( kstp, Nbb, Nnn, ts, Nrhs ) ! internal damping trends 283 IF( ln_bdy ) CALL bdy_tra_dmp( kstp, Nbb, ts, Nrhs ) ! bdy damping trends 284 END DO 285 286 #if defined key_agrif 287 IF(.NOT. Agrif_Root()) THEN 288 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 ) 289 CALL Agrif_Sponge_tra ! tracers sponge 290 ENDIF 291 #endif 292 293 ! TEMP: [tiling] Separate loop over tile domains (due to tra_adv workarounds for tiling) 294 DO jtile = 1, nijtile 295 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = jtile ) 296 297 CALL tra_adv ( kstp, Nbb, Nnn, ts, Nrhs ) ! hor. + vert. advection ==> RHS 298 IF( ln_zdfosm ) CALL tra_osm ( kstp, Nnn, ts, Nrhs ) ! OSMOSIS non-local tracer fluxes ==> RHS 299 IF( lrst_oce .AND. ln_zdfosm ) & 300 & CALL osm_rst ( kstp, Nnn, 'WRITE' ) ! write OSMOSIS outputs + ww (so must do here) to restarts 301 CALL tra_ldf ( kstp, Nbb, Nnn, ts, Nrhs ) ! lateral mixing 302 303 CALL tra_zdf ( kstp, Nbb, Nnn, Nrhs, ts, Naa ) ! vertical mixing and after tracer fields 304 IF( ln_zdfnpc ) CALL tra_npc ( kstp, Nnn, Nrhs, ts, Naa ) ! update after fields by non-penetrative convection 305 END DO 306 307 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 ) ! Revert to tile over full domain 272 308 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 273 309 ! Set boundary conditions, time filter and swap time levels … … 338 374 IF( kstp == nit000 ) THEN ! 1st time step only 339 375 CALL iom_close( numror ) ! close input ocean restart file 376 IF( lrxios ) CALL iom_context_finalize( cr_ocerst_cxt ) 340 377 IF(lwm) CALL FLUSH ( numond ) ! flush output namelist oce 341 378 IF(lwm .AND. numoni /= -1 ) CALL FLUSH ( numoni ) ! flush output namelist ice (if exist) … … 353 390 IF( kstp == nitend .OR. nstop > 0 ) THEN 354 391 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 355 IF( lrxios ) CALL iom_context_finalize( crxios_context )356 392 IF( ln_crs ) CALL iom_context_finalize( trim(cxios_context)//"_crs" ) ! 357 393 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.