Changeset 549 for XIOS/trunk/src/test/test_unstruct_complete.f90
- Timestamp:
- 01/26/15 14:39:26 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/test/test_unstruct_complete.f90
r537 r549 8 8 INTEGER :: mpi_size 9 9 INTEGER :: ierr 10 10 11 11 CHARACTER(len=*),PARAMETER :: id="client" 12 12 INTEGER :: comm 13 13 TYPE(xios_duration) :: dtime 14 14 TYPE(xios_context) :: ctx_hdl 15 INTEGER, PARAMETER :: nlon=60 15 INTEGER, PARAMETER :: nlon=60 16 16 INTEGER, PARAMETER :: nlat=30 17 17 INTEGER,PARAMETER :: ni_glo=100 18 INTEGER,PARAMETER :: nj_glo=100 19 INTEGER,PARAMETER :: llm=5 18 INTEGER,PARAMETER :: nj_glo=100 19 INTEGER,PARAMETER :: llm=5 20 20 DOUBLE PRECISION :: lval(llm)=1 21 21 TYPE(xios_field) :: field_hdl … … 23 23 TYPE(xios_file) :: file_hdl 24 24 LOGICAL :: ok 25 25 26 26 DOUBLE PRECISION,ALLOCATABLE :: lon_glo(:),lat_glo(:) 27 27 DOUBLE PRECISION,ALLOCATABLE :: bounds_lon_glo(:,:),bounds_lat_glo(:,:) … … 42 42 INTEGER,ALLOCATABLE :: data_i_index(:) 43 43 DOUBLE PRECISION,ALLOCATABLE :: field_A_compressed(:,:) 44 44 45 45 CALL xios_initialize(id,return_comm=comm) 46 46 CALL MPI_COMM_RANK(comm,mpi_rank,ierr) 47 47 CALL MPI_COMM_SIZE(comm,mpi_size,ierr) 48 48 49 49 CALL init_wait 50 50 51 51 ncell_glo=0 52 52 DO j=1,nlat … … 55 55 ncell_glo=ncell_glo+n 56 56 ENDDO 57 57 58 58 ALLOCATE(lon_glo(ncell_glo)) 59 59 ALLOCATE(lat_glo(ncell_glo)) … … 63 63 ALLOCATE(field_A_glo(ncell_glo,llm)) 64 64 ALLOCATE(mask_glo(ncell_glo)) 65 65 66 66 ind=0 67 67 DO j=1,nlat … … 70 70 if (j==nlat) PRINT*,"--- ",n 71 71 IF (n<8) n=8 72 72 73 73 DO i=1,n 74 74 ind=ind+1 … … 76 76 ilon=i-0.5 77 77 ilat=j-0.5 78 78 79 79 lat_glo(ind)= 90-(ilat*180./nlat) 80 80 lon_glo(ind)= (ilon*360./n) 81 82 81 82 83 83 bounds_lat_glo(1,ind)= 90-((ilat-0.5)*180./nlat) 84 84 bounds_lon_glo(1,ind)=((ilon-0.5)*360./n) 85 85 86 86 bounds_lat_glo(2,ind)= 90-((ilat-0.5)*180./nlat) 87 bounds_lon_glo(2,ind)=((ilon+0.5)*360./n) 88 87 bounds_lon_glo(2,ind)=((ilon+0.5)*360./n) 88 89 89 bounds_lat_glo(3,ind)= 90-((ilat+0.5)*180./nlat) 90 bounds_lon_glo(3,ind)=((ilon+0.5)*360./n) 90 bounds_lon_glo(3,ind)=((ilon+0.5)*360./n) 91 91 92 92 bounds_lat_glo(4,ind)= 90-((ilat+0.5)*180./nlat) 93 93 bounds_lon_glo(4,ind)=((ilon-0.5)*360./n) 94 94 95 95 ENDDO 96 96 ENDDO … … 99 99 rank=(mpi_size-1)/2 100 100 ncell_x=sqrt(ncell_glo*1./mpi_size) 101 101 102 102 j1=nlat/2 103 103 DO WHILE(rank>=0) … … 106 106 n=NINT(COS(Pi/2-(j-0.5)*PI/nlat)*nlon) 107 107 np = MIN(n/ncell_x,rank+1) ; 108 if (j2==1) np=rank+1 109 108 if (j2==1) np=rank+1 109 110 110 PRINT *,"domain ",j2,j1,rank,np ; 111 DO j=j2,j1 111 DO j=j2,j1 112 112 n=NINT(COS(Pi/2-(j-0.5)*PI/nlat)*nlon) 113 113 IF (n<8) n=8 114 114 DO i=1,n 115 115 ind=list_ind(i,j) 116 IF ( (i-1) < MOD(n,np)*(n/np+1)) THEN 116 IF ( (i-1) < MOD(n,np)*(n/np+1)) THEN 117 117 i_index_glo(ind) = rank - (i-1)/(n/np+1) 118 ELSE 118 ELSE 119 119 i_index_glo(ind) = rank-(MOD(n,np)+ (i-1-MOD(n,np)*(n/np+1))/(n/np)) 120 120 ENDIF … … 124 124 j1=j2-1 125 125 ENDDO 126 126 127 127 rank=(mpi_size-1)/2+1 128 128 ncell_x=sqrt(ncell_glo*1./mpi_size) 129 129 130 130 j1=nlat/2+1 131 131 DO WHILE(rank<=mpi_size-1) … … 134 134 n=NINT(COS(Pi/2-(j-0.5)*PI/nlat)*nlon) 135 135 np = MIN(n/ncell_x,mpi_size-rank) ; 136 if (j2==nlat) np=mpi_size-rank 137 136 if (j2==nlat) np=mpi_size-rank 137 138 138 PRINT *,"domain ",j2,j1,rank,np ; 139 DO j=j1,j2 139 DO j=j1,j2 140 140 n=NINT(COS(Pi/2-(j-0.5)*PI/nlat)*nlon) 141 141 IF (n<8) n=8 142 142 DO i=1,n 143 143 ind=list_ind(i,j) 144 IF ( (i-1) < MOD(n,np)*(n/np+1)) THEN 144 IF ( (i-1) < MOD(n,np)*(n/np+1)) THEN 145 145 i_index_glo(ind) = rank + (i-1)/(n/np+1) 146 ELSE 146 ELSE 147 147 i_index_glo(ind) = rank+(MOD(n,np)+ (i-1-MOD(n,np)*(n/np+1))/(n/np)) 148 148 ENDIF … … 152 152 j1=j2+1 153 153 ENDDO 154 154 155 155 ncell=0 156 156 DO ind=1,ncell_glo … … 183 183 ENDIF 184 184 ENDDO 185 185 186 186 ALLOCATE(field_A_compressed(data_n_index,llm)) 187 187 ALLOCATE(data_i_index(data_n_index)) … … 194 194 ENDIF 195 195 ENDDO 196 197 198 196 199 197 CALL xios_context_initialize("surface",comm) 200 198 CALL xios_get_handle("surface",ctx_hdl) 201 199 CALL xios_set_current_context(ctx_hdl) 202 200 201 CALL xios_define_calendar(type="Julian", & 202 start_date=xios_date(2012, 03, 01, 15, 00, 00), & 203 time_origin=xios_date(2012, 02, 29, 15, 00, 00)) 204 203 205 CALL xios_set_axis_attr("axis_srf",size=llm ,value=lval) ; 204 206 CALL xios_set_domain_attr("domain_srf",ni_glo=ncell_glo, ni=ncell, ibegin=1, i_index=RESHAPE(i_index,(/ncell,1/) )) … … 206 208 CALL xios_set_domain_attr("domain_srf",lonvalue=lon,latvalue=lat) 207 209 CALL xios_set_domain_attr("domain_srf", nvertex=4, bounds_lon=bounds_lon, bounds_lat=bounds_lat ) 208 209 210 211 210 212 dtime%second=3600 211 213 CALL xios_set_context_attr("surface", timestep=dtime) 212 214 CALL xios_close_context_definition() 213 215 214 216 DO ts=1,24*10 215 217 CALL xios_update_calendar(ts) 216 218 CALL xios_send_field("field_A_srf",field_A_compressed) 217 219 ENDDO 218 220 219 221 CALL xios_context_finalize() 220 222 CALL xios_finalize() 221 223 222 224 END PROGRAM test_unstruct_complete 223 225 224 226 225 226 227 227 228 229
Note: See TracChangeset
for help on using the changeset viewer.