Ignore:
Timestamp:
03/22/18 10:43:20 (6 years ago)
Author:
yushan
Message:

branch_openmp merged with XIOS_DEV_CMIP6@1459

Location:
XIOS/dev/branch_openmp/src/test
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/src/test/test_client.f90

    r1328 r1460  
    2020  INTEGER,PARAMETER :: nj_glo=100 
    2121  INTEGER,PARAMETER :: llm=5 
    22   DOUBLE PRECISION  :: lval(llm)=1 
     22  DOUBLE PRECISION  :: lval(llm)=1, scalar = 5 
    2323  TYPE(xios_field) :: field_hdl 
    2424  TYPE(xios_fieldgroup) :: fieldgroup_hdl 
     
    2828  DOUBLE PRECISION,DIMENSION(ni_glo,nj_glo) :: lon_glo,lat_glo 
    2929  DOUBLE PRECISION :: field_A_glo(ni_glo,nj_glo,llm) 
    30   DOUBLE PRECISION,ALLOCATABLE :: lon(:,:),lat(:,:),field_A(:,:,:), lonvalue(:,:) ; 
     30  DOUBLE PRECISION,ALLOCATABLE :: lon(:,:),lat(:,:),field_A(:,:,:), lonvalue(:,:), axisValue(:), field_domain(:,:) ; 
    3131  INTEGER :: ni,ibegin,iend,nj,jbegin,jend 
    3232  INTEGER :: i,j,l,ts,n 
     
    5050      lat_glo(i,j)=1000+(i-1)+(j-1)*ni_glo 
    5151      DO l=1,llm 
    52         field_A_glo(i,j,l)=(i-1)+(j-1)*ni_glo+10000*l 
     52        field_A_glo(i,j,l)=(i-1)+(j-1)*ni_glo*100+10000*l 
    5353      ENDDO 
    5454    ENDDO 
     
    6666  iend=ibegin+ni-1 ; jend=jbegin+nj-1 
    6767 
    68   ALLOCATE(lon(ni,nj),lat(ni,nj),field_A(0:ni+1,-1:nj+2,llm),lonvalue(ni,nj)) 
     68  ALLOCATE(lon(ni,nj),lat(ni,nj),field_A(0:ni+1,-1:nj+2,llm),lonvalue(ni,nj), axisValue(nj_glo), field_domain(0:ni+1,-1:nj+2)) 
    6969  lon(:,:)=lon_glo(ibegin+1:iend+1,jbegin+1:jend+1) 
    7070  lat(:,:)=lat_glo(ibegin+1:iend+1,jbegin+1:jend+1) 
    7171  field_A(1:ni,1:nj,:)=field_A_glo(ibegin+1:iend+1,jbegin+1:jend+1,:) 
     72  field_domain(1:ni,1:nj) = field_A_glo(ibegin+1:iend+1,jbegin+1:jend+1,1) 
     73  axisValue(1:nj_glo)=field_A_glo(1,1:nj_glo,1); 
    7274 
    7375  CALL xios_context_initialize("test",comm) 
     
    7880  PRINT *, "calendar_type = ", calendar_type 
    7981 
     82  ! CALL xios_set_axis_attr("axis_A",n_glo=nj_glo ,value=axisValue, n=nj, begin=jbegin) ; 
    8083  CALL xios_set_axis_attr("axis_A",n_glo=llm ,value=lval) ; 
    8184  CALL xios_set_domain_attr("domain_A",ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, ni=ni,jbegin=jbegin,nj=nj,type='curvilinear') 
     
    8487  CALL xios_set_fieldgroup_attr("field_definition",enabled=.TRUE.) 
    8588 
    86   CALL xios_get_handle("field_definition",fieldgroup_hdl) 
    87   CALL xios_add_child(fieldgroup_hdl,field_hdl,"field_B") 
    88   CALL xios_set_attr(field_hdl,field_ref="field_A",name="field_B") 
     89  !CALL xios_get_handle("field_definition",fieldgroup_hdl) 
     90  !CALL xios_add_child(fieldgroup_hdl,field_hdl,"field_B") 
     91  !CALL xios_set_attr(field_hdl,field_ref="field_A",name="field_B") 
    8992 
    90   CALL xios_get_handle("output",file_hdl) 
    91   CALL xios_add_child(file_hdl,field_hdl) 
    92   CALL xios_set_attr(field_hdl,field_ref="field_A_zoom",name="field_C") 
     93  !CALL xios_get_handle("output",file_hdl) 
     94  !CALL xios_add_child(file_hdl,field_hdl) 
     95  !CALL xios_set_attr(field_hdl,field_ref="field_A_zoom",name="field_C") 
    9396 
    9497  dtime%second = 3600 
     
    128131 
    129132  PRINT*,"field field_A is active ? ",xios_field_is_active("field_A") 
    130   DO ts=1,24*10 
     133  ! CALL xios_recv_field("field", scalar) 
     134  DO ts=1,4 
    131135    CALL xios_update_calendar(ts) 
    132136    CALL xios_send_field("field_A",field_A) 
     137    CALL xios_send_field("field_Axis",axisValue) 
     138    ! CALL xios_send_field("field_Axis",lval) 
     139    CALL xios_send_field("field_Domain",field_domain) 
     140    CALL xios_send_field("field_Scalar",scalar) 
    133141    CALL wait_us(5000) ; 
    134142  ENDDO 
  • XIOS/dev/branch_openmp/src/test/test_regular.f90

    r1002 r1460  
    3737  DOUBLE PRECISION,ALLOCATABLE :: bounds_lat(:,:) 
    3838  DOUBLE PRECISION,ALLOCATABLE :: field_temp(:,:) 
     39  DOUBLE PRECISION,ALLOCATABLE :: field_temp1(:,:) 
     40  DOUBLE PRECISION,ALLOCATABLE :: field_temp2(:,:) 
    3941 
    4042!!! MPI Initialization 
     
    9496 
    9597  CALL MPI_COMM_RANK(comm,rank,ierr) 
    96   CALL MPI_COMM_SIZE(comm,sizeComm,ierr) 
    97  
    98   IF (MOD(ncell, sizeComm) == 0) THEN 
    99     ni = ncell/sizeComm 
     98  CALL MPI_COMM_SIZE(comm,size,ierr) 
     99 
     100  IF (MOD(ncell, size) == 0) THEN 
     101    ni = ncell/size 
    100102    ibegin = rank*ni 
    101103  ELSE 
    102     IF (rank < MOD(ncell, sizeComm)) THEN 
    103       ni = ncell/sizeComm + 1 
    104       ibegin = rank*(ncell/sizeComm + 1) 
     104    IF (rank < MOD(ncell, size)) THEN 
     105      ni = ncell/size + 1 
     106      ibegin = rank*(ncell/size + 1) 
    105107    ELSE 
    106       ni = ncell/sizeComm 
    107       IF (rank == MOD(ncell, sizeComm)) THEN 
    108         ibegin = rank*(ncell/sizeComm + 1) 
     108      ni = ncell/size 
     109      IF (rank == MOD(ncell, size)) THEN 
     110        ibegin = rank*(ncell/size + 1) 
    109111      ELSE 
    110         ibegin = MOD(ncell,sizeComm)*(ncell/sizeComm + 1) + (rank-MOD(ncell,sizeComm))*ncell/sizeComm 
     112        ibegin = MOD(ncell,size)*(ncell/size + 1) + (rank-MOD(ncell,size))*ncell/size 
    111113      END IF 
    112114    END IF 
     
    118120  ALLOCATE(bounds_lat(4,ni)) 
    119121  ALLOCATE(field_temp(ni,ntime))  
    120   lon = lon_glo(1+ibegin:ibegin+ni) 
    121   lat = lat_glo(1+ibegin:ibegin+ni) 
    122   bounds_lon(:,:) = bounds_lon_glo(:,1+ibegin:ibegin+ni) 
    123   bounds_lat(:,:) = bounds_lat_glo(:,1+ibegin:ibegin+ni) 
     122  ALLOCATE(field_temp1(ni,ntime)) 
     123  ALLOCATE(field_temp2(ni,ntime)) 
     124  lon = lon_glo(ibegin:1+ibegin+ni) 
     125  lat = lat_glo(ibegin:1+ibegin+ni) 
     126  bounds_lon(:,:) = bounds_lon_glo(:,ibegin:1+ibegin+ni) 
     127  bounds_lat(:,:) = bounds_lat_glo(:,ibegin:1+ibegin+ni) 
     128 
    124129  field_temp(:,:) = rank 
     130  field_temp1(:,:) = rank 
     131  field_temp2(:,:) = rank + 10 
    125132 
    126133 
     
    135142                            time_origin=xios_date(1999, 01, 01, 15, 00, 00)) 
    136143 
    137   CALL xios_set_domain_attr("face", ni_glo=ncell, ibegin=ibegin, ni=ni, type='unstructured') 
    138   CALL xios_set_domain_attr("face", lonvalue_1d=lon, latvalue_1d=lat) 
    139   CALL xios_set_domain_attr("face", bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat) 
    140  
     144  CALL xios_set_domain_attr("face1", ni_glo=ncell, ibegin=ibegin, ni=ni, type='unstructured') 
     145  CALL xios_set_domain_attr("face1", lonvalue_1d=lon, latvalue_1d=lat) 
     146  CALL xios_set_domain_attr("face1", bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat) 
     147 
     148  CALL xios_set_domain_attr("face2", ni_glo=ncell, ibegin=ibegin, ni=ni, type='unstructured') 
     149  CALL xios_set_domain_attr("face2", lonvalue_1d=lon, latvalue_1d=lat) 
     150  CALL xios_set_domain_attr("face2", bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat) 
    141151    
    142152!!! Definition du timestep 
     
    160170 
    161171!!! On donne la valeur du champ atm 
    162      CALL xios_send_field("temp",field_temp(:,1)) 
     172     CALL xios_send_field("temp1",field_temp1(:,1)) 
     173     CALL xios_send_field("temp2",field_temp2(:,1)) 
    163174 
    164175    ENDDO 
     
    178189    DEALLOCATE(bounds_lon, bounds_lat) 
    179190    DEALLOCATE(field_temp) 
     191    DEALLOCATE(field_temp1, field_temp2) 
    180192 
    181193!!! Fin de XIOS 
  • XIOS/dev/branch_openmp/src/test/test_remap.f90

    r1328 r1460  
    1616  TYPE(xios_context) :: ctx_hdl 
    1717 
    18   DOUBLE PRECISION,ALLOCATABLE :: src_lon(:), dst_lon(:), src_lon_tmp(:) 
    19   DOUBLE PRECISION,ALLOCATABLE :: src_lat(:), dst_lat(:), src_lat_tmp(:) 
     18  DOUBLE PRECISION,ALLOCATABLE :: src_lon(:), dst_lon(:) 
     19  DOUBLE PRECISION,ALLOCATABLE :: src_lat(:), dst_lat(:) 
    2020  DOUBLE PRECISION,ALLOCATABLE :: src_boundslon(:,:), dst_boundslon(:,:) 
    2121  DOUBLE PRECISION,ALLOCATABLE :: src_boundslat(:,:), dst_boundslat(:,:) 
    22   DOUBLE PRECISION,ALLOCATABLE :: src_field_2D(:), src_field_2D_clone(:) 
     22  DOUBLE PRECISION,ALLOCATABLE :: src_field_2D(:) 
    2323  DOUBLE PRECISION,ALLOCATABLE :: tmp_field_0(:), tmp_field_1(:), tmp_field_2(:) 
    2424  DOUBLE PRECISION,ALLOCATABLE :: src_field_3D(:,:), src_field_4D(:,:,:), lval(:), lval1(:), lval2(:), src_field_pression(:,:) 
     
    3636  INTEGER :: varid 
    3737  INTEGER :: ts 
    38   INTEGER :: i,j 
     38  INTEGER :: i 
    3939  INTEGER,PARAMETER :: llm=5, interpolatedLlm = 4, llm2 = 6 
    40   DOUBLE PRECISION, PARAMETER :: missing_value = 100000 
    4140 
    4241  CALL MPI_INIT(ierr) 
     
    6564  ENDIF 
    6665 
    67   ALLOCATE(src_lon(src_ni), src_lon_tmp(src_ni)) 
    68   ALLOCATE(src_lat(src_ni), src_lat_tmp(src_ni)) 
     66  ALLOCATE(src_lon(src_ni)) 
     67  ALLOCATE(src_lat(src_ni)) 
    6968  ALLOCATE(src_boundslon(src_nvertex,src_ni)) 
    7069  ALLOCATE(src_boundslat(src_nvertex,src_ni)) 
    71   ALLOCATE(src_field_2D(src_ni), src_field_2D_clone(src_ni)) 
     70  ALLOCATE(src_field_2D(src_ni)) 
    7271  ALLOCATE(src_field_3D(src_ni,llm)) 
    7372  ALLOCATE(src_field_4D(src_ni,llm,llm2)) 
     
    9089  DO i=1,src_ni 
    9190    src_field_3D(i,:) = src_field_2D(i) 
    92     IF ((0 < src_lat(i)) .AND. (src_lat(i) < 25.5) .AND. (30 < src_lon(i)) .AND. (src_lon(i) < 60)) THEN 
     91    IF (MOD(i,10)==0) THEN 
    9392      src_mask_2D(i)=.FALSE. 
    94       ! src_field_2D(i) = missing_value 
    9593    ELSE 
    96       src_mask_2D(i)=.TRUE.       
     94      src_mask_2D(i)=.TRUE. 
    9795    ENDIF 
    98     src_lon_tmp(i) = src_lon(i) + 1000 
    99     src_lat_tmp(i) = src_lat(i) + 10000 
    100   ENDDO 
    101   src_field_2D_clone = src_field_2D 
     96  ENDDO 
    10297 
    10398  DO i=1,llm 
    10499    lval(i) = i*100 
    105100    src_field_pression(:,i) = i * 100 
    106     IF (MOD(i,3)==0) THEN 
    107       ! src_field_pression(:,i) = missing_value 
    108       src_field_3D(:,i) = missing_value 
    109     ELSE 
    110       ! src_field_pression(:,i) = i * 100 
    111       src_field_3D(:,i) = src_field_3D(:,i) + i * 10  
    112     ENDIF 
    113     ! src_field_3D(:,i) = src_field_3D(:,i) + i * 10     
     101    src_field_3D(:,i) = src_field_3D(:,i) + i * 10     
    114102  ENDDO 
    115103 
    116104  DO i=1,llm2 
    117     src_field_4D(:,:,i) = src_field_3D(:,:) + i * 100 
     105    src_field_4D(:,:,i) = src_field_3D(:,:) 
    118106  ENDDO 
    119107 
     
    174162                            bounds_lon_1D=dst_boundslon, bounds_lat_1D=dst_boundslat, nvertex=dst_nvertex) 
    175163 
    176   CALL xios_set_domain_attr("src_domain_unstructured_read", ni_glo=src_ni_glo, ibegin=src_ibegin, ni=src_ni, type="unstructured") 
    177   CALL xios_set_domain_attr("src_domain_unstructured_read", lonvalue_1D=src_lon_tmp, latvalue_1D=src_lat_tmp, & 
    178                             bounds_lon_1D=src_boundslon, bounds_lat_1D=src_boundslat, nvertex=src_nvertex) 
    179  
    180  
    181164  dtime%second = 3600 
    182165  CALL xios_set_timestep(dtime) 
     
    186169  ALLOCATE(tmp_field_0(src_tmp_ni*src_tmp_nj)) 
    187170 
    188   CALL xios_get_axis_attr("src_axis_curvilinear_read", n=src_tmp_n) 
    189   CALL xios_get_domain_attr("src_domain_curvilinear_read", ni=src_tmp_ni, nj=src_tmp_nj) 
    190   ALLOCATE(tmp_field_1(src_tmp_ni*src_tmp_nj*src_tmp_n)) 
    191  
    192   CALL xios_get_domain_attr("src_domain_unstructured_read", ni=src_tmp_ni, nj=src_tmp_nj) 
    193   ALLOCATE(tmp_field_2(src_tmp_ni*src_tmp_nj)) 
    194    
    195   CALL xios_recv_field("src_field_regular", tmp_field_0) 
    196   CALL xios_recv_field("src_field_curvilinear", tmp_field_1) 
    197   CALL xios_recv_field("src_field_unstructured", tmp_field_2) 
    198  
    199   DO ts=1,10 
     171  ! CALL xios_get_axis_attr("src_axis_curvilinear_read", n=src_tmp_n) 
     172  ! CALL xios_get_domain_attr("src_domain_curvilinear_read", ni=src_tmp_ni, nj=src_tmp_nj) 
     173  ! ALLOCATE(tmp_field_1(src_tmp_ni*src_tmp_nj*src_tmp_n)) 
     174 
     175  ! CALL xios_get_domain_attr("src_domain_unstructured_read", ni=src_tmp_ni, nj=src_tmp_nj) 
     176  ! ALLOCATE(tmp_field_2(src_tmp_ni*src_tmp_nj)) 
     177 
     178  DO ts=1,1 
     179    CALL xios_recv_field("src_field_regular", tmp_field_0) 
     180    ! CALL xios_recv_field("src_field_curvilinear", tmp_field_1) 
     181    ! CALL xios_recv_field("src_field_unstructured", tmp_field_2) 
    200182    CALL xios_update_calendar(ts) 
    201183    CALL xios_send_field("src_field_2D",src_field_2D) 
    202      
    203     DO i=1,src_ni 
    204       src_field_2D_clone(i) = src_field_2D(i) 
    205       IF ((23.5 * ts < src_lat(i)) .AND. (src_lat(i) < 65.5 *ts) .AND. (0 < src_lon(i)) .AND. (src_lon(i) < 30*ts)) THEN       
    206         src_field_2D_clone(i) = missing_value     
    207       ENDIF 
    208     ENDDO 
    209  
    210     CALL xios_send_field("src_field_2D_clone",src_field_2D_clone) 
     184    CALL xios_send_field("src_field_2D_clone",src_field_2D) 
    211185    CALL xios_send_field("src_field_3D",src_field_3D) 
    212     CALL xios_send_field("src_field_3D_clone",src_field_3D) 
    213     CALL xios_send_field("src_field_4D",src_field_4D) 
    214     CALL xios_send_field("src_field_3D_pression",src_field_pression) 
     186    ! CALL xios_send_field("src_field_4D",src_field_4D) 
     187    ! CALL xios_send_field("src_field_3D_pression",src_field_pression) 
    215188    CALL xios_send_field("tmp_field_0",tmp_field_0) 
    216     CALL xios_send_field("tmp_field_1",tmp_field_1) 
    217     CALL xios_send_field("tmp_field_2",tmp_field_2) 
     189    ! CALL xios_send_field("tmp_field_1",tmp_field_1) 
     190    ! CALL xios_send_field("tmp_field_2",tmp_field_2) 
    218191    CALL wait_us(5000) ; 
    219192   ENDDO 
     
    223196  DEALLOCATE(src_lon, src_lat, src_boundslon,src_boundslat, src_field_2D) 
    224197  DEALLOCATE(dst_lon, dst_lat, dst_boundslon,dst_boundslat) 
    225   DEALLOCATE(tmp_field_0, tmp_field_1, tmp_field_2) 
     198  ! DEALLOCATE(tmp_field_0, tmp_field_1, tmp_field_2) 
    226199 
    227200  CALL MPI_COMM_FREE(comm, ierr) 
  • XIOS/dev/branch_openmp/src/test/test_unstruct_complete.f90

    r1350 r1460  
    4444  DOUBLE PRECISION,ALLOCATABLE :: field_A_compressed(:,:) 
    4545 
    46   CALL MPI_INIT(ierr) 
    47   CALL init_wait 
    48  
    4946  CALL xios_initialize(id,return_comm=comm) 
    5047  CALL MPI_COMM_RANK(comm,mpi_rank,ierr) 
    5148  CALL MPI_COMM_SIZE(comm,mpi_size,ierr) 
    5249 
    53    
     50  CALL init_wait 
    5451 
    5552  ncell_glo=0 
     
    210207  CALL xios_set_domain_attr("domain_srf", lonvalue_1D=lon, latvalue_1D=lat) 
    211208  CALL xios_set_domain_attr("domain_srf", nvertex=4, bounds_lon_1D=bounds_lon, bounds_lat_1D=bounds_lat) 
    212   CALL xios_set_compute_connectivity_domain_attr("compute", n_neighbor=n_local, local_neighbor=local_neighbor) 
     209!  CALL xios_set_compute_connectivity_domain_attr("compute", n_neighbor=n_local, local_neighbor=local_neighbor) 
    213210 
    214211 
     
    251248  DEALLOCATE(data_i_index) 
    252249 
     250  CALL MPI_COMM_FREE(comm, ierr) 
     251 
    253252  CALL xios_finalize() 
    254   CALL MPI_COMM_FREE(comm, ierr) 
    255    
    256   CALL MPI_FINALIZE(ierr) 
    257253 
    258254CONTAINS 
Note: See TracChangeset for help on using the changeset viewer.