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

Ignore:
Timestamp:
2017-11-23T16:52:17+01:00 (6 years ago)
Author:
andmirek
Message:

#1953 and #1962 merge dev_r8600_xios_read_write r8793

File:
1 edited

Legend:

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

    r8800 r8801  
    4141   USE dianam          ! build name of file 
    4242   USE xios 
    43    USE iom_def, ONLY : max_rst_fields, rst_fields 
     43   USE iom_def, ONLY : max_rst_fields, rst_rfields, rst_wfields, RST_FIELD 
    4444# endif 
    4545   USE ioipsl, ONLY :  ju2ymds    ! for calendar 
    4646   USE crs             ! Grid coarsening 
    4747   USE lib_fortran  
     48   USE diurnal_bulk, ONLY : ln_diurnal_only, ln_diurnal 
    4849 
    4950   IMPLICIT NONE 
     
    6566   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 
    6667   PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_update_file_name, iom_sdate 
    67    PRIVATE set_rst_vars, set_rstr_active, set_rst_context 
     68   PRIVATE iom_set_rst_context, iom_set_rstw_active, iom_set_rstr_active 
     69   PUBLIC iom_set_rstw_var_active, iom_set_rst_vars 
    6870# endif 
    6971 
     
    9294CONTAINS 
    9395 
    94    SUBROUTINE iom_init( cdname )  
     96   SUBROUTINE iom_init( cdname, fname )  
    9597      !!---------------------------------------------------------------------- 
    9698      !!                     ***  ROUTINE   *** 
     
    100102      !!---------------------------------------------------------------------- 
    101103      CHARACTER(len=*), INTENT(in)  :: cdname 
     104      CHARACTER(len=*), OPTIONAL, INTENT(in)  :: fname 
    102105#if defined key_iomput 
    103106 
    104107      TYPE(xios_duration) :: dtime    = xios_duration(0, 0, 0, 0, 0, 0) 
    105108      TYPE(xios_date)     :: start_date 
    106       CHARACTER(len=10) :: clname 
     109      CHARACTER(len=lc) :: clname 
    107110      INTEGER           :: ji, jkmin 
    108111      LOGICAL :: llrst_context              ! is context related to restart 
     
    117120      CALL xios_context_initialize(TRIM(clname), mpi_comm_opa) 
    118121      CALL iom_swap( cdname ) 
    119       llrst_context =  (TRIM(cdname) == TRIM(crxios_context)) 
     122      llrst_context =  (TRIM(cdname) == TRIM(crxios_context) .OR. TRIM(cdname) == TRIM(cwxios_context)) 
    120123 
    121124      ! Calendar type is now defined in xml file  
     
    162165         CALL dom_grid_glo   ! Return to parent grid domain 
    163166         ! 
    164          IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(crxios_context)) THEN   ! Add additional grid metadata 
     167         IF( ln_cfmeta .AND. .NOT. llrst_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)) 
     
    206209      ENDIF    
    207210      ! automatic definitions of some of the xml attributs 
    208       IF( llrst_context ) THEN 
    209 !set names of the fields in restart file IF using XIOS to read/write data 
    210        CALL set_rst_context() 
    211        CALL set_rst_vars() 
     211      IF( TRIM(cdname) == TRIM(crxios_context) ) THEN 
     212!set names of the fields in restart file IF using XIOS to read data 
     213       CALL iom_set_rst_context() 
     214       CALL iom_set_rst_vars(rst_rfields) 
    212215!set which fields are to be read from restart file 
    213        CALL set_rstr_active() 
     216       CALL iom_set_rstr_active() 
     217      ELSE IF( TRIM(cdname) == TRIM(cwxios_context) ) THEN 
     218!set names of the fields in restart file IF using XIOS to write data 
     219       CALL iom_set_rst_context() 
     220       CALL iom_set_rst_vars(rst_wfields) 
     221!set which fields are to be read from restart file 
     222       CALL iom_set_rstw_active(fname) 
    214223      ELSE 
    215224       CALL set_xmlatt 
     
    229238   END SUBROUTINE iom_init 
    230239 
    231     
    232    SUBROUTINE set_rst_vars() 
    233 !set names for variables in restart file 
     240   SUBROUTINE iom_set_rstw_var_active(field) 
     241   CHARACTER(len = *), INTENT(IN) :: field 
    234242   INTEGER :: i 
    235         rst_fields(:)%vname="NO_NAME";         rst_fields(:)%grid="NO_GRID" 
    236         i = 0 
    237         i = i + 1; rst_fields(i)%vname="rdt";            rst_fields(i)% grid="grid_scalar" 
    238         i = i + 1; rst_fields(i)%vname="un";             rst_fields(i)% grid="grid_N_3D" 
    239         i = i + 1; rst_fields(i)%vname="ub";             rst_fields(i)% grid="grid_N_3D" 
    240         i = i + 1; rst_fields(i)%vname="vn";             rst_fields(i)% grid="grid_N_3D" 
    241         i = i + 1; rst_fields(i)%vname="vb";             rst_fields(i)% grid="grid_N_3D"   
    242         i = i + 1; rst_fields(i)%vname="tn";             rst_fields(i)% grid="grid_N_3D" 
    243         i = i + 1; rst_fields(i)%vname="tb";             rst_fields(i)% grid="grid_N_3D" 
    244         i = i + 1; rst_fields(i)%vname="sn";             rst_fields(i)% grid="grid_N_3D" 
    245         i = i + 1; rst_fields(i)%vname="sb";             rst_fields(i)%grid="grid_N_3D" 
    246         i = i + 1; rst_fields(i)%vname="sshn";           rst_fields(i)%grid="grid_N" 
    247         i = i + 1; rst_fields(i)%vname="sshb";           rst_fields(i)%grid="grid_N" 
    248         i = i + 1; rst_fields(i)%vname="rhop";           rst_fields(i)%grid="grid_N_3D" 
    249         i = i + 1; rst_fields(i)%vname="kt";             rst_fields(i)%grid="grid_scalar" 
    250         i = i + 1; rst_fields(i)%vname="ndastp";         rst_fields(i)%grid="grid_scalar" 
    251         i = i + 1; rst_fields(i)%vname="adatrj";         rst_fields(i)%grid="grid_scalar" 
    252         i = i + 1; rst_fields(i)%vname="utau_b";         rst_fields(i)%grid="grid_N" 
    253         i = i + 1; rst_fields(i)%vname="vtau_b";         rst_fields(i)%grid="grid_N" 
    254         i = i + 1; rst_fields(i)%vname="qns_b";          rst_fields(i)%grid="grid_N" 
    255         i = i + 1; rst_fields(i)%vname="emp_b";          rst_fields(i)%grid="grid_N" 
    256         i = i + 1; rst_fields(i)%vname="sfx_b";          rst_fields(i)%grid="grid_N" 
    257         i = i + 1; rst_fields(i)%vname="en" ;            rst_fields(i)%grid="grid_N_3D"  
    258         i = i + 1; rst_fields(i)%vname="avt";            rst_fields(i)%grid="grid_N_3D" 
    259         i = i + 1; rst_fields(i)%vname="avm";            rst_fields(i)%grid="grid_N_3D" 
    260         i = i + 1; rst_fields(i)%vname="avmu";           rst_fields(i)%grid="grid_N_3D" 
    261         i = i + 1; rst_fields(i)%vname="avmv";           rst_fields(i)%grid="grid_N_3D" 
    262         i = i + 1; rst_fields(i)%vname="dissl";          rst_fields(i)%grid="grid_N_3D" 
    263         i = i + 1; rst_fields(i)%vname="sbc_hc_b";       rst_fields(i)%grid="grid_N" 
    264         i = i + 1; rst_fields(i)%vname="sbc_sc_b";       rst_fields(i)%grid="grid_N" 
    265         i = i + 1; rst_fields(i)%vname="qsr_hc_b";       rst_fields(i)%grid="grid_N_3D" 
    266         i = i + 1; rst_fields(i)%vname="fraqsr_1lev";    rst_fields(i)%grid="grid_N" 
    267         i = i + 1; rst_fields(i)%vname="greenland_icesheet_mass" 
    268                                                rst_fields(i)%grid="grid_scalar" 
    269         i = i + 1; rst_fields(i)%vname="greenland_icesheet_timelapsed" 
    270                                                rst_fields(i)%grid="grid_scalar" 
    271         i = i + 1; rst_fields(i)%vname="greenland_icesheet_mass_roc" 
    272                                                rst_fields(i)%grid="grid_scalar" 
    273         i = i + 1; rst_fields(i)%vname="antarctica_icesheet_mass" 
    274                                                rst_fields(i)%grid="grid_scalar" 
    275         i = i + 1; rst_fields(i)%vname="antarctica_icesheet_timelapsed" 
    276                                                rst_fields(i)%grid="grid_scalar" 
    277         i = i + 1; rst_fields(i)%vname="antarctica_icesheet_mass_roc" 
    278                                                rst_fields(i)%grid="grid_scalar" 
    279         i = i + 1; rst_fields(i)%vname="frc_v";          rst_fields(i)%grid="grid_scalar" 
    280         i = i + 1; rst_fields(i)%vname="frc_t";          rst_fields(i)%grid="grid_scalar" 
    281         i = i + 1; rst_fields(i)%vname="frc_s";          rst_fields(i)%grid="grid_scalar" 
    282         i = i + 1; rst_fields(i)%vname="frc_wn_t";       rst_fields(i)%grid="grid_scalar" 
    283         i = i + 1; rst_fields(i)%vname="frc_wn_s";       rst_fields(i)%grid="grid_scalar" 
    284         i = i + 1; rst_fields(i)%vname="ssh_ini";        rst_fields(i)%grid="grid_N" 
    285         i = i + 1; rst_fields(i)%vname="e3t_ini";        rst_fields(i)%grid="grid_N_3D" 
    286         i = i + 1; rst_fields(i)%vname="hc_loc_ini";     rst_fields(i)%grid="grid_N_3D" 
    287         i = i + 1; rst_fields(i)%vname="sc_loc_ini";     rst_fields(i)%grid="grid_N_3D" 
    288         i = i + 1; rst_fields(i)%vname="ssh_hc_loc_ini"; rst_fields(i)%grid="grid_N" 
    289         i = i + 1; rst_fields(i)%vname="ssh_sc_loc_ini"; rst_fields(i)%grid="grid_N" 
    290         i = i + 1; rst_fields(i)%vname="tilde_e3t_b";    rst_fields(i)%grid="grid_N" 
    291         i = i + 1; rst_fields(i)%vname="tilde_e3t_n";    rst_fields(i)%grid="grid_N" 
    292         i = i + 1; rst_fields(i)%vname="hdiv_lf";        rst_fields(i)%grid="grid_N" 
    293         i = i + 1; rst_fields(i)%vname="ub2_b";          rst_fields(i)%grid="grid_N" 
    294         i = i + 1; rst_fields(i)%vname="vb2_b";          rst_fields(i)%grid="grid_N" 
    295         i = i + 1; rst_fields(i)%vname="sshbb_e";        rst_fields(i)%grid="grid_N" 
    296         i = i + 1; rst_fields(i)%vname="ubb_e";          rst_fields(i)%grid="grid_N" 
    297         i = i + 1; rst_fields(i)%vname="vbb_e";          rst_fields(i)%grid="grid_N" 
    298         i = i + 1; rst_fields(i)%vname="sshb_e";         rst_fields(i)%grid="grid_N" 
    299         i = i + 1; rst_fields(i)%vname="ub_e";           rst_fields(i)%grid="grid_N" 
    300         i = i + 1; rst_fields(i)%vname="vb_e";           rst_fields(i)%grid="grid_N" 
    301         i = i + 1; rst_fields(i)%vname="fwf_isf_b";      rst_fields(i)%grid="grid_N" 
    302         i = i + 1; rst_fields(i)%vname="isf_sc_b";       rst_fields(i)%grid="grid_N" 
    303         i = i + 1; rst_fields(i)%vname="isf_hc_b";       rst_fields(i)%grid="grid_N" 
    304         i = i + 1; rst_fields(i)%vname="ssh_ibb";        rst_fields(i)%grid="grid_N" 
    305         i = i + 1; rst_fields(i)%vname="rnf_b";          rst_fields(i)%grid="grid_N" 
    306         i = i + 1; rst_fields(i)%vname="rnf_hc_b";       rst_fields(i)%grid="grid_N" 
    307         i = i + 1; rst_fields(i)%vname="rnf_sc_b";       rst_fields(i)%grid="grid_N" 
    308         i = i + 1; rst_fields(i)%vname="nn_fsbc";        rst_fields(i)%grid="grid_scalar" 
    309         i = i + 1; rst_fields(i)%vname="ssu_m";          rst_fields(i)%grid="grid_N" 
    310         i = i + 1; rst_fields(i)%vname="ssv_m";          rst_fields(i)%grid="grid_N" 
    311         i = i + 1; rst_fields(i)%vname="sst_m";          rst_fields(i)%grid="grid_N" 
    312         i = i + 1; rst_fields(i)%vname="sss_m";          rst_fields(i)%grid="grid_N" 
    313         i = i + 1; rst_fields(i)%vname="ssh_m";          rst_fields(i)%grid="grid_N" 
    314         i = i + 1; rst_fields(i)%vname="e3t_m";          rst_fields(i)%grid="grid_N" 
    315         i = i + 1; rst_fields(i)%vname="frq_m";          rst_fields(i)%grid="grid_N" 
    316         i = i + 1; rst_fields(i)%vname="avmb";           rst_fields(i)%grid="grid_vector" 
    317         i = i + 1; rst_fields(i)%vname="avtb";           rst_fields(i)%grid="grid_vector" 
    318         i = i + 1; rst_fields(i)%vname="ub2_i_b";        rst_fields(i)%grid="grid_N" 
    319         i = i + 1; rst_fields(i)%vname="vb2_i_b";        rst_fields(i)%grid="grid_N" 
    320         i = i + 1; rst_fields(i)%vname="ntime";          rst_fields(i)%grid="grid_scalar" 
    321         i = i + 1; rst_fields(i)%vname="Dsst";           rst_fields(i)%grid="grid_scalar" 
    322         i = i + 1; rst_fields(i)%vname="tmask";          rst_fields(i)%grid="grid_N_3D" 
    323         i = i + 1; rst_fields(i)%vname="umask";          rst_fields(i)%grid="grid_N_3D" 
    324         i = i + 1; rst_fields(i)%vname="vmask";          rst_fields(i)%grid="grid_N_3D" 
    325         i = i + 1; rst_fields(i)%vname="smask";          rst_fields(i)%grid="grid_N_3D" 
    326         i = i + 1; rst_fields(i)%vname="gdepw_n";        rst_fields(i)%grid="grid_N_3D" 
    327         i = i + 1; rst_fields(i)%vname="e3t_n";          rst_fields(i)%grid="grid_N_3D" 
    328         i = i + 1; rst_fields(i)%vname="e3u_n";          rst_fields(i)%grid="grid_N_3D" 
    329         i = i + 1; rst_fields(i)%vname="e3v_n";          rst_fields(i)%grid="grid_N_3D" 
    330         i = i + 1; rst_fields(i)%vname="surf_ini";       rst_fields(i)%grid="grid_N" 
    331         i = i + 1; rst_fields(i)%vname="e3t_b";          rst_fields(i)%grid="grid_N_3D" 
    332         i = i + 1; rst_fields(i)%vname="e3t_n";          rst_fields(i)%grid="grid_N_3D" 
    333         i = i + 1; rst_fields(i)%vname="mxln";           rst_fields(i)%grid="grid_N_3D" 
    334         i = i + 1; rst_fields(i)%vname="e3t_m";          rst_fields(i)%grid="grid_N_3D" 
    335    END SUBROUTINE set_rst_vars 
    336  
    337  
    338    SUBROUTINE set_rstr_active() 
     243   LOGICAL :: llis_set 
     244 
     245   llis_set = .FALSE. 
     246 
     247   DO i = 1, max_rst_fields 
     248       IF(TRIM(rst_wfields(i)%vname) == field) THEN  
     249          rst_wfields(i)%active = .TRUE. 
     250          llis_set = .TRUE. 
     251          EXIT 
     252       ENDIF 
     253   ENDDO 
     254!Warn if variable is not in defined in rst_wfields 
     255   IF(.NOT.llis_set) THEN 
     256      IF(lwp) THEN 
     257         write(numout,cform_err) 
     258         write(numout,*) 'iom_set_rstw_var_active: variable ', field ,' is available for writing but not defined'  
     259      ENDIF 
     260        nstop = nstop + 1 
     261   ENDIF 
     262 
     263   END SUBROUTINE iom_set_rstw_var_active 
     264 
     265   SUBROUTINE iom_set_rstr_active() 
    339266!sets enabled = .TRUE. for each field in restart file 
    340267   CHARACTER(len=256) :: rst_file 
     
    361288!defin files for restart context 
    362289        DO i = 1, max_rst_fields 
    363          IF( TRIM(rst_fields(i)%vname) /= "NO_NAME") THEN 
    364            IF( iom_varid( numror, TRIM(rst_fields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN 
    365                 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 
    366                 SELECT CASE (TRIM(rst_fields(i)%grid)) 
     290         IF( TRIM(rst_rfields(i)%vname) /= "NO_NAME") THEN 
     291           IF( iom_varid( numror, TRIM(rst_rfields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN 
     292                CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_rfields(i)%vname)) 
     293                SELECT CASE (TRIM(rst_rfields(i)%grid)) 
    367294                 CASE ("grid_N_3D") 
    368                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_fields(i)%vname), & 
     295                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 
    369296                        domain_ref="grid_N", axis_ref="deptht", operation = "instant") 
    370297                 CASE ("grid_N") 
    371                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_fields(i)%vname), & 
     298                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 
    372299                        domain_ref="grid_N", operation = "instant")  
    373300                CASE ("grid_vector") 
    374                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_fields(i)%vname), & 
     301                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 
    375302                         axis_ref="deptht", operation = "instant") 
    376303                 CASE ("grid_scalar") 
    377                     CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_fields(i)%vname), & 
     304                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_rfields(i)%vname), & 
    378305                        scalar_ref = "grid_scalar", operation = "instant") 
    379306                END SELECT 
    380                 IF(lwp) WRITE(numout,*) 'XIOS read: ', TRIM(rst_fields(i)%vname), ' enabled in ', TRIM(rst_file) 
     307                IF(lwp) WRITE(numout,*) 'XIOS read: ', TRIM(rst_rfields(i)%vname), ' enabled in ', TRIM(rst_file) 
    381308           ENDIF 
    382309         ENDIF 
    383310        END DO 
    384    END SUBROUTINE set_rstr_active 
    385  
    386    SUBROUTINE set_rst_context( )  
     311   END SUBROUTINE iom_set_rstr_active 
     312 
     313   SUBROUTINE iom_set_rstw_core() 
     314!from restart.F90 
     315   CALL iom_set_rstw_var_active("rdt") 
     316   IF ( .NOT. ln_diurnal_only ) THEN 
     317        CALL iom_set_rstw_var_active('ub'  ) 
     318        CALL iom_set_rstw_var_active('vb'  ) 
     319        CALL iom_set_rstw_var_active('tb'  ) 
     320        CALL iom_set_rstw_var_active('sb'  ) 
     321        CALL iom_set_rstw_var_active('sshb') 
     322        ! 
     323        CALL iom_set_rstw_var_active('un'  ) 
     324        CALL iom_set_rstw_var_active('vn'  ) 
     325        CALL iom_set_rstw_var_active('tn'  ) 
     326        CALL iom_set_rstw_var_active('sn'  ) 
     327        CALL iom_set_rstw_var_active('sshn') 
     328        CALL iom_set_rstw_var_active('rhop') 
     329     ! extra variable needed for the ice sheet coupling 
     330        IF ( ln_iscpl ) THEN 
     331             CALL iom_set_rstw_var_active('tmask') 
     332             CALL iom_set_rstw_var_active('umask') 
     333             CALL iom_set_rstw_var_active('vmask') 
     334             CALL iom_set_rstw_var_active('smask') 
     335             CALL iom_set_rstw_var_active('e3t_n') 
     336             CALL iom_set_rstw_var_active('e3u_n') 
     337             CALL iom_set_rstw_var_active('e3v_n') 
     338             CALL iom_set_rstw_var_active('gdepw_n') 
     339        END IF 
     340      ENDIF 
     341      IF(ln_diurnal) CALL iom_set_rstw_var_active('Dsst') 
     342!from trasbc.F90 
     343         CALL iom_set_rstw_var_active('sbc_hc_b') 
     344         CALL iom_set_rstw_var_active('sbc_sc_b') 
     345   END SUBROUTINE iom_set_rstw_core 
     346 
     347   SUBROUTINE iom_set_rst_vars(fields) 
     348!set names for variables in restart file 
     349   TYPE(RST_FIELD), INTENT(INOUT) :: fields(max_rst_fields) 
     350   INTEGER :: i 
     351        i = 0 
     352        i = i + 1; fields(i)%vname="rdt";            fields(i)%grid="grid_scalar" 
     353        i = i + 1; fields(i)%vname="un";             fields(i)%grid="grid_N_3D" 
     354        i = i + 1; fields(i)%vname="ub";             fields(i)%grid="grid_N_3D" 
     355        i = i + 1; fields(i)%vname="vn";             fields(i)%grid="grid_N_3D" 
     356        i = i + 1; fields(i)%vname="vb";             fields(i)%grid="grid_N_3D"   
     357        i = i + 1; fields(i)%vname="tn";             fields(i)%grid="grid_N_3D" 
     358        i = i + 1; fields(i)%vname="tb";             fields(i)%grid="grid_N_3D" 
     359        i = i + 1; fields(i)%vname="sn";             fields(i)%grid="grid_N_3D" 
     360        i = i + 1; fields(i)%vname="sb";             fields(i)%grid="grid_N_3D" 
     361        i = i + 1; fields(i)%vname="sshn";           fields(i)%grid="grid_N" 
     362        i = i + 1; fields(i)%vname="sshb";           fields(i)%grid="grid_N" 
     363        i = i + 1; fields(i)%vname="rhop";           fields(i)%grid="grid_N_3D" 
     364        i = i + 1; fields(i)%vname="kt";             fields(i)%grid="grid_scalar" 
     365        i = i + 1; fields(i)%vname="ndastp";         fields(i)%grid="grid_scalar" 
     366        i = i + 1; fields(i)%vname="adatrj";         fields(i)%grid="grid_scalar" 
     367        i = i + 1; fields(i)%vname="utau_b";         fields(i)%grid="grid_N" 
     368        i = i + 1; fields(i)%vname="vtau_b";         fields(i)%grid="grid_N" 
     369        i = i + 1; fields(i)%vname="qns_b";          fields(i)%grid="grid_N" 
     370        i = i + 1; fields(i)%vname="emp_b";          fields(i)%grid="grid_N" 
     371        i = i + 1; fields(i)%vname="sfx_b";          fields(i)%grid="grid_N" 
     372        i = i + 1; fields(i)%vname="en" ;            fields(i)%grid="grid_N_3D"  
     373        i = i + 1; fields(i)%vname="avt";            fields(i)%grid="grid_N_3D" 
     374        i = i + 1; fields(i)%vname="avm";            fields(i)%grid="grid_N_3D" 
     375        i = i + 1; fields(i)%vname="avmu";           fields(i)%grid="grid_N_3D" 
     376        i = i + 1; fields(i)%vname="avmv";           fields(i)%grid="grid_N_3D" 
     377        i = i + 1; fields(i)%vname="dissl";          fields(i)%grid="grid_N_3D" 
     378        i = i + 1; fields(i)%vname="sbc_hc_b";       fields(i)%grid="grid_N" 
     379        i = i + 1; fields(i)%vname="sbc_sc_b";       fields(i)%grid="grid_N" 
     380        i = i + 1; fields(i)%vname="qsr_hc_b";       fields(i)%grid="grid_N_3D" 
     381        i = i + 1; fields(i)%vname="fraqsr_1lev";    fields(i)%grid="grid_N" 
     382        i = i + 1; fields(i)%vname="greenland_icesheet_mass" 
     383                                               fields(i)%grid="grid_scalar" 
     384        i = i + 1; fields(i)%vname="greenland_icesheet_timelapsed" 
     385                                               fields(i)%grid="grid_scalar" 
     386        i = i + 1; fields(i)%vname="greenland_icesheet_mass_roc" 
     387                                               fields(i)%grid="grid_scalar" 
     388        i = i + 1; fields(i)%vname="antarctica_icesheet_mass" 
     389                                               fields(i)%grid="grid_scalar" 
     390        i = i + 1; fields(i)%vname="antarctica_icesheet_timelapsed" 
     391                                               fields(i)%grid="grid_scalar" 
     392        i = i + 1; fields(i)%vname="antarctica_icesheet_mass_roc" 
     393                                               fields(i)%grid="grid_scalar" 
     394        i = i + 1; fields(i)%vname="frc_v";          fields(i)%grid="grid_scalar" 
     395        i = i + 1; fields(i)%vname="frc_t";          fields(i)%grid="grid_scalar" 
     396        i = i + 1; fields(i)%vname="frc_s";          fields(i)%grid="grid_scalar" 
     397        i = i + 1; fields(i)%vname="frc_wn_t";       fields(i)%grid="grid_scalar" 
     398        i = i + 1; fields(i)%vname="frc_wn_s";       fields(i)%grid="grid_scalar" 
     399        i = i + 1; fields(i)%vname="ssh_ini";        fields(i)%grid="grid_N" 
     400        i = i + 1; fields(i)%vname="e3t_ini";        fields(i)%grid="grid_N_3D" 
     401        i = i + 1; fields(i)%vname="hc_loc_ini";     fields(i)%grid="grid_N_3D" 
     402        i = i + 1; fields(i)%vname="sc_loc_ini";     fields(i)%grid="grid_N_3D" 
     403        i = i + 1; fields(i)%vname="ssh_hc_loc_ini"; fields(i)%grid="grid_N" 
     404        i = i + 1; fields(i)%vname="ssh_sc_loc_ini"; fields(i)%grid="grid_N" 
     405        i = i + 1; fields(i)%vname="tilde_e3t_b";    fields(i)%grid="grid_N" 
     406        i = i + 1; fields(i)%vname="tilde_e3t_n";    fields(i)%grid="grid_N" 
     407        i = i + 1; fields(i)%vname="hdiv_lf";        fields(i)%grid="grid_N" 
     408        i = i + 1; fields(i)%vname="ub2_b";          fields(i)%grid="grid_N" 
     409        i = i + 1; fields(i)%vname="vb2_b";          fields(i)%grid="grid_N" 
     410        i = i + 1; fields(i)%vname="sshbb_e";        fields(i)%grid="grid_N" 
     411        i = i + 1; fields(i)%vname="ubb_e";          fields(i)%grid="grid_N" 
     412        i = i + 1; fields(i)%vname="vbb_e";          fields(i)%grid="grid_N" 
     413        i = i + 1; fields(i)%vname="sshb_e";         fields(i)%grid="grid_N" 
     414        i = i + 1; fields(i)%vname="ub_e";           fields(i)%grid="grid_N" 
     415        i = i + 1; fields(i)%vname="vb_e";           fields(i)%grid="grid_N" 
     416        i = i + 1; fields(i)%vname="fwf_isf_b";      fields(i)%grid="grid_N" 
     417        i = i + 1; fields(i)%vname="isf_sc_b";       fields(i)%grid="grid_N" 
     418        i = i + 1; fields(i)%vname="isf_hc_b";       fields(i)%grid="grid_N" 
     419        i = i + 1; fields(i)%vname="ssh_ibb";        fields(i)%grid="grid_N" 
     420        i = i + 1; fields(i)%vname="rnf_b";          fields(i)%grid="grid_N" 
     421        i = i + 1; fields(i)%vname="rnf_hc_b";       fields(i)%grid="grid_N" 
     422        i = i + 1; fields(i)%vname="rnf_sc_b";       fields(i)%grid="grid_N" 
     423        i = i + 1; fields(i)%vname="nn_fsbc";        fields(i)%grid="grid_scalar" 
     424        i = i + 1; fields(i)%vname="ssu_m";          fields(i)%grid="grid_N" 
     425        i = i + 1; fields(i)%vname="ssv_m";          fields(i)%grid="grid_N" 
     426        i = i + 1; fields(i)%vname="sst_m";          fields(i)%grid="grid_N" 
     427        i = i + 1; fields(i)%vname="sss_m";          fields(i)%grid="grid_N" 
     428        i = i + 1; fields(i)%vname="ssh_m";          fields(i)%grid="grid_N" 
     429        i = i + 1; fields(i)%vname="e3t_m";          fields(i)%grid="grid_N" 
     430        i = i + 1; fields(i)%vname="frq_m";          fields(i)%grid="grid_N" 
     431        i = i + 1; fields(i)%vname="avmb";           fields(i)%grid="grid_vector" 
     432        i = i + 1; fields(i)%vname="avtb";           fields(i)%grid="grid_vector" 
     433        i = i + 1; fields(i)%vname="ub2_i_b";        fields(i)%grid="grid_N" 
     434        i = i + 1; fields(i)%vname="vb2_i_b";        fields(i)%grid="grid_N" 
     435        i = i + 1; fields(i)%vname="ntime";          fields(i)%grid="grid_scalar" 
     436        i = i + 1; fields(i)%vname="Dsst";           fields(i)%grid="grid_scalar" 
     437        i = i + 1; fields(i)%vname="tmask";          fields(i)%grid="grid_N_3D" 
     438        i = i + 1; fields(i)%vname="umask";          fields(i)%grid="grid_N_3D" 
     439        i = i + 1; fields(i)%vname="vmask";          fields(i)%grid="grid_N_3D" 
     440        i = i + 1; fields(i)%vname="smask";          fields(i)%grid="grid_N_3D" 
     441        i = i + 1; fields(i)%vname="gdepw_n";        fields(i)%grid="grid_N_3D" 
     442        i = i + 1; fields(i)%vname="e3t_n";          fields(i)%grid="grid_N_3D" 
     443        i = i + 1; fields(i)%vname="e3u_n";          fields(i)%grid="grid_N_3D" 
     444        i = i + 1; fields(i)%vname="e3v_n";          fields(i)%grid="grid_N_3D" 
     445        i = i + 1; fields(i)%vname="surf_ini";       fields(i)%grid="grid_N" 
     446        i = i + 1; fields(i)%vname="e3t_b";          fields(i)%grid="grid_N_3D" 
     447        i = i + 1; fields(i)%vname="mxln";           fields(i)%grid="grid_N_3D" 
     448 
     449        IF( i-1 > max_rst_fields) THEN 
     450        IF(lwp) write(numout,*) 'E R R O R : iom_set_rst_vars SIZE of RST_FIELD array is too small' 
     451        nstop = nstop + 1 
     452        ENDIF 
     453 
     454   END SUBROUTINE iom_set_rst_vars 
     455 
     456 
     457   SUBROUTINE iom_set_rstw_active(cdrst_file) 
     458!sets enabled = .TRUE. for each field in restart file 
     459   CHARACTER(len=*) :: cdrst_file 
     460#if defined key_iomput 
     461   TYPE(xios_field) :: field_hdl 
     462   TYPE(xios_file) :: file_hdl 
     463   TYPE(xios_filegroup) :: filegroup_hdl 
     464   INTEGER :: i 
     465   CHARACTER(lc)  ::   clpath 
     466 
     467!set name of the restart file and enable available fields 
     468        IF(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ',cdrst_file 
     469        CALL xios_get_handle("file_definition", filegroup_hdl ) 
     470        CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') 
     471        IF(nxioso.eq.1) THEN  
     472           CALL xios_set_file_attr( "wrestart", type="one_file", enabled=.TRUE.,&  
     473                                    mode="write", output_freq=xios_timestep)  
     474           if(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in one_file mode'  
     475        ELSE   
     476           CALL xios_set_file_attr( "wrestart", type="multiple_file", enabled=.TRUE.,&  
     477                                    mode="write", output_freq=xios_timestep)  
     478           if(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in multiple_file mode'  
     479        ENDIF  
     480        CALL xios_set_file_attr( "wrestart", name=trim(cdrst_file)) 
     481!defin files for restart context 
     482        DO i = 1, max_rst_fields 
     483         IF( rst_wfields(i)%active ) THEN 
     484                CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_wfields(i)%vname)) 
     485                SELECT CASE (TRIM(rst_wfields(i)%grid)) 
     486                 CASE ("grid_N_3D") 
     487                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
     488                        domain_ref="grid_N", axis_ref="deptht", prec = 8, operation = "instant") 
     489                 CASE ("grid_N") 
     490                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
     491                        domain_ref="grid_N", prec = 8, operation = "instant")  
     492                 CASE ("grid_vector") 
     493                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
     494                         axis_ref="deptht", prec = 8, operation = "instant") 
     495                 CASE ("grid_scalar") 
     496                    CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_wfields(i)%vname), & 
     497                        scalar_ref = "grid_scalar", prec = 8, operation = "instant") 
     498                END SELECT 
     499         ENDIF 
     500        END DO 
     501#endif 
     502   END SUBROUTINE iom_set_rstw_active 
     503 
     504   SUBROUTINE iom_set_rst_context( )  
    387505#if defined key_iomput 
    388506   TYPE(xios_domaingroup)            :: domaingroup_hdl  
     
    407525     CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar")  
    408526#endif 
    409    END SUBROUTINE set_rst_context 
     527   END SUBROUTINE iom_set_rst_context 
    410528 
    411529   SUBROUTINE iom_swap( cdname ) 
     
    418536#if defined key_iomput 
    419537      TYPE(xios_context) :: nemo_hdl 
    420  
    421538      IF( TRIM(Agrif_CFixed()) == '0' ) THEN 
    422539        CALL xios_get_handle(TRIM(cdname),nemo_hdl) 
     
    13631480   !!                   INTERFACE iom_rstput 
    13641481   !!---------------------------------------------------------------------- 
    1365    SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
     1482   SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
    13661483      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    13671484      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    13701487      REAL(wp)        , INTENT(in)                         ::   pvar     ! written field 
    13711488      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
     1489      LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
     1490      LOGICAL :: llx                ! local xios write flag 
    13721491      INTEGER :: ivid   ! variable id 
    1373       IF( kiomid > 0 ) THEN 
    1374          IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1375             ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1376             SELECT CASE (iom_file(kiomid)%iolib) 
    1377             CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
    1378             CASE DEFAULT 
    1379                CALL ctl_stop( 'iom_rp0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1380             END SELECT 
     1492 
     1493      llx = .FALSE. 
     1494      IF(PRESENT(ldxios)) llx = ldxios 
     1495      IF( llx ) THEN 
     1496#ifdef key_iomput 
     1497      IF( kt == kwrite ) THEN 
     1498          IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
     1499          CALL xios_send_field(trim(cdvar), pvar) 
     1500      ENDIF 
     1501#endif 
     1502      ELSE 
     1503         IF( kiomid > 0 ) THEN 
     1504            IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1505               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1506               SELECT CASE (iom_file(kiomid)%iolib) 
     1507               CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
     1508               CASE DEFAULT      
     1509                  CALL ctl_stop( 'iom_rp0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
     1510               END SELECT 
     1511            ENDIF 
    13811512         ENDIF 
    13821513      ENDIF 
    13831514   END SUBROUTINE iom_rp0d 
    13841515 
    1385    SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
     1516   SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
    13861517      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    13871518      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    13901521      REAL(wp)        , INTENT(in), DIMENSION(          :) ::   pvar     ! written field 
    13911522      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
     1523      LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
     1524      LOGICAL :: llx                ! local xios write flag 
    13921525      INTEGER :: ivid   ! variable id 
    1393       IF( kiomid > 0 ) THEN 
    1394          IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1395             ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1396             SELECT CASE (iom_file(kiomid)%iolib) 
    1397             CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
    1398             CASE DEFAULT 
    1399                CALL ctl_stop( 'iom_rp1d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1400             END SELECT 
     1526 
     1527      llx = .FALSE. 
     1528      IF(PRESENT(ldxios)) llx = ldxios 
     1529      IF( llx ) THEN 
     1530#ifdef key_iomput 
     1531      IF( kt == kwrite ) THEN 
     1532         IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 
     1533         CALL xios_send_field(trim(cdvar), pvar) 
     1534      ENDIF 
     1535#endif 
     1536      ELSE 
     1537         IF( kiomid > 0 ) THEN 
     1538            IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1539               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1540               SELECT CASE (iom_file(kiomid)%iolib) 
     1541               CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
     1542               CASE DEFAULT      
     1543                  CALL ctl_stop( 'iom_rp1d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
     1544               END SELECT 
     1545            ENDIF 
    14011546         ENDIF 
    14021547      ENDIF 
    14031548   END SUBROUTINE iom_rp1d 
    14041549 
    1405    SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
     1550   SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
    14061551      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    14071552      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    14101555      REAL(wp)        , INTENT(in), DIMENSION(:,    :    ) ::   pvar     ! written field 
    14111556      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
     1557      LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
     1558      LOGICAL :: llx 
    14121559      INTEGER :: ivid   ! variable id 
    1413       IF( kiomid > 0 ) THEN 
    1414          IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1415             ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1416             SELECT CASE (iom_file(kiomid)%iolib) 
    1417             CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
    1418             CASE DEFAULT 
    1419                CALL ctl_stop( 'iom_rp2d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1420             END SELECT 
     1560 
     1561      llx = .FALSE. 
     1562      IF(PRESENT(ldxios)) llx = ldxios 
     1563      IF( llx ) THEN 
     1564#ifdef key_iomput 
     1565      IF( kt == kwrite ) THEN 
     1566         IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 
     1567         CALL xios_send_field(trim(cdvar), pvar) 
     1568      ENDIF 
     1569#endif 
     1570      ELSE 
     1571         IF( kiomid > 0 ) THEN 
     1572            IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1573               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1574               SELECT CASE (iom_file(kiomid)%iolib) 
     1575               CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
     1576               CASE DEFAULT      
     1577                  CALL ctl_stop( 'iom_rp2d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
     1578               END SELECT 
     1579            ENDIF 
    14211580         ENDIF 
    14221581      ENDIF 
    14231582   END SUBROUTINE iom_rp2d 
    14241583 
    1425    SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
     1584   SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype, ldxios ) 
    14261585      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    14271586      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    14301589      REAL(wp)        , INTENT(in),       DIMENSION(:,:,:) ::   pvar     ! written field 
    14311590      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
     1591      LOGICAL, OPTIONAL :: ldxios   ! xios write flag 
     1592      LOGICAL :: llx                 ! local xios write flag 
    14321593      INTEGER :: ivid   ! variable id 
    1433       IF( kiomid > 0 ) THEN 
    1434          IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1435             ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1436             SELECT CASE (iom_file(kiomid)%iolib) 
    1437             CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
    1438             CASE DEFAULT 
    1439                CALL ctl_stop( 'iom_rp3d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1440             END SELECT 
     1594 
     1595      llx = .FALSE. 
     1596      IF(PRESENT(ldxios)) llx = ldxios 
     1597      IF( llx ) THEN 
     1598#ifdef key_iomput 
     1599      IF( kt == kwrite ) THEN 
     1600         IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 
     1601         CALL xios_send_field(trim(cdvar), pvar) 
     1602      ENDIF 
     1603#endif 
     1604      ELSE 
     1605         IF( kiomid > 0 ) THEN 
     1606            IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1607               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1608               SELECT CASE (iom_file(kiomid)%iolib) 
     1609               CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
     1610               CASE DEFAULT      
     1611                  CALL ctl_stop( 'iom_rp3d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
     1612               END SELECT 
     1613            ENDIF 
    14411614         ENDIF 
    14421615      ENDIF 
     
    16161789   SUBROUTINE iom_context_finalize( cdname ) 
    16171790      CHARACTER(LEN=*), INTENT(in) :: cdname 
    1618       ! 
    1619       IF( xios_is_valid_context(cdname) ) THEN 
     1791      CHARACTER(LEN=120)           :: clname 
     1792      ! 
     1793      clname = cdname 
     1794      IF( TRIM(Agrif_CFixed()) .NE. '0' ) clname = TRIM(Agrif_CFixed())//"_"//clname  
     1795 
     1796      IF( xios_is_valid_context(clname) ) THEN 
    16201797         CALL iom_swap( cdname )   ! swap to cdname context 
    16211798         CALL xios_context_finalize() ! finalize the context 
     
    16451822      CALL iom_set_domain_attr("grid_"//cdgrd, ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 
    16461823      CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
    1647       CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)),   & 
     1824      if(.NOT.ldxios) CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)),   & 
    16481825         &                                     latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /)))   
    16491826 
Note: See TracChangeset for help on using the changeset viewer.