Ignore:
Timestamp:
06/09/16 11:33:37 (8 years ago)
Author:
mhnguyen
Message:

Correcting a bug which sometimes make transformations between different size grids incorrect

+) Correct inputs of some functions
+) Add some auxilliary functions.
+) Add new test cases for test_remap

Test
+) Basic test pass
+) Single horizontal and vertical interpolation are correct
+) Chained interpolation are not correct

File:
1 edited

Legend:

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

    r824 r871  
    2020  DOUBLE PRECISION,ALLOCATABLE :: src_boundslon(:,:), dst_boundslon(:,:) 
    2121  DOUBLE PRECISION,ALLOCATABLE :: src_boundslat(:,:), dst_boundslat(:,:) 
    22   DOUBLE PRECISION,ALLOCATABLE :: src_field(:), tmp_field(:), tmp_field_1(:), tmp_field_2(:) 
     22  DOUBLE PRECISION,ALLOCATABLE :: src_field(:), tmp_field(:), tmp_field_1(:), tmp_field_2(:), src_field_3D(:,:), lval(:), lval1(:), src_field_pression(:,:) 
    2323  INTEGER :: src_ni_glo, dst_ni_glo; 
    2424  INTEGER :: src_nvertex, dst_nvertex; 
     
    3434  INTEGER :: ts 
    3535  INTEGER :: i 
     36  INTEGER,PARAMETER :: llm=5, interpolatedLlm = 4 
    3637 
    3738  CALL MPI_INIT(ierr) 
     
    6566  ALLOCATE(src_boundslat(src_nvertex,src_ni)) 
    6667  ALLOCATE(src_field(src_ni)) 
     68  ALLOCATE(src_field_3D(src_ni,llm)) 
     69  ALLOCATE(src_field_pression(src_ni,llm)) 
     70  ALLOCATE(lval(llm)) 
     71  ALLOCATE(lval1(interpolatedLlm)) 
    6772 
    6873  ierr=NF90_INQ_VARID(ncid,"lon",varid) 
     
    7681  ierr=NF90_INQ_VARID(ncid,"val",varid) 
    7782  ierr=NF90_GET_VAR(ncid,varid, src_field, start=(/src_ibegin+1/),count=(/src_ni/)) 
     83  DO i=1,src_ni 
     84    src_field_3D(i,:) = src_field(i) 
     85  ENDDO 
    7886 
     87  DO i=1,llm 
     88    lval(i) = i*100 
     89    src_field_pression(:,i) = i * 100 
     90    src_field_3D(:,i) = src_field_3D(:,i) + i * 10 
     91  ENDDO 
     92 
     93  DO i=1,interpolatedLlm 
     94    lval1(i) = i*10 + 2 
     95  ENDDO 
    7996 
    8097  ierr=NF90_OPEN(dst_file, NF90_NOWRITE, ncid) 
     
    108125  ierr=NF90_GET_VAR(ncid,varid, dst_boundslat, start=(/1,dst_ibegin+1/),count=(/dst_nvertex,dst_ni/)) 
    109126 
     127 
    110128  CALL xios_context_initialize("test",comm) 
    111129  CALL xios_get_handle("test",ctx_hdl) 
     
    120138                            bounds_lon_1D=src_boundslon, bounds_lat_1D=src_boundslat, nvertex=src_nvertex) 
    121139 
     140  CALL xios_set_axis_attr("src_axis", n_glo=llm, value=lval) 
     141 
    122142  CALL xios_set_domain_attr("dst_domain", ni_glo=dst_ni_glo, ibegin=dst_ibegin, ni=dst_ni, type="unstructured") 
    123143  CALL xios_set_domain_attr("dst_domain", lonvalue_1D=dst_lon, latvalue_1D=dst_lat, & 
     
    128148 
    129149  CALL xios_close_context_definition() 
    130   CALL xios_get_domain_attr("src_domain_regular_tmp", ni=src_tmp_ni, nj=src_tmp_nj) 
    131   ALLOCATE(tmp_field(src_tmp_ni*src_tmp_nj)) 
     150!  CALL xios_get_domain_attr("src_domain_regular_tmp", ni=src_tmp_ni, nj=src_tmp_nj) 
     151!  ALLOCATE(tmp_field(src_tmp_ni*src_tmp_nj)) 
     152! 
     153!  CALL xios_get_axis_attr("src_axis_curvilinear", n=src_tmp_n) 
     154!  CALL xios_get_domain_attr("src_domain_curvilinear", ni=src_tmp_ni, nj=src_tmp_nj) 
     155!  ALLOCATE(tmp_field_1(src_tmp_ni*src_tmp_nj*src_tmp_n)) 
    132156 
    133   CALL xios_get_axis_attr("src_axis_curvilinear", n=src_tmp_n) 
    134   CALL xios_get_domain_attr("src_domain_curvilinear", ni=src_tmp_ni, nj=src_tmp_nj) 
    135   ALLOCATE(tmp_field_1(src_tmp_ni*src_tmp_nj*src_tmp_n)) 
     157!  CALL xios_get_domain_attr("src_domain_unstructured", ni=src_tmp_ni, nj=src_tmp_nj) 
     158!  ALLOCATE(tmp_field_2(src_tmp_ni*src_tmp_nj)) 
    136159 
    137   CALL xios_get_domain_attr("src_domain_unstructured", ni=src_tmp_ni, nj=src_tmp_nj) 
    138   ALLOCATE(tmp_field_2(src_tmp_ni*src_tmp_nj)) 
     160  DO ts=1,5 
    139161 
    140   DO ts=1,1 
    141  
    142     CALL xios_recv_field("src_field_regular_tmp", tmp_field) 
    143     CALL xios_recv_field("src_field_curvilinear", tmp_field_1) 
    144     CALL xios_recv_field("field_src_unstructred", tmp_field_2) 
     162!    CALL xios_recv_field("src_field_regular_tmp", tmp_field) 
     163!    CALL xios_recv_field("src_field_curvilinear", tmp_field_1) 
     164!    CALL xios_recv_field("field_src_unstructred", tmp_field_2) 
    145165    CALL xios_update_calendar(ts) 
    146166    CALL xios_send_field("src_field",src_field) 
    147     CALL xios_send_field("tmp_field",tmp_field) 
    148     CALL xios_send_field("tmp_field_1",tmp_field_1) 
    149     CALL xios_send_field("tmp_field_2",tmp_field_2) 
     167    CALL xios_send_field("src_field_3D",src_field_3D) 
     168    CALL xios_send_field("src_field_3D_pression",src_field_pression) 
     169!    CALL xios_send_field("tmp_field",tmp_field) 
     170!    CALL xios_send_field("tmp_field_1",tmp_field_1) 
     171!    CALL xios_send_field("tmp_field_2",tmp_field_2) 
    150172    CALL wait_us(5000) ; 
    151173  ENDDO 
     
    155177  DEALLOCATE(src_lon, src_lat, src_boundslon,src_boundslat, src_field) 
    156178  DEALLOCATE(dst_lon, dst_lat, dst_boundslon,dst_boundslat) 
    157   DEALLOCATE(tmp_field, tmp_field_1, tmp_field_2) 
     179!  DEALLOCATE(tmp_field, tmp_field_1, tmp_field_2) 
    158180 
    159181  CALL MPI_COMM_FREE(comm, ierr) 
Note: See TracChangeset for help on using the changeset viewer.