New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 14789 for NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/OCE/step.F90 – NEMO

Ignore:
Timestamp:
2021-05-05T13:18:04+02:00 (3 years ago)
Author:
mcastril
Message:

[2021/HPC-11_mcastril_HPDAonline_DiagGPU] Update externals

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  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
         5^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8^/vendors/PPR@HEAD            ext/PPR 
        89 
        910# SETTE 
        10 ^/utils/CI/sette@13559        sette 
         11^/utils/CI/sette@14244        sette 
  • NEMO/branches/2021/dev_r13747_HPC-11_mcastril_HPDAonline_DiagGPU/src/OCE/step.F90

    r13237 r14789  
    2727   !!            3.6  !  2014-04  (F. Roquet, G. Madec) New equations of state 
    2828   !!            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 
    3030   !!             -   !  2014-12  (G. Madec) remove KPP scheme 
    3131   !!             -   !  2015-11  (J. Chanut) free surface simplification (remove filtered free surface) 
     
    3333   !!            4.1  !  2019-08  (A. Coward, D. Storkey) rewrite in preparation for new timestepping scheme 
    3434   !!---------------------------------------------------------------------- 
    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 
    3841   !!---------------------------------------------------------------------- 
    3942#else 
    4043   !!---------------------------------------------------------------------- 
    41    !!   stp             : OPA system time-stepping 
     44   !!   stp             : OCE system time-stepping 
    4245   !!---------------------------------------------------------------------- 
    4346   USE step_oce         ! time stepping definition modules 
    44    ! 
    45    USE iom              ! xIOs server 
    4647 
    4748   IMPLICIT NONE 
     
    5051   PUBLIC   stp   ! called by nemogcm.F90 
    5152 
    52    !!---------------------------------------------------------------------- 
    53    !! time level indices 
    54    !!---------------------------------------------------------------------- 
    55    INTEGER, PUBLIC :: Nbb, Nnn, Naa, Nrhs          !! used by nemo_init 
    56  
     53   !                                          !**  time level indices  **! 
     54   INTEGER, PUBLIC ::   Nbb, Nnn, Naa, Nrhs   !: used by nemo_init 
     55 
     56   !! * Substitutions 
     57#  include "do_loop_substitute.h90" 
    5758   !!---------------------------------------------------------------------- 
    5859   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    7273      !!                     ***  ROUTINE stp  *** 
    7374      !! 
    74       !! ** Purpose : - Time stepping of OPA  (momentum and active tracer eqs.) 
     75      !! ** Purpose : - Time stepping of OCE  (momentum and active tracer eqs.) 
    7576      !!              - Time stepping of SI3 (dynamic and thermodynamic eqs.) 
    7677      !!              - Time stepping of TRC  (passive tracer eqs.) 
     
    8586      !!              -8- Outputs and diagnostics 
    8687      !!---------------------------------------------------------------------- 
    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 
    9089      !! --------------------------------------------------------------------- 
    9190#if defined key_agrif 
     
    9897      ENDIF 
    9998      IF( kstp == nit000 + 1 )   lk_agrif_fstep = .FALSE. 
    100 # if defined key_iomput 
     99# if defined key_xios 
    101100      IF( Agrif_Nbstepint() == 0 )   CALL iom_swap( cxios_context ) 
    102101# endif 
     
    109108      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    110109      ! 
    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    
    114112         r1_Dt = 1._wp / rDt 
    115113      ENDIF 
    116114      ! 
    117115      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    118       ! update I/O and calendar  
    119       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     116      ! update I/O and calendar 
     117      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     118      ! 
    120119      IF( kstp == nit000 ) THEN                       ! initialize IOM context (must be done after nemo_init for AGRIF+XIOS+OASIS) 
    121120                             CALL iom_init( cxios_context, ld_closedef=.FALSE. )   ! for model grid (including possible AGRIF zoom) 
     
    124123         IF( ln_crs      )   CALL iom_init( TRIM(cxios_context)//"_crs" )  ! for coarse grid 
    125124      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 
    126147      IF( kstp /= nit000 )   CALL day( kstp )         ! Calendar (day was already called at nit000 in day_init) 
    127148                             CALL iom_setkt( kstp - nit000 + 1,      cxios_context          )   ! tell IOM we are at time step kstp 
     
    132153      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    133154      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) 
    135156      IF( ln_bdy     )   CALL bdy_dta ( kstp, Nnn )                   ! update dynamic & tracer data at open boundaries 
    136157      IF( ln_isf     )   CALL isf_stp ( kstp, Nnn ) 
     
    140161      ! Update stochastic parameters and random T/S fluctuations 
    141162      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    142       IF( ln_sto_eos ) CALL sto_par( kstp )          ! Stochastic parameters 
    143       IF( ln_sto_eos ) CALL sto_pts( ts(:,:,:,:,Nnn)  )          ! Random T/S fluctuations 
     163      IF( ln_sto_eos )   CALL sto_par( kstp )                         ! Stochastic parameters 
     164      IF( ln_sto_eos )   CALL sto_pts( ts(:,:,:,:,Nnn)  )             ! Random T/S fluctuations 
    144165 
    145166      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    167188            &            CALL zps_hde_isf( kstp, Nnn, jpts, ts(:,:,:,:,Nbb), gtsu, gtsv, gtui, gtvi,  &  ! Partial steps for top cell (ISF) 
    168189            &                                          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 
    170191                         CALL ldf_slp_triad( kstp, Nbb, Nnn )             ! before slope for triad operator 
    171          ELSE      
     192         ELSE 
    172193                         CALL ldf_slp     ( kstp, rhd, rn2b, Nbb, Nnn )   ! before slope for standard operator 
    173194         ENDIF 
     
    175196      !                                                                        ! eddy diffusivity coeff. 
    176197      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. 
    178199 
    179200      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    181202      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    182203 
    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 
    190212                         uu(:,:,:,Nrhs) = 0._wp            ! set dynamics trends to zero 
    191213                         vv(:,:,:,Nrhs) = 0._wp 
     
    195217      IF( ln_bdy     )   CALL bdy_dyn3d_dmp ( kstp, Nbb,      uu, vv, Nrhs )  ! bdy damping trends 
    196218#if defined key_agrif 
    197       IF(.NOT. Agrif_Root())  &  
     219      IF(.NOT. Agrif_Root())  & 
    198220               &         CALL Agrif_Sponge_dyn        ! momentum sponge 
    199221#endif 
     
    212234                            CALL dyn_zdf    ( kstp, Nbb, Nnn, Nrhs, uu, vv, Naa  )  ! vertical diffusion 
    213235      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 velocity  
     236                            CALL wzv        ( kstp, Nbb, Nnn, Naa, ww )             ! Nnn cross-level velocity 
    215237         IF( ln_zad_Aimp )  CALL wAimp      ( kstp,      Nnn )                      ! Adaptive-implicit vertical advection partitioning 
    216238      ENDIF 
    217        
     239 
    218240 
    219241      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    220242      ! cool skin 
    221       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<       
     243      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    222244      IF ( ln_diurnal )  CALL diurnal_layers( kstp ) 
    223        
     245 
    224246      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    225247      ! diagnostics and outputs 
     
    235257      IF( lk_diadetide ) CALL dia_detide( kstp )                ! Weights computation for daily detiding of model diagnostics 
    236258      IF( lk_diamlr  )   CALL dia_mlr                           ! Update time used in multiple-linear-regression analysis 
    237        
     259 
    238260#if defined key_top 
    239261      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    240262      ! Passive Tracer Model 
    241263      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    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 
    272313      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    273314      ! Set boundary conditions, time filter and swap time levels 
    274315      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    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: 
    278319!!    (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 
    280321!! 
    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. 
    285326!!    (ii) requires that all restart outputs of updated variables by agrif (e.g. passive tracers/tke/barotropic arrays) are done at the same 
    286327!!    place. 
    287 !!  
     328!! 
    288329!!jc2: dynnxt must be the latest call. e3t(:,:,:,Nbb) are indeed updated in that routine 
    289330                         CALL tra_atf       ( kstp, Nbb, Nnn, Naa, ts )                      ! time filtering of "now" tracer arrays 
     
    312353      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    313354      ! AGRIF recursive integration 
    314       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<       
     355      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    315356                         Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs      ! agrif_oce module copies of time level indices 
    316357                         CALL Agrif_Integrate_ChildGrids( stp )       ! allows to finish all the Child Grids before updating 
     
    325366      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    326367      ! AGRIF update 
    327       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<       
    328       IF( Agrif_NbStepint() == 0 .AND. nstop == 0 ) THEN 
    329                          CALL Agrif_update_all( )                  ! Update all components 
    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) 
    334375 
    335376      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    336377      ! File manipulation at the end of the first time step 
    337       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<                          
     378      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    338379      IF( kstp == nit000 ) THEN                          ! 1st time step only 
    339380                                        CALL iom_close( numror )   ! close input  ocean restart file 
     381         IF( lrxios )                   CALL iom_context_finalize( cr_ocerst_cxt ) 
    340382         IF(lwm)                        CALL FLUSH    ( numond )   ! flush output namelist oce 
    341383         IF(lwm .AND. numoni /= -1 )    CALL FLUSH    ( numoni )   ! flush output namelist ice (if exist) 
     
    347389      IF( lk_oasis .AND. nstop == 0 )   CALL sbc_cpl_snd( kstp, Nbb, Nnn )     ! coupled mode : field exchanges 
    348390      ! 
    349 #if defined key_iomput 
     391#if defined key_xios 
    350392      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    351393      ! 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 
    354396                      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" ) ! 
    357398      ENDIF 
    358399#endif 
    359400      ! 
    360401      IF( l_1st_euler ) THEN         ! recover Leap-frog timestep 
    361          rDt = 2._wp * rn_Dt    
     402         rDt   = 2._wp * rn_Dt 
    362403         r1_Dt = 1._wp / rDt 
    363          l_1st_euler = .FALSE.       
     404         l_1st_euler = .FALSE. 
    364405      ENDIF 
    365406      ! 
Note: See TracChangeset for help on using the changeset viewer.