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 8644 for branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90 – NEMO

Ignore:
Timestamp:
2017-10-20T10:04:07+02:00 (7 years ago)
Author:
andmirek
Message:

ticket #1962 xios write functionality works

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8600_xios_write/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r8630 r8644  
    4141   USE dianam          ! build name of file 
    4242   USE xios 
    43    USE iom_def, ONLY : wxioso 
     43   USE iom_def, ONLY : max_rst_fields, rst_wfields, RST_FIELD 
    4444# endif 
    4545   USE ioipsl, ONLY :  ju2ymds    ! for calendar 
    4646   USE crs             ! Grid coarsening 
    47    USE sbc_oce, ONLY : lk_oasis, ln_coupled_iceshelf_fluxes, ln_apr_dyn, ln_rnf, nn_components, jp_iam_sas 
    48    USE diadct, ONLY : lk_diadct 
     47   USE lib_fortran  
     48   USE diurnal_bulk, ONLY : ln_diurnal_only 
    4949 
    5050   IMPLICIT NONE 
    51    !  values needed to set correctlyfiles in reast file when using XIOS for writing 
    52    LOGICAL, PUBLIC :: lr_vvl_ztilde, lr_vvl_layer, lr_traadv_cen2 
    53  
    5451   PUBLIC   !   must be public to be able to access iom_def through iom 
     52    
    5553#if defined key_iomput 
    5654   LOGICAL, PUBLIC, PARAMETER ::   lk_iomput = .TRUE.        !: iom_put flag 
     
    6159   PUBLIC iom_getatt, iom_putatt, iom_gettime, iom_rstput, iom_put 
    6260   PUBLIC iom_use, iom_context_finalize 
     61 
    6362   PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 
    6463   PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_get_123d 
     
    6766   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 
    6867   PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_update_file_name, iom_sdate 
    69    PRIVATE set_rstw_active 
     68   PRIVATE set_rst_context, set_rstw_active 
     69   PUBLIC set_rstw_var_active, set_rst_vars 
    7070# endif 
    7171 
     
    9494CONTAINS 
    9595 
    96    SUBROUTINE iom_init( cdname )  
     96   SUBROUTINE iom_init( cdname, fname )  
    9797      !!---------------------------------------------------------------------- 
    9898      !!                     ***  ROUTINE   *** 
     
    102102      !!---------------------------------------------------------------------- 
    103103      CHARACTER(len=*), INTENT(in)  :: cdname 
     104      CHARACTER(len=*), OPTIONAL, INTENT(in)  :: fname 
    104105#if defined key_iomput 
    105106 
    106107      TYPE(xios_duration) :: dtime    = xios_duration(0, 0, 0, 0, 0, 0) 
    107108      TYPE(xios_date)     :: start_date 
    108       CHARACTER(len=10) :: clname 
     109      CHARACTER(len=lc) :: clname 
    109110      INTEGER           :: ji, jkmin 
     111      LOGICAL :: lrst_context              ! is context related to restart 
    110112      ! 
    111113      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zt_bnds, zw_bnds 
     
    118120      CALL xios_context_initialize(TRIM(clname), mpi_comm_opa) 
    119121      CALL iom_swap( cdname ) 
    120  
     122      lrst_context =  (TRIM(cdname) == TRIM(wxios_context)) 
    121123 
    122124      ! Calendar type is now defined in xml file  
     
    129131          &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
    130132      END SELECT 
     133 
    131134      ! horizontal grid definition 
    132       CALL set_scalar 
    133  
    134       IF( TRIM(cdname) == TRIM(cxios_context)) THEN   
    135          CALL set_grid( "T", glamt, gphit, .TRUE. )  
    136          CALL set_grid( "U", glamu, gphiu, .TRUE. ) 
    137          CALL set_grid( "V", glamv, gphiv, .TRUE. ) 
    138          CALL set_grid( "W", glamt, gphit, .TRUE. ) 
     135      IF(.NOT.lrst_context) CALL set_scalar 
     136 
     137      IF( TRIM(cdname) == TRIM(cxios_context) ) THEN   
     138         CALL set_grid( "T", glamt, gphit, .FALSE. )  
     139         CALL set_grid( "U", glamu, gphiu, .FALSE. ) 
     140         CALL set_grid( "V", glamv, gphiv, .FALSE. ) 
     141         CALL set_grid( "W", glamt, gphit, .FALSE. ) 
    139142         CALL set_grid_znl( gphit ) 
    140143         ! 
     
    154157         CALL dom_grid_crs   ! Save the parent grid information  & Switch to coarse grid domain 
    155158         ! 
    156          CALL set_grid( "T", glamt_crs, gphit_crs, ln_mskland )  
    157          CALL set_grid( "U", glamu_crs, gphiu_crs, ln_mskland )  
    158          CALL set_grid( "V", glamv_crs, gphiv_crs, ln_mskland )  
    159          CALL set_grid( "W", glamt_crs, gphit_crs, ln_mskland )  
     159         CALL set_grid( "T", glamt_crs, gphit_crs, .FALSE. )  
     160         CALL set_grid( "U", glamu_crs, gphiu_crs, .FALSE. )  
     161         CALL set_grid( "V", glamv_crs, gphiv_crs, .FALSE. )  
     162         CALL set_grid( "W", glamt_crs, gphit_crs, .FALSE. )  
    160163         CALL set_grid_znl( gphit_crs ) 
    161164          ! 
    162165         CALL dom_grid_glo   ! Return to parent grid domain 
    163166         ! 
    164          IF( ln_cfmeta) THEN   ! Add additional grid metadata 
     167         IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(wxios_context)) THEN   ! Add additional grid metadata 
    165168            CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 
    166169            CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) 
     
    175178 
    176179      ! vertical grid definition 
    177       CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 
    178       CALL iom_set_axis_attr( "depthu", paxis = gdept_1d ) 
    179       CALL iom_set_axis_attr( "depthv", paxis = gdept_1d ) 
    180       CALL iom_set_axis_attr( "depthw", paxis = gdepw_1d ) 
    181  
    182       ! Add vertical grid bounds 
    183       jkmin = MIN(2,jpk)  ! in case jpk=1 (i.e. sas2D) 
    184       zt_bnds(2,:        ) = gdept_1d(:) 
    185       zt_bnds(1,jkmin:jpk) = gdept_1d(1:jpkm1) 
    186       zt_bnds(1,1        ) = gdept_1d(1) - e3w_1d(1) 
    187       zw_bnds(1,:        ) = gdepw_1d(:) 
    188       zw_bnds(2,1:jpkm1  ) = gdepw_1d(jkmin:jpk) 
    189       zw_bnds(2,jpk:     ) = gdepw_1d(jpk) + e3t_1d(jpk) 
    190       CALL iom_set_axis_attr( "deptht", bounds=zt_bnds ) 
    191       CALL iom_set_axis_attr( "depthu", bounds=zt_bnds ) 
    192       CALL iom_set_axis_attr( "depthv", bounds=zt_bnds ) 
    193       CALL iom_set_axis_attr( "depthw", bounds=zw_bnds ) 
     180      IF(.NOT.lrst_context) THEN 
     181          CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 
     182          CALL iom_set_axis_attr( "depthu", paxis = gdept_1d ) 
     183          CALL iom_set_axis_attr( "depthv", paxis = gdept_1d ) 
     184          CALL iom_set_axis_attr( "depthw", paxis = gdepw_1d ) 
     185 
     186          ! Add vertical grid bounds 
     187          jkmin = MIN(2,jpk)  ! in case jpk=1 (i.e. sas2D) 
     188          zt_bnds(2,:        ) = gdept_1d(:) 
     189          zt_bnds(1,jkmin:jpk) = gdept_1d(1:jpkm1) 
     190          zt_bnds(1,1        ) = gdept_1d(1) - e3w_1d(1) 
     191          zw_bnds(1,:        ) = gdepw_1d(:) 
     192          zw_bnds(2,1:jpkm1  ) = gdepw_1d(jkmin:jpk) 
     193          zw_bnds(2,jpk:     ) = gdepw_1d(jpk) + e3t_1d(jpk) 
     194          CALL iom_set_axis_attr( "deptht", bounds=zt_bnds ) 
     195          CALL iom_set_axis_attr( "depthu", bounds=zt_bnds ) 
     196          CALL iom_set_axis_attr( "depthv", bounds=zt_bnds ) 
     197          CALL iom_set_axis_attr( "depthw", bounds=zw_bnds ) 
    194198 
    195199 
    196200# if defined key_floats 
    197       CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,nfloat) /) ) 
     201          CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,nfloat) /) ) 
    198202# endif 
    199203#if defined key_lim3 || defined key_lim2 
    200       CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
     204          CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
    201205#endif 
    202       CALL iom_set_axis_attr( "icbcla", class_num ) 
    203       CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) ) 
    204       CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) ) 
    205        
    206       CALL set_xmlatt 
     206          CALL iom_set_axis_attr( "icbcla", class_num ) 
     207          CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) ) 
     208          CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) ) 
     209      ENDIF    
     210      ! automatic definitions of some of the xml attributs 
     211      if(lwp) write(numout,*) TRIM(cdname),' ',TRIM(wxios_context),' TEST1' 
     212      IF( TRIM(cdname) == TRIM(wxios_context) ) THEN 
     213!set names of the fields in restart file IF using XIOS to read/write data 
     214       CALL set_rst_context() 
     215       CALL set_rst_vars(rst_wfields) 
     216!set which fields are to be read from restart file 
     217       CALL set_rstw_active(fname) 
     218      ELSE 
     219       CALL set_xmlatt 
     220      ENDIF 
    207221 
    208222      ! end file definition 
     
    219233   END SUBROUTINE iom_init 
    220234 
    221    SUBROUTINE iom_rstw_init( cdname, filename )  
    222       !!---------------------------------------------------------------------- 
    223       !!                     ***  ROUTINE   *** 
    224       !! 
    225       !! ** Purpose :    
    226       !! 
    227       !!---------------------------------------------------------------------- 
    228       CHARACTER(len=*), INTENT(in)  :: cdname 
    229 #if defined key_iomput 
    230 #if defined key_xios2 
    231       TYPE(xios_duration) :: dtime    = xios_duration(0, 0, 0, 0, 0, 0) 
    232       TYPE(xios_date)     :: start_date 
    233       TYPE(xios_domaingroup)            :: domaingroup_hdl 
    234       TYPE(xios_domain)                 :: domain_hdl 
    235       TYPE(xios_axisgroup)              :: axisgroup_hdl 
    236       TYPE(xios_axis)                   :: axis_hdl 
    237       TYPE(xios_scalar)                 :: scalar_hdl 
    238       TYPE(xios_scalargroup)            :: scalargroup_hdl 
    239 #endif 
    240       CHARACTER(len=128)   :: clname 
    241       INTEGER             :: ji 
    242       ! 
    243       CHARACTER(len=*), OPTIONAL, INTENT(in)  :: filename  
    244       !!---------------------------------------------------------------------- 
    245  
    246       clname = cdname  
    247       IF( TRIM(Agrif_CFixed()) /= '0' )   clname = TRIM(Agrif_CFixed())//"_"//TRIM(cdname) 
    248       CALL xios_context_initialize(TRIM(clname), mpi_comm_opa) 
    249       CALL iom_swap( cdname ) 
    250       ! calendar parameters 
    251 #if defined key_xios2 
    252       ! Calendar type is now defined in xml file  
    253       SELECT CASE ( nleapy )        ! Choose calendar for IOIPSL 
    254       CASE ( 1)   ; CALL xios_define_calendar( TYPE = "Gregorian", time_origin = xios_date(1900,01,01,00,00,00), & 
    255           &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
    256       CASE ( 0)   ; CALL xios_define_calendar( TYPE = "NoLeap"   , time_origin = xios_date(1900,01,01,00,00,00), & 
    257           &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
    258       CASE (30)   ; CALL xios_define_calendar( TYPE = "D360"     , time_origin = xios_date(1900,01,01,00,00,00), & 
    259           &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
    260       END SELECT 
    261  
    262 #endif 
    263       CALL xios_get_handle("domain_definition",domaingroup_hdl) 
    264       CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N") 
    265       CALL set_grid("N", glamt, gphit, .FALSE.) 
    266   
    267       CALL xios_get_handle("axis_definition",axisgroup_hdl) 
    268       CALL xios_add_child(axisgroup_hdl, axis_hdl, "deptht") 
    269 !if unit="m" is present AGRIF configuration fails to compile 
    270       CALL xios_set_axis_attr( "deptht", long_name="Vertical levels in meters", positive="down") 
    271       ! vertical grid definition 
    272       CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 
    273  
    274       CALL xios_get_handle("scalar_definition",scalargroup_hdl) 
    275       CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar") 
    276  
    277       ! automatic definitions of some of the xml attributs 
    278       IF( TRIM(cdname) == TRIM(wxios_context)) THEN 
    279 !set which fields are to be read from restart file 
    280        CALL set_rstw_active(filename) 
    281       ENDIF 
    282  
    283       ! end file definition 
    284       dtime%second = rdt 
    285       CALL xios_set_timestep(dtime) 
    286       CALL xios_close_context_definition() 
    287 #endif 
    288  
    289    END SUBROUTINE iom_rstw_init 
     235   SUBROUTINE set_rstw_var_active(field) 
     236   CHARACTER(len = *), INTENT(IN) :: field 
     237   INTEGER :: i 
     238   LOGICAL :: is_set 
     239 
     240   is_set = .FALSE. 
     241 
     242   DO i = 1, max_rst_fields 
     243       IF(TRIM(rst_wfields(i)%vname) == field) THEN  
     244          rst_wfields(i)%active = .TRUE. 
     245          is_set = .TRUE. 
     246          EXIT 
     247       ENDIF 
     248   ENDDO 
     249!Warn if variable is not in defined in rst_wfields 
     250   IF(.NOT.is_set) THEN 
     251      IF(lwp) write(numout,*) 'variable ', field ,' is available for writing but not defined'  
     252   ENDIF 
     253 
     254   END SUBROUTINE set_rstw_var_active 
     255   
     256   SUBROUTINE set_rstw_core() 
     257!from restart.F90 
     258   CALL set_rstw_var_active("rdt") 
     259   IF ( .NOT. ln_diurnal_only ) THEN 
     260        CALL set_rstw_var_active('ub'  ) 
     261        CALL set_rstw_var_active('vb'  ) 
     262        CALL set_rstw_var_active('tb'  ) 
     263        CALL set_rstw_var_active('sb'  ) 
     264        CALL set_rstw_var_active('sshb') 
     265        ! 
     266        CALL set_rstw_var_active('un'  ) 
     267        CALL set_rstw_var_active('vn'  ) 
     268        CALL set_rstw_var_active('tn'  ) 
     269        CALL set_rstw_var_active('sn'  ) 
     270        CALL set_rstw_var_active('sshn') 
     271        CALL set_rstw_var_active('rhop') 
     272     ! extra variable needed for the ice sheet coupling 
     273        IF ( ln_iscpl ) THEN 
     274             CALL set_rstw_var_active('tmask') 
     275             CALL set_rstw_var_active('umask') 
     276             CALL set_rstw_var_active('vmask') 
     277             CALL set_rstw_var_active('smask') 
     278             CALL set_rstw_var_active('e3t_n') 
     279             CALL set_rstw_var_active('e3u_n') 
     280             CALL set_rstw_var_active('e3v_n') 
     281             CALL set_rstw_var_active('gdepw_n') 
     282        END IF 
     283      ELSE 
     284        CALL set_rstw_var_active('Dsst') 
     285      ENDIF 
     286!from trasbc.F90 
     287         CALL set_rstw_var_active('sbc_hc_b') 
     288         CALL set_rstw_var_active('sbc_sc_b') 
     289   END SUBROUTINE set_rstw_core 
     290 
     291   SUBROUTINE set_rst_vars(fields) 
     292!set names for variables in restart file 
     293   TYPE(RST_FIELD), INTENT(INOUT) :: fields(max_rst_fields) 
     294   INTEGER :: i 
     295        i = 0 
     296        i = i + 1; fields(i)%vname="rdt";            fields(i)%grid="grid_scalar" 
     297        i = i + 1; fields(i)%vname="un";             fields(i)%grid="grid_N_3D" 
     298        i = i + 1; fields(i)%vname="ub";             fields(i)%grid="grid_N_3D" 
     299        i = i + 1; fields(i)%vname="vn";             fields(i)%grid="grid_N_3D" 
     300        i = i + 1; fields(i)%vname="vb";             fields(i)%grid="grid_N_3D"   
     301        i = i + 1; fields(i)%vname="tn";             fields(i)%grid="grid_N_3D" 
     302        i = i + 1; fields(i)%vname="tb";             fields(i)%grid="grid_N_3D" 
     303        i = i + 1; fields(i)%vname="sn";             fields(i)%grid="grid_N_3D" 
     304        i = i + 1; fields(i)%vname="sb";             fields(i)%grid="grid_N_3D" 
     305        i = i + 1; fields(i)%vname="sshn";           fields(i)%grid="grid_N" 
     306        i = i + 1; fields(i)%vname="sshb";           fields(i)%grid="grid_N" 
     307        i = i + 1; fields(i)%vname="rhop";           fields(i)%grid="grid_N_3D" 
     308        i = i + 1; fields(i)%vname="kt";             fields(i)%grid="grid_scalar" 
     309        i = i + 1; fields(i)%vname="ndastp";         fields(i)%grid="grid_scalar" 
     310        i = i + 1; fields(i)%vname="adatrj";         fields(i)%grid="grid_scalar" 
     311        i = i + 1; fields(i)%vname="utau_b";         fields(i)%grid="grid_N" 
     312        i = i + 1; fields(i)%vname="vtau_b";         fields(i)%grid="grid_N" 
     313        i = i + 1; fields(i)%vname="qns_b";          fields(i)%grid="grid_N" 
     314        i = i + 1; fields(i)%vname="emp_b";          fields(i)%grid="grid_N" 
     315        i = i + 1; fields(i)%vname="sfx_b";          fields(i)%grid="grid_N" 
     316        i = i + 1; fields(i)%vname="en" ;            fields(i)%grid="grid_N_3D"  
     317        i = i + 1; fields(i)%vname="avt";            fields(i)%grid="grid_N_3D" 
     318        i = i + 1; fields(i)%vname="avm";            fields(i)%grid="grid_N_3D" 
     319        i = i + 1; fields(i)%vname="avmu";           fields(i)%grid="grid_N_3D" 
     320        i = i + 1; fields(i)%vname="avmv";           fields(i)%grid="grid_N_3D" 
     321        i = i + 1; fields(i)%vname="dissl";          fields(i)%grid="grid_N_3D" 
     322        i = i + 1; fields(i)%vname="sbc_hc_b";       fields(i)%grid="grid_N" 
     323        i = i + 1; fields(i)%vname="sbc_sc_b";       fields(i)%grid="grid_N" 
     324        i = i + 1; fields(i)%vname="qsr_hc_b";       fields(i)%grid="grid_N_3D" 
     325        i = i + 1; fields(i)%vname="fraqsr_1lev";    fields(i)%grid="grid_N" 
     326        i = i + 1; fields(i)%vname="greenland_icesheet_mass" 
     327                                               fields(i)%grid="grid_scalar" 
     328        i = i + 1; fields(i)%vname="greenland_icesheet_timelapsed" 
     329                                               fields(i)%grid="grid_scalar" 
     330        i = i + 1; fields(i)%vname="greenland_icesheet_mass_roc" 
     331                                               fields(i)%grid="grid_scalar" 
     332        i = i + 1; fields(i)%vname="antarctica_icesheet_mass" 
     333                                               fields(i)%grid="grid_scalar" 
     334        i = i + 1; fields(i)%vname="antarctica_icesheet_timelapsed" 
     335                                               fields(i)%grid="grid_scalar" 
     336        i = i + 1; fields(i)%vname="antarctica_icesheet_mass_roc" 
     337                                               fields(i)%grid="grid_scalar" 
     338        i = i + 1; fields(i)%vname="frc_v";          fields(i)%grid="grid_scalar" 
     339        i = i + 1; fields(i)%vname="frc_t";          fields(i)%grid="grid_scalar" 
     340        i = i + 1; fields(i)%vname="frc_s";          fields(i)%grid="grid_scalar" 
     341        i = i + 1; fields(i)%vname="frc_wn_t";       fields(i)%grid="grid_scalar" 
     342        i = i + 1; fields(i)%vname="frc_wn_s";       fields(i)%grid="grid_scalar" 
     343        i = i + 1; fields(i)%vname="ssh_ini";        fields(i)%grid="grid_N" 
     344        i = i + 1; fields(i)%vname="e3t_ini";        fields(i)%grid="grid_N_3D" 
     345        i = i + 1; fields(i)%vname="hc_loc_ini";     fields(i)%grid="grid_N_3D" 
     346        i = i + 1; fields(i)%vname="sc_loc_ini";     fields(i)%grid="grid_N_3D" 
     347        i = i + 1; fields(i)%vname="ssh_hc_loc_ini"; fields(i)%grid="grid_N" 
     348        i = i + 1; fields(i)%vname="ssh_sc_loc_ini"; fields(i)%grid="grid_N" 
     349        i = i + 1; fields(i)%vname="tilde_e3t_b";    fields(i)%grid="grid_N" 
     350        i = i + 1; fields(i)%vname="tilde_e3t_n";    fields(i)%grid="grid_N" 
     351        i = i + 1; fields(i)%vname="hdiv_lf";        fields(i)%grid="grid_N" 
     352        i = i + 1; fields(i)%vname="ub2_b";          fields(i)%grid="grid_N" 
     353        i = i + 1; fields(i)%vname="vb2_b";          fields(i)%grid="grid_N" 
     354        i = i + 1; fields(i)%vname="sshbb_e";        fields(i)%grid="grid_N" 
     355        i = i + 1; fields(i)%vname="ubb_e";          fields(i)%grid="grid_N" 
     356        i = i + 1; fields(i)%vname="vbb_e";          fields(i)%grid="grid_N" 
     357        i = i + 1; fields(i)%vname="sshb_e";         fields(i)%grid="grid_N" 
     358        i = i + 1; fields(i)%vname="ub_e";           fields(i)%grid="grid_N" 
     359        i = i + 1; fields(i)%vname="vb_e";           fields(i)%grid="grid_N" 
     360        i = i + 1; fields(i)%vname="fwf_isf_b";      fields(i)%grid="grid_N" 
     361        i = i + 1; fields(i)%vname="isf_sc_b";       fields(i)%grid="grid_N" 
     362        i = i + 1; fields(i)%vname="isf_hc_b";       fields(i)%grid="grid_N" 
     363        i = i + 1; fields(i)%vname="ssh_ibb";        fields(i)%grid="grid_N" 
     364        i = i + 1; fields(i)%vname="rnf_b";          fields(i)%grid="grid_N" 
     365        i = i + 1; fields(i)%vname="rnf_hc_b";       fields(i)%grid="grid_N" 
     366        i = i + 1; fields(i)%vname="rnf_sc_b";       fields(i)%grid="grid_N" 
     367        i = i + 1; fields(i)%vname="nn_fsbc";        fields(i)%grid="grid_scalar" 
     368        i = i + 1; fields(i)%vname="ssu_m";          fields(i)%grid="grid_N" 
     369        i = i + 1; fields(i)%vname="ssv_m";          fields(i)%grid="grid_N" 
     370        i = i + 1; fields(i)%vname="sst_m";          fields(i)%grid="grid_N" 
     371        i = i + 1; fields(i)%vname="sss_m";          fields(i)%grid="grid_N" 
     372        i = i + 1; fields(i)%vname="ssh_m";          fields(i)%grid="grid_N" 
     373        i = i + 1; fields(i)%vname="e3t_m";          fields(i)%grid="grid_N" 
     374        i = i + 1; fields(i)%vname="frq_m";          fields(i)%grid="grid_N" 
     375        i = i + 1; fields(i)%vname="avmb";           fields(i)%grid="grid_vector" 
     376        i = i + 1; fields(i)%vname="avtb";           fields(i)%grid="grid_vector" 
     377        i = i + 1; fields(i)%vname="ub2_i_b";        fields(i)%grid="grid_N" 
     378        i = i + 1; fields(i)%vname="vb2_i_b";        fields(i)%grid="grid_N" 
     379        i = i + 1; fields(i)%vname="ntime";          fields(i)%grid="grid_scalar" 
     380        i = i + 1; fields(i)%vname="Dsst";           fields(i)%grid="grid_scalar" 
     381        i = i + 1; fields(i)%vname="tmask";          fields(i)%grid="grid_N_3D" 
     382        i = i + 1; fields(i)%vname="umask";          fields(i)%grid="grid_N_3D" 
     383        i = i + 1; fields(i)%vname="vmask";          fields(i)%grid="grid_N_3D" 
     384        i = i + 1; fields(i)%vname="smask";          fields(i)%grid="grid_N_3D" 
     385        i = i + 1; fields(i)%vname="gdepw_n";        fields(i)%grid="grid_N_3D" 
     386        i = i + 1; fields(i)%vname="e3t_n";          fields(i)%grid="grid_N_3D" 
     387        i = i + 1; fields(i)%vname="e3u_n";          fields(i)%grid="grid_N_3D" 
     388        i = i + 1; fields(i)%vname="e3v_n";          fields(i)%grid="grid_N_3D" 
     389        i = i + 1; fields(i)%vname="surf_ini";       fields(i)%grid="grid_N" 
     390        i = i + 1; fields(i)%vname="e3t_b";          fields(i)%grid="grid_N_3D" 
     391        i = i + 1; fields(i)%vname="e3t_n";          fields(i)%grid="grid_N_3D" 
     392        i = i + 1; fields(i)%vname="mxln";           fields(i)%grid="grid_N_3D" 
     393        i = i + 1; fields(i)%vname="e3t_m";          fields(i)%grid="grid_N_3D" 
     394   END SUBROUTINE set_rst_vars 
     395 
    290396 
    291397   SUBROUTINE set_rstw_active(rst_file) 
    292398!sets enabled = .TRUE. for each field in restart file 
    293399   CHARACTER(len=*) :: rst_file 
     400   TYPE(xios_field) :: field_hdl 
    294401   TYPE(xios_file) :: file_hdl 
    295402   TYPE(xios_filegroup) :: filegroup_hdl 
    296  
    297 !set then name of the restart file (OUTPUT!) and enable available fields 
    298         if(lwp) WRITE(numout,*) 'Setting (output) restart filename (for XIOS) to: ',TRIM(rst_file) 
     403   INTEGER :: i 
     404   CHARACTER(lc)  ::   clpath 
     405 
     406!set name of the restart file and enable available fields 
     407        if(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ',rst_file 
    299408        CALL xios_get_handle("file_definition", filegroup_hdl ) 
    300409        CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') 
    301         IF(wxioso.eq.1) THEN 
    302             CALL xios_set_file_attr( "wrestart", type="one_file", name = TRIM(rst_file), & 
    303                enabled=.TRUE., mode="write", output_freq=xios_timestep) 
    304             if(lwp) write(numout,*) 'OPEN ', trim(rst_file), ' in one_file mode' 
    305         ELSE  
    306             CALL xios_set_file_attr( "wrestart", type="multiple_file", name = TRIM(rst_file),& 
    307                enabled=.TRUE., mode="write", output_freq=xios_timestep) 
    308           if(lwp) write(numout,*) 'OPEN ', trim(rst_file), ' in multiple_file mode' 
    309         ENDIF 
    310  
     410        IF(wxioso.eq.1) THEN  
     411           CALL xios_set_file_attr( "wrestart", type="one_file", enabled=.TRUE.,&  
     412                                    mode="write", output_freq=xios_timestep)  
     413           if(lwp) write(numout,*) 'OPEN ', trim(rst_file), ' in one_file mode'  
     414        ELSE   
     415           CALL xios_set_file_attr( "wrestart", type="multiple_file", enabled=.TRUE.,&  
     416                                    mode="write", output_freq=xios_timestep)  
     417           if(lwp) write(numout,*) 'OPEN ', trim(rst_file), ' in multiple_file mode'  
     418        ENDIF  
    311419        CALL xios_set_file_attr( "wrestart", name=trim(rst_file)) 
    312         CALL set_numro_active(file_hdl) 
     420!defin files for restart context 
     421        DO i = 1, max_rst_fields 
     422         IF( rst_wfields(i)%active ) THEN 
     423                CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_wfields(i)%vname)) 
     424                SELECT CASE (TRIM(rst_wfields(i)%grid)) 
     425                 CASE ("grid_N_3D") 
     426                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
     427                        domain_ref="grid_N", axis_ref="deptht", prec = 8, operation = "instant") 
     428                 CASE ("grid_N") 
     429                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
     430                        domain_ref="grid_N", prec = 8, operation = "instant")  
     431                 CASE ("grid_vector") 
     432                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
     433                         axis_ref="deptht", prec = 8, operation = "instant") 
     434                 CASE ("grid_scalar") 
     435                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
     436                        scalar_ref = "grid_scalar", prec = 8, operation = "instant") 
     437                END SELECT 
     438         ENDIF 
     439        END DO 
     440   END SUBROUTINE set_rstw_active 
     441 
     442   SUBROUTINE set_rst_context( )  
     443#if defined key_iomput 
     444   TYPE(xios_domaingroup)            :: domaingroup_hdl  
     445   TYPE(xios_domain)                 :: domain_hdl  
     446   TYPE(xios_axisgroup)              :: axisgroup_hdl  
     447   TYPE(xios_axis)                   :: axis_hdl  
     448   TYPE(xios_scalar)                 :: scalar_hdl  
     449   TYPE(xios_scalargroup)            :: scalargroup_hdl  
     450 
     451     CALL xios_get_handle("domain_definition",domaingroup_hdl)  
     452     CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N")  
     453     CALL set_grid("N", glamt, gphit, .TRUE.)  
    313454  
    314     END SUBROUTINE set_rstw_active 
    315  
    316     SUBROUTINE set_numro_active(file_hdl) 
    317     TYPE(xios_field) :: field_hdl 
    318     TYPE(xios_file) :: file_hdl 
    319  
    320         CALL xios_add_child(file_hdl, field_hdl, "rdt") 
    321         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    322                   scalar_ref = "grid_scalar", operation = "instant") 
    323  
    324         CALL xios_add_child(file_hdl, field_hdl, "rdttra1") 
    325         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    326                   scalar_ref = "grid_scalar", operation = "instant") 
    327  
    328         CALL xios_add_child(file_hdl, field_hdl, "un") 
    329         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    330                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    331  
    332         CALL xios_add_child(file_hdl, field_hdl, "ub") 
    333         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    334                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    335  
    336         CALL xios_add_child(file_hdl, field_hdl, "vn") 
    337         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    338                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    339  
    340         CALL xios_add_child(file_hdl, field_hdl, "vb") 
    341         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    342                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    343  
    344         CALL xios_add_child(file_hdl, field_hdl, "tn") 
    345         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    346                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    347  
    348         CALL xios_add_child(file_hdl, field_hdl, "tb") 
    349         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    350                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    351  
    352         CALL xios_add_child(file_hdl, field_hdl, "sn") 
    353         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    354                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    355  
    356         CALL xios_add_child(file_hdl, field_hdl, "sb") 
    357         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    358                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    359  
    360         CALL xios_add_child(file_hdl, field_hdl, "sshn") 
    361         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    362                   domain_ref = "grid_N", operation = "instant") 
    363  
    364         CALL xios_add_child(file_hdl, field_hdl, "sshb") 
    365         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    366                   domain_ref = "grid_N", operation = "instant") 
    367  
    368         CALL xios_add_child(file_hdl, field_hdl, "hdivn") 
    369         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    370                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    371  
    372         CALL xios_add_child(file_hdl, field_hdl, "hdivb") 
    373         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    374                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    375  
    376         CALL xios_add_child(file_hdl, field_hdl, "rhop") 
    377         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    378                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    379  
    380         CALL xios_add_child(file_hdl, field_hdl, "rotn") 
    381         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    382                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    383  
    384         CALL xios_add_child(file_hdl, field_hdl, "rotb") 
    385         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    386                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    387  
    388 !in daymod.F90 
    389            CALL xios_add_child(file_hdl, field_hdl, "kt") 
    390            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    391                      scalar_ref = "grid_scalar", operation = "instant") 
    392  
    393            CALL xios_add_child(file_hdl, field_hdl, "ndastp") 
    394            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    395                      scalar_ref = "grid_scalar", operation = "instant") 
    396  
    397            CALL xios_add_child(file_hdl, field_hdl, "adatrj") 
    398            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    399                      scalar_ref = "grid_scalar", operation = "instant") 
    400 !end daymod.F90 
    401 !sbcmod.F90 
    402            CALL xios_add_child(file_hdl, field_hdl, "utau_b") 
    403            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    404                      domain_ref = "grid_N", operation = "instant") 
    405  
    406            CALL xios_add_child(file_hdl, field_hdl, "vtau_b") 
    407            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    408                      domain_ref = "grid_N", operation = "instant") 
    409  
    410            CALL xios_add_child(file_hdl, field_hdl, "qns_b") 
    411            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    412                      domain_ref = "grid_N", operation = "instant") 
    413  
    414            CALL xios_add_child(file_hdl, field_hdl, "emp_b") 
    415            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    416                      domain_ref = "grid_N", operation = "instant") 
    417  
    418            CALL xios_add_child(file_hdl, field_hdl, "sfx_b") 
    419            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    420                      domain_ref = "grid_N", operation = "instant") 
    421 !end sbcmod.F90 
    422 !ALL FIELDS ABOUVE ALWAYS 
    423 !zdftke.F90 
    424 #if defined key_zdftke   ||   defined key_esopa 
    425            CALL xios_add_child(file_hdl, field_hdl, "en") 
    426            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    427                      domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    428  
    429            CALL xios_add_child(file_hdl, field_hdl, "avt") 
    430            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    431                      domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    432  
    433            CALL xios_add_child(file_hdl, field_hdl, "avm") 
    434            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    435                      domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    436  
    437            CALL xios_add_child(file_hdl, field_hdl, "avmu") 
    438            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    439                      domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    440  
    441            CALL xios_add_child(file_hdl, field_hdl, "avmv") 
    442            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    443                      domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    444  
    445            CALL xios_add_child(file_hdl, field_hdl, "dissl") 
    446            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    447                      domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
     455     CALL xios_get_handle("axis_definition",axisgroup_hdl)  
     456     CALL xios_add_child(axisgroup_hdl, axis_hdl, "deptht")  
     457!AGRIF fails to compile when unit= is in call to xios_set_axis_attr 
     458!    CALL xios_set_axis_attr( "deptht", long_name="Vertical levels",  unit="m", positive="down")  
     459     CALL xios_set_axis_attr( "deptht", long_name="Vertical levels in meters", positive="down") 
     460     CALL iom_set_axis_attr( "deptht", paxis = gdept_1d )  
     461 
     462     CALL xios_get_handle("scalar_definition", scalargroup_hdl)  
     463     CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar")  
    448464#endif 
    449 !end zdftke.F90 
    450 !traqsr.F90 
    451        CALL xios_add_child(file_hdl, field_hdl, "qsr_hc_b") 
    452        CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    453                      domain_ref="grid_N", axis_ref="deptht" , operation = "instant")         
    454  
    455        CALL xios_add_child(file_hdl, field_hdl, "fraqsr_1lev") 
    456        CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    457                      domain_ref = "grid_N", operation = "instant")         
    458 !END traqsr.F90 
    459 #if defined key_dynspg_flt   ||   defined key_esopa  
    460 !dynspg_flt.F90 
    461            CALL xios_add_child(file_hdl, field_hdl, "gcx") 
    462            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    463                      domain_ref = "grid_N", operation = "instant") 
    464  
    465            CALL xios_add_child(file_hdl, field_hdl, "gcxb") 
    466            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    467                      domain_ref = "grid_N", operation = "instant") 
    468 !end dynspg_flt.F90 
    469 #endif 
    470 !trasbc.F90 START 
    471            CALL xios_add_child(file_hdl, field_hdl, "sbc_hc_b") 
    472            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    473                      domain_ref = "grid_N", operation = "instant") 
    474  
    475            CALL xios_add_child(file_hdl, field_hdl, "sbc_sc_b") 
    476            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    477                      domain_ref = "grid_N", operation = "instant") 
    478  
    479            CALL xios_add_child(file_hdl, field_hdl, "fwf_isf_b") 
    480            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    481                      domain_ref = "grid_N", operation = "instant") 
    482  
    483            CALL xios_add_child(file_hdl, field_hdl, "isf_sc_b") 
    484            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    485                      domain_ref = "grid_N", operation = "instant") 
    486  
    487            CALL xios_add_child(file_hdl, field_hdl, "isf_hc_b") 
    488            CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    489                      domain_ref = "grid_N", operation = "instant") 
    490 !trasbc.F90 END 
    491         IF( lk_oasis) THEN 
    492         ! ln_coupled_iceshelf_fluxes uninitialised unless lk_oasis=true 
    493           IF( ln_coupled_iceshelf_fluxes ) THEN 
    494              CALL xios_add_child(file_hdl, field_hdl, "greenland_icesheet_mass") 
    495              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    496                   scalar_ref = "grid_scalar", operation = "instant") 
    497  
    498              CALL xios_add_child(file_hdl, field_hdl, "greenland_icesheet_timelapsed") 
    499              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    500                   scalar_ref = "grid_scalar", operation = "instant") 
    501  
    502              CALL xios_add_child(file_hdl, field_hdl, "greenland_icesheet_mass_roc") 
    503              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    504                   scalar_ref = "grid_scalar", operation = "instant") 
    505  
    506              CALL xios_add_child(file_hdl, field_hdl, "antarctica_icesheet_mass") 
    507              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    508                   scalar_ref = "grid_scalar", operation = "instant") 
    509  
    510              CALL xios_add_child(file_hdl, field_hdl, "antarctica_icesheet_timelapsed") 
    511              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    512                   scalar_ref = "grid_scalar", operation = "instant") 
    513  
    514              CALL xios_add_child(file_hdl, field_hdl, "antarctica_icesheet_mass_roc") 
    515              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    516                   scalar_ref = "grid_scalar", operation = "instant") 
    517           ENDIF 
    518         ENDIF 
    519 #if defined key_zdfkpp 
    520         CALL xios_add_child(file_hdl, field_hdl, "rhd") 
    521         CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    522              domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    523 #endif 
    524 !dia_hsb_rst 
    525 #if defined key_diadct 
    526         IF( lk_diadct     ) THEN 
    527              CALL xios_add_child(file_hdl, field_hdl, "frc_v") 
    528              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    529                   scalar_ref = "grid_scalar", operation = "instant") 
    530  
    531              CALL xios_add_child(file_hdl, field_hdl, "frc_t") 
    532              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    533                   scalar_ref = "grid_scalar", operation = "instant") 
    534  
    535              CALL xios_add_child(file_hdl, field_hdl, "frc_s") 
    536              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    537                   scalar_ref = "grid_scalar", operation = "instant") 
    538  
    539              CALL xios_add_child(file_hdl, field_hdl, "ssh_ini") 
    540              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    541                   domain_ref = "grid_N", operation = "instant") 
    542  
    543              CALL xios_add_child(file_hdl, field_hdl, "e3t_ini") 
    544              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    545                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    546  
    547              CALL xios_add_child(file_hdl, field_hdl, "hc_loc_ini") 
    548              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    549                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    550  
    551              CALL xios_add_child(file_hdl, field_hdl, "sc_loc_ini") 
    552              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    553                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    554  
    555  
    556              IF( .NOT. lk_vvl ) THEN 
    557                 CALL xios_add_child(file_hdl, field_hdl, "frc_wn_t") 
    558                 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    559                      scalar_ref = "grid_scalar", operation = "instant") 
    560  
    561                 CALL xios_add_child(file_hdl, field_hdl, "frc_wn_s") 
    562                 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    563                      scalar_ref = "grid_scalar", operation = "instant") 
    564  
    565                 CALL xios_add_child(file_hdl, field_hdl, "ssh_hc_loc_ini") 
    566                 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    567                      domain_ref = "grid_N", operation = "instant") 
    568  
    569                 CALL xios_add_child(file_hdl, field_hdl, "ssh_sc_loc_ini") 
    570                 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    571                      domain_ref = "grid_N", operation = "instant") 
    572  
    573  
    574              ENDIF 
    575         ENDIF 
    576 #endif 
    577 !end dia_hsb_rst 
    578 !domvvl.F90 
    579         IF( lk_vvl ) THEN 
    580              CALL xios_add_child(file_hdl, field_hdl, "fse3t_b") 
    581              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    582                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    583  
    584              CALL xios_add_child(file_hdl, field_hdl, "fse3t_n") 
    585              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    586                   domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    587  
    588            IF( lr_vvl_ztilde .OR. lr_vvl_layer ) THEN  ! z_tilde and layer cases ! 
    589              CALL xios_add_child(file_hdl, field_hdl, "tilde_e3t_b") 
    590              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    591                   domain_ref = "grid_N", operation = "instant") 
    592  
    593              CALL xios_add_child(file_hdl, field_hdl, "tilde_e3t_n") 
    594              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    595                   domain_ref = "grid_N", operation = "instant") 
    596             END IF 
    597             IF( lr_vvl_ztilde ) THEN                    ! z_tilde case ! 
    598             CALL xios_add_child(file_hdl, field_hdl, "hdiv_lf") 
    599             CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    600                      domain_ref = "grid_N", operation = "instant") 
    601             ENDIF 
    602          ENDIF 
    603 !end domvvl.F90 
    604 !dynspg_ts.F90 
    605 #if defined key_dynspg_ts   ||   defined key_esopa 
    606          CALL xios_add_child(file_hdl, field_hdl, "ub2_b") 
    607          CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    608               domain_ref = "grid_N", operation = "instant") 
    609  
    610          CALL xios_add_child(file_hdl, field_hdl, "vb2_b") 
    611          CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    612               domain_ref = "grid_N", operation = "instant") 
    613  
    614  
    615          IF (.NOT.ln_bt_av) THEN 
    616             CALL xios_add_child(file_hdl, field_hdl, "sshbb_e") 
    617             CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    618                  domain_ref = "grid_N", operation = "instant") 
    619  
    620             CALL xios_add_child(file_hdl, field_hdl, "ubb_e") 
    621             CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    622                  domain_ref = "grid_N", operation = "instant") 
    623  
    624             CALL xios_add_child(file_hdl, field_hdl, "vbb_e") 
    625             CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    626                  domain_ref = "grid_N", operation = "instant") 
    627  
    628             CALL xios_add_child(file_hdl, field_hdl, "sshb_e") 
    629             CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    630                  domain_ref = "grid_N", operation = "instant") 
    631  
    632             CALL xios_add_child(file_hdl, field_hdl, "ub_e") 
    633             CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    634                  domain_ref = "grid_N", operation = "instant") 
    635  
    636             CALL xios_add_child(file_hdl, field_hdl, "vb_e") 
    637             CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    638                  domain_ref = "grid_N", operation = "instant") 
    639          ENDIF 
    640 #if defined key_agrif 
    641          ! Save time integrated fluxes 
    642          IF ( .NOT.Agrif_Root() ) THEN 
    643                CALL xios_add_child(file_hdl, field_hdl, "ub2_i_b") 
    644                CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    645                     domain_ref = "grid_N", operation = "instant") 
    646  
    647                CALL xios_add_child(file_hdl, field_hdl, "vb2_i_b") 
    648                CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    649                     domain_ref = "grid_N", operation = "instant") 
    650          ENDIF 
    651 #endif 
    652 #endif 
    653 !end dynspg_ts.F90 
    654 !sbcapr.F90 
    655           IF( ln_apr_dyn) THEN 
    656              CALL xios_add_child(file_hdl, field_hdl, "ssh_ibb") 
    657              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    658                      domain_ref = "grid_N", operation = "instant") 
    659           ENDIF 
    660 !end sbcapr.F90 
    661 !sbcrnf.F90 
    662         IF( ln_rnf      ) THEN 
    663              CALL xios_add_child(file_hdl, field_hdl, "rnf_b") 
    664              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    665                   domain_ref = "grid_N", operation = "instant") 
    666  
    667              CALL xios_add_child(file_hdl, field_hdl, "rnf_hc_b") 
    668              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    669                   domain_ref = "grid_N", operation = "instant") 
    670  
    671              CALL xios_add_child(file_hdl, field_hdl, "rnf_sc_b") 
    672              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    673                   domain_ref = "grid_N", operation = "instant") 
    674         ENDIF  
    675 !end sbcrnf.F90 
    676 !sbcssm.F90 
    677         IF( nn_components /= jp_iam_sas .AND. nn_fsbc .NE. 1) THEN 
    678              CALL xios_add_child(file_hdl, field_hdl, "nn_fsbc") 
    679              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    680                   scalar_ref = "grid_scalar", operation = "instant") 
    681  
    682              CALL xios_add_child(file_hdl, field_hdl, "ssu_m") 
    683              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    684                   domain_ref = "grid_N", operation = "instant") 
    685  
    686              CALL xios_add_child(file_hdl, field_hdl, "ssv_m") 
    687              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    688                   domain_ref = "grid_N", operation = "instant") 
    689  
    690              CALL xios_add_child(file_hdl, field_hdl, "sst_m") 
    691              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    692                   domain_ref = "grid_N", operation = "instant") 
    693  
    694              CALL xios_add_child(file_hdl, field_hdl, "sss_m") 
    695              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    696                   domain_ref = "grid_N", operation = "instant") 
    697  
    698              CALL xios_add_child(file_hdl, field_hdl, "ssh_m") 
    699              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    700                   domain_ref = "grid_N", operation = "instant") 
    701  
    702              CALL xios_add_child(file_hdl, field_hdl, "frq_m") 
    703              CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    704                      domain_ref = "grid_N", operation = "instant") 
    705  
    706              IF( lk_vvl )  THEN 
    707                 CALL xios_add_child(file_hdl, field_hdl, "e3t_m") 
    708                 CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    709                      domain_ref = "grid_N", operation = "instant") 
    710              ENDIF  
    711         ENDIF 
    712 !end sbcssm.F90 
    713        IF( lr_traadv_cen2   ) THEN 
    714           CALL xios_add_child(file_hdl, field_hdl, "avmb") 
    715           CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    716                axis_ref = "deptht", operation = "instant") 
    717  
    718           CALL xios_add_child(file_hdl, field_hdl, "avtb") 
    719           CALL xios_set_attr (field_hdl, enabled = .TRUE., prec = 8,           & 
    720                axis_ref = "deptht", operation = "instant") 
    721        ENDIF 
    722  
    723    END SUBROUTINE set_numro_active 
     465   END SUBROUTINE set_rst_context 
    724466 
    725467   SUBROUTINE iom_swap( cdname ) 
     
    16311373      LOGICAL :: lx                ! local xios write flag 
    16321374      INTEGER :: ivid   ! variable id 
     1375 
    16331376      lx = .FALSE. 
    16341377      IF(PRESENT(lxios)) lx = lxios 
     
    16451388               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    16461389               SELECT CASE (iom_file(kiomid)%iolib) 
    1647                CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
    16481390               CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
    1649                CASE (jprstdimg)   ;   IF( kt == kwrite )    CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pvar ) 
    16501391               CASE DEFAULT      
    1651                   CALL ctl_stop( 'iom_rp0d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     1392                  CALL ctl_stop( 'iom_rp0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    16521393               END SELECT 
    16531394            ENDIF 
     
    16661407      LOGICAL :: lx                ! local xios write flag 
    16671408      INTEGER :: ivid   ! variable id 
     1409 
    16681410      lx = .FALSE. 
    16691411      IF(PRESENT(lxios)) lx = lxios 
     
    16801422               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    16811423               SELECT CASE (iom_file(kiomid)%iolib) 
    1682                CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
    16831424               CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
    1684                CASE (jprstdimg)   ;   IF( kt == kwrite )    CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r1d = pvar ) 
    16851425               CASE DEFAULT      
    1686                   CALL ctl_stop( 'iom_rp1d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     1426                  CALL ctl_stop( 'iom_rp1d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    16871427               END SELECT 
    16881428            ENDIF 
     
    16991439      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
    17001440      LOGICAL, OPTIONAL :: lxios   ! xios write flag 
    1701       LOGICAL :: lx                ! local xios write flag 
     1441      LOGICAL :: lx 
    17021442      INTEGER :: ivid   ! variable id 
     1443 
    17031444      lx = .FALSE. 
    17041445      IF(PRESENT(lxios)) lx = lxios 
     
    17151456               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    17161457               SELECT CASE (iom_file(kiomid)%iolib) 
    1717                CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
    17181458               CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
    1719                CASE (jprstdimg)   ;   IF( kt == kwrite )   CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r2d = pvar )  
    17201459               CASE DEFAULT      
    1721                   CALL ctl_stop( 'iom_rp2d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     1460                  CALL ctl_stop( 'iom_rp2d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    17221461               END SELECT 
    17231462            ENDIF 
     
    17361475      LOGICAL :: lx                 ! local xios write flag 
    17371476      INTEGER :: ivid   ! variable id 
     1477 
    17381478      lx = .FALSE. 
    17391479      IF(PRESENT(lxios)) lx = lxios 
     
    17501490               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    17511491               SELECT CASE (iom_file(kiomid)%iolib) 
    1752                CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
    17531492               CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
    1754                CASE (jprstdimg)   ;   IF( kt == kwrite )   CALL iom_rstdimg_rstput( kiomid, cdvar, ivid, pv_r3d = pvar ) 
    17551493               CASE DEFAULT      
    1756                   CALL ctl_stop( 'iom_rp3d: accepted IO library are only jpioipsl and jprstdimg' ) 
     1494                  CALL ctl_stop( 'iom_rp3d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    17571495               END SELECT 
    17581496            ENDIF 
     
    18001538   SUBROUTINE iom_p3d( cdname, pfield3d ) 
    18011539      CHARACTER(LEN=*)                , INTENT(in) ::   cdname 
     1540      REAL(wp),       DIMENSION(:,:,:), INTENT(in) ::   pfield3d 
    18021541#if defined key_iomput 
    18031542      CALL xios_send_field(cdname, pfield3d) 
     
    19601699      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zmask 
    19611700      INTEGER  :: ni,nj 
    1962       LOGICAL :: lxios 
     1701      LOGICAL, INTENT(IN) :: lxios 
    19631702       
    19641703      ni=nlei-nldi+1 ; nj=nlej-nldj+1 
Note: See TracChangeset for help on using the changeset viewer.