Changeset 13016


Ignore:
Timestamp:
2020-06-03T12:48:36+02:00 (4 months ago)
Author:
andmirek
Message:

Ticket #2475 implementation of new interface

Location:
NEMO/branches/2020/dev_12905_xios_ancil
Files:
27 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_12905_xios_ancil/cfgs/SHARED/namelist_ref

    r12530 r13016  
    9494   ln_use_jattr = .false.    !  use (T) the file attribute: open_ocean_jstart, if present 
    9595   !                         !  in netcdf input files, as the start j-row for reading 
     96   ln_xios_cfg = .false.     !  Read configuration data using XIOS (T) 
    9697/ 
    9798!----------------------------------------------------------------------- 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DIA/diahsb.F90

    r12489 r13016  
    258258      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
    259259         IF( ln_rstart ) THEN                   !* Read the restart file 
     260            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    260261            ! 
    261262            IF(lwp) WRITE(numout,*) 
     
    279280               CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini, ldxios = lrxios ) 
    280281            ENDIF 
     282            IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    281283         ELSE 
    282284            IF(lwp) WRITE(numout,*) 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DOM/closea.F90

    r12377 r13016  
    2020   !!---------------------------------------------------------------------- 
    2121   USE in_out_manager  ! I/O manager 
     22   USE iom_def 
    2223   ! 
    2324   USE diu_bulk    , ONLY: ln_diurnal_only            ! used for sanity check 
    24    USE iom         , ONLY: iom_open, iom_get, iom_close, jpdom_data ! I/O routines 
     25   USE iom         , ONLY: iom_open, iom_get, iom_close, jpdom_data, iom_swap ! I/O routines 
    2526   USE lib_fortran , ONLY: glob_sum                   ! fortran library 
    2627   USE lib_mpp     , ONLY: mpp_max, ctl_nam, ctl_stop ! MPP library 
     
    235236      !!---------------------------------------------------------------------- 
    236237      ! 
     238      IF(lcfg_xios) CALL iom_swap("dom_context") 
     239 
    237240      CALL iom_open ( cd_file, ics ) 
    238       CALL iom_get  ( ics, jpdom_data, TRIM(cd_var), zdta ) 
     241      CALL iom_get  ( ics, jpdom_data, TRIM(cd_var), zdta,  ldxios = lcfg_xios ) 
     242 
    239243      CALL iom_close( ics ) 
    240244      k_mskout(:,:) = NINT(zdta(:,:)) 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DOM/daymod.F90

    r12489 r13016  
    323323 
    324324      IF( TRIM(cdrw) == 'READ' ) THEN 
    325  
     325         IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    326326         IF( iom_varid( numror, 'kt', ldstop = .FALSE. ) > 0 ) THEN 
    327327            ! Get Calendar informations 
     
    401401         ENDIF 
    402402         ! 
     403         IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    403404      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN 
    404405         ! 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DOM/domain.F90

    r12489 r13016  
    122122      CALL dom_glo                     ! global domain versus local domain 
    123123      CALL dom_nam                     ! read namelist ( namrun, namdom ) 
     124 
     125      lcfg_xios = ln_xios_cfg .AND. (.NOT. ln_use_jattr) 
    124126      ! 
    125127      IF( lwxios ) THEN 
     
    301303      ENDIF 
    302304      ! 
    303       ! 
    304305      READ  ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) 
    305306901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namrun in reference namelist' ) 
     
    340341            WRITE(numout,*) '      READ restart for a single file using XIOS ln_xios_read =', ln_xios_read 
    341342            WRITE(numout,*) '      Write restart using XIOS        nn_wxios   = ', nn_wxios 
     343            WRITE(numout,*) '      READ config using XIOS          ln_xios_cfg  = ', ln_xios_cfg 
    342344         ELSE 
    343345            WRITE(numout,*) "      AGRIF: nn_wxios will be ingored. See setting for parent" 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DOM/domhgr.F90

    r10068 r13016  
    189189      CALL iom_open( cn_domcfg, inum ) 
    190190      ! 
    191       CALL iom_get( inum, jpdom_data, 'glamt', plamt, lrowattr=ln_use_jattr ) 
    192       CALL iom_get( inum, jpdom_data, 'glamu', plamu, lrowattr=ln_use_jattr ) 
    193       CALL iom_get( inum, jpdom_data, 'glamv', plamv, lrowattr=ln_use_jattr ) 
    194       CALL iom_get( inum, jpdom_data, 'glamf', plamf, lrowattr=ln_use_jattr ) 
    195       ! 
    196       CALL iom_get( inum, jpdom_data, 'gphit', pphit, lrowattr=ln_use_jattr ) 
    197       CALL iom_get( inum, jpdom_data, 'gphiu', pphiu, lrowattr=ln_use_jattr ) 
    198       CALL iom_get( inum, jpdom_data, 'gphiv', pphiv, lrowattr=ln_use_jattr ) 
    199       CALL iom_get( inum, jpdom_data, 'gphif', pphif, lrowattr=ln_use_jattr ) 
    200       ! 
    201       CALL iom_get( inum, jpdom_data, 'e1t'  , pe1t  , lrowattr=ln_use_jattr ) 
    202       CALL iom_get( inum, jpdom_data, 'e1u'  , pe1u  , lrowattr=ln_use_jattr ) 
    203       CALL iom_get( inum, jpdom_data, 'e1v'  , pe1v  , lrowattr=ln_use_jattr ) 
    204       CALL iom_get( inum, jpdom_data, 'e1f'  , pe1f  , lrowattr=ln_use_jattr ) 
    205       ! 
    206       CALL iom_get( inum, jpdom_data, 'e2t'  , pe2t  , lrowattr=ln_use_jattr ) 
    207       CALL iom_get( inum, jpdom_data, 'e2u'  , pe2u  , lrowattr=ln_use_jattr ) 
    208       CALL iom_get( inum, jpdom_data, 'e2v'  , pe2v  , lrowattr=ln_use_jattr ) 
    209       CALL iom_get( inum, jpdom_data, 'e2f'  , pe2f  , lrowattr=ln_use_jattr ) 
     191      IF(lcfg_xios) THEN 
     192         CALL iom_dom_context(cn_domcfg, inum) 
     193         CALL iom_swap("dom_context") 
     194      ENDIF 
     195      CALL iom_get( inum, jpdom_data, 'glamt', plamt, lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     196      CALL iom_get( inum, jpdom_data, 'glamu', plamu, lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     197      CALL iom_get( inum, jpdom_data, 'glamv', plamv, lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     198      CALL iom_get( inum, jpdom_data, 'glamf', plamf, lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     199      ! 
     200      CALL iom_get( inum, jpdom_data, 'gphit', pphit, lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     201      CALL iom_get( inum, jpdom_data, 'gphiu', pphiu, lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     202      CALL iom_get( inum, jpdom_data, 'gphiv', pphiv, lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     203      CALL iom_get( inum, jpdom_data, 'gphif', pphif, lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     204      ! 
     205      CALL iom_get( inum, jpdom_data, 'e1t'  , pe1t  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     206      CALL iom_get( inum, jpdom_data, 'e1u'  , pe1u  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     207      CALL iom_get( inum, jpdom_data, 'e1v'  , pe1v  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     208      CALL iom_get( inum, jpdom_data, 'e1f'  , pe1f  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     209      ! 
     210      CALL iom_get( inum, jpdom_data, 'e2t'  , pe2t  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     211      CALL iom_get( inum, jpdom_data, 'e2u'  , pe2u  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     212      CALL iom_get( inum, jpdom_data, 'e2v'  , pe2v  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     213      CALL iom_get( inum, jpdom_data, 'e2f'  , pe2f  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    210214      ! 
    211215      IF(  iom_varid( inum, 'ff_f', ldstop = .FALSE. ) > 0  .AND.  & 
    212216         & iom_varid( inum, 'ff_t', ldstop = .FALSE. ) > 0    ) THEN 
    213217         IF(lwp) WRITE(numout,*) '           Coriolis factor at f- and t-points read in ', TRIM( cn_domcfg ), ' file' 
    214          CALL iom_get( inum, jpdom_data, 'ff_f'  , pff_f  , lrowattr=ln_use_jattr ) 
    215          CALL iom_get( inum, jpdom_data, 'ff_t'  , pff_t  , lrowattr=ln_use_jattr ) 
     218         CALL iom_get( inum, jpdom_data, 'ff_f'  , pff_f  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     219         CALL iom_get( inum, jpdom_data, 'ff_t'  , pff_t  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    216220         kff = 1 
    217221      ELSE 
     
    221225      IF( iom_varid( inum, 'e1e2u', ldstop = .FALSE. ) > 0 ) THEN 
    222226         IF(lwp) WRITE(numout,*) '           e1e2u & e1e2v read in ', TRIM( cn_domcfg ), ' file' 
    223          CALL iom_get( inum, jpdom_data, 'e1e2u'  , pe1e2u  , lrowattr=ln_use_jattr ) 
    224          CALL iom_get( inum, jpdom_data, 'e1e2v'  , pe1e2v  , lrowattr=ln_use_jattr ) 
     227         CALL iom_get( inum, jpdom_data, 'e1e2u'  , pe1e2u  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     228         CALL iom_get( inum, jpdom_data, 'e1e2v'  , pe1e2v  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    225229         ke1e2u_v = 1 
    226230      ELSE 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DOM/domvvl.F90

    r12740 r13016  
    793793         IF( ln_rstart ) THEN                   !* Read the restart file 
    794794            CALL rst_read_open                  !  open the restart file if necessary 
     795            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    795796            CALL iom_get( numror, jpdom_autoglo, 'sshn'   , ssh(:,:,Kmm), ldxios = lrxios    ) 
    796797            ! 
     
    870871            ENDIF 
    871872            ! 
     873            IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    872874         ELSE                                   !* Initialize at "rest" 
    873875            ! 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DOM/domzgr.F90

    r12377 r13016  
    219219      ! 
    220220      CALL iom_open( cn_domcfg, inum ) 
     221 
     222      IF(lcfg_xios) CALL iom_swap("dom_context") 
    221223      ! 
    222224      !                          !* type of vertical coordinate 
     
    229231      ! 
    230232      !                          !* ocean cavities under iceshelves 
    231       CALL iom_get( inum, 'ln_isfcav', z_cav ) 
     233      CALL iom_get( inum, 'ln_isfcav', z_cav, ldxios = lcfg_xios ) 
    232234      IF( z_cav == 0._wp ) THEN   ;   ld_isfcav = .false.   ;   ELSE   ;   ld_isfcav = .true.   ;   ENDIF 
    233235      ! 
    234236      !                          !* vertical scale factors 
    235       CALL iom_get( inum, jpdom_unknown, 'e3t_1d'  , pe3t_1d  )                     ! 1D reference coordinate 
    236       CALL iom_get( inum, jpdom_unknown, 'e3w_1d'  , pe3w_1d  ) 
    237       ! 
    238       CALL iom_get( inum, jpdom_data, 'e3t_0'  , pe3t  , lrowattr=ln_use_jattr )    ! 3D coordinate 
    239       CALL iom_get( inum, jpdom_data, 'e3u_0'  , pe3u  , lrowattr=ln_use_jattr ) 
    240       CALL iom_get( inum, jpdom_data, 'e3v_0'  , pe3v  , lrowattr=ln_use_jattr ) 
    241       CALL iom_get( inum, jpdom_data, 'e3f_0'  , pe3f  , lrowattr=ln_use_jattr ) 
    242       CALL iom_get( inum, jpdom_data, 'e3w_0'  , pe3w  , lrowattr=ln_use_jattr ) 
    243       CALL iom_get( inum, jpdom_data, 'e3uw_0' , pe3uw , lrowattr=ln_use_jattr ) 
    244       CALL iom_get( inum, jpdom_data, 'e3vw_0' , pe3vw , lrowattr=ln_use_jattr ) 
     237      CALL iom_get( inum, jpdom_unknown, 'e3t_1d'  , pe3t_1d, ldxios = lcfg_xios   )                     ! 1D reference coordinate 
     238      CALL iom_get( inum, jpdom_unknown, 'e3w_1d'  , pe3w_1d, ldxios = lcfg_xios   ) 
     239      ! 
     240      CALL iom_get( inum, jpdom_data, 'e3t_0'  , pe3t  , lrowattr=ln_use_jattr, ldxios = lcfg_xios )    ! 3D coordinate 
     241      CALL iom_get( inum, jpdom_data, 'e3u_0'  , pe3u  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     242      CALL iom_get( inum, jpdom_data, 'e3v_0'  , pe3v  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     243      CALL iom_get( inum, jpdom_data, 'e3f_0'  , pe3f  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     244      CALL iom_get( inum, jpdom_data, 'e3w_0'  , pe3w  , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     245      CALL iom_get( inum, jpdom_data, 'e3uw_0' , pe3uw , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     246      CALL iom_get( inum, jpdom_data, 'e3vw_0' , pe3vw , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    245247      ! 
    246248      !                          !* depths 
     
    252254         CALL ctl_warn( 'zgr_read : old definition of depths and scale factors used ', &  
    253255            &           '           depths at t- and w-points read in the domain configuration file') 
    254          CALL iom_get( inum, jpdom_unknown, 'gdept_1d', pdept_1d )    
    255          CALL iom_get( inum, jpdom_unknown, 'gdepw_1d', pdepw_1d ) 
    256          CALL iom_get( inum, jpdom_data   , 'gdept_0' , pdept , lrowattr=ln_use_jattr ) 
    257          CALL iom_get( inum, jpdom_data   , 'gdepw_0' , pdepw , lrowattr=ln_use_jattr ) 
     256         CALL iom_get( inum, jpdom_unknown, 'gdept_1d', pdept_1d, ldxios = lcfg_xios )    
     257         CALL iom_get( inum, jpdom_unknown, 'gdepw_1d', pdepw_1d, ldxios = lcfg_xios ) 
     258         CALL iom_get( inum, jpdom_data   , 'gdept_0' , pdept , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
     259         CALL iom_get( inum, jpdom_data   , 'gdepw_0' , pdepw , lrowattr=ln_use_jattr, ldxios = lcfg_xios ) 
    258260         ! 
    259261      ELSE                                !- depths computed from e3. scale factors 
     
    269271      ! 
    270272      !                          !* ocean top and bottom level 
    271       CALL iom_get( inum, jpdom_data, 'top_level'    , z2d  , lrowattr=ln_use_jattr )   ! 1st wet T-points (ISF) 
     273      CALL iom_get( inum, jpdom_data, 'top_level'    , z2d  , lrowattr=ln_use_jattr, ldxios = lcfg_xios )   ! 1st wet T-points (ISF) 
    272274      k_top(:,:) = NINT( z2d(:,:) ) 
    273       CALL iom_get( inum, jpdom_data, 'bottom_level' , z2d  , lrowattr=ln_use_jattr )   ! last wet T-points 
     275      CALL iom_get( inum, jpdom_data, 'bottom_level' , z2d  , lrowattr=ln_use_jattr, ldxios = lcfg_xios )   ! last wet T-points 
    274276      k_bot(:,:) = NINT( z2d(:,:) ) 
    275277      ! 
    276278      ! reference depth for negative bathy (wetting and drying only) 
    277       IF( ll_wd )  CALL iom_get( inum,  'rn_wd_ref_depth' , ssh_ref   ) 
    278       ! 
     279      IF( ll_wd )  CALL iom_get( inum,  'rn_wd_ref_depth' , ssh_ref, ldxios = lcfg_xios   ) 
     280      ! 
     281      IF(lcfg_xios) THEN 
     282         CALL iom_context_finalize( "dom_context") 
     283      ENDIF 
    279284      CALL iom_close( inum ) 
    280285      ! 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/DYN/dynspg_ts.F90

    r12489 r13016  
    890890      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
    891891         !                                   ! --------------- 
     892         IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    892893         IF( ln_rstart .AND. ln_bt_fw .AND. (.NOT.l_1st_euler) ) THEN    !* Read the restart file 
    893894            CALL iom_get( numror, jpdom_autoglo, 'ub2_b'  , ub2_b  (:,:), ldxios = lrxios )    
     
    923924         ENDIF 
    924925         ! 
     926         IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    925927      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
    926928         !                                   ! ------------------- 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/IOM/in_out_manager.F90

    r12377 r13016  
    4545   LOGICAL       ::   ln_xios_read     !: use xios to read single file restart 
    4646   INTEGER       ::   nn_wxios         !: write resart using xios 0 - no, 1 - single, 2 - multiple file output 
     47   LOGICAL       ::   ln_xios_cfg      !: use xios to read single file restart in namelist 
    4748   INTEGER       ::   nn_no            !: Assimilation cycle 
    4849 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/IOM/iom.F90

    r12649 r13016  
    4646   USE lib_fortran  
    4747   USE diu_bulk, ONLY : ln_diurnal_only, ln_diurnal 
     48   USE netcdf 
     49   USE iom_nf90 
    4850 
    4951   IMPLICIT NONE 
     
    5860   PUBLIC iom_chkatt, iom_getatt, iom_putatt, iom_getszuld, iom_rstput, iom_delay_rst, iom_put 
    5961   PUBLIC iom_use, iom_context_finalize, iom_update_file_name, iom_miss_val 
     62   PUBLIC iom_dom_context 
    6063 
    6164   PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 
     
    6568   PRIVATE iom_set_domain_attr, iom_set_axis_attr, iom_set_field_attr, iom_set_file_attr, iom_get_file_attr, iom_set_grid_attr 
    6669   PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_sdate 
    67    PRIVATE iom_set_rst_context, iom_set_rstw_active, iom_set_rstr_active 
     70   PRIVATE iom_set_rst_context, iom_set_rstw_active, iom_set_rstr_active, iom_set_vars_active 
    6871# endif 
    6972   PUBLIC iom_set_rstw_var_active, iom_set_rstw_core, iom_set_rst_vars 
     
    306309 
    307310   END SUBROUTINE iom_init_closedef 
     311 
     312   SUBROUTINE iom_set_vars_active(cdfname, idnum) 
     313      !!--------------------------------------------------------------------- 
     314      !!                   ***  SUBROUTINE  iom_set_vars_active  *** 
     315      !! 
     316      !! ** Purpose :  define filename in XIOS context for reading file, 
     317      !!               enable variables present in restart file for reading with XIOS  
     318      !!               id of a file is assumed to be rrestart. 
     319      !!--------------------------------------------------------------------- 
     320 
     321!sets enabled = .TRUE. for each field in restart file 
     322   CHARACTER(len=*), INTENT(IN) :: cdfname 
     323   INTEGER         , INTENT(IN) :: idnum  
     324#if defined key_iomput 
     325   INTEGER                                    :: ndims, nvars, natts, unlimitedDimId, dimlen, xtype,mdims 
     326   TYPE(xios_field)                           :: field_hdl 
     327   TYPE(xios_file)                            :: file_hdl 
     328   TYPE(xios_filegroup)                       :: filegroup_hdl 
     329   INTEGER                                    :: dimids(4), jv,i, idim 
     330   CHARACTER(LEN=256)                         :: clinfo               ! info character 
     331   INTEGER, ALLOCATABLE                       :: indimlens(:) 
     332   CHARACTER(LEN=nf90_max_name), ALLOCATABLE  :: indimnames(:) 
     333   CHARACTER(LEN=nf90_max_name)               :: dimname, varname 
     334   LOGICAL                                    :: lmeta 
     335 
     336        meta(1) = "nav_lat" 
     337        meta(2) = "nav_lon" 
     338        meta(3) = "nav_lev" 
     339        meta(4) = "time_instant" 
     340        meta(5) = "time_instant_bounds" 
     341        meta(6) = "time_counter" 
     342        meta(7) = "time_counter_bounds" 
     343        meta(8) = "x" 
     344        meta(9) = "y" 
     345        meta(10) = "numcat" 
     346 
     347        clinfo = '          iom_set_vars_active, file: '//TRIM(cdfname) 
     348 
     349        IF(lwp) write(numout, *) TRIM(clinfo) 
     350        IF(lwp) CALL FLUSH(numout) 
     351!set name of the restart file and enable available fields 
     352        CALL xios_get_handle("file_definition", filegroup_hdl ) 
     353        CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart') 
     354        CALL xios_set_file_attr( "rrestart", name=trim(cdfname), type="one_file", & 
     355             par_access="collective", enabled=.TRUE., mode="read",                 & 
     356             output_freq=xios_timestep) 
     357 
     358        CALL iom_nf90_check( nf90_inquire(idnum, ndims, nvars, natts ), clinfo ) 
     359        ALLOCATE(indimlens(ndims), indimnames(ndims)) 
     360        CALL iom_nf90_check( nf90_inquire(idnum, unlimitedDimId = unlimitedDimId ), clinfo ) 
     361 
     362        DO idim = 1, ndims 
     363           CALL iom_nf90_check( nf90_inquire_dimension(idnum, idim, dimname, dimlen ), clinfo ) 
     364           indimlens(idim) = dimlen 
     365           indimnames(idim) = dimname 
     366        ENDDO 
     367 
     368        DO jv =1, nvars 
     369            lmeta = .FALSE. 
     370            CALL iom_nf90_check( nf90_inquire_variable(idnum, jv, varname, xtype, ndims, dimids, natts ), clinfo ) 
     371            DO i = 1, NMETA 
     372               IF(TRIM(varname) == TRIM(meta(i))) THEN 
     373                  lmeta = .TRUE. 
     374               ENDIF 
     375            ENDDO 
     376            IF(.NOT.lmeta) THEN 
     377               CALL xios_add_child(file_hdl, field_hdl, TRIM(varname)) 
     378               mdims = ndims 
     379 
     380               IF(ANY(dimids(1:ndims) == unlimitedDimId)) THEN 
     381                mdims = mdims - 1 
     382               ENDIF 
     383 
     384               IF(mdims == 3) THEN 
     385                      CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname),   & 
     386                                   domain_ref="grid_N", axis_ref=TRIM(iom_axis(indimlens(dimids(mdims)))), & 
     387                                   prec = 8, operation = "instant") 
     388               ELSEIF(mdims == 2) THEN 
     389                      CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname), & 
     390                                          domain_ref="grid_N", prec = 8, operation = "instant")  
     391               ELSEIF(mdims == 1) THEN 
     392                      CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname), & 
     393                                          axis_ref=TRIM(iom_axis(indimlens(dimids(mdims)))), prec = 8, operation = "instant") 
     394               ELSEIF(mdims == 0) THEN 
     395                      CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname), & 
     396                                                scalar_ref = "grid_scalar", prec = 8, operation = "instant") 
     397               ELSE 
     398                      WRITE(ctmp1,*) 'iom_set_vars_active: variable ', TRIM(varname) ,' incorrect number of dimensions'  
     399                      CALL ctl_stop( 'iom_set_vars_active:', ctmp1 ) 
     400               ENDIF 
     401            ENDIF 
     402        ENDDO 
     403        DEALLOCATE(indimlens, indimnames) 
     404#endif 
     405   END SUBROUTINE iom_set_vars_active 
     406 
     407   FUNCTION iom_axis(idlev) result(axis_ref) 
     408     !!--------------------------------------------------------------------- 
     409      !!                   ***  FUNCTION  iom_axis  *** 
     410      !! 
     411      !! ** Purpose : Used for grid definition when XIOS is used to read/write 
     412      !!              restart or configuration data. Returns axis corresponding  
     413      !!              to the number of levels given as an input variable. Axes  
     414      !!              are defined in routine iom_set_rst_context or iom_dom_context 
     415      !!              depending on context 
     416      !!--------------------------------------------------------------------- 
     417    INTEGER, INTENT(IN) :: idlev 
     418    CHARACTER(len=lc)   :: axis_ref 
     419    CHARACTER(len=12)   :: str 
     420       IF(idlev == jpk) THEN 
     421         axis_ref="nav_lev" 
     422#if defined key_si3 
     423       ELSEIF(idlev == jpl) THEN 
     424         axis_ref="numcat" 
     425#endif          
     426       ELSE 
     427         write(str, *) idlev 
     428         CALL ctl_stop( 'iom_axis', 'Definition for axis with '//TRIM(ADJUSTL(str))//' levels missing') 
     429       ENDIF 
     430   END FUNCTION iom_axis 
    308431 
    309432   SUBROUTINE iom_set_rstw_var_active(field) 
     
    659782      ! 
    660783      CALL xios_set_current_context(nemo_hdl) 
     784       
    661785#endif 
    662786      ! 
     
    9801104      ELSE 
    9811105#if defined key_iomput 
    982          IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 
    983          CALL iom_swap( TRIM(crxios_context) ) 
     1106         IF(lwp) WRITE(numout,*) 'XIOS READ (0D): ', trim(cdvar) 
    9841107         CALL xios_recv_field( trim(cdvar), pvar) 
    985          CALL iom_swap( TRIM(cxios_context) ) 
    9861108#else 
    9871109         WRITE(ctmp1,*) 'Can not use XIOS in iom_g0d, file: '//trim(clname)//', var:'//trim(cdvar) 
     
    13341456#if defined key_iomput 
    13351457!would be good to be able to check which context is active and swap only if current is not restart 
    1336          CALL iom_swap( TRIM(crxios_context) )  
    13371458         IF( PRESENT(pv_r3d) ) THEN 
    13381459            pv_r3d(:, :, :) = 0. 
    1339             if(lwp) write(numout,*) 'XIOS RST READ (3D): ',trim(cdvar) 
     1460            if(lwp) write(numout,*) 'XIOS READ (3D): ',trim(cdvar) 
    13401461            CALL xios_recv_field( trim(cdvar), pv_r3d) 
    13411462            IF(idom /= jpdom_unknown ) then 
     
    13441465         ELSEIF( PRESENT(pv_r2d) ) THEN 
    13451466            pv_r2d(:, :) = 0. 
    1346             if(lwp) write(numout,*) 'XIOS RST READ (2D): ', trim(cdvar) 
     1467            if(lwp) write(numout,*) 'XIOS READ (2D): ', trim(cdvar) 
    13471468            CALL xios_recv_field( trim(cdvar), pv_r2d) 
    13481469            IF(idom /= jpdom_unknown ) THEN 
     
    13511472         ELSEIF( PRESENT(pv_r1d) ) THEN 
    13521473            pv_r1d(:) = 0. 
    1353             if(lwp) write(numout,*) 'XIOS RST READ (1D): ', trim(cdvar) 
     1474            if(lwp) write(numout,*) 'XIOS READ (1D): ', trim(cdvar) 
    13541475            CALL xios_recv_field( trim(cdvar), pv_r1d) 
    13551476         ENDIF 
    1356          CALL iom_swap( TRIM(cxios_context) ) 
    13571477#else 
    13581478         istop = istop + 1  
     
    13941514   END SUBROUTINE iom_get_var 
    13951515 
     1516   SUBROUTINE iom_dom_context(fdname, numr)   
     1517      !!----------------------------------------------------------------------- 
     1518      !!                  ***  FUNCTION  iom_getszuld  *** 
     1519      !! 
     1520      !! ** Purpose : initialize context for reading domain information 
     1521      !!----------------------------------------------------------------------- 
     1522      INTEGER, PARAMETER                   :: maxf = 48 
     1523      CHARACTER(len=*), INTENT(IN)         :: fdname 
     1524      INTEGER,          INTENT(IN)         :: numr 
     1525      !local variables 
     1526      CHARACTER(len=lc)                    :: cxname 
     1527      CHARACTER(len=lc)                    :: cfile 
     1528      TYPE(xios_domaingroup)               :: domaingroup_hdl  
     1529      TYPE(xios_domain)                    :: domain_hdl  
     1530      TYPE(xios_axisgroup)                 :: axisgroup_hdl  
     1531      TYPE(xios_axis)                      :: axis_hdl  
     1532      TYPE(xios_scalar)                    :: scalar_hdl  
     1533      TYPE(xios_scalargroup)               :: scalargroup_hdl  
     1534      TYPE(xios_field) :: field_hdl 
     1535      TYPE(xios_file) :: file_hdl 
     1536      TYPE(xios_filegroup) :: filegroup_hdl 
     1537      TYPE(xios_duration) :: dtime    = xios_duration(0, 0, 0, 0, 0, 0) 
     1538      INTEGER :: i 
     1539      INTEGER :: ni 
     1540      INTEGER :: nj 
     1541      !!----------------------------------------------------------------------- 
     1542 
     1543#if defined key_iomput 
     1544      cxname = "dom_context" 
     1545      IF( TRIM(Agrif_CFixed()) .NE. '0' ) THEN 
     1546         CALL xios_context_initialize(TRIM(Agrif_CFixed())//"_"//TRIM(cxname), mpi_comm_oce) 
     1547      ELSE 
     1548         CALL xios_context_initialize(TRIM(cxname), mpi_comm_oce) 
     1549      ENDIF 
     1550      CALL iom_swap( cxname ) 
     1551!calendar must be defined always 
     1552      CALL xios_define_calendar( TYPE = "NoLeap"   , time_origin = xios_date(1,1,1,00,00,00), & 
     1553          &                                    start_date = xios_date(1,1,1,0,0,0) ) 
     1554     CALL xios_get_handle("domain_definition",domaingroup_hdl)  
     1555     CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N")  
     1556     ni = nlei-nldi+1 
     1557     nj = nlej-nldj+1 
     1558     ! 
     1559     CALL iom_set_domain_attr("grid_N", ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 
     1560     CALL iom_set_domain_attr("grid_N", data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
     1561  
     1562     CALL xios_get_handle("axis_definition",axisgroup_hdl)  
     1563     CALL xios_add_child(axisgroup_hdl, axis_hdl, "nav_lev")  
     1564!AGRIF fails to compile when unit= is in call to xios_set_axis_attr 
     1565!    CALL xios_set_axis_attr( "nav_lev", long_name="Vertical levels in meters", positive="down") 
     1566     CALL xios_set_axis_attr ("nav_lev", n_glo=jpk ) 
     1567 
     1568     CALL xios_get_handle("scalar_definition", scalargroup_hdl)  
     1569     CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar")  
     1570 
     1571     IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
     1572        cfile = TRIM(fdname) 
     1573     ELSE 
     1574        cfile = TRIM(Agrif_CFixed())//"_"//TRIM(fdname) 
     1575     ENDIF 
     1576     CALL iom_set_vars_active(cfile, iom_file(numr)%nfid) 
     1577    ! set time step length 
     1578     dtime%second = rn_Dt 
     1579     CALL xios_set_timestep( dtime ) 
     1580 
     1581     CALL iom_init_closedef 
     1582#endif 
     1583   END SUBROUTINE iom_dom_context 
    13961584 
    13971585   FUNCTION iom_getszuld ( kiomid )   
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/IOM/iom_def.F90

    r12649 r13016  
    99   !!---------------------------------------------------------------------- 
    1010   USE par_kind 
     11   USE netcdf 
    1112 
    1213   IMPLICIT NONE 
     
    4546   LOGICAL, PUBLIC            ::   lxios_sini = .FALSE. ! is restart in a single file 
    4647   LOGICAL, PUBLIC            ::   lxios_set  = .FALSE.  
     48!XIOS configuration read 
     49   LOGICAL, PUBLIC            ::   lcfg_xios       !: read configuration using XIOS 
    4750 
    4851 
     
    7376    LOGICAL           :: active =.FALSE. ! for restart write only: true - write field, false do not write field 
    7477   END TYPE RST_FIELD 
     78!metadata in restart file for restart read with XIOS 
     79   INTEGER, PUBLIC, PARAMETER :: NMETA = 10 
     80   CHARACTER(LEN=nf90_max_name), PUBLIC :: meta(NMETA) 
    7581!$AGRIF_END_DO_NOT_TREAT 
    7682   ! 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/IOM/iom_nf90.F90

    r12649 r13016  
    3131   PUBLIC iom_nf90_open  , iom_nf90_close, iom_nf90_varid, iom_nf90_get, iom_nf90_rstput 
    3232   PUBLIC iom_nf90_chkatt, iom_nf90_getatt, iom_nf90_putatt 
     33   PUBLIC iom_nf90_check 
    3334 
    3435   INTERFACE iom_nf90_get 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/IOM/restart.F90

    r12489 r13016  
    243243 
    244244      CALL rst_read_open           ! open restart for reading (if not already opened) 
    245  
     245      IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    246246      ! Check dynamics and tracer time-step consistency and force Euler restart if changed 
    247247      IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 )   THEN 
     
    304304      ENDIF 
    305305      ! 
     306      IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    306307   END SUBROUTINE rst_read 
    307308 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/ISF/isfcpl.F90

    r12489 r13016  
    166166      !!---------------------------------------------------------------------- 
    167167      ! 
     168      IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    168169      CALL iom_get( numror, jpdom_autoglo, 'ssmask'  , zssmask_b, ldxios = lrxios   ) ! need to extrapolate T/S 
     170      IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    169171 
    170172      ! compute new ssh if we open a full water column  
     
    244246      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) :: zts0 
    245247      !!---------------------------------------------------------------------- 
    246       !  
     248      ! 
     249      IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    247250      CALL iom_get( numror, jpdom_autoglo, 'tmask'  , ztmask_b, ldxios = lrxios   ) ! need to extrapolate T/S 
    248251      !CALL iom_get( numror, jpdom_autoglo, 'wmask'  , zwmask_b, ldxios = lrxios   ) ! need to extrapolate T/S 
    249252      !CALL iom_get( numror, jpdom_autoglo, 'gdepw_n', zdepw_b(:,:,:), ldxios = lrxios ) ! need to interpol vertical profile (vvl) 
     253      IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    250254      ! 
    251255      !  
     
    391395      !!---------------------------------------------------------------------- 
    392396      ! 
     397      IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    393398      CALL iom_get( numror, jpdom_autoglo, 'tmask'  , ztmask_b, ldxios = lrxios ) 
    394399      CALL iom_get( numror, jpdom_autoglo, 'e3u_n'  , ze3u_b  , ldxios = lrxios ) 
    395400      CALL iom_get( numror, jpdom_autoglo, 'e3v_n'  , ze3v_b  , ldxios = lrxios ) 
     401      IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    396402      ! 
    397403      ! 1.0: compute horizontal volume flux divergence difference before-after coupling 
     
    495501 
    496502      ! get restart variable 
     503      IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    497504      CALL iom_get( numror, jpdom_autoglo, 'tmask'  , ztmask_b(:,:,:), ldxios = lrxios   ) ! need to extrapolate T/S 
    498505      CALL iom_get( numror, jpdom_autoglo, 'e3t_n'  , ze3t_b(:,:,:)  , ldxios = lrxios ) 
    499506      CALL iom_get( numror, jpdom_autoglo, 'tn'     , zt_b(:,:,:)    , ldxios = lrxios ) 
    500507      CALL iom_get( numror, jpdom_autoglo, 'sn'     , zs_b(:,:,:)    , ldxios = lrxios ) 
     508      IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    501509 
    502510      ! compute run length 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/ISF/isfrst.F90

    r11931 r13016  
    5252      ! read restart 
    5353      IF( iom_varid( numror, cfwf_b, ldstop = .FALSE. ) > 0 ) THEN 
     54         IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    5455         IF(lwp) WRITE(numout,*) '          nit000-1 isf tracer content forcing fields read in the restart file' 
    5556         CALL iom_get( numror, jpdom_autoglo, cfwf_b, pfwf_b(:,:)        , ldxios = lrxios )   ! before ice shelf melt 
    5657         CALL iom_get( numror, jpdom_autoglo, chc_b , ptsc_b (:,:,jp_tem), ldxios = lrxios )   ! before ice shelf heat flux 
    5758         CALL iom_get( numror, jpdom_autoglo, csc_b , ptsc_b (:,:,jp_sal), ldxios = lrxios )   ! before ice shelf heat flux 
     59         IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    5860      ELSE 
    5961         pfwf_b(:,:)   = pfwf(:,:) 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/SBC/sbcapr.F90

    r12489 r13016  
    6565      CHARACTER(len=100) ::  cn_dir   ! Root directory for location of ssr files 
    6666      TYPE(FLD_N)        ::  sn_apr   ! informations about the fields to be read 
    67       LOGICAL            ::  lrxios   ! read restart using XIOS? 
    6867      !! 
    6968      NAMELIST/namsbc_apr/ cn_dir, sn_apr, ln_ref_apr, rn_pref, ln_apr_obc 
     
    154153         IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN  
    155154            IF(lwp) WRITE(numout,*) 'sbc_apr:   ssh_ibb read in the restart file' 
     155            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    156156            CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb, ldxios = lrxios )   ! before inv. barometer ssh 
     157            IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    157158            ! 
    158159         ELSE                                         !* no restart: set from nit000 values 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/SBC/sbcmod.F90

    r12489 r13016  
    517517            & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN 
    518518            IF(lwp) WRITE(numout,*) '          nit000-1 surface forcing fields red in the restart file' 
     519            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    519520            CALL iom_get( numror, jpdom_autoglo, 'utau_b', utau_b, ldxios = lrxios )   ! before i-stress  (U-point) 
    520521            CALL iom_get( numror, jpdom_autoglo, 'vtau_b', vtau_b, ldxios = lrxios )   ! before j-stress  (V-point) 
     
    529530               sfx_b (:,:) = sfx(:,:) 
    530531            ENDIF 
     532            IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    531533         ELSE                                                   !* no restart: set from nit000 values 
    532534            IF(lwp) WRITE(numout,*) '          nit000-1 surface forcing fields set to nit000' 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/SBC/sbcrnf.F90

    r12489 r13016  
    159159            & iom_varid( numror, 'rnf_b', ldstop = .FALSE. ) > 0 ) THEN 
    160160            IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields red in the restart file', lrxios 
     161            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    161162            CALL iom_get( numror, jpdom_autoglo, 'rnf_b', rnf_b, ldxios = lrxios )     ! before runoff 
    162163            CALL iom_get( numror, jpdom_autoglo, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before heat content of runoff 
    163164            CALL iom_get( numror, jpdom_autoglo, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salinity content of runoff 
     165            IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    164166         ELSE                                                   !* no restart: set from nit000 values 
    165167            IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields set to nit000' 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/SBC/sbcssm.F90

    r12377 r13016  
    207207         IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN 
    208208            l_ssm_mean = .TRUE. 
     209            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    209210            CALL iom_get( numror               , 'nn_fsbc', zf_sbc, ldxios = lrxios )    ! sbc frequency of previous run 
    210211            CALL iom_get( numror, jpdom_autoglo, 'ssu_m'  , ssu_m, ldxios = lrxios  )    ! sea surface mean velocity    (U-point) 
     
    234235               IF(lwp) WRITE(numout,*) '   mean fields read in the ocean restart file' 
    235236            ENDIF 
     237            IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    236238         ENDIF 
    237239      ENDIF 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/TRA/traqsr.F90

    r12489 r13016  
    402402      ! 1st ocean level attenuation coefficient (used in sbcssm) 
    403403      IF( iom_varid( numror, 'fraqsr_1lev', ldstop = .FALSE. ) > 0 ) THEN 
     404         IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    404405         CALL iom_get( numror, jpdom_autoglo, 'fraqsr_1lev'  , fraqsr_1lev, ldxios = lrxios  ) 
     406         IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    405407      ELSE 
    406408         fraqsr_1lev(:,:) = 1._wp   ! default : no penetration 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/TRA/trasbc.F90

    r12489 r13016  
    108108         IF( ln_rstart .AND.    &               ! Restart: read in restart file 
    109109              & iom_varid( numror, 'sbc_hc_b', ldstop = .FALSE. ) > 0 ) THEN 
     110            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    110111            IF(lwp) WRITE(numout,*) '          nit000-1 sbc tracer content field read in the restart file' 
    111112            zfact = 0.5_wp 
     
    113114            CALL iom_get( numror, jpdom_autoglo, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before heat content sbc trend 
    114115            CALL iom_get( numror, jpdom_autoglo, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salt content sbc trend 
     116            IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    115117         ELSE                                   ! No restart or restart not found: Euler forward time stepping 
    116118            zfact = 1._wp 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/ZDF/zdfgls.F90

    r12489 r13016  
    10591059         !                                   ! --------------- 
    10601060         IF( ln_rstart ) THEN                   !* Read the restart file 
     1061            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    10611062            id1 = iom_varid( numror, 'en'    , ldstop = .FALSE. ) 
    10621063            id2 = iom_varid( numror, 'avt_k' , ldstop = .FALSE. ) 
     
    10761077               ! avt_k, avm_k already set to the background value in zdf_phy_init 
    10771078            ENDIF 
     1079            IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    10781080         ELSE                                   !* Start from rest 
    10791081            IF(lwp) WRITE(numout,*) 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/ZDF/zdfosm.F90

    r12489 r13016  
    14591459     !!----------------------------------------------------------------------------- 
    14601460     IF( TRIM(cdrw) == 'READ'.AND. ln_rstart) THEN 
     1461        IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    14611462        id1 = iom_varid( numror, 'wn'   , ldstop = .FALSE. ) 
    14621463        IF( id1 > 0 ) THEN                       ! 'wn' exists; read 
     
    14771478           WRITE(numout,*) ' ===>>>> : previous run without osmosis scheme, hbl computed from stratification' 
    14781479        END IF 
     1480        IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    14791481     END IF 
    14801482 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/ZDF/zdfric.F90

    r12489 r13016  
    210210         !           !* Read the restart file 
    211211         IF( ln_rstart ) THEN 
     212            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    212213            id1 = iom_varid( numror, 'avt_k', ldstop = .FALSE. ) 
    213214            id2 = iom_varid( numror, 'avm_k', ldstop = .FALSE. ) 
     
    217218               CALL iom_get( numror, jpdom_autoglo, 'avm_k', avm_k, ldxios = lrxios ) 
    218219            ENDIF 
     220            IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    219221         ENDIF 
    220222         !           !* otherwise Kz already set to the background value in zdf_phy_init 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/ZDF/zdftke.F90

    r12702 r13016  
    665665         !                                   ! --------------- 
    666666         IF( ln_rstart ) THEN                   !* Read the restart file 
     667            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    667668            id1 = iom_varid( numror, 'en'   , ldstop = .FALSE. ) 
    668669            id2 = iom_varid( numror, 'avt_k', ldstop = .FALSE. ) 
     
    682683               ! avt_k, avm_k already set to the background value in zdf_phy_init 
    683684            ENDIF 
     685            IF(lrxios) CALL iom_swap( TRIM(cxios_context) ) 
    684686         ELSE                                   !* Start from rest 
    685687            IF(lwp) WRITE(numout,*) 
  • NEMO/branches/2020/dev_12905_xios_ancil/src/OCE/nemogcm.F90

    r12641 r13016  
    273273         &             nn_isplt , nn_jsplt, nn_jctls, nn_jctle,             & 
    274274         &             ln_timing, ln_diacfl 
    275       NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr 
     275      NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr, ln_xios_cfg 
    276276      !!---------------------------------------------------------------------- 
    277277      ! 
Note: See TracChangeset for help on using the changeset viewer.