Changeset 1460 for XIOS/dev/branch_openmp/src/test
- Timestamp:
- 03/22/18 10:43:20 (6 years ago)
- 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 20 20 INTEGER,PARAMETER :: nj_glo=100 21 21 INTEGER,PARAMETER :: llm=5 22 DOUBLE PRECISION :: lval(llm)=1 22 DOUBLE PRECISION :: lval(llm)=1, scalar = 5 23 23 TYPE(xios_field) :: field_hdl 24 24 TYPE(xios_fieldgroup) :: fieldgroup_hdl … … 28 28 DOUBLE PRECISION,DIMENSION(ni_glo,nj_glo) :: lon_glo,lat_glo 29 29 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(:,:) ; 31 31 INTEGER :: ni,ibegin,iend,nj,jbegin,jend 32 32 INTEGER :: i,j,l,ts,n … … 50 50 lat_glo(i,j)=1000+(i-1)+(j-1)*ni_glo 51 51 DO l=1,llm 52 field_A_glo(i,j,l)=(i-1)+(j-1)*ni_glo +10000*l52 field_A_glo(i,j,l)=(i-1)+(j-1)*ni_glo*100+10000*l 53 53 ENDDO 54 54 ENDDO … … 66 66 iend=ibegin+ni-1 ; jend=jbegin+nj-1 67 67 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)) 69 69 lon(:,:)=lon_glo(ibegin+1:iend+1,jbegin+1:jend+1) 70 70 lat(:,:)=lat_glo(ibegin+1:iend+1,jbegin+1:jend+1) 71 71 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); 72 74 73 75 CALL xios_context_initialize("test",comm) … … 78 80 PRINT *, "calendar_type = ", calendar_type 79 81 82 ! CALL xios_set_axis_attr("axis_A",n_glo=nj_glo ,value=axisValue, n=nj, begin=jbegin) ; 80 83 CALL xios_set_axis_attr("axis_A",n_glo=llm ,value=lval) ; 81 84 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') … … 84 87 CALL xios_set_fieldgroup_attr("field_definition",enabled=.TRUE.) 85 88 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") 89 92 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") 93 96 94 97 dtime%second = 3600 … … 128 131 129 132 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 131 135 CALL xios_update_calendar(ts) 132 136 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) 133 141 CALL wait_us(5000) ; 134 142 ENDDO -
XIOS/dev/branch_openmp/src/test/test_regular.f90
r1002 r1460 37 37 DOUBLE PRECISION,ALLOCATABLE :: bounds_lat(:,:) 38 38 DOUBLE PRECISION,ALLOCATABLE :: field_temp(:,:) 39 DOUBLE PRECISION,ALLOCATABLE :: field_temp1(:,:) 40 DOUBLE PRECISION,ALLOCATABLE :: field_temp2(:,:) 39 41 40 42 !!! MPI Initialization … … 94 96 95 97 CALL MPI_COMM_RANK(comm,rank,ierr) 96 CALL MPI_COMM_SIZE(comm,size Comm,ierr)97 98 IF (MOD(ncell, size Comm) == 0) THEN99 ni = ncell/size Comm98 CALL MPI_COMM_SIZE(comm,size,ierr) 99 100 IF (MOD(ncell, size) == 0) THEN 101 ni = ncell/size 100 102 ibegin = rank*ni 101 103 ELSE 102 IF (rank < MOD(ncell, size Comm)) THEN103 ni = ncell/size Comm+ 1104 ibegin = rank*(ncell/size Comm+ 1)104 IF (rank < MOD(ncell, size)) THEN 105 ni = ncell/size + 1 106 ibegin = rank*(ncell/size + 1) 105 107 ELSE 106 ni = ncell/size Comm107 IF (rank == MOD(ncell, size Comm)) THEN108 ibegin = rank*(ncell/size Comm+ 1)108 ni = ncell/size 109 IF (rank == MOD(ncell, size)) THEN 110 ibegin = rank*(ncell/size + 1) 109 111 ELSE 110 ibegin = MOD(ncell,size Comm)*(ncell/sizeComm + 1) + (rank-MOD(ncell,sizeComm))*ncell/sizeComm112 ibegin = MOD(ncell,size)*(ncell/size + 1) + (rank-MOD(ncell,size))*ncell/size 111 113 END IF 112 114 END IF … … 118 120 ALLOCATE(bounds_lat(4,ni)) 119 121 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 124 129 field_temp(:,:) = rank 130 field_temp1(:,:) = rank 131 field_temp2(:,:) = rank + 10 125 132 126 133 … … 135 142 time_origin=xios_date(1999, 01, 01, 15, 00, 00)) 136 143 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) 141 151 142 152 !!! Definition du timestep … … 160 170 161 171 !!! 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)) 163 174 164 175 ENDDO … … 178 189 DEALLOCATE(bounds_lon, bounds_lat) 179 190 DEALLOCATE(field_temp) 191 DEALLOCATE(field_temp1, field_temp2) 180 192 181 193 !!! Fin de XIOS -
XIOS/dev/branch_openmp/src/test/test_remap.f90
r1328 r1460 16 16 TYPE(xios_context) :: ctx_hdl 17 17 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(:) 20 20 DOUBLE PRECISION,ALLOCATABLE :: src_boundslon(:,:), dst_boundslon(:,:) 21 21 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(:) 23 23 DOUBLE PRECISION,ALLOCATABLE :: tmp_field_0(:), tmp_field_1(:), tmp_field_2(:) 24 24 DOUBLE PRECISION,ALLOCATABLE :: src_field_3D(:,:), src_field_4D(:,:,:), lval(:), lval1(:), lval2(:), src_field_pression(:,:) … … 36 36 INTEGER :: varid 37 37 INTEGER :: ts 38 INTEGER :: i ,j38 INTEGER :: i 39 39 INTEGER,PARAMETER :: llm=5, interpolatedLlm = 4, llm2 = 6 40 DOUBLE PRECISION, PARAMETER :: missing_value = 10000041 40 42 41 CALL MPI_INIT(ierr) … … 65 64 ENDIF 66 65 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)) 69 68 ALLOCATE(src_boundslon(src_nvertex,src_ni)) 70 69 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)) 72 71 ALLOCATE(src_field_3D(src_ni,llm)) 73 72 ALLOCATE(src_field_4D(src_ni,llm,llm2)) … … 90 89 DO i=1,src_ni 91 90 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)) THEN91 IF (MOD(i,10)==0) THEN 93 92 src_mask_2D(i)=.FALSE. 94 ! src_field_2D(i) = missing_value95 93 ELSE 96 src_mask_2D(i)=.TRUE. 94 src_mask_2D(i)=.TRUE. 97 95 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 102 97 103 98 DO i=1,llm 104 99 lval(i) = i*100 105 100 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 114 102 ENDDO 115 103 116 104 DO i=1,llm2 117 src_field_4D(:,:,i) = src_field_3D(:,:) + i * 100105 src_field_4D(:,:,i) = src_field_3D(:,:) 118 106 ENDDO 119 107 … … 174 162 bounds_lon_1D=dst_boundslon, bounds_lat_1D=dst_boundslat, nvertex=dst_nvertex) 175 163 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 181 164 dtime%second = 3600 182 165 CALL xios_set_timestep(dtime) … … 186 169 ALLOCATE(tmp_field_0(src_tmp_ni*src_tmp_nj)) 187 170 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) 200 182 CALL xios_update_calendar(ts) 201 183 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) 211 185 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) 215 188 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) 218 191 CALL wait_us(5000) ; 219 192 ENDDO … … 223 196 DEALLOCATE(src_lon, src_lat, src_boundslon,src_boundslat, src_field_2D) 224 197 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) 226 199 227 200 CALL MPI_COMM_FREE(comm, ierr) -
XIOS/dev/branch_openmp/src/test/test_unstruct_complete.f90
r1350 r1460 44 44 DOUBLE PRECISION,ALLOCATABLE :: field_A_compressed(:,:) 45 45 46 CALL MPI_INIT(ierr)47 CALL init_wait48 49 46 CALL xios_initialize(id,return_comm=comm) 50 47 CALL MPI_COMM_RANK(comm,mpi_rank,ierr) 51 48 CALL MPI_COMM_SIZE(comm,mpi_size,ierr) 52 49 53 50 CALL init_wait 54 51 55 52 ncell_glo=0 … … 210 207 CALL xios_set_domain_attr("domain_srf", lonvalue_1D=lon, latvalue_1D=lat) 211 208 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) 213 210 214 211 … … 251 248 DEALLOCATE(data_i_index) 252 249 250 CALL MPI_COMM_FREE(comm, ierr) 251 253 252 CALL xios_finalize() 254 CALL MPI_COMM_FREE(comm, ierr)255 256 CALL MPI_FINALIZE(ierr)257 253 258 254 CONTAINS
Note: See TracChangeset
for help on using the changeset viewer.