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 9817 for branches/UKMO/dev_r5518_nemo2cice_prints/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90 – NEMO

Ignore:
Timestamp:
2018-06-21T11:58:42+02:00 (6 years ago)
Author:
dancopsey
Message:

Merged in GO6 package branch up to revision 8356.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_nemo2cice_prints/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r9816 r9817  
    9494      CHARACTER(len=*), INTENT(in)  :: cdname 
    9595#if defined key_iomput 
    96       TYPE(xios_time)   :: dtime    = xios_time(0, 0, 0, 0, 0, 0) 
    97       CHARACTER(len=19) :: cldate  
    98       CHARACTER(len=10) :: clname 
    99       INTEGER           ::   ji 
     96#if ! defined key_xios2 
     97      TYPE(xios_time)     :: dtime    = xios_time(0, 0, 0, 0, 0, 0) 
     98      CHARACTER(len=19)   :: cldate  
     99#else 
     100      TYPE(xios_duration) :: dtime    = xios_duration(0, 0, 0, 0, 0, 0) 
     101      TYPE(xios_date)     :: start_date 
     102#endif 
     103      CHARACTER(len=10)   :: clname 
     104      INTEGER             :: ji 
    100105      ! 
    101106      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: z_bnds 
    102107      !!---------------------------------------------------------------------- 
    103  
     108#if ! defined key_xios2 
    104109      ALLOCATE( z_bnds(jpk,2) ) 
     110#else 
     111      ALLOCATE( z_bnds(2,jpk) ) 
     112#endif 
    105113 
    106114      clname = cdname 
     
    110118 
    111119      ! calendar parameters 
     120#if ! defined key_xios2 
    112121      SELECT CASE ( nleapy )        ! Choose calendar for IOIPSL 
    113122      CASE ( 1)   ;   CALL xios_set_context_attr(TRIM(clname), calendar_type= "Gregorian") 
     
    117126      WRITE(cldate,"(i4.4,'-',i2.2,'-',i2.2,' 00:00:00')") nyear,nmonth,nday  
    118127      CALL xios_set_context_attr(TRIM(clname), start_date=cldate ) 
    119  
     128#else 
     129      ! Calendar type is now defined in xml file  
     130      SELECT CASE ( nleapy )        ! Choose calendar for IOIPSL 
     131      CASE ( 1)   ; CALL xios_define_calendar( TYPE = "Gregorian", time_origin = xios_date(1900,01,01,00,00,00), & 
     132          &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
     133      CASE ( 0)   ; CALL xios_define_calendar( TYPE = "NoLeap"   , time_origin = xios_date(1900,01,01,00,00,00), & 
     134          &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
     135      CASE (30)   ; CALL xios_define_calendar( TYPE = "D360"     , time_origin = xios_date(1900,01,01,00,00,00), & 
     136          &                                    start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 
     137      END SELECT 
     138#endif 
    120139      ! horizontal grid definition 
     140 
    121141      CALL set_scalar 
    122142 
     
    170190 
    171191      ! Add vertical grid bounds 
     192#if ! defined key_xios2 
    172193      z_bnds(:      ,1) = gdepw_1d(:) 
    173194      z_bnds(1:jpkm1,2) = gdepw_1d(2:jpk) 
    174195      z_bnds(jpk:   ,2) = gdepw_1d(jpk) + e3t_1d(jpk) 
     196#else 
     197      z_bnds(1      ,:) = gdepw_1d(:) 
     198      z_bnds(2,1:jpkm1) = gdepw_1d(2:jpk) 
     199      z_bnds(2,jpk:   ) = gdepw_1d(jpk) + e3t_1d(jpk) 
     200#endif 
     201 
    175202      CALL iom_set_axis_attr( "deptht", bounds=z_bnds ) 
    176203      CALL iom_set_axis_attr( "depthu", bounds=z_bnds ) 
    177204      CALL iom_set_axis_attr( "depthv", bounds=z_bnds ) 
    178       z_bnds(:    ,2) = gdept_1d(:) 
    179       z_bnds(2:jpk,1) = gdept_1d(1:jpkm1) 
    180       z_bnds(1    ,1) = gdept_1d(1) - e3w_1d(1) 
     205 
     206#if ! defined key_xios2 
     207      z_bnds(:    ,2)  = gdept_1d(:) 
     208      z_bnds(2:jpk,1)  = gdept_1d(1:jpkm1) 
     209      z_bnds(1    ,1)  = gdept_1d(1) - e3w_1d(1) 
     210#else 
     211      z_bnds(2,:    )  = gdept_1d(:) 
     212      z_bnds(1,2:jpk)  = gdept_1d(1:jpkm1) 
     213      z_bnds(1,1    )  = gdept_1d(1) - e3w_1d(1) 
     214#endif 
    181215      CALL iom_set_axis_attr( "depthw", bounds=z_bnds ) 
     216 
    182217 
    183218# if defined key_floats 
     
    193228      ! automatic definitions of some of the xml attributs 
    194229      CALL set_xmlatt 
     230 
     231      CALL set_1point 
    195232 
    196233      ! end file definition 
     
    673710      CHARACTER(LEN=256)             ::   clname      ! file name 
    674711      CHARACTER(LEN=1)               ::   clrankpv, cldmspc      !  
     712      LOGICAL                        ::   ll_depth_spec ! T => if kstart, kcount present then *only* use values for 3rd spatial dimension. 
    675713      !--------------------------------------------------------------------- 
    676714      ! 
     
    685723      IF( PRESENT(kcount) .AND. (.NOT. PRESENT(kstart)) ) CALL ctl_stop(trim(clinfo), 'kcount present needs kstart present') 
    686724      IF( PRESENT(kstart) .AND. (.NOT. PRESENT(kcount)) ) CALL ctl_stop(trim(clinfo), 'kstart present needs kcount present') 
    687       IF( PRESENT(kstart) .AND. idom /= jpdom_unknown   ) CALL ctl_stop(trim(clinfo), 'kstart present needs kdom = jpdom_unknown') 
     725      IF( PRESENT(kstart) .AND. idom /= jpdom_unknown .AND.  idom /= jpdom_autoglo_xy  ) & 
     726     &           CALL ctl_stop(trim(clinfo), 'kstart present needs kdom = jpdom_unknown or kdom = jpdom_autoglo_xy') 
    688727 
    689728      luse_jattr = .false. 
     
    718757         ! update idom definition... 
    719758         ! Identify the domain in case of jpdom_auto(glo/dta) definition 
     759         IF( idom == jpdom_autoglo_xy ) THEN 
     760            ll_depth_spec = .TRUE. 
     761            idom = jpdom_autoglo 
     762         ELSE 
     763            ll_depth_spec = .FALSE. 
     764         ENDIF 
    720765         IF( idom == jpdom_autoglo .OR. idom == jpdom_autodta ) THEN             
    721766            IF( idom == jpdom_autoglo ) THEN   ;   idom = jpdom_global  
     
    771816         istart(idmspc+1) = itime 
    772817 
    773          IF(              PRESENT(kstart)      ) THEN ; istart(1:idmspc) = kstart(1:idmspc) ; icnt(1:idmspc) = kcount(1:idmspc) 
     818         IF( PRESENT(kstart) .AND. .NOT. ll_depth_spec ) THEN ; istart(1:idmspc) = kstart(1:idmspc) ; icnt(1:idmspc) = kcount(1:idmspc) 
    774819         ELSE 
    775             IF(           idom == jpdom_unknown ) THEN                                       ; icnt(1:idmspc) = idimsz(1:idmspc) 
     820            IF(           idom == jpdom_unknown ) THEN                                                ; icnt(1:idmspc) = idimsz(1:idmspc) 
    776821            ELSE  
    777822               IF( .NOT. PRESENT(pv_r1d) ) THEN   !   not a 1D array 
     
    796841                  ENDIF 
    797842                  IF( PRESENT(pv_r3d) ) THEN 
    798                      IF( idom == jpdom_data ) THEN   ; icnt(3) = jpkdta 
    799                      ELSE                            ; icnt(3) = jpk 
     843                     IF( idom == jpdom_data ) THEN                                  ; icnt(3) = jpkdta 
     844                     ELSE IF( ll_depth_spec .AND. PRESENT(kstart) ) THEN            ; istart(3) = kstart(3); icnt(3) = kcount(3) 
     845                     ELSE                                                           ; icnt(3) = jpk 
    800846                     ENDIF 
    801847                  ENDIF 
     
    9881034   !!---------------------------------------------------------------------- 
    9891035   SUBROUTINE iom_g0d_intatt( kiomid, cdatt, pvar ) 
    990       INTEGER         , INTENT(in   )                 ::   kiomid    ! Identifier of the file 
     1036      INTEGER         , INTENT(in   )                 ::   kiomid    !Identifier of the file 
    9911037      CHARACTER(len=*), INTENT(in   )                 ::   cdatt     ! Name of the attribute 
    9921038      INTEGER         , INTENT(  out)                 ::   pvar      ! read field 
     
    11041150      CHARACTER(LEN=*), INTENT(in) ::   cdname 
    11051151      REAL(wp)        , INTENT(in) ::   pfield0d 
     1152#if ! defined key_xios2 
    11061153      REAL(wp)        , DIMENSION(jpi,jpj) ::   zz     ! masson 
     1154#endif 
    11071155#if defined key_iomput 
     1156#if ! defined key_xios2 
    11081157      zz(:,:)=pfield0d 
    11091158      CALL xios_send_field(cdname, zz) 
    1110       !CALL xios_send_field(cdname, (/pfield0d/))  
     1159#else 
     1160      CALL xios_send_field(cdname, (/pfield0d/))  
     1161#endif 
    11111162#else 
    11121163      IF( .FALSE. )   WRITE(numout,*) cdname, pfield0d   ! useless test to avoid compilation warnings 
     
    11561207      REAL(wp), DIMENSION(:)   , OPTIONAL, INTENT(in) ::   lonvalue, latvalue 
    11571208      REAL(wp), DIMENSION(:,:) , OPTIONAL, INTENT(in) ::   bounds_lon, bounds_lat, area 
    1158       LOGICAL,  DIMENSION(:,:) , OPTIONAL, INTENT(in) ::   mask 
    1159  
     1209#if ! defined key_xios2 
     1210     LOGICAL,  DIMENSION(:,:) , OPTIONAL, INTENT(in) ::   mask 
     1211#else 
     1212      LOGICAL,  DIMENSION(:) , OPTIONAL, INTENT(in) ::   mask 
     1213#endif 
     1214 
     1215#if ! defined key_xios2 
    11601216      IF ( xios_is_valid_domain     (cdid) ) THEN 
    11611217         CALL xios_set_domain_attr     ( cdid, ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, jbegin=jbegin, ni=ni, nj=nj,   & 
     
    11641220            &    lonvalue=lonvalue, latvalue=latvalue, mask=mask, nvertex=nvertex, bounds_lon=bounds_lon,                  & 
    11651221            &    bounds_lat=bounds_lat, area=area ) 
    1166       ENDIF 
    1167  
     1222     ENDIF 
    11681223      IF ( xios_is_valid_domaingroup(cdid) ) THEN 
    11691224         CALL xios_set_domaingroup_attr( cdid, ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, jbegin=jbegin, ni=ni, nj=nj,   & 
     
    11731228            &    bounds_lat=bounds_lat, area=area ) 
    11741229      ENDIF 
     1230 
     1231#else 
     1232      IF ( xios_is_valid_domain     (cdid) ) THEN 
     1233         CALL xios_set_domain_attr     ( cdid, ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, jbegin=jbegin, ni=ni, nj=nj,   & 
     1234            &    data_dim=data_dim, data_ibegin=data_ibegin, data_ni=data_ni, data_jbegin=data_jbegin, data_nj=data_nj ,   & 
     1235            &    lonvalue_1D=lonvalue, latvalue_1D=latvalue, mask_1D=mask, nvertex=nvertex, bounds_lon_1D=bounds_lon,                  & 
     1236            &    bounds_lat_1D=bounds_lat, area=area, type='curvilinear') 
     1237     ENDIF 
     1238      IF ( xios_is_valid_domaingroup(cdid) ) THEN 
     1239         CALL xios_set_domaingroup_attr( cdid, ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, jbegin=jbegin, ni=ni, nj=nj,   & 
     1240            &    data_dim=data_dim, data_ibegin=data_ibegin, data_ni=data_ni, data_jbegin=data_jbegin, data_nj=data_nj ,   & 
     1241            &    lonvalue_1D=lonvalue, latvalue_1D=latvalue, mask_1D=mask, nvertex=nvertex, bounds_lon_1D=bounds_lon,                  & 
     1242            &    bounds_lat_1D=bounds_lat, area=area, type='curvilinear' ) 
     1243      ENDIF 
     1244#endif 
    11751245      CALL xios_solve_inheritance() 
    11761246 
    11771247   END SUBROUTINE iom_set_domain_attr 
     1248 
     1249#if defined key_xios2 
     1250  SUBROUTINE iom_set_zoom_domain_attr( cdid, ibegin, jbegin, ni, nj) 
     1251     CHARACTER(LEN=*)                   , INTENT(in) ::   cdid 
     1252     INTEGER                  , OPTIONAL, INTENT(in) ::   ibegin, jbegin, ni, nj 
     1253 
     1254     IF ( xios_is_valid_zoom_domain     (cdid) ) THEN 
     1255         CALL xios_set_zoom_domain_attr     ( cdid, ibegin=ibegin, jbegin=jbegin, ni=ni,    & 
     1256           &   nj=nj) 
     1257    ENDIF 
     1258  END SUBROUTINE iom_set_zoom_domain_attr 
     1259#endif 
    11781260 
    11791261 
     
    11831265      REAL(wp), DIMENSION(:,:), OPTIONAL, INTENT(in) ::   bounds 
    11841266      IF ( PRESENT(paxis) ) THEN 
     1267#if ! defined key_xios2 
    11851268         IF ( xios_is_valid_axis     (cdid) )   CALL xios_set_axis_attr     ( cdid, size=SIZE(paxis), value=paxis ) 
    11861269         IF ( xios_is_valid_axisgroup(cdid) )   CALL xios_set_axisgroup_attr( cdid, size=SIZE(paxis), value=paxis ) 
     1270#else 
     1271         IF ( xios_is_valid_axis     (cdid) )   CALL xios_set_axis_attr     ( cdid, n_glo=SIZE(paxis), value=paxis ) 
     1272         IF ( xios_is_valid_axisgroup(cdid) )   CALL xios_set_axisgroup_attr( cdid, n_glo=SIZE(paxis), value=paxis ) 
     1273#endif 
    11871274      ENDIF 
    11881275      IF ( xios_is_valid_axis     (cdid) )   CALL xios_set_axis_attr     ( cdid, bounds=bounds ) 
     
    11911278   END SUBROUTINE iom_set_axis_attr 
    11921279 
    1193  
    11941280   SUBROUTINE iom_set_field_attr( cdid, freq_op, freq_offset ) 
    11951281      CHARACTER(LEN=*)          , INTENT(in) ::   cdid 
    1196       CHARACTER(LEN=*),OPTIONAL , INTENT(in) ::   freq_op 
    1197       CHARACTER(LEN=*),OPTIONAL , INTENT(in) ::   freq_offset 
    1198       IF ( xios_is_valid_field     (cdid) )   CALL xios_set_field_attr     ( cdid, freq_op=freq_op, freq_offset=freq_offset ) 
    1199       IF ( xios_is_valid_fieldgroup(cdid) )   CALL xios_set_fieldgroup_attr( cdid, freq_op=freq_op, freq_offset=freq_offset ) 
     1282#if ! defined key_xios2 
     1283      CHARACTER(LEN=*)   ,OPTIONAL , INTENT(in) ::   freq_op 
     1284      CHARACTER(LEN=*)   ,OPTIONAL , INTENT(in) ::   freq_offset 
     1285#else 
     1286      TYPE(xios_duration),OPTIONAL , INTENT(in) ::   freq_op 
     1287      TYPE(xios_duration),OPTIONAL , INTENT(in) ::   freq_offset 
     1288#endif 
     1289      IF ( xios_is_valid_field     (cdid) )   CALL xios_set_field_attr       & 
     1290    &     ( cdid, freq_op=freq_op, freq_offset=freq_offset ) 
     1291      IF ( xios_is_valid_fieldgroup(cdid) )   CALL xios_set_fieldgroup_attr  & 
     1292    &                    ( cdid, freq_op=freq_op, freq_offset=freq_offset ) 
    12001293      CALL xios_solve_inheritance() 
    12011294   END SUBROUTINE iom_set_field_attr 
    1202  
    12031295 
    12041296   SUBROUTINE iom_set_file_attr( cdid, name, name_suffix ) 
     
    12131305   SUBROUTINE iom_get_file_attr( cdid, name, name_suffix, output_freq ) 
    12141306      CHARACTER(LEN=*)          , INTENT(in ) ::   cdid 
    1215       CHARACTER(LEN=*),OPTIONAL , INTENT(out) ::   name, name_suffix, output_freq 
     1307      CHARACTER(LEN=*),OPTIONAL , INTENT(out) ::   name, name_suffix 
     1308#if ! defined key_xios2 
     1309      CHARACTER(LEN=*),OPTIONAL , INTENT(out) ::    output_freq 
     1310#else 
     1311      TYPE(xios_duration)   ,OPTIONAL , INTENT(out) :: output_freq 
     1312#endif   
    12161313      LOGICAL                                 ::   llexist1,llexist2,llexist3 
    12171314      !--------------------------------------------------------------------- 
    12181315      IF( PRESENT( name        ) )   name = ''          ! default values 
    12191316      IF( PRESENT( name_suffix ) )   name_suffix = '' 
     1317#if ! defined key_xios2 
    12201318      IF( PRESENT( output_freq ) )   output_freq = '' 
     1319#else 
     1320      IF( PRESENT( output_freq ) )   output_freq = xios_duration(0,0,0,0,0,0) 
     1321#endif 
    12211322      IF ( xios_is_valid_file     (cdid) ) THEN 
    12221323         CALL xios_solve_inheritance() 
     
    12391340      CHARACTER(LEN=*)                   , INTENT(in) ::   cdid 
    12401341      LOGICAL, DIMENSION(:,:,:), OPTIONAL, INTENT(in) ::   mask 
     1342#if ! defined key_xios2 
    12411343      IF ( xios_is_valid_grid     (cdid) )   CALL xios_set_grid_attr     ( cdid, mask=mask ) 
    12421344      IF ( xios_is_valid_gridgroup(cdid) )   CALL xios_set_gridgroup_attr( cdid, mask=mask ) 
     1345#else 
     1346      IF ( xios_is_valid_grid     (cdid) )   CALL xios_set_grid_attr     ( cdid, mask_3D=mask ) 
     1347      IF ( xios_is_valid_gridgroup(cdid) )   CALL xios_set_gridgroup_attr( cdid, mask_3D=mask ) 
     1348#endif 
    12431349      CALL xios_solve_inheritance() 
    12441350   END SUBROUTINE iom_set_grid_attr 
     
    12821388      ni=nlei-nldi+1 ; nj=nlej-nldj+1 
    12831389 
    1284       CALL iom_set_domain_attr("grid_"//cdgrd, ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-1, jbegin=njmpp+nldj-1, ni=ni, nj=nj) 
     1390#if ! defined key_xios2 
     1391     CALL iom_set_domain_attr("grid_"//cdgrd, ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-1, jbegin=njmpp+nldj-1, ni=ni, nj=nj) 
     1392#else 
     1393     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) 
     1394#endif      
    12851395      CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
    12861396      CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)),   & 
     
    12961406         END SELECT 
    12971407         ! 
     1408#if ! defined key_xios2 
    12981409         CALL iom_set_domain_attr( "grid_"//cdgrd       , mask = RESHAPE(zmask(nldi:nlei,nldj:nlej,1),(/ni,nj    /)) /= 0. ) 
     1410#else 
     1411         CALL iom_set_domain_attr( "grid_"//cdgrd       , mask = RESHAPE(zmask(nldi:nlei,nldj:nlej,1),(/ni*nj    /)) /= 0. ) 
     1412#endif   
    12991413         CALL iom_set_grid_attr  ( "grid_"//cdgrd//"_3D", mask = RESHAPE(zmask(nldi:nlei,nldj:nlej,:),(/ni,nj,jpk/)) /= 0. ) 
    13001414      ENDIF 
     
    14301544      ALLOCATE( zlon(ni*nj) )       ;       zlon(:) = 0. 
    14311545 
     1546      CALL dom_ngb( -168.7, 65.6, ix, iy, 'T' ) !  i-line that passes across Bering strait to avoid land processor (used in plots) 
     1547#if ! defined key_xios2 
    14321548      CALL iom_set_domain_attr("gznl", ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-1, jbegin=njmpp+nldj-1, ni=ni, nj=nj) 
    14331549      CALL iom_set_domain_attr("gznl", data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
     
    14351551         &                             latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /)))   
    14361552      ! 
    1437       CALL dom_ngb( 180., 90., ix, iy, 'T' ) !  i-line that passes near the North Pole : Reference latitude (used in plots) 
    14381553      CALL iom_set_domain_attr ('ptr', zoom_ibegin=ix, zoom_nj=jpjglo) 
     1554#else 
     1555! Pas teste : attention aux indices ! 
     1556      CALL iom_set_domain_attr("gznl", ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 
     1557      CALL iom_set_domain_attr("gznl", data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 
     1558      CALL iom_set_domain_attr("gznl", lonvalue = zlon,   & 
     1559         &                             latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /)))   
     1560       CALL iom_set_zoom_domain_attr ("ptr", ibegin=ix-1, jbegin=0, ni=1, nj=jpjglo) 
     1561#endif 
     1562 
    14391563      CALL iom_update_file_name('ptr') 
    14401564      ! 
     
    14501574      REAL(wp), DIMENSION(1)   ::   zz = 1. 
    14511575      !!---------------------------------------------------------------------- 
     1576#if ! defined key_xios2 
    14521577      CALL iom_set_domain_attr('scalarpoint', ni_glo=jpnij, nj_glo=1, ibegin=narea, jbegin=1, ni=1, nj=1) 
     1578#else 
     1579      CALL iom_set_domain_attr('scalarpoint', ni_glo=jpnij, nj_glo=1, ibegin=narea-1, jbegin=0, ni=1, nj=1) 
     1580#endif 
    14531581      CALL iom_set_domain_attr('scalarpoint', data_dim=2, data_ibegin = 1, data_ni = 1, data_jbegin = 1, data_nj = 1) 
    14541582       
    14551583      zz=REAL(narea,wp) 
    14561584      CALL iom_set_domain_attr('scalarpoint', lonvalue=zz, latvalue=zz) 
    1457  
     1585       
    14581586   END SUBROUTINE set_scalar 
     1587 
     1588   SUBROUTINE set_1point 
     1589      !!---------------------------------------------------------------------- 
     1590      !!                     ***  ROUTINE set_1point  *** 
     1591      !! 
     1592      !! ** Purpose :   define zoom grid for scalar fields 
     1593      !! 
     1594      !!---------------------------------------------------------------------- 
     1595      REAL(wp), DIMENSION(1)   ::   zz = 1. 
     1596      INTEGER  :: ix, iy 
     1597      !!---------------------------------------------------------------------- 
     1598      CALL dom_ngb( 180., 90., ix, iy, 'T' ) !  Nearest point to north pole should be ocean 
     1599      CALL iom_set_domain_attr('1point', zoom_ibegin=ix, zoom_jbegin=iy) 
     1600 
     1601   END SUBROUTINE set_1point 
     1602 
    14591603 
    14601604 
     
    14791623      REAL(wp)        ,DIMENSION( 3) ::   zlonpira                 ! longitudes of pirata moorings 
    14801624      REAL(wp)        ,DIMENSION( 9) ::   zlatpira                 ! latitudes  of pirata moorings 
     1625#if  defined key_xios2 
     1626      TYPE(xios_duration)            ::   f_op, f_of 
     1627#endif 
     1628  
    14811629      !!---------------------------------------------------------------------- 
    14821630      !  
    14831631      ! frequency of the call of iom_put (attribut: freq_op) 
    1484       WRITE(cl1,'(i1)')        1   ;   CALL iom_set_field_attr('field_definition', freq_op = cl1//'ts', freq_offset='0ts') 
    1485       WRITE(cl1,'(i1)')  nn_fsbc   ;   CALL iom_set_field_attr('SBC'             , freq_op = cl1//'ts', freq_offset='0ts') 
    1486       WRITE(cl1,'(i1)')  nn_fsbc   ;   CALL iom_set_field_attr('SBC_scalar'      , freq_op = cl1//'ts', freq_offset='0ts') 
    1487       WRITE(cl1,'(i1)') nn_dttrc   ;   CALL iom_set_field_attr('ptrc_T'          , freq_op = cl1//'ts', freq_offset='0ts') 
    1488       WRITE(cl1,'(i1)') nn_dttrc   ;   CALL iom_set_field_attr('diad_T'          , freq_op = cl1//'ts', freq_offset='0ts') 
     1632#if ! defined key_xios2 
     1633      WRITE(cl1,'(i1)')        1   ;   CALL iom_set_field_attr('field_definition', freq_op=cl1//'ts', freq_offset='0ts') 
     1634      WRITE(cl1,'(i1)')        2   ;   CALL iom_set_field_attr('trendT_even'      , freq_op=cl1//'ts', freq_offset='0ts') 
     1635      WRITE(cl1,'(i1)')        2   ;   CALL iom_set_field_attr('trendT_odd'       , freq_op=cl1//'ts', freq_offset='-1ts') 
     1636      WRITE(cl1,'(i1)')  nn_fsbc   ;   CALL iom_set_field_attr('SBC'             , freq_op=cl1//'ts', freq_offset='0ts') 
     1637      WRITE(cl1,'(i1)')  nn_fsbc   ;   CALL iom_set_field_attr('SBC_scalar'      , freq_op=cl1//'ts', freq_offset='0ts') 
     1638      WRITE(cl1,'(i1)') nn_dttrc   ;   CALL iom_set_field_attr('ptrc_T'          , freq_op=cl1//'ts', freq_offset='0ts') 
     1639      WRITE(cl1,'(i1)') nn_dttrc   ;   CALL iom_set_field_attr('diad_T'          , freq_op=cl1//'ts', freq_offset='0ts') 
     1640#else 
     1641      f_op%timestep = 1        ;  f_of%timestep = 0  ; CALL iom_set_field_attr('field_definition', freq_op=f_op, freq_offset=f_of) 
     1642      f_op%timestep = 2        ;  f_of%timestep = 0  ; CALL iom_set_field_attr('trendT_even'      , freq_op=f_op, freq_offset=f_of) 
     1643      f_op%timestep = 2        ;  f_of%timestep = -1 ; CALL iom_set_field_attr('trendT_odd'       , freq_op=f_op, freq_offset=f_of) 
     1644      f_op%timestep = nn_fsbc  ;  f_of%timestep = 0  ; CALL iom_set_field_attr('SBC'             , freq_op=f_op, freq_offset=f_of) 
     1645      f_op%timestep = nn_fsbc  ;  f_of%timestep = 0  ; CALL iom_set_field_attr('SBC_scalar'      , freq_op=f_op, freq_offset=f_of) 
     1646      f_op%timestep = nn_dttrc ;  f_of%timestep = 0  ; CALL iom_set_field_attr('ptrc_T'          , freq_op=f_op, freq_offset=f_of) 
     1647      f_op%timestep = nn_dttrc ;  f_of%timestep = 0  ; CALL iom_set_field_attr('diad_T'          , freq_op=f_op, freq_offset=f_of) 
     1648#endif 
    14891649        
    14901650      ! output file names (attribut: name) 
     
    15081668         ! Equatorial section (attributs: jbegin, ni, name_suffix) 
    15091669         CALL dom_ngb( 0., 0., ix, iy, cl1 ) 
     1670#if ! defined key_xios2 
    15101671         CALL iom_set_domain_attr ('Eq'//cl1, zoom_jbegin=iy, zoom_ni=jpiglo) 
     1672#else 
     1673         CALL iom_set_zoom_domain_attr ('Eq'//cl1, jbegin=iy-1, ni=jpiglo) 
     1674#endif 
    15111675         CALL iom_get_file_attr   ('Eq'//cl1, name_suffix = clsuff             ) 
    15121676         CALL iom_set_file_attr   ('Eq'//cl1, name_suffix = TRIM(clsuff)//'_Eq') 
     
    15881752               ENDIF 
    15891753               clname = TRIM(ADJUSTL(clat))//TRIM(ADJUSTL(clon)) 
     1754#if ! defined key_xios2 
    15901755               CALL iom_set_domain_attr (TRIM(clname)//cl1, zoom_ibegin= ix, zoom_jbegin= iy) 
     1756#else 
     1757               CALL iom_set_zoom_domain_attr  (TRIM(clname)//cl1, ibegin= ix-1, jbegin= iy-1) 
     1758#endif 
    15911759               CALL iom_get_file_attr   (TRIM(clname)//cl1, name_suffix = clsuff                         ) 
    15921760               CALL iom_set_file_attr   (TRIM(clname)//cl1, name_suffix = TRIM(clsuff)//'_'//TRIM(clname)) 
     
    16171785      REAL(wp)           ::   zsec 
    16181786      LOGICAL            ::   llexist 
    1619       !!---------------------------------------------------------------------- 
     1787#if  defined key_xios2 
     1788      TYPE(xios_duration)   ::   output_freq  
     1789#endif       
     1790      !!---------------------------------------------------------------------- 
     1791 
    16201792 
    16211793      DO jn = 1,2 
    1622  
     1794#if ! defined key_xios2 
    16231795         IF( jn == 1 )   CALL iom_get_file_attr( cdid, name        = clname, output_freq = clfreq ) 
     1796#else 
     1797         output_freq = xios_duration(0,0,0,0,0,0) 
     1798         IF( jn == 1 )   CALL iom_get_file_attr( cdid, name        = clname, output_freq = output_freq ) 
     1799#endif 
    16241800         IF( jn == 2 )   CALL iom_get_file_attr( cdid, name_suffix = clname ) 
    16251801 
     
    16321808            END DO 
    16331809 
     1810#if ! defined key_xios2 
    16341811            idx = INDEX(clname,'@freq@') + INDEX(clname,'@FREQ@') 
    16351812            DO WHILE ( idx /= 0 )  
     
    16441821               idx = INDEX(clname,'@freq@') + INDEX(clname,'@FREQ@') 
    16451822            END DO 
    1646  
     1823#else 
     1824            idx = INDEX(clname,'@freq@') + INDEX(clname,'@FREQ@') 
     1825            DO WHILE ( idx /= 0 )  
     1826              IF ( output_freq%timestep /= 0) THEN 
     1827                  WRITE(clfreq,'(I18,A2)')INT(output_freq%timestep),'ts'  
     1828                  itrlen = LEN_TRIM(ADJUSTL(clfreq)) 
     1829              ELSE IF ( output_freq%hour /= 0 ) THEN 
     1830                  WRITE(clfreq,'(I19,A1)')INT(output_freq%hour),'h'  
     1831                  itrlen = LEN_TRIM(ADJUSTL(clfreq)) 
     1832              ELSE IF ( output_freq%day /= 0 ) THEN 
     1833                  WRITE(clfreq,'(I19,A1)')INT(output_freq%day),'d'  
     1834                  itrlen = LEN_TRIM(ADJUSTL(clfreq)) 
     1835              ELSE IF ( output_freq%month /= 0 ) THEN    
     1836                  WRITE(clfreq,'(I19,A1)')INT(output_freq%month),'m'  
     1837                  itrlen = LEN_TRIM(ADJUSTL(clfreq)) 
     1838              ELSE IF ( output_freq%year /= 0 ) THEN    
     1839                  WRITE(clfreq,'(I19,A1)')INT(output_freq%year),'y'  
     1840                  itrlen = LEN_TRIM(ADJUSTL(clfreq)) 
     1841              ELSE 
     1842                  CALL ctl_stop('error in the name of file id '//TRIM(cdid),   & 
     1843                     & ' attribute output_freq is undefined -> cannot replace @freq@ in '//TRIM(clname) ) 
     1844              ENDIF 
     1845              clname = clname(1:idx-1)//TRIM(ADJUSTL(clfreq))//clname(idx+6:LEN_TRIM(clname)) 
     1846              idx = INDEX(clname,'@freq@') + INDEX(clname,'@FREQ@') 
     1847            END DO 
     1848#endif 
    16471849            idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 
    16481850            DO WHILE ( idx /= 0 )  
     
    16731875            END DO 
    16741876 
     1877            IF( jn == 1 .AND. TRIM(Agrif_CFixed()) /= '0' )   clname = TRIM(Agrif_CFixed())//"_"//TRIM(clname) 
    16751878            IF( jn == 1 )   CALL iom_set_file_attr( cdid, name        = clname ) 
    16761879            IF( jn == 2 )   CALL iom_set_file_attr( cdid, name_suffix = clname ) 
     
    17201923      ENDIF 
    17211924       
     1925!$AGRIF_DO_NOT_TREAT       
     1926! Should be fixed in the conv 
    17221927      IF( llfull ) THEN  
    17231928         clfmt = TRIM(clfmt)//",'_',i2.2,':',i2.2,':',i2.2" 
     
    17301935         WRITE(iom_sdate, '('//TRIM(clfmt)//')') iyear, imonth, iday                          ! date of the end of run 
    17311936      ENDIF 
     1937!$AGRIF_END_DO_NOT_TREAT       
    17321938 
    17331939   END FUNCTION iom_sdate 
Note: See TracChangeset for help on using the changeset viewer.