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 5415 – NEMO

Changeset 5415


Ignore:
Timestamp:
2015-06-13T05:54:27+02:00 (9 years ago)
Author:
hadcv
Message:

Final commits for CF compliance development.

  • Add cell area output (under ln_cfmeta)
  • Add depth bounds
  • Update Met Office ARCH file to use XIOS-1.0 r618
  • Remove current XIOS domain definition for scalar variables (a zoom of the T grid) and go back to the one defined in iom.F90
  • Add new scalar variable XIOS domain definition with coordinates that better represent collapsed global coordinates
  • Rewrite the grid bounds code in iom.F90 to allocate less memory.
Location:
trunk/NEMOGCM
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/ARCH/arch-PW7_METO.fcm

    r5027 r5415  
    1717 
    1818 
    19 %NCDF_INC            -I/home/cr/ocean/hadcv/netcdf/4.1.3_seq/include 
    20 %NCDF_LIB            -L/home/cr/ocean/hadcv/netcdf/4.1.3_seq/lib -lnetcdf -lnetcdff -lhdf5 -lhdf5_hl -lhdf5_fortran -lz 
    21 %XIOS_INC            -I/home/cr/ocean/hadcv/xios_lib/par/r521/xios/inc 
    22 %XIOS_LIB            -L/home/cr/ocean/hadcv/xios_lib/par/r521/xios/lib -lxios 
     19%NCDF_INC            -I/home/cr/ocean/hadcv/netcdf/4.1.3_par/include 
     20%NCDF_LIB            -L/home/cr/ocean/hadcv/netcdf/4.1.3_par/lib -lnetcdf -lnetcdff -lhdf5 -lhdf5_hl -lhdf5_fortran -lz 
     21%XIOS_INC            -I/home/cr/ocean/hadcv/xios_lib/par/r618/xios/inc 
     22%XIOS_LIB            -L/home/cr/ocean/hadcv/xios_lib/par/r618/xios/lib -lxios 
    2323%CPP               cpp 
    2424%FC                  mpxlf90_r 
  • trunk/NEMOGCM/CONFIG/SHARED/domain_def.xml

    r5385 r5415  
    55    <!--   My zoom: example of hand defined zoom   --> 
    66         <domain id="myzoom" zoom_ibegin="10" zoom_jbegin="10" zoom_ni="5" zoom_nj="5" /> 
    7          <domain id="1point" zoom_ibegin="10" zoom_jbegin="10" zoom_ni="1" zoom_nj="1" /> 
    87         <!--   Eq section   --> 
    98         <domain id="EqT" zoom_ibegin="1" zoom_jbegin="0000" zoom_ni="0000" zoom_nj="1" /> 
     
    169168      </domain_group> 
    170169 
    171       <domain_group id="scalarpoint"> 
    172          <domain id="scalarpoint" long_name="scalar"/> 
    173          <!-- 
    174          <domain id="1point" zoom_ibegin="1" zoom_jbegin="1" zoom_ni="1" zoom_nj="1" /> 
    175          --> 
     170      <domain_group id="scalarpoint" long_name="scalar" zoom_ibegin="1" zoom_jbegin="1" zoom_ni="1" zoom_nj="1"> 
     171         <domain id="1point"/> 
     172         <domain id="globalscalar" /> 
    176173      </domain_group> 
    177174 
  • trunk/NEMOGCM/CONFIG/SHARED/field_def.xml

    r5407 r5415  
    460460      <!-- scalar variables available with key_diaar5 --> 
    461461 
    462       <field_group id="scalar"  domain_ref="1point" > 
     462      <field_group id="scalar"  domain_ref="globalscalar" > 
    463463         <field id="voltot"     long_name="global total volume"                          standard_name="sea_water_volume"                               unit="m3"   /> 
    464464         <field id="sshtot"     long_name="global mean ssh"                              standard_name="global_average_sea_level_change"                unit="m"    /> 
     
    468468         <field id="temptot"    long_name="global mean temperature"                      standard_name="sea_water_potential_temperature"                unit="degC" /> 
    469469         <field id="saltot"     long_name="global mean salinity"                         standard_name="sea_water_salinity"                             unit="1e-3" /> 
    470          <field id="fram_trans" long_name="Sea Ice Mass Transport Through Fram Strait"   standard_name="sea_ice_transport_across_line"                  unit="kg/s" /> 
     470         <field id="fram_trans" long_name="Sea Ice Mass Transport Through Fram Strait"   standard_name="sea_ice_transport_across_line"                  unit="kg/s"   domain_ref="1point" /> 
    471471 
    472472          <!-- available with ln_diahsb --> 
     
    489489      <!-- LIM3 scalar variables --> 
    490490 
    491       <field_group id="SBC_scalar"  domain_ref="1point" > 
     491      <field_group id="SBC_scalar"  domain_ref="globalscalar" > 
    492492         <!-- available with ln_limdiaout --> 
    493493         <field id="ibgvoltot"    long_name="global mean ice volume"                                 unit="km3"        /> 
     
    920920     </field_group> 
    921921 
    922      <field_group id="PISCES_scalar"  domain_ref="1point" > 
     922     <field_group id="PISCES_scalar"  domain_ref="globalscalar" > 
    923923       <field id="pno3tot"         long_name="global mean nitrate concentration"                  unit="mol/m3"   /> 
    924924       <field id="ppo4tot"         long_name="global mean phosphorus concentration"               unit="mol/m3"   /> 
  • trunk/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r5412 r5415  
    9898      CHARACTER(len=10) :: clname 
    9999      INTEGER           ::   ji 
    100       !!---------------------------------------------------------------------- 
     100      ! 
     101      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: z_bnds 
     102      !!---------------------------------------------------------------------- 
     103 
     104      ALLOCATE( z_bnds(jpk,2) ) 
    101105 
    102106      clname = cdname 
     
    123127         CALL set_grid( "W", glamt, gphit ) 
    124128         CALL set_grid_znl( gphit ) 
     129         ! 
     130         IF( ln_cfmeta ) THEN   ! Add additional grid metadata 
     131            CALL iom_set_domain_attr("grid_T", area = e12t(nldi:nlei, nldj:nlej)) 
     132            CALL iom_set_domain_attr("grid_U", area = e12u(nldi:nlei, nldj:nlej)) 
     133            CALL iom_set_domain_attr("grid_V", area = e12v(nldi:nlei, nldj:nlej)) 
     134            CALL iom_set_domain_attr("grid_W", area = e12t(nldi:nlei, nldj:nlej)) 
     135            CALL set_grid_bounds( "T", glamf, gphif, glamt, gphit ) 
     136            CALL set_grid_bounds( "U", glamv, gphiv, glamu, gphiu ) 
     137            CALL set_grid_bounds( "V", glamu, gphiu, glamv, gphiv ) 
     138            CALL set_grid_bounds( "W", glamf, gphif, glamt, gphit ) 
     139         ENDIF 
    125140      ENDIF 
    126141 
     
    135150          ! 
    136151         CALL dom_grid_glo   ! Return to parent grid domain 
    137       ENDIF 
    138  
    139       IF ( ln_cfmeta ) THEN   ! add cell bounds 
    140          CALL set_grid_bounds( "T", cdname )  
    141          CALL set_grid_bounds( "U", cdname ) 
    142          CALL set_grid_bounds( "V", cdname ) 
    143          CALL set_grid_bounds( "W", cdname ) 
     152         ! 
     153         IF( ln_cfmeta ) THEN   ! Add additional grid metadata 
     154            CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 
     155            CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) 
     156            CALL iom_set_domain_attr("grid_V", area = e1v_crs(nldi:nlei, nldj:nlej) * e2v_crs(nldi:nlei, nldj:nlej)) 
     157            CALL iom_set_domain_attr("grid_W", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 
     158            CALL set_grid_bounds( "T", glamf_crs, gphif_crs, glamt_crs, gphit_crs ) 
     159            CALL set_grid_bounds( "U", glamv_crs, gphiv_crs, glamu_crs, gphiu_crs ) 
     160            CALL set_grid_bounds( "V", glamu_crs, gphiu_crs, glamv_crs, gphiv_crs ) 
     161            CALL set_grid_bounds( "W", glamf_crs, gphif_crs, glamt_crs, gphit_crs ) 
     162         ENDIF 
    144163      ENDIF 
    145164 
     
    149168      CALL iom_set_axis_attr( "depthv", gdept_1d ) 
    150169      CALL iom_set_axis_attr( "depthw", gdepw_1d ) 
     170 
     171      ! Add vertical grid bounds 
     172      z_bnds(:      ,1) = gdepw_1d(:) 
     173      z_bnds(1:jpkm1,2) = gdepw_1d(2:jpk) 
     174      z_bnds(jpk:   ,2) = gdepw_1d(jpk) + e3t_1d(jpk) 
     175      CALL iom_set_axis_attr( "deptht", bounds=z_bnds ) 
     176      CALL iom_set_axis_attr( "depthu", bounds=z_bnds ) 
     177      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) 
     181      CALL iom_set_axis_attr( "depthw", bounds=z_bnds ) 
     182 
    151183# if defined key_floats 
    152184      CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,nfloat) /) ) 
     
    168200       
    169201      CALL xios_update_calendar(0) 
     202 
     203      DEALLOCATE( z_bnds ) 
     204 
    170205#endif 
    171206       
     
    10691104      CHARACTER(LEN=*), INTENT(in) ::   cdname 
    10701105      REAL(wp)        , INTENT(in) ::   pfield0d 
    1071       REAL(wp)        , DIMENSION(jpi,jpj) ::   zz     ! masson 
    10721106#if defined key_iomput 
    1073       zz(:,:)=pfield0d 
    1074       CALL xios_send_field(cdname, zz) 
    1075       !CALL xios_send_field(cdname, (/pfield0d/))  
     1107      CALL xios_send_field(cdname, (/pfield0d/))  
    10761108#else 
    10771109      IF( .FALSE. )   WRITE(numout,*) cdname, pfield0d   ! useless test to avoid compilation warnings 
     
    11141146   SUBROUTINE iom_set_domain_attr( cdid, ni_glo, nj_glo, ibegin, jbegin, ni, nj, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj,   & 
    11151147      &                                    data_dim, data_ibegin, data_ni, data_jbegin, data_nj, lonvalue, latvalue, mask,     & 
    1116       &                                    nvertex, bounds_lon, bounds_lat ) 
     1148      &                                    nvertex, bounds_lon, bounds_lat, area ) 
    11171149      CHARACTER(LEN=*)                   , INTENT(in) ::   cdid 
    11181150      INTEGER                  , OPTIONAL, INTENT(in) ::   ni_glo, nj_glo, ibegin, jbegin, ni, nj 
     
    11201152      INTEGER                  , OPTIONAL, INTENT(in) ::   zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj, nvertex 
    11211153      REAL(wp), DIMENSION(:)   , OPTIONAL, INTENT(in) ::   lonvalue, latvalue 
    1122       REAL(wp), DIMENSION(:,:) , OPTIONAL, INTENT(in) ::   bounds_lon, bounds_lat 
     1154      REAL(wp), DIMENSION(:,:) , OPTIONAL, INTENT(in) ::   bounds_lon, bounds_lat, area 
    11231155      LOGICAL,  DIMENSION(:,:) , OPTIONAL, INTENT(in) ::   mask 
    11241156 
     
    11271159            &    data_dim=data_dim, data_ibegin=data_ibegin, data_ni=data_ni, data_jbegin=data_jbegin, data_nj=data_nj ,   & 
    11281160            &    zoom_ibegin=zoom_ibegin, zoom_jbegin=zoom_jbegin, zoom_ni=zoom_ni, zoom_nj=zoom_nj,                       & 
    1129             &    lonvalue=lonvalue, latvalue=latvalue, mask=mask, nvertex=nvertex, bounds_lon=bounds_lon, bounds_lat=bounds_lat ) 
     1161            &    lonvalue=lonvalue, latvalue=latvalue, mask=mask, nvertex=nvertex, bounds_lon=bounds_lon,                  & 
     1162            &    bounds_lat=bounds_lat, area=area ) 
    11301163      ENDIF 
    11311164 
     
    11341167            &    data_dim=data_dim, data_ibegin=data_ibegin, data_ni=data_ni, data_jbegin=data_jbegin, data_nj=data_nj ,   & 
    11351168            &    zoom_ibegin=zoom_ibegin, zoom_jbegin=zoom_jbegin, zoom_ni=zoom_ni, zoom_nj=zoom_nj,                       & 
    1136             &    lonvalue=lonvalue, latvalue=latvalue, mask=mask, nvertex=nvertex, bounds_lon=bounds_lon, bounds_lat=bounds_lat ) 
     1169            &    lonvalue=lonvalue, latvalue=latvalue, mask=mask, nvertex=nvertex, bounds_lon=bounds_lon,                  & 
     1170            &    bounds_lat=bounds_lat, area=area ) 
    11371171      ENDIF 
    11381172      CALL xios_solve_inheritance() 
     
    11411175 
    11421176 
    1143    SUBROUTINE iom_set_axis_attr( cdid, paxis ) 
     1177   SUBROUTINE iom_set_axis_attr( cdid, paxis, bounds ) 
    11441178      CHARACTER(LEN=*)      , INTENT(in) ::   cdid 
    1145       REAL(wp), DIMENSION(:), INTENT(in) ::   paxis 
    1146       IF ( xios_is_valid_axis     (cdid) )   CALL xios_set_axis_attr     ( cdid, size=size(paxis),value=paxis ) 
    1147       IF ( xios_is_valid_axisgroup(cdid) )   CALL xios_set_axisgroup_attr( cdid, size=size(paxis),value=paxis ) 
     1179      REAL(wp), DIMENSION(:)  , OPTIONAL, INTENT(in) ::   paxis 
     1180      REAL(wp), DIMENSION(:,:), OPTIONAL, INTENT(in) ::   bounds 
     1181      IF ( PRESENT(paxis) ) THEN 
     1182         IF ( xios_is_valid_axis     (cdid) )   CALL xios_set_axis_attr     ( cdid, size=SIZE(paxis), value=paxis ) 
     1183         IF ( xios_is_valid_axisgroup(cdid) )   CALL xios_set_axisgroup_attr( cdid, size=SIZE(paxis), value=paxis ) 
     1184      ENDIF 
     1185      IF ( xios_is_valid_axis     (cdid) )   CALL xios_set_axis_attr     ( cdid, bounds=bounds ) 
     1186      IF ( xios_is_valid_axisgroup(cdid) )   CALL xios_set_axisgroup_attr( cdid, bounds=bounds ) 
    11481187      CALL xios_solve_inheritance() 
    11491188   END SUBROUTINE iom_set_axis_attr 
     
    12611300 
    12621301 
    1263    SUBROUTINE set_grid_bounds( cdgrd, cdname ) 
     1302   SUBROUTINE set_grid_bounds( cdgrd, plon_cnr, plat_cnr, plon_pnt, plat_pnt ) 
    12641303      !!---------------------------------------------------------------------- 
    12651304      !!                   ***  ROUTINE set_grid_bounds  *** 
     
    12691308      !!---------------------------------------------------------------------- 
    12701309      CHARACTER(LEN=1) , INTENT(in) :: cdgrd 
    1271       CHARACTER(LEN=*) , INTENT(in) :: cdname 
     1310      ! 
     1311      REAL(wp), DIMENSION(jpi,jpj), INTENT(in)           :: plon_cnr, plat_cnr  ! Lat/lon coordinates of a contiguous vertex of cell (i,j) 
     1312      REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) :: plon_pnt, plat_pnt  ! Lat/lon coordinates of the point of cell (i,j) 
    12721313      ! 
    12731314      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:)   :: z_bnds      ! Lat/lon coordinates of the vertices of cell (i,j) 
    1274       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)     :: z_cnr       ! Lat/lon coordinates of a contiguous vertex of cell (i,j) 
    1275       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)     :: z_pnt       ! Lat/lon coordinates of the point of cell (i,j) 
    12761315      REAL(wp), ALLOCATABLE, DIMENSION(:,:)       :: z_fld       ! Working array to determine where to rotate cells 
    12771316      REAL(wp), ALLOCATABLE, DIMENSION(:,:)       :: z_rot       ! Lat/lon working array for rotation of cells 
     
    12811320      INTEGER :: ji, jj, jn, ni, nj 
    12821321 
    1283       ALLOCATE( z_bnds(4,jpi,jpj,2), z_cnr(jpi,jpj,2), z_pnt(jpi,jpj,2), z_fld(jpi,jpj), z_rot(4,2)  ) 
    1284  
    1285       ! Grid information 
     1322      ALLOCATE( z_bnds(4,jpi,jpj,2), z_fld(jpi,jpj), z_rot(4,2)  ) 
     1323 
     1324      ! Offset of coordinate representing bottom-left corner 
    12861325      SELECT CASE ( TRIM(cdgrd) ) 
    12871326         CASE ('T', 'W') 
    12881327            icnr = -1 ; jcnr = -1 
    1289             IF( TRIM(cdname) == TRIM(cxios_context)//"_crs" ) THEN 
    1290                z_cnr(:,:,1) = gphif_crs ; z_cnr(:,:,2) = glamf_crs 
    1291                z_pnt(:,:,1) = gphit_crs ; z_pnt(:,:,2) = glamt_crs 
    1292             ELSE 
    1293                z_cnr(:,:,1) = gphif ; z_cnr(:,:,2) = glamf 
    1294                z_pnt(:,:,1) = gphit ; z_pnt(:,:,2) = glamt 
    1295             ENDIF 
    12961328         CASE ('U') 
    12971329            icnr =  0 ; jcnr = -1 
    1298             IF( TRIM(cdname) == TRIM(cxios_context)//"_crs" ) THEN 
    1299                z_cnr(:,:,1) = gphiv_crs ; z_cnr(:,:,2) = glamv_crs 
    1300                z_pnt(:,:,1) = gphiu_crs ; z_pnt(:,:,2) = glamu_crs 
    1301             ELSE 
    1302                z_cnr(:,:,1) = gphiv ; z_cnr(:,:,2) = glamv 
    1303                z_pnt(:,:,1) = gphiu ; z_pnt(:,:,2) = glamu 
    1304             ENDIF 
    13051330         CASE ('V') 
    13061331            icnr = -1 ; jcnr =  0 
    1307             IF( TRIM(cdname) == TRIM(cxios_context)//"_crs" ) THEN 
    1308                z_cnr(:,:,1) = gphiu_crs ; z_cnr(:,:,2) = glamu_crs 
    1309                z_pnt(:,:,1) = gphiv_crs ; z_pnt(:,:,2) = glamv_crs 
    1310             ELSE 
    1311                z_cnr(:,:,1) = gphiu ; z_cnr(:,:,2) = glamu 
    1312                z_pnt(:,:,1) = gphiv ; z_pnt(:,:,2) = glamv 
    1313             ENDIF 
    13141332      END SELECT 
    13151333 
     
    13221340      DO jj = 2, jpjm1 
    13231341         DO ji = 2, jpim1 
    1324             z_bnds(1,ji,jj,:) = z_cnr(ji+icnr,  jj+jcnr  ,:) ! Bottom-left 
    1325             z_bnds(2,ji,jj,:) = z_cnr(ji+icnr+1,jj+jcnr  ,:) ! Bottom-right 
    1326             z_bnds(3,ji,jj,:) = z_cnr(ji+icnr+1,jj+jcnr+1,:) ! Top-right 
    1327             z_bnds(4,ji,jj,:) = z_cnr(ji+icnr,  jj+jcnr+1,:) ! Top-left 
     1342            z_bnds(1,ji,jj,1) = plat_cnr(ji+icnr,  jj+jcnr  ) ! Bottom-left 
     1343            z_bnds(2,ji,jj,1) = plat_cnr(ji+icnr+1,jj+jcnr  ) ! Bottom-right 
     1344            z_bnds(3,ji,jj,1) = plat_cnr(ji+icnr+1,jj+jcnr+1) ! Top-right 
     1345            z_bnds(4,ji,jj,1) = plat_cnr(ji+icnr,  jj+jcnr+1) ! Top-left 
     1346            z_bnds(1,ji,jj,2) = plon_cnr(ji+icnr,  jj+jcnr  ) ! Bottom-left 
     1347            z_bnds(2,ji,jj,2) = plon_cnr(ji+icnr+1,jj+jcnr  ) ! Bottom-right 
     1348            z_bnds(3,ji,jj,2) = plon_cnr(ji+icnr+1,jj+jcnr+1) ! Top-right 
     1349            z_bnds(4,ji,jj,2) = plon_cnr(ji+icnr,  jj+jcnr+1) ! Top-left 
    13281350         END DO 
    13291351      END DO 
     
    13351357      END DO 
    13361358 
    1337       ! Zero-size cells at closed boundaries 
    1338       IF( (nbondi == -1 .OR. nbondi == 2) .AND. .NOT. (jperio == 1 .OR. jperio == 4 .OR. jperio == 6) ) THEN 
    1339          DO jn = 1, 4  ;  z_bnds(jn,1,:,:) = z_pnt(1,:,:)        ;  END DO      ! (West or jpni = 1), closed E-W 
    1340       ENDIF 
    1341       IF( (nbondi == 1 .OR. nbondi == 2) .AND. .NOT. (jperio == 1 .OR. jperio == 4 .OR. jperio == 6) ) THEN 
    1342          DO jn = 1, 4  ;  z_bnds(jn,nlci,:,:) = z_pnt(nlci,:,:)  ;  END DO      ! (East or jpni = 1), closed E-W 
    1343       ENDIF 
    1344       IF( nbondj == -1 .OR. (nbondj == 2 .AND. jperio /= 2) ) THEN 
    1345          DO jn = 1, 4  ;  z_bnds(jn,:,1,:) = z_pnt(:,1,:)        ;  END DO      ! South or (jpnj = 1, not symmetric) 
    1346       ENDIF 
    1347       IF( (nbondj == 1 .OR. nbondj == 2) .AND. jperio  < 3 ) THEN 
    1348          DO jn = 1, 4  ;  z_bnds(jn,:,nlcj,:) = z_pnt(:,nlcj,:)  ;  END DO      ! (North or jpnj = 1), no north fold 
    1349       ENDIF 
    1350  
    1351 ! ===================================================================================================== 
    1352 !             Do we need to set zero-size cells at Mediterranean / Persian Gulf region? 
    1353 ! ===================================================================================================== 
     1359      ! Zero-size cells at closed boundaries if cell points provided, 
     1360      ! otherwise they are closed cells with unrealistic bounds 
     1361      IF( PRESENT(plon_pnt) .AND. PRESENT(plat_pnt) ) THEN 
     1362         IF( (nbondi == -1 .OR. nbondi == 2) .AND. .NOT. (jperio == 1 .OR. jperio == 4 .OR. jperio == 6) ) THEN 
     1363            DO jn = 1, 4        ! (West or jpni = 1), closed E-W 
     1364               z_bnds(jn,1,:,1) = plat_pnt(1,:)  ;  z_bnds(jn,1,:,2) = plon_pnt(1,:) 
     1365            END DO 
     1366         ENDIF 
     1367         IF( (nbondi == 1 .OR. nbondi == 2) .AND. .NOT. (jperio == 1 .OR. jperio == 4 .OR. jperio == 6) ) THEN 
     1368            DO jn = 1, 4        ! (East or jpni = 1), closed E-W 
     1369               z_bnds(jn,nlci,:,1) = plat_pnt(nlci,:)  ;  z_bnds(jn,nlci,:,2) = plon_pnt(nlci,:) 
     1370            END DO 
     1371         ENDIF 
     1372         IF( nbondj == -1 .OR. (nbondj == 2 .AND. jperio /= 2) ) THEN 
     1373            DO jn = 1, 4        ! South or (jpnj = 1, not symmetric) 
     1374               z_bnds(jn,:,1,1) = plat_pnt(:,1)  ;  z_bnds(jn,:,1,2) = plon_pnt(:,1) 
     1375            END DO 
     1376         ENDIF 
     1377         IF( (nbondj == 1 .OR. nbondj == 2) .AND. jperio  < 3 ) THEN 
     1378            DO jn = 1, 4        ! (North or jpnj = 1), no north fold 
     1379               z_bnds(jn,:,nlcj,1) = plat_pnt(:,nlcj)  ;  z_bnds(jn,:,nlcj,2) = plon_pnt(:,nlcj) 
     1380            END DO 
     1381         ENDIF 
     1382      ENDIF 
    13541383 
    13551384      ! Rotate cells at the north fold 
     
    13771406                                               bounds_lon = RESHAPE(z_bnds(:,nldi:nlei,nldj:nlej,2),(/ 4,ni*nj /)), nvertex=4 ) 
    13781407 
    1379       DEALLOCATE( z_bnds, z_cnr, z_pnt, z_fld, z_rot )  
     1408      DEALLOCATE( z_bnds, z_fld, z_rot )  
    13801409 
    13811410   END SUBROUTINE set_grid_bounds 
     
    14161445      !! 
    14171446      !!---------------------------------------------------------------------- 
    1418       REAL(wp), DIMENSION(1) ::   zz = 1. 
     1447      REAL(wp), DIMENSION(1)   ::   zz = 0. 
     1448      REAL(wp), DIMENSION(4,1) ::   z_lat, z_lon 
    14191449      !!---------------------------------------------------------------------- 
    14201450      CALL iom_set_domain_attr('scalarpoint', ni_glo=jpnij, nj_glo=1, ibegin=narea, jbegin=1, ni=1, nj=1) 
    1421       CALL iom_set_domain_attr('scalarpoint', data_dim=2, data_ibegin = 1, data_ni = 1, data_jbegin = 1, data_nj = 1) 
     1451      CALL iom_set_domain_attr('scalarpoint', data_dim=2, data_ibegin = 0, data_ni = 1, data_jbegin = 0, data_nj = 1) 
     1452       
     1453      z_lon(1,:) = MINVAL(glamt) ; z_lon(2,:) = MAXVAL(glamt) ; z_lon(3,:) = MAXVAL(glamt) ; z_lon(4,:) = MINVAL(glamt) 
     1454      z_lat(1,:) = MINVAL(gphit) ; z_lat(2,:) = MINVAL(gphit) ; z_lat(3,:) = MAXVAL(gphit) ; z_lat(4,:) = MAXVAL(gphit) 
     1455 
     1456      IF( lk_mpp ) THEN 
     1457         CALL mpp_min( z_lon(1,1) ) ; CALL mpp_min( z_lon(4,1) ) ; CALL mpp_max( z_lon(2,1) ) ; CALL mpp_max( z_lon(3,1) ) 
     1458         CALL mpp_min( z_lat(1,1) ) ; CALL mpp_min( z_lat(2,1) ) ; CALL mpp_max( z_lat(3,1) ) ; CALL mpp_max( z_lat(4,1) ) 
     1459      ENDIF 
     1460 
     1461      CALL iom_set_domain_attr('globalscalar', lonvalue=zz, latvalue=zz, bounds_lon=z_lon, bounds_lat=z_lat, nvertex=4) 
     1462 
    14221463      zz=REAL(narea,wp) 
    1423       CALL iom_set_domain_attr('scalarpoint', lonvalue=zz, latvalue=zz) 
     1464      CALL iom_set_domain_attr('1point', lonvalue=zz, latvalue=zz) 
    14241465 
    14251466   END SUBROUTINE set_scalar 
Note: See TracChangeset for help on using the changeset viewer.