Changeset 11482


Ignore:
Timestamp:
2019-08-29T13:15:12+02:00 (13 months ago)
Author:
andmirek
Message:

Ticket #2195 read initial conditions with XIOS

Location:
NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/DOM/dtatsd.F90

    r10213 r11482  
    2222   USE in_out_manager  ! I/O manager 
    2323   USE lib_mpp         ! MPP library 
     24   USE iom, ONLY : iom_swap, iom_setkt, iom_context_finalize 
     25   USE lbclnk          ! lateal boundary condition / mpp exchanges 
    2426 
    2527   IMPLICIT NONE 
     
    2830   PUBLIC   dta_tsd_init   ! called by opa.F90 
    2931   PUBLIC   dta_tsd        ! called by istate.F90 and tradmp.90 
     32   PUBLIC   iom_dta_tsd_init 
    3033 
    3134   !                                  !!* namtsd  namelist : Temperature & Salinity Data * 
    3235   LOGICAL , PUBLIC ::   ln_tsd_init   !: T & S data flag 
    3336   LOGICAL , PUBLIC ::   ln_tsd_dmp    !: internal damping toward input data flag 
     37   LOGICAL , PRIVATE::   ln_tsd_xios 
    3438 
    3539   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_tsd   ! structure of input SST (file informations, fields read) 
     40   CHARACTER(lc), PUBLIC                ::   cinit_context    !: context name used in xios 
    3641 
    3742   !!---------------------------------------------------------------------- 
     
    5964      TYPE(FLD_N)                   ::   sn_tem, sn_sal 
    6065      !! 
    61       NAMELIST/namtsd/   ln_tsd_init, ln_tsd_dmp, cn_dir, sn_tem, sn_sal 
     66      NAMELIST/namtsd/   ln_tsd_init, ln_tsd_dmp, cn_dir, sn_tem, sn_sal, ln_tsd_xios 
    6267      !!---------------------------------------------------------------------- 
    6368      ! 
     
    114119         slf_i(jp_tem) = sn_tem   ;   slf_i(jp_sal) = sn_sal 
    115120         CALL fld_fill( sf_tsd, slf_i, cn_dir, 'dta_tsd', 'Temperature & Salinity data', 'namtsd', no_print ) 
     121         cinit_context = 'dta_tsd_init' 
     122         IF( ln_tsd_xios) CALL iom_dta_tsd_init( cinit_context ) 
    116123         ! 
    117124      ENDIF 
     
    121128 
    122129   SUBROUTINE dta_tsd( kt, ptsd ) 
     130#if defined key_iomput 
     131      use xios, ONLY : xios_recv_field 
     132#endif 
    123133      !!---------------------------------------------------------------------- 
    124134      !!                   ***  ROUTINE dta_tsd  *** 
     
    144154      !!---------------------------------------------------------------------- 
    145155      ! 
    146       CALL fld_read( kt, 1, sf_tsd )      !==   read T & S data at kt time step   ==! 
     156      IF(ln_tsd_xios) CALL iom_swap(cinit_context)  
     157      CALL fld_read( kt, 1, sf_tsd, ldxios = ln_tsd_xios)      !==   read T & S data at kt time step   ==! 
     158      IF(kt == nitend .OR. (.NOT.ln_tsd_dmp) .AND. ln_tsd_xios)  CALL iom_context_finalize( cinit_context ) 
     159      CALL iom_swap( cxios_context ) 
    147160      ! 
    148161      ! 
     
    253266   END SUBROUTINE dta_tsd 
    254267 
     268   SUBROUTINE iom_dta_tsd_init( cdname, ld_tmppatch )  
     269#if defined key_iomput 
     270      use xios 
     271#endif 
     272      !!---------------------------------------------------------------------- 
     273      !!                     ***  ROUTINE   *** 
     274      !! 
     275      !! ** Purpose :   initialize context for reading T & S input data 
     276      !!                to replace fld_ intrerface with XIOS to read initial 
     277      !!                conditions. Have it separated from other conditions 
     278      !!                because initialization happens before model starts 
     279      !!                time stepping. 
     280      !! 
     281      !!---------------------------------------------------------------------- 
     282      CHARACTER(len=*),           INTENT(in)  :: cdname 
     283      LOGICAL         , OPTIONAL, INTENT(in)  :: ld_tmppatch 
     284#if defined key_iomput 
     285      ! 
     286      CHARACTER(len=lc) :: clname 
     287      INTEGER, PARAMETER :: lstr = 256  !: length of the string set to 256  
     288      INTEGER           :: ji, jkmin 
     289      LOGICAL ::   ll_tmppatch = .TRUE.    !: seb: patch before we remove periodicity 
     290      INTEGER ::   nldi_save, nlei_save    !:      and close boundaries in output files 
     291      INTEGER ::   nldj_save, nlej_save    !: 
     292      LOGICAL ::   ll_global = .FALSE.     !: do we have variable on model grid 
     293      CHARACTER(len=lc), DIMENSION( jpts) :: cg_name(jpts) 
     294      CHARACTER(len=1), DIMENSION( 5)   :: cname 
     295      CHARACTER(len=lstr)               :: cfname ! file name without .nc 
     296      TYPE(xios_duration)               :: dtime    = xios_duration(0, 0, 0, 0, 0, 0), & 
     297                                           outp_frq = xios_duration(0, 0, 0, 0, 0, 0) 
     298      TYPE(xios_domaingroup)            :: domaingroup_hdl 
     299      TYPE(xios_domain)                 :: domain_hdl 
     300      TYPE(xios_axisgroup)              :: axisgroup_hdl 
     301      TYPE(xios_axis)                   :: axis_hdl 
     302      TYPE(xios_scalar)                 :: scalar_hdl 
     303      TYPE(xios_scalargroup)            :: scalargroup_hdl 
     304      TYPE(xios_file)                   :: file_hdl 
     305      TYPE(xios_filegroup)              :: filegroup_hdl 
     306      TYPE(xios_field)                  :: field_hdl 
     307      INTEGER                           :: jf, ni, nj, ipos 
     308 
     309      cname(1)='a' 
     310      cname(2)='b' 
     311      cname(3)='c' 
     312      cname(4)='d' 
     313      cname(5)='e' 
     314      !!---------------------------------------------------------------------- 
     315      ! 
     316      ! seb: patch before we remove periodicity and close boundaries in output files 
     317      IF ( ll_tmppatch ) THEN 
     318         nldi_save = nldi   ;   nlei_save = nlei 
     319         nldj_save = nldj   ;   nlej_save = nlej 
     320         IF( nimpp           ==      1 ) nldi = 1 
     321         IF( nimpp + jpi - 1 == jpiglo ) nlei = jpi 
     322         IF( njmpp           ==      1 ) nldj = 1 
     323         IF( njmpp + jpj - 1 == jpjglo ) nlej = jpj 
     324      ENDIF 
     325      ! 
     326      clname = cdname 
     327      IF( TRIM(Agrif_CFixed()) /= '0' )   clname = TRIM(Agrif_CFixed())//"_"//TRIM(cdname) 
     328      CALL xios_context_initialize(TRIM(clname), mpi_comm_oce) 
     329      CALL iom_swap( cdname ) 
     330      ! Calendar type is now defined in xml file  
     331      SELECT CASE ( nleapy )        ! Choose calendar for IOIPSL 
     332      CASE ( 1)   ; CALL xios_define_calendar( TYPE = "Gregorian", time_origin = xios_date(1976,01,01,00,00,00), & 
     333          &                                    start_date = xios_date(1976,02,15,00,00,00) ) 
     334      CASE ( 0)   ; CALL xios_define_calendar( TYPE = "NoLeap"   , time_origin = xios_date(1976,01,01,00,00,00), & 
     335          &                                    start_date = xios_date(1976,02,15,00,00,00) ) 
     336      CASE (30)   ; CALL xios_define_calendar( TYPE = "D360"     , time_origin = xios_date(1976,01,01,00,00,00), & 
     337          &                                    start_date = xios_date(nyear, nmonth, nday, 00, 00, 00) ) 
     338      END SELECT 
     339 
     340      DO jf = 1, SIZE(sf_tsd) 
     341         IF( LEN( TRIM(sf_tsd(jf)%wgtname) ) > 0) THEN 
     342            STOP 'IMPLEMENTATION NOT FINISHED' 
     343         ELSE 
     344            IF(.NOT. ll_global) THEN 
     345               CALL xios_get_handle("domain_definition",domaingroup_hdl) 
     346               CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_global") 
     347               ni = nlei-nldi+1 
     348               nj = nlej-nldj+1 
     349               CALL xios_set_domain_attr("grid_global", ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 
     350               CALL xios_set_domain_attr("grid_global", data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
     351               CALL xios_set_domain_attr("grid_global", type='curvilinear') 
     352               ll_global = .TRUE. 
     353            ENDIF 
     354         ENDIF 
     355      ENDDO 
     356 
     357      CALL xios_get_handle("axis_definition",axisgroup_hdl) 
     358      CALL xios_add_child(axisgroup_hdl, axis_hdl, "depth") 
     359      CALL xios_set_axis_attr     ("depth" , n_glo= jpk) 
     360 
     361 
     362      CALL xios_get_handle("file_definition", filegroup_hdl ) 
     363  
     364      DO jf = 1, SIZE(sf_tsd) 
     365 
     366         IF(sf_tsd(jf)%nfreqh < 0 ) THEN 
     367           outp_frq%month = -sf_tsd(jf)%nfreqh 
     368         ELSE 
     369           outp_frq%hour = sf_tsd(jf)%nfreqh 
     370         ENDIF 
     371         CALL xios_add_child(filegroup_hdl, file_hdl, cname(jf)) 
     372         ipos = index(sf_tsd(jf)%clrootname,'.nc') 
     373         cfname(1:lstr) = " " 
     374         IF(ipos > 0) THEN 
     375          cfname(1:ipos-1) = sf_tsd(jf)%clrootname(1:ipos-1) 
     376         ELSE 
     377          cfname(1:lstr) = sf_tsd(jf)%clrootname(1:lstr) 
     378         ENDIF 
     379         CALL xios_set_file_attr( cname(jf), name=TRIM(cfname),  & 
     380                type="one_file", time_counter_name="time", & 
     381                par_access="collective", enabled=.TRUE., mode="read", & 
     382                output_freq=outp_frq, time_units = "days") 
     383         CALL xios_add_child(file_hdl, field_hdl, TRIM(sf_tsd(jf)%clvar)) 
     384         CALL xios_set_attr (field_hdl, enabled = .TRUE., & 
     385                          name = TRIM(sf_tsd(jf)%clvar), domain_ref="grid_global", & 
     386                          axis_ref="depth", operation = "instant")  
     387      ENDDO 
     388 
     389      dtime%month = 1 
     390      CALL xios_set_timestep( dtime ) 
     391      CALL xios_close_context_definition() 
     392      CALL xios_update_calendar( 0 ) 
     393 
     394      IF ( ll_tmppatch ) THEN 
     395         nldi = nldi_save   ;   nlei = nlei_save 
     396         nldj = nldj_save   ;   nlej = nlej_save 
     397      ENDIF 
     398#endif 
     399      ! 
     400   END SUBROUTINE iom_dta_tsd_init 
     401 
     402 
    255403   !!====================================================================== 
    256404END MODULE dtatsd 
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/IOM/iom.F90

    r11405 r11482  
    13051305      ELSE        ! read using XIOS. Only if KEY_IOMPUT is defined 
    13061306#if defined key_iomput 
     1307         IF( PRESENT(ktime) ) THEN 
     1308           if(lwp) write(numout, *) 'XIOS BDRY READ itime = ', ktime 
     1309           CALL xios_update_calendar( ktime - 1 ) 
     1310         ENDIF 
    13071311         IF( PRESENT(pv_r3d) ) THEN 
    13081312            pv_r3d(:, :, :) = 0. 
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/SBC/fldread.F90

    r11405 r11482  
    129129CONTAINS 
    130130 
    131    SUBROUTINE fld_read( kt, kn_fsbc, sd, map, kit, kt_offset, jpk_bdy, fvl ) 
     131   SUBROUTINE fld_read( kt, kn_fsbc, sd, map, kit, kt_offset, jpk_bdy, fvl, ldxios ) 
    132132      !!--------------------------------------------------------------------- 
    133133      !!                    ***  ROUTINE fld_read  *** 
     
    152152      INTEGER  , INTENT(in   ), OPTIONAL     ::   jpk_bdy   ! number of vertical levels in the BDY data 
    153153      LOGICAL  , INTENT(in   ), OPTIONAL     ::   fvl   ! number of vertical levels in the BDY data 
     154      LOGICAL  , INTENT(in   ), OPTIONAL     ::   ldxios    ! use xios to read data 
    154155      !! 
    155156      INTEGER  ::   itmp         ! local variable 
     
    167168      CHARACTER(LEN=1000) ::   clfmt  ! write format 
    168169      TYPE(MAP_POINTER)   ::   imap   ! global-to-local mapping indices 
    169       !!--------------------------------------------------------------------- 
     170      LOGICAL  ::   luxios       ! temporary variable to hold ldxios 
     171      !!--------------------------------------------------------------------- 
     172 
     173      luxios = .FALSE. 
     174      IF( PRESENT(ldxios) ) luxios = ldxios 
     175 
    170176      ll_firstcall = kt == nit000 
    171177      IF( PRESENT(kit) )   ll_firstcall = ll_firstcall .and. kit == 1 
     
    190196            IF( PRESENT(map) ) imap = map(jf) 
    191197               IF( PRESENT(jpk_bdy) ) THEN 
    192                   CALL fld_init( kn_fsbc, sd(jf), imap, jpk_bdy, fvl )  ! read each before field (put them in after as they will be swapped) 
     198                  CALL fld_init( kn_fsbc, sd(jf), imap, jpk_bdy, fvl, ldxios = luxios)  ! read each before field (put them in after as they will be swapped) 
    193199               ELSE 
    194                   CALL fld_init( kn_fsbc, sd(jf), imap )  ! read each before field (put them in after as they will be swapped) 
     200                  CALL fld_init( kn_fsbc, sd(jf), imap, ldxios = luxios)  ! read each before field (put them in after as they will be swapped) 
    195201               ENDIF 
    196202         END DO 
     
    211217               IF( sd(jf)%ln_tint )   sd(jf)%fdta(:,:,:,1) = sd(jf)%fdta(:,:,:,2)   ! swap before record field 
    212218 
    213                CALL fld_rec( kn_fsbc, sd(jf), kt_offset = it_offset, kit = kit )    ! update after record informations 
     219               CALL fld_rec( kn_fsbc, sd(jf), kt_offset = it_offset, kit = kit)    ! update after record informations 
    214220 
    215221               ! if kn_fsbc*rdt is larger than nfreqh (which is kind of odd), 
     
    222228                  itmp = sd(jf)%nrec_a(1)                       ! temporary storage 
    223229                  sd(jf)%nrec_a(1) = sd(jf)%nreclast            ! read the last record of the file currently opened 
    224                   CALL fld_get( sd(jf), imap )                  ! read after data 
     230                  CALL fld_get( sd(jf), imap, ldxios = luxios)  ! read after data 
    225231                  sd(jf)%fdta(:,:,:,1) = sd(jf)%fdta(:,:,:,2)   ! re-swap before record field 
    226232                  sd(jf)%nrec_b(1) = sd(jf)%nrec_a(1)           ! update before record informations 
     
    240246                     &                   .AND. sd(jf)%nrec_b(1) /= sd(jf)%nrec_a(1) - 1 ) THEN    
    241247                     sd(jf)%nrec_a(1) = sd(jf)%nrec_a(1) - 1       ! move back to before record 
    242                      CALL fld_get( sd(jf), imap )                  ! read after data 
     248                     CALL fld_get( sd(jf), imap, ldxios = luxios)  ! read after data 
    243249                     sd(jf)%fdta(:,:,:,1) = sd(jf)%fdta(:,:,:,2)   ! re-swap before record field 
    244250                     sd(jf)%nrec_b(1) = sd(jf)%nrec_a(1)           ! update before record informations 
     
    286292               ! read after data 
    287293               IF( PRESENT(jpk_bdy) ) THEN 
    288                   CALL fld_get( sd(jf), imap, jpk_bdy, fvl) 
     294                  CALL fld_get( sd(jf), imap, jpk_bdy, fvl, ldxios = luxios) 
    289295               ELSE 
    290                   CALL fld_get( sd(jf), imap ) 
     296                  CALL fld_get( sd(jf), imap, ldxios = luxios ) 
    291297               ENDIF 
    292298            ENDIF   ! read new data? 
     
    327333 
    328334 
    329    SUBROUTINE fld_init( kn_fsbc, sdjf, map , jpk_bdy, fvl) 
     335   SUBROUTINE fld_init( kn_fsbc, sdjf, map , jpk_bdy, fvl, ldxios) 
    330336      !!--------------------------------------------------------------------- 
    331337      !!                    ***  ROUTINE fld_init  *** 
     
    339345      INTEGER  , INTENT(in), OPTIONAL :: jpk_bdy ! number of vertical levels in the BDY data 
    340346      LOGICAL  , INTENT(in), OPTIONAL :: fvl     ! number of vertical levels in the BDY data 
     347      LOGICAL  ,             OPTIONAL :: ldxios  ! use xios for I/O  
    341348      !! 
    342349      LOGICAL :: llprevyr              ! are we reading previous year  file? 
     
    350357      INTEGER :: isec_week             ! number of seconds since start of the weekly file 
    351358      CHARACTER(LEN=1000) ::   clfmt   ! write format 
     359      LOGICAL :: luxios                ! local variable to keep ldxios info 
    352360      !!--------------------------------------------------------------------- 
    353361      llprevyr   = .FALSE. 
     
    356364      llprevday  = .FALSE. 
    357365      isec_week  = 0 
     366      luxios = .FALSE. 
     367      IF( PRESENT(ldxios)) luxios = ldxios 
     368 
    358369      ! 
    359370      ! define record informations 
     
    365376         ! 
    366377         IF( sdjf%nrec_a(1) == 0  ) THEN   ! we redefine record sdjf%nrec_a(1) with the last record of previous year file 
     378            IF(luxios) THEN 
     379               IF(lwp) write(numout, *) 'Can not use XIOS to read data. Switching to old functionality'  
     380               luxios = .FALSE.               ! we can not use XIOS in this case 
     381            ENDIF 
    367382            IF    ( sdjf%nfreqh == -12 ) THEN   ! yearly mean 
    368383               IF( sdjf%cltype == 'yearly' ) THEN             ! yearly file 
     
    436451            CALL fld_get( sdjf, map, jpk_bdy, fvl ) 
    437452         ELSE 
    438             CALL fld_get( sdjf, map ) 
     453            CALL fld_get( sdjf, map, ldxios = luxios) 
    439454         ENDIF 
    440455         ! 
     
    613628 
    614629 
    615    SUBROUTINE fld_get( sdjf, map, jpk_bdy, fvl ) 
     630   SUBROUTINE fld_get( sdjf, map, jpk_bdy, fvl, ldxios) 
    616631      !!--------------------------------------------------------------------- 
    617632      !!                    ***  ROUTINE fld_get  *** 
     
    623638      INTEGER  , INTENT(in), OPTIONAL  ::   jpk_bdy ! number of vertical levels in the bdy data 
    624639      LOGICAL  , INTENT(in), OPTIONAL  ::   fvl     ! number of vertical levels in the bdy data 
     640      LOGICAL  ,             OPTIONAL  ::   ldxios  ! xios I/O 
    625641      ! 
    626642      INTEGER ::   ipk      ! number of vertical levels of sdjf%fdta ( 2D: ipk=1 ; 3D: ipk=jpk ) 
     
    630646      INTEGER ::   idmspc   ! number of spatial dimensions 
    631647      LOGICAL ::   lmoor    ! C1D case: point data 
    632       !!--------------------------------------------------------------------- 
    633       ! 
     648      LOGICAL ::   luxios   ! local variable for ldxios 
     649      REAL(wp)::   amaxval, aminval 
     650      !!--------------------------------------------------------------------- 
     651      ! 
     652 
     653      luxios = .FALSE. 
     654      IF( PRESENT(ldxios) ) luxios = ldxios 
    634655      ipk = SIZE( sdjf%fnow, 3 ) 
    635656      ! 
     
    668689            IF( lk_c1d .AND. lmoor ) THEN 
    669690               IF( sdjf%ln_tint ) THEN 
    670                   CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fdta(2,2,1,2), sdjf%nrec_a(1) ) 
     691                  CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fdta(2,2,1,2), sdjf%nrec_a(1), ldxios = luxios ) 
    671692                  CALL lbc_lnk( 'fldread', sdjf%fdta(:,:,1,2),'Z',1. ) 
    672693               ELSE 
    673                   CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fnow(2,2,1  ), sdjf%nrec_a(1) ) 
     694                  CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fnow(2,2,1  ), sdjf%nrec_a(1), ldxios = luxios ) 
    674695                  CALL lbc_lnk( 'fldread', sdjf%fnow(:,:,1  ),'Z',1. ) 
    675696               ENDIF 
    676697            ELSE 
    677                IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) ) 
    678                ELSE                      ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,1  ), sdjf%nrec_a(1) ) 
     698               IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1), ldxios = luxios ) 
     699               ELSE                      ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,1  ), sdjf%nrec_a(1), ldxios = luxios ) 
    679700               ENDIF 
    680701            ENDIF 
     
    682703            IF (lk_c1d .AND. lmoor ) THEN 
    683704               IF( sdjf%ln_tint ) THEN 
    684                   CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fdta(2,2,:,2), sdjf%nrec_a(1) ) 
     705                  CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fdta(2,2,:,2), sdjf%nrec_a(1), ldxios = luxios) 
    685706                  CALL lbc_lnk( 'fldread', sdjf%fdta(:,:,:,2),'Z',1. ) 
    686707               ELSE 
    687                   CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fnow(2,2,:  ), sdjf%nrec_a(1) ) 
     708                  CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fnow(2,2,:  ), sdjf%nrec_a(1), ldxios = luxios) 
    688709                  CALL lbc_lnk( 'fldread', sdjf%fnow(:,:,:  ),'Z',1. ) 
    689710               ENDIF 
    690711            ELSE 
    691                IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) ) 
    692                ELSE                      ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,:  ), sdjf%nrec_a(1) ) 
     712               IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1), ldxios = luxios ) 
     713               ELSE                      ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,:  ), sdjf%nrec_a(1), ldxios = luxios ) 
    693714               ENDIF 
    694715            ENDIF 
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/SBC/sbcblk.F90

    r11405 r11482  
    827827                          name = TRIM(aname), domain_ref="grid_global", & 
    828828                          operation = "instant") 
     829            WRITE(aname,'(a3,i2.2)') 'dst',jn 
    829830            CALL xios_add_child(file_hdl, field_hdl, TRIM(aname)//TRIM(sf(jf)%wgtname)) 
    830831            CALL xios_set_attr (field_hdl, enabled = .TRUE., & 
    831832                          name = TRIM(aname), domain_ref="grid_global", & 
    832                           operation = "instant")  
     833                          operation = "instant") 
     834            WRITE(aname,'(a3,i2.2)') 'wgt',jn 
     835            CALL xios_add_child(file_hdl, field_hdl, TRIM(aname)//TRIM(sf(jf)%wgtname)) 
     836            CALL xios_set_attr (field_hdl, enabled = .TRUE., & 
     837                          name = TRIM(aname), domain_ref="grid_global", & 
     838                          operation = "instant") 
    833839         ENDDO  
    834840      ENDDO    
Note: See TracChangeset for help on using the changeset viewer.