Ignore:
Timestamp:
11/12/15 16:33:03 (8 years ago)
Author:
mhnguyen
Message:

Reading attributes of curvilinear grid from file

+) Correct some minor bugs detecting type of grid
+) Use constant string for attributes conforming to CF convention
+) Add part of code to read attributes of curvilinear grid

Test
+) On Curie
+) test_remap passes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/test/test_new_features.f90

    r775 r782  
    2727 
    2828  DOUBLE PRECISION,DIMENSION(ni_glo,nj_glo) :: lon_glo,lat_glo 
     29  DOUBLE PRECISION,DIMENSION(4,ni_glo,nj_glo) :: bnds_lon_glo, bnds_lat_glo 
    2930  DOUBLE PRECISION :: field_A_glo(ni_glo,nj_glo,llm), lval_ni_glo(ni_glo), lval_nj_glo(nj_glo) 
    3031  DOUBLE PRECISION,ALLOCATABLE :: lon(:,:),lat(:,:),field_A(:,:,:), field_All_Axis(:,:,:), lonvalue(:) , & 
    3132                                  field_Axis(:), lvaln(:), lval_ni(:), lval_nj(:), field_Two_Axis(:,:), lvalnInterp(:), & 
    32                                   lontransformed(:,:), lattransformed(:,:), lon_glotransformed(:,:), lat_glotransformed(:,:) 
     33                                  lontransformed(:,:), lattransformed(:,:), lon_glotransformed(:,:), lat_glotransformed(:,:), & 
     34                                  bnds_lon(:,:,:), bnds_lat(:,:,:) 
    3335  INTEGER :: ni,ibegin,iend,nj,jbegin,jend, nAxis, axisBegin, axisEnd 
    3436  INTEGER :: axisterpBegin, nAxisinterp, axisinterpEnd 
    3537  INTEGER :: niDomInterp,ibeginDomInterp,iendDomInterp,njDomInterp,jbeginDomInterp,jendDomInterp, niDomGlo, njDomGlo 
    36   INTEGER :: i,j,l,ts,n 
     38  INTEGER :: i,j,k,l,ts,n 
    3739 
    3840!!! MPI Initialization 
     
    5355      lon_glo(i,j)=(i-1)+(j-1)*ni_glo 
    5456      lat_glo(i,j)=1000+(i-1)+(j-1)*ni_glo 
     57      DO k = 1,4 
     58        bnds_lon_glo(1,i,j) = lon_glo(i,j) 
     59        bnds_lon_glo(2,i,j) = lon_glo(i,j)-10 
     60        bnds_lon_glo(3,i,j) = lon_glo(i,j) 
     61        bnds_lon_glo(4,i,j) = lon_glo(i,j)+10 
     62 
     63        bnds_lat_glo(1,i,j) = lat_glo(i,j) -10 
     64        bnds_lat_glo(2,i,j) = lat_glo(i,j) 
     65        bnds_lat_glo(3,i,j) = lat_glo(i,j) -10 
     66        bnds_lat_glo(4,i,j) = lat_glo(i,j) 
     67      ENDDO 
    5568      lval_ni_glo(i) = i-1 
    5669      DO l=1,llm 
     
    96109          lon(ni,nj),lat(ni,nj), lonvalue(ni*nj), & 
    97110          lvaln(nAxis), lval_ni(ni), lval_nj(nj), lvalnInterp(nAxisinterp), & 
    98           lontransformed(niDomInterp, njDomInterp), lattransformed(niDomInterp, njDomInterp)) 
     111          lontransformed(niDomInterp, njDomInterp), lattransformed(niDomInterp, njDomInterp), & 
     112          bnds_lon(4,ni,nj), bnds_lat(4,ni,nj)) 
    99113 
    100114  ALLOCATE(mask(nj)) 
     
    108122  lon(:,:)=lon_glo(ibegin+1:iend+1,jbegin+1:jend+1) 
    109123  lat(:,:)=lat_glo(ibegin+1:iend+1,jbegin+1:jend+1) 
     124  bnds_lon(:,:,:) = bnds_lon_glo(:,ibegin+1:iend+1,jbegin+1:jend+1) 
     125  bnds_lat(:,:,:) = bnds_lat_glo(:,ibegin+1:iend+1,jbegin+1:jend+1) 
    110126  lontransformed(:,:) = lon_glotransformed(ibeginDomInterp+1:iendDomInterp+1,jbeginDomInterp+1:jendDomInterp+1) 
    111127  lattransformed(:,:) = lat_glotransformed(ibeginDomInterp+1:iendDomInterp+1,jbeginDomInterp+1:jendDomInterp+1) 
     
    135151  CALL xios_set_domain_attr("domain_A",data_dim=2, data_ibegin=-1, data_ni=ni+2, data_jbegin=-2, data_nj=nj+4) 
    136152  CALL xios_set_domain_attr("domain_A",lonvalue_2D=lon,latvalue_2D=lat, type='curvilinear') 
     153  CALL xios_set_domain_attr("domain_A",bounds_lon_2d=bnds_lon,bounds_lat_2d=bnds_lat, nvertex=4, type='curvilinear') 
    137154 
    138155  CALL xios_set_domain_attr("domain_A_transformed", ni_glo=niDomGlo, nj_glo=njDomGlo, & 
     
    201218  DEALLOCATE(field_A, field_Two_Axis, field_Axis, field_All_Axis, & 
    202219             lon, lat, lonvalue, & 
    203              lvaln, lval_ni, lval_nj, lvalnInterp) 
     220             lvaln, lval_ni, lval_nj, lvalnInterp, & 
     221             bnds_lon, bnds_lat) 
    204222 
    205223  DEALLOCATE(mask) 
Note: See TracChangeset for help on using the changeset viewer.