Changeset 14789 for NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/OCE/step.F90
- Timestamp:
- 2021-05-05T13:18:04+02:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev _r12970_AGRIF_CMEMSext/AGRIF5 ^/vendors/AGRIF/dev@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 ^/vendors/PPR@HEAD ext/PPR 8 9 9 10 # SETTE 10 ^/utils/CI/sette@1 3559sette11 ^/utils/CI/sette@14244 sette
-
- Property svn:externals
-
NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/OCE/step.F90
r13237 r14789 27 27 !! 3.6 ! 2014-04 (F. Roquet, G. Madec) New equations of state 28 28 !! 3.6 ! 2014-10 (E. Clementi, P. Oddo) Add Qiao vertical mixing in case of waves 29 !! 3.7 ! 2014-10 (G. Madec) LDF simplication 29 !! 3.7 ! 2014-10 (G. Madec) LDF simplication 30 30 !! - ! 2014-12 (G. Madec) remove KPP scheme 31 31 !! - ! 2015-11 (J. Chanut) free surface simplification (remove filtered free surface) … … 33 33 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rewrite in preparation for new timestepping scheme 34 34 !!---------------------------------------------------------------------- 35 #if defined key_qco 36 !!---------------------------------------------------------------------- 37 !! 'key_qco' EMPTY MODULE Quasi-Eulerian vertical coordonate 35 36 #if defined key_qco || defined key_linssh 37 !!---------------------------------------------------------------------- 38 !! 'key_qco' EMPTY MODULE Quasi-Eulerian vertical coordinate 39 !! OR 40 !! 'key_linssh EMPTY MODULE Fixed in time vertical coordinate 38 41 !!---------------------------------------------------------------------- 39 42 #else 40 43 !!---------------------------------------------------------------------- 41 !! stp : O PAsystem time-stepping44 !! stp : OCE system time-stepping 42 45 !!---------------------------------------------------------------------- 43 46 USE step_oce ! time stepping definition modules 44 !45 USE iom ! xIOs server46 47 47 48 IMPLICIT NONE … … 50 51 PUBLIC stp ! called by nemogcm.F90 51 52 52 ! !----------------------------------------------------------------------53 !! time level indices54 !!---------------------------------------------------------------------- 55 INTEGER, PUBLIC :: Nbb, Nnn, Naa, Nrhs !! used by nemo_init56 53 ! !** time level indices **! 54 INTEGER, PUBLIC :: Nbb, Nnn, Naa, Nrhs !: used by nemo_init 55 56 !! * Substitutions 57 # include "do_loop_substitute.h90" 57 58 !!---------------------------------------------------------------------- 58 59 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 72 73 !! *** ROUTINE stp *** 73 74 !! 74 !! ** Purpose : - Time stepping of O PA(momentum and active tracer eqs.)75 !! ** Purpose : - Time stepping of OCE (momentum and active tracer eqs.) 75 76 !! - Time stepping of SI3 (dynamic and thermodynamic eqs.) 76 77 !! - Time stepping of TRC (passive tracer eqs.) … … 85 86 !! -8- Outputs and diagnostics 86 87 !!---------------------------------------------------------------------- 87 INTEGER :: ji, jj, jk ! dummy loop indice 88 !!gm kcall can be removed, I guess 89 INTEGER :: kcall ! optional integer argument (dom_vvl_sf_nxt) 88 INTEGER :: ji, jj, jk, jtile ! dummy loop indice 90 89 !! --------------------------------------------------------------------- 91 90 #if defined key_agrif … … 98 97 ENDIF 99 98 IF( kstp == nit000 + 1 ) lk_agrif_fstep = .FALSE. 100 # if defined key_ iomput99 # if defined key_xios 101 100 IF( Agrif_Nbstepint() == 0 ) CALL iom_swap( cxios_context ) 102 101 # endif … … 109 108 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 110 109 ! 111 IF( l_1st_euler ) THEN 112 ! start or restart with Euler 1st time-step 113 rDt = rn_Dt 110 IF( l_1st_euler ) THEN ! start or restart with Euler 1st time-step 111 rDt = rn_Dt 114 112 r1_Dt = 1._wp / rDt 115 113 ENDIF 116 114 ! 117 115 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 118 ! update I/O and calendar 119 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 116 ! update I/O and calendar 117 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 118 ! 120 119 IF( kstp == nit000 ) THEN ! initialize IOM context (must be done after nemo_init for AGRIF+XIOS+OASIS) 121 120 CALL iom_init( cxios_context, ld_closedef=.FALSE. ) ! for model grid (including possible AGRIF zoom) … … 124 123 IF( ln_crs ) CALL iom_init( TRIM(cxios_context)//"_crs" ) ! for coarse grid 125 124 ENDIF 125 IF( kstp == nitrst .AND. lwxios ) THEN 126 CALL iom_swap( cw_ocerst_cxt ) 127 CALL iom_init_closedef( cw_ocerst_cxt ) 128 CALL iom_setkt( kstp - nit000 + 1, cw_ocerst_cxt ) 129 #if defined key_top 130 CALL iom_swap( cw_toprst_cxt ) 131 CALL iom_init_closedef( cw_toprst_cxt ) 132 CALL iom_setkt( kstp - nit000 + 1, cw_toprst_cxt ) 133 #endif 134 ENDIF 135 IF( kstp + nn_fsbc - 1 == nitrst .AND. lwxios ) THEN 136 #if defined key_si3 137 CALL iom_swap( cw_icerst_cxt ) 138 CALL iom_init_closedef( cw_icerst_cxt ) 139 CALL iom_setkt( kstp - nit000 + 1, cw_icerst_cxt ) 140 #endif 141 IF( ln_abl ) THEN 142 CALL iom_swap( cw_ablrst_cxt ) 143 CALL iom_init_closedef( cw_ablrst_cxt ) 144 CALL iom_setkt( kstp - nit000 + 1, cw_ablrst_cxt ) 145 ENDIF 146 ENDIF 126 147 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) 127 148 CALL iom_setkt( kstp - nit000 + 1, cxios_context ) ! tell IOM we are at time step kstp … … 132 153 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 133 154 IF( ln_tide ) CALL tide_update( kstp ) ! update tide potential 134 IF( ln_apr_dyn ) CALL sbc_apr ( kstp ) ! atmospheric pressure (NB: call before bdy_dta which needs ssh_ib) 155 IF( ln_apr_dyn ) CALL sbc_apr ( kstp ) ! atmospheric pressure (NB: call before bdy_dta which needs ssh_ib) 135 156 IF( ln_bdy ) CALL bdy_dta ( kstp, Nnn ) ! update dynamic & tracer data at open boundaries 136 157 IF( ln_isf ) CALL isf_stp ( kstp, Nnn ) … … 140 161 ! Update stochastic parameters and random T/S fluctuations 141 162 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 142 IF( ln_sto_eos ) CALL sto_par( kstp )! Stochastic parameters143 IF( ln_sto_eos ) CALL sto_pts( ts(:,:,:,:,Nnn) )! Random T/S fluctuations163 IF( ln_sto_eos ) CALL sto_par( kstp ) ! Stochastic parameters 164 IF( ln_sto_eos ) CALL sto_pts( ts(:,:,:,:,Nnn) ) ! Random T/S fluctuations 144 165 145 166 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 167 188 & CALL zps_hde_isf( kstp, Nnn, jpts, ts(:,:,:,:,Nbb), gtsu, gtsv, gtui, gtvi, & ! Partial steps for top cell (ISF) 168 189 & rhd, gru , grv , grui, grvi ) ! of t, s, rd at the first ocean level 169 IF( ln_traldf_triad ) THEN 190 IF( ln_traldf_triad ) THEN 170 191 CALL ldf_slp_triad( kstp, Nbb, Nnn ) ! before slope for triad operator 171 ELSE 192 ELSE 172 193 CALL ldf_slp ( kstp, rhd, rn2b, Nbb, Nnn ) ! before slope for standard operator 173 194 ENDIF … … 175 196 ! ! eddy diffusivity coeff. 176 197 IF( l_ldftra_time .OR. l_ldfeiv_time ) CALL ldf_tra( kstp, Nbb, Nnn ) ! and/or eiv coeff. 177 IF( l_ldfdyn_time ) CALL ldf_dyn( kstp, Nbb ) ! eddy viscosity coeff. 198 IF( l_ldfdyn_time ) CALL ldf_dyn( kstp, Nbb ) ! eddy viscosity coeff. 178 199 179 200 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 181 202 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 182 203 183 CALL ssh_nxt ( kstp, Nbb, Nnn, ssh, Naa ) ! after ssh (includes call to div_hor) 184 IF( .NOT.ln_linssh ) CALL dom_vvl_sf_nxt( kstp, Nbb, Nnn, Naa ) ! after vertical scale factors 185 CALL wzv ( kstp, Nbb, Nnn, Naa, ww ) ! now cross-level velocity 186 IF( ln_zad_Aimp ) CALL wAimp ( kstp, Nnn ) ! Adaptive-implicit vertical advection partitioning 187 CALL eos ( ts(:,:,:,:,Nnn), rhd, rhop, gdept(:,:,:,Nnn) ) ! now in situ density for hpg computation 188 189 204 CALL ssh_nxt ( kstp, Nbb, Nnn, ssh, Naa ) ! after ssh (includes call to div_hor) 205 IF( .NOT.ln_linssh ) & 206 & CALL dom_vvl_sf_nxt( kstp, Nbb, Nnn, Naa ) ! after vertical scale factors 207 CALL wzv ( kstp, Nbb, Nnn, Naa, ww ) ! now cross-level velocity 208 IF( ln_zad_Aimp ) CALL wAimp ( kstp, Nnn ) ! Adaptive-implicit vertical advection partitioning 209 CALL eos ( ts(:,:,:,:,Nnn), rhd, rhop, gdept(:,:,:,Nnn) ) ! now in situ density for hpg computation 210 211 190 212 uu(:,:,:,Nrhs) = 0._wp ! set dynamics trends to zero 191 213 vv(:,:,:,Nrhs) = 0._wp … … 195 217 IF( ln_bdy ) CALL bdy_dyn3d_dmp ( kstp, Nbb, uu, vv, Nrhs ) ! bdy damping trends 196 218 #if defined key_agrif 197 IF(.NOT. Agrif_Root()) & 219 IF(.NOT. Agrif_Root()) & 198 220 & CALL Agrif_Sponge_dyn ! momentum sponge 199 221 #endif … … 212 234 CALL dyn_zdf ( kstp, Nbb, Nnn, Nrhs, uu, vv, Naa ) ! vertical diffusion 213 235 IF( ln_dynspg_ts ) THEN ! vertical scale factors and vertical velocity need to be updated 214 CALL wzv ( kstp, Nbb, Nnn, Naa, ww ) ! now cross-level velocity236 CALL wzv ( kstp, Nbb, Nnn, Naa, ww ) ! Nnn cross-level velocity 215 237 IF( ln_zad_Aimp ) CALL wAimp ( kstp, Nnn ) ! Adaptive-implicit vertical advection partitioning 216 238 ENDIF 217 239 218 240 219 241 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 220 242 ! cool skin 221 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 243 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 222 244 IF ( ln_diurnal ) CALL diurnal_layers( kstp ) 223 245 224 246 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 225 247 ! diagnostics and outputs … … 235 257 IF( lk_diadetide ) CALL dia_detide( kstp ) ! Weights computation for daily detiding of model diagnostics 236 258 IF( lk_diamlr ) CALL dia_mlr ! Update time used in multiple-linear-regression analysis 237 259 238 260 #if defined key_top 239 261 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 240 262 ! Passive Tracer Model 241 263 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 242 CALL trc_stp ( kstp, Nbb, Nnn, Nrhs, Naa ) ! time-stepping 243 #endif 244 245 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 246 ! Active tracers 247 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 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 264 CALL trc_stp ( kstp, Nbb, Nnn, Nrhs, Naa ) ! time-stepping 265 #endif 266 267 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 268 ! Active tracers 269 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 270 ! Loop over tile domains 271 DO jtile = 1, nijtile 272 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = jtile ) 273 274 DO_3D( 0, 0, 0, 0, 1, jpk ) 275 ts(ji,jj,jk,:,Nrhs) = 0._wp ! set tracer trends to zero 276 END_3D 277 278 IF( lk_asminc .AND. ln_asmiau .AND. & 279 & ln_trainc ) CALL tra_asm_inc( kstp, Nbb, Nnn, ts, Nrhs ) ! apply tracer assimilation increment 280 CALL tra_sbc ( kstp, Nnn, ts, Nrhs ) ! surface boundary condition 281 IF( ln_traqsr ) CALL tra_qsr ( kstp, Nnn, ts, Nrhs ) ! penetrative solar radiation qsr 282 IF( ln_isf ) CALL tra_isf ( kstp, Nnn, ts, Nrhs ) ! ice shelf heat flux 283 IF( ln_trabbc ) CALL tra_bbc ( kstp, Nnn, ts, Nrhs ) ! bottom heat flux 284 IF( ln_trabbl ) CALL tra_bbl ( kstp, Nbb, Nnn, ts, Nrhs ) ! advective (and/or diffusive) bottom boundary layer scheme 285 IF( ln_tradmp ) CALL tra_dmp ( kstp, Nbb, Nnn, ts, Nrhs ) ! internal damping trends 286 IF( ln_bdy ) CALL bdy_tra_dmp( kstp, Nbb, ts, Nrhs ) ! bdy damping trends 287 END DO 288 289 #if defined key_agrif 290 IF(.NOT. Agrif_Root() ) THEN 291 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 ) 292 CALL Agrif_Sponge_tra ! tracers sponge 293 ENDIF 294 #endif 295 296 ! TEMP: [tiling] Separate loop over tile domains (due to tra_adv workarounds for tiling) 297 DO jtile = 1, nijtile 298 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = jtile ) 299 300 CALL tra_adv ( kstp, Nbb, Nnn, ts, Nrhs ) ! hor. + vert. advection ==> RHS 301 IF( ln_zdfmfc ) CALL tra_mfc ( kstp, Nbb, ts, Nrhs ) ! Mass Flux Convection 302 IF( ln_zdfosm ) THEN 303 CALL tra_osm ( kstp, Nnn, ts, Nrhs ) ! OSMOSIS non-local tracer fluxes ==> RHS 304 IF( lrst_oce ) CALL osm_rst ( kstp, Nnn, 'WRITE' ) ! write OSMOSIS outputs + ww (so must do here) to restarts 305 ENDIF 306 CALL tra_ldf ( kstp, Nbb, Nnn, ts, Nrhs ) ! lateral mixing 307 308 CALL tra_zdf ( kstp, Nbb, Nnn, Nrhs, ts, Naa ) ! vertical mixing and after tracer fields 309 IF( ln_zdfnpc ) CALL tra_npc ( kstp, Nnn, Nrhs, ts, Naa ) ! update after fields by non-penetrative convection 310 END DO 311 312 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 ) ! Revert to tile over full domain 272 313 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 273 314 ! Set boundary conditions, time filter and swap time levels 274 315 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 275 !!jc1: For agrif, it would be much better to finalize tracers/momentum here (e.g. bdy conditions) and move the swap 276 !! (and time filtering) after Agrif update. Then restart would be done after and would contain updated fields. 277 !! If so: 316 !!jc1: For agrif, it would be much better to finalize tracers/momentum here (e.g. bdy conditions) and move the swap 317 !! (and time filtering) after Agrif update. Then restart would be done after and would contain updated fields. 318 !! If so: 278 319 !! (i) no need to call agrif update at initialization time 279 !! (ii) no need to update "before" fields 320 !! (ii) no need to update "before" fields 280 321 !! 281 !! Apart from creating new tra_swp/dyn_swp routines, this however: 282 !! (i) makes boundary conditions at initialization time computed from updated fields which is not the case between 283 !! two restarts => restartability issue. One can circumvent this, maybe, by assuming "interface separation", 284 !! e.g. a shift of the feedback interface inside child domain. 322 !! Apart from creating new tra_swp/dyn_swp routines, this however: 323 !! (i) makes boundary conditions at initialization time computed from updated fields which is not the case between 324 !! two restarts => restartability issue. One can circumvent this, maybe, by assuming "interface separation", 325 !! e.g. a shift of the feedback interface inside child domain. 285 326 !! (ii) requires that all restart outputs of updated variables by agrif (e.g. passive tracers/tke/barotropic arrays) are done at the same 286 327 !! place. 287 !! 328 !! 288 329 !!jc2: dynnxt must be the latest call. e3t(:,:,:,Nbb) are indeed updated in that routine 289 330 CALL tra_atf ( kstp, Nbb, Nnn, Naa, ts ) ! time filtering of "now" tracer arrays … … 312 353 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 313 354 ! AGRIF recursive integration 314 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 355 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 315 356 Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs ! agrif_oce module copies of time level indices 316 357 CALL Agrif_Integrate_ChildGrids( stp ) ! allows to finish all the Child Grids before updating … … 325 366 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 326 367 ! AGRIF update 327 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 328 IF( Agrif_NbStepint() == 0 .AND. nstop == 0 ) THEN329 330 ENDIF 331 332 #endif 333 IF( ln_diaobs .AND. nstop == 0 )CALL dia_obs( kstp, Nnn ) ! obs-minus-model (assimilation) diags (after dynamics update)368 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 369 IF( Agrif_NbStepint() == 0 .AND. nstop == 0 ) & 370 & CALL Agrif_update_all( ) ! Update all components 371 372 #endif 373 IF( ln_diaobs .AND. nstop == 0 ) & 374 & CALL dia_obs( kstp, Nnn ) ! obs-minus-model (assimilation) diags (after dynamics update) 334 375 335 376 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 336 377 ! File manipulation at the end of the first time step 337 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 378 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 338 379 IF( kstp == nit000 ) THEN ! 1st time step only 339 380 CALL iom_close( numror ) ! close input ocean restart file 381 IF( lrxios ) CALL iom_context_finalize( cr_ocerst_cxt ) 340 382 IF(lwm) CALL FLUSH ( numond ) ! flush output namelist oce 341 383 IF(lwm .AND. numoni /= -1 ) CALL FLUSH ( numoni ) ! flush output namelist ice (if exist) … … 347 389 IF( lk_oasis .AND. nstop == 0 ) CALL sbc_cpl_snd( kstp, Nbb, Nnn ) ! coupled mode : field exchanges 348 390 ! 349 #if defined key_ iomput391 #if defined key_xios 350 392 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 351 393 ! Finalize contextes if end of simulation or error detected 352 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 353 IF( kstp == nitend .OR. nstop > 0 ) THEN 394 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 395 IF( kstp == nitend .OR. nstop > 0 ) THEN 354 396 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 355 IF( lrxios ) CALL iom_context_finalize( crxios_context ) 356 IF( ln_crs ) CALL iom_context_finalize( trim(cxios_context)//"_crs" ) ! 397 IF( ln_crs ) CALL iom_context_finalize( trim(cxios_context)//"_crs" ) ! 357 398 ENDIF 358 399 #endif 359 400 ! 360 401 IF( l_1st_euler ) THEN ! recover Leap-frog timestep 361 rDt = 2._wp * rn_Dt402 rDt = 2._wp * rn_Dt 362 403 r1_Dt = 1._wp / rDt 363 l_1st_euler = .FALSE. 404 l_1st_euler = .FALSE. 364 405 ENDIF 365 406 !
Note: See TracChangeset
for help on using the changeset viewer.