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

Ignore:
Timestamp:
2017-10-17T14:31:49+02:00 (7 years ago)
Author:
andmirek
Message:

#1962 merge with branches/UKMO/dev_r7573_xios_write (doesn't woork)

File:
1 edited

Legend:

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

    r8573 r8630  
    4141   USE dianam          ! build name of file 
    4242   USE xios 
     43   USE iom_def, ONLY : wxioso 
    4344# endif 
    4445   USE ioipsl, ONLY :  ju2ymds    ! for calendar 
    4546   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 
    4649 
    4750   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 
    4854   PUBLIC   !   must be public to be able to access iom_def through iom 
    49     
    5055#if defined key_iomput 
    5156   LOGICAL, PUBLIC, PARAMETER ::   lk_iomput = .TRUE.        !: iom_put flag 
     
    5661   PUBLIC iom_getatt, iom_putatt, iom_gettime, iom_rstput, iom_put 
    5762   PUBLIC iom_use, iom_context_finalize 
    58  
    5963   PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 
    6064   PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_get_123d 
     
    6367   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 
    6468   PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_update_file_name, iom_sdate 
     69   PRIVATE set_rstw_active 
    6570# endif 
    6671 
     
    124129          &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
    125130      END SELECT 
    126  
    127131      ! horizontal grid definition 
    128132      CALL set_scalar 
    129133 
    130       IF( TRIM(cdname) == TRIM(cxios_context) ) THEN   
    131          CALL set_grid( "T", glamt, gphit )  
    132          CALL set_grid( "U", glamu, gphiu ) 
    133          CALL set_grid( "V", glamv, gphiv ) 
    134          CALL set_grid( "W", glamt, gphit ) 
     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. ) 
    135139         CALL set_grid_znl( gphit ) 
    136140         ! 
     
    150154         CALL dom_grid_crs   ! Save the parent grid information  & Switch to coarse grid domain 
    151155         ! 
    152          CALL set_grid( "T", glamt_crs, gphit_crs )  
    153          CALL set_grid( "U", glamu_crs, gphiu_crs )  
    154          CALL set_grid( "V", glamv_crs, gphiv_crs )  
    155          CALL set_grid( "W", glamt_crs, gphit_crs )  
     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 )  
    156160         CALL set_grid_znl( gphit_crs ) 
    157161          ! 
    158162         CALL dom_grid_glo   ! Return to parent grid domain 
    159163         ! 
    160          IF( ln_cfmeta ) THEN   ! Add additional grid metadata 
     164         IF( ln_cfmeta) THEN   ! Add additional grid metadata 
    161165            CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 
    162166            CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) 
     
    171175 
    172176      ! vertical grid definition 
    173       CALL iom_set_axis_attr( "deptht", gdept_1d ) 
    174       CALL iom_set_axis_attr( "depthu", gdept_1d ) 
    175       CALL iom_set_axis_attr( "depthv", gdept_1d ) 
    176       CALL iom_set_axis_attr( "depthw", gdepw_1d ) 
     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 ) 
    177181 
    178182      ! Add vertical grid bounds 
     
    200204      CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) ) 
    201205       
    202       ! automatic definitions of some of the xml attributs 
    203206      CALL set_xmlatt 
    204207 
     
    213216 
    214217#endif 
    215        
     218 
    216219   END SUBROUTINE iom_init 
    217220 
     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 
     290 
     291   SUBROUTINE set_rstw_active(rst_file) 
     292!sets enabled = .TRUE. for each field in restart file 
     293   CHARACTER(len=*) :: rst_file 
     294   TYPE(xios_file) :: file_hdl 
     295   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) 
     299        CALL xios_get_handle("file_definition", filegroup_hdl ) 
     300        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 
     311        CALL xios_set_file_attr( "wrestart", name=trim(rst_file)) 
     312        CALL set_numro_active(file_hdl) 
     313  
     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") 
     448#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 
    218724 
    219725   SUBROUTINE iom_swap( cdname ) 
     
    9051411               IF( zofs /= 0. )   pv_r1d(:) = pv_r1d(:) + zofs 
    9061412            ELSEIF( PRESENT(pv_r2d) ) THEN 
    907                IF( zscf /= 1.)   pv_r2d(:,:) = pv_r2d(:,:) * zscf 
     1413              IF( zscf /= 1.)   pv_r2d(:,:) = pv_r2d(:,:) * zscf 
    9081414               IF( zofs /= 0.)   pv_r2d(:,:) = pv_r2d(:,:) + zofs 
    9091415            ELSEIF( PRESENT(pv_r3d) ) THEN 
     
    11151621   !!                   INTERFACE iom_rstput 
    11161622   !!---------------------------------------------------------------------- 
    1117    SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
     1623   SUBROUTINE iom_rp0d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 
    11181624      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    11191625      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    11221628      REAL(wp)        , INTENT(in)                         ::   pvar     ! written field 
    11231629      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
     1630      LOGICAL, OPTIONAL :: lxios   ! xios write flag 
     1631      LOGICAL :: lx                ! local xios write flag 
    11241632      INTEGER :: ivid   ! variable id 
    1125       IF( kiomid > 0 ) THEN 
    1126          IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1127             ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1128             SELECT CASE (iom_file(kiomid)%iolib) 
    1129             CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
    1130             CASE DEFAULT 
    1131                CALL ctl_stop( 'iom_rp0d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1132             END SELECT 
     1633      lx = .FALSE. 
     1634      IF(PRESENT(lxios)) lx = lxios 
     1635      IF( lx ) THEN 
     1636#ifdef key_iomput 
     1637      IF( kt == kwrite ) THEN 
     1638          IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 
     1639          CALL xios_send_field(trim(cdvar), pvar) 
     1640      ENDIF 
     1641#endif 
     1642      ELSE 
     1643         IF( kiomid > 0 ) THEN 
     1644            IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1645               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1646               SELECT CASE (iom_file(kiomid)%iolib) 
     1647               CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r0d = pvar ) 
     1648               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 ) 
     1650               CASE DEFAULT      
     1651                  CALL ctl_stop( 'iom_rp0d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     1652               END SELECT 
     1653            ENDIF 
    11331654         ENDIF 
    11341655      ENDIF 
    11351656   END SUBROUTINE iom_rp0d 
    11361657 
    1137    SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
     1658   SUBROUTINE iom_rp1d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 
    11381659      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    11391660      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    11421663      REAL(wp)        , INTENT(in), DIMENSION(          :) ::   pvar     ! written field 
    11431664      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
     1665      LOGICAL, OPTIONAL :: lxios   ! xios write flag 
     1666      LOGICAL :: lx                ! local xios write flag 
    11441667      INTEGER :: ivid   ! variable id 
    1145       IF( kiomid > 0 ) THEN 
    1146          IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1147             ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1148             SELECT CASE (iom_file(kiomid)%iolib) 
    1149             CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
    1150             CASE DEFAULT 
    1151                CALL ctl_stop( 'iom_rp1d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1152             END SELECT 
     1668      lx = .FALSE. 
     1669      IF(PRESENT(lxios)) lx = lxios 
     1670      IF( lx ) THEN 
     1671#ifdef key_iomput 
     1672      IF( kt == kwrite ) THEN 
     1673         IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 
     1674         CALL xios_send_field(trim(cdvar), pvar) 
     1675      ENDIF 
     1676#endif 
     1677      ELSE 
     1678         IF( kiomid > 0 ) THEN 
     1679            IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1680               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1681               SELECT CASE (iom_file(kiomid)%iolib) 
     1682               CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r1d = pvar ) 
     1683               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 ) 
     1685               CASE DEFAULT      
     1686                  CALL ctl_stop( 'iom_rp1d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     1687               END SELECT 
     1688            ENDIF 
    11531689         ENDIF 
    11541690      ENDIF 
    11551691   END SUBROUTINE iom_rp1d 
    11561692 
    1157    SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
     1693   SUBROUTINE iom_rp2d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 
    11581694      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    11591695      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    11621698      REAL(wp)        , INTENT(in), DIMENSION(:,    :    ) ::   pvar     ! written field 
    11631699      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
     1700      LOGICAL, OPTIONAL :: lxios   ! xios write flag 
     1701      LOGICAL :: lx                ! local xios write flag 
    11641702      INTEGER :: ivid   ! variable id 
    1165       IF( kiomid > 0 ) THEN 
    1166          IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1167             ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1168             SELECT CASE (iom_file(kiomid)%iolib) 
    1169             CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
    1170             CASE DEFAULT 
    1171                CALL ctl_stop( 'iom_rp2d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1172             END SELECT 
     1703      lx = .FALSE. 
     1704      IF(PRESENT(lxios)) lx = lxios 
     1705      IF( lx ) THEN 
     1706#ifdef key_iomput 
     1707      IF( kt == kwrite ) THEN 
     1708         IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 
     1709         CALL xios_send_field(trim(cdvar), pvar) 
     1710      ENDIF 
     1711#endif 
     1712      ELSE 
     1713         IF( kiomid > 0 ) THEN 
     1714            IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1715               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1716               SELECT CASE (iom_file(kiomid)%iolib) 
     1717               CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r2d = pvar ) 
     1718               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 )  
     1720               CASE DEFAULT      
     1721                  CALL ctl_stop( 'iom_rp2d: accepted IO library are only jpioipsl, jpnf90 and jprstdimg' ) 
     1722               END SELECT 
     1723            ENDIF 
    11731724         ENDIF 
    11741725      ENDIF 
    11751726   END SUBROUTINE iom_rp2d 
    11761727 
    1177    SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype ) 
     1728   SUBROUTINE iom_rp3d( kt, kwrite, kiomid, cdvar, pvar, ktype, lxios ) 
    11781729      INTEGER         , INTENT(in)                         ::   kt       ! ocean time-step 
    11791730      INTEGER         , INTENT(in)                         ::   kwrite   ! writing time-step 
     
    11821733      REAL(wp)        , INTENT(in),       DIMENSION(:,:,:) ::   pvar     ! written field 
    11831734      INTEGER         , INTENT(in), OPTIONAL               ::   ktype    ! variable external type 
     1735      LOGICAL, OPTIONAL :: lxios   ! xios write flag 
     1736      LOGICAL :: lx                 ! local xios write flag 
    11841737      INTEGER :: ivid   ! variable id 
    1185       IF( kiomid > 0 ) THEN 
    1186          IF( iom_file(kiomid)%nfid > 0 ) THEN 
    1187             ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
    1188             SELECT CASE (iom_file(kiomid)%iolib) 
    1189             CASE (jpnf90   )   ;   CALL iom_nf90_rstput(   kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
    1190             CASE DEFAULT 
    1191                CALL ctl_stop( 'iom_rp3d: accepted IO library is only jpnf90 (jpioipsl option has been removed)' ) 
    1192             END SELECT 
     1738      lx = .FALSE. 
     1739      IF(PRESENT(lxios)) lx = lxios 
     1740      IF( lx ) THEN 
     1741#ifdef key_iomput 
     1742      IF( kt == kwrite ) THEN 
     1743         IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 
     1744         CALL xios_send_field(trim(cdvar), pvar) 
     1745      ENDIF 
     1746#endif 
     1747      ELSE 
     1748         IF( kiomid > 0 ) THEN 
     1749            IF( iom_file(kiomid)%nfid > 0 ) THEN 
     1750               ivid = iom_varid( kiomid, cdvar, ldstop = .FALSE. ) 
     1751               SELECT CASE (iom_file(kiomid)%iolib) 
     1752               CASE (jpioipsl )   ;   CALL iom_ioipsl_rstput( kt, kwrite, kiomid, cdvar, ivid, ktype, pv_r3d = pvar ) 
     1753               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 ) 
     1755               CASE DEFAULT      
     1756                  CALL ctl_stop( 'iom_rp3d: accepted IO library are only jpioipsl and jprstdimg' ) 
     1757               END SELECT 
     1758            ENDIF 
    11931759         ENDIF 
    11941760      ENDIF 
     
    12341800   SUBROUTINE iom_p3d( cdname, pfield3d ) 
    12351801      CHARACTER(LEN=*)                , INTENT(in) ::   cdname 
    1236       REAL(wp),       DIMENSION(:,:,:), INTENT(in) ::   pfield3d 
    12371802#if defined key_iomput 
    12381803      CALL xios_send_field(cdname, pfield3d) 
     
    13681933   SUBROUTINE iom_context_finalize( cdname ) 
    13691934      CHARACTER(LEN=*), INTENT(in) :: cdname 
    1370       ! 
    1371       IF( xios_is_valid_context(cdname) ) THEN 
     1935      CHARACTER(LEN=120)           :: clname 
     1936      ! 
     1937      clname = cdname 
     1938      IF( TRIM(Agrif_CFixed()) .NE. '0' ) clname = TRIM(Agrif_CFixed())//"_"//clname  
     1939 
     1940      IF( xios_is_valid_context(clname) ) THEN 
    13721941         CALL iom_swap( cdname )   ! swap to cdname context 
    13731942         CALL xios_context_finalize() ! finalize the context 
     
    13781947 
    13791948 
    1380    SUBROUTINE set_grid( cdgrd, plon, plat ) 
     1949   SUBROUTINE set_grid( cdgrd, plon, plat, lxios ) 
    13811950      !!---------------------------------------------------------------------- 
    13821951      !!                     ***  ROUTINE set_grid  *** 
     
    13911960      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zmask 
    13921961      INTEGER  :: ni,nj 
     1962      LOGICAL :: lxios 
    13931963       
    13941964      ni=nlei-nldi+1 ; nj=nlej-nldj+1 
     
    13961966      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) 
    13971967      CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
    1398       CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)),   & 
     1968      if(.NOT.lxios) CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)),   & 
    13991969         &                                     latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /)))   
    14001970 
    1401       IF ( ln_mskland ) THEN 
     1971      IF ( ln_mskland.AND.(.NOT.lxios) ) THEN 
    14021972         ! mask land points, keep values on coast line -> specific mask for U, V and W points 
    14031973         SELECT CASE ( cdgrd ) 
     
    14392009      ! Offset of coordinate representing bottom-left corner 
    14402010      SELECT CASE ( TRIM(cdgrd) ) 
    1441          CASE ('T', 'W') 
     2011         CASE ('T', 'W', 'N') 
    14422012            icnr = -1 ; jcnr = -1 
    14432013         CASE ('U') 
Note: See TracChangeset for help on using the changeset viewer.