Changeset 549 for XIOS/trunk/src/test
- Timestamp:
- 01/26/15 14:39:26 (9 years ago)
- Location:
- XIOS/trunk/src/test
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/test/test_client.f90
r545 r549 8 8 INTEGER :: 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_date) :: date 15 CHARACTER(len=10) :: calendar_type 15 16 TYPE(xios_context) :: ctx_hdl 16 17 INTEGER,PARAMETER :: ni_glo=100 17 INTEGER,PARAMETER :: nj_glo=100 18 INTEGER,PARAMETER :: llm=5 18 INTEGER,PARAMETER :: nj_glo=100 19 INTEGER,PARAMETER :: llm=5 19 20 DOUBLE PRECISION :: lval(llm)=1 20 21 TYPE(xios_field) :: field_hdl … … 22 23 TYPE(xios_file) :: file_hdl 23 24 LOGICAL :: ok 24 25 25 26 DOUBLE PRECISION,DIMENSION(ni_glo,nj_glo) :: lon_glo,lat_glo 26 27 DOUBLE PRECISION :: field_A_glo(ni_glo,nj_glo,llm) … … 32 33 33 34 CALL MPI_INIT(ierr) 34 35 35 36 CALL init_wait 36 37 37 38 !!! XIOS Initialization (get the local communicator) 38 39 … … 40 41 41 42 CALL MPI_COMM_RANK(comm,rank,ierr) 42 CALL MPI_COMM_SIZE(comm,size,ierr) 43 43 CALL MPI_COMM_SIZE(comm,size,ierr) 44 44 45 DO j=1,nj_glo 45 46 DO i=1,ni_glo … … 57 58 nj=nj_glo/size 58 59 IF (n<MOD(nj_glo,size)) nj=nj+1 59 IF (n==rank) exit 60 IF (n==rank) exit 60 61 jbegin=jbegin+nj 61 62 ENDDO 62 63 63 64 iend=ibegin+ni-1 ; jend=jbegin+nj-1 64 65 … … 67 68 lat(:,:)=lat_glo(ibegin:iend,jbegin:jend) 68 69 field_A(1:ni,1:nj,:)=field_A_glo(ibegin:iend,jbegin:jend,:) 69 70 70 71 CALL xios_context_initialize("test",comm) 71 72 CALL xios_get_handle("test",ctx_hdl) 72 73 CALL xios_set_current_context(ctx_hdl) 73 74 CALL xios_set_context_attr("test",calendar_type="Gregorian") 74 75 CALL xios_get_calendar_type(calendar_type) 76 PRINT *, "calendar_type = ", calendar_type 77 75 78 CALL xios_set_axis_attr("axis_A",size=llm ,value=lval) ; 76 79 CALL xios_set_domain_attr("domain_A",ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, ni=ni,jbegin=jbegin,nj=nj) … … 78 81 CALL xios_set_domain_attr("domain_A",lonvalue=RESHAPE(lon,(/ni*nj/)),latvalue=RESHAPE(lat,(/ni*nj/))) 79 82 CALL xios_set_fieldgroup_attr("field_definition",enabled=.TRUE.) 80 83 81 84 CALL xios_get_handle("field_definition",fieldgroup_hdl) 82 85 CALL xios_add_child(fieldgroup_hdl,field_hdl,"field_B") 83 86 CALL xios_set_attr(field_hdl,field_ref="field_A",name="field_B") 84 87 85 88 CALL xios_get_handle("output",file_hdl) 86 89 CALL xios_add_child(file_hdl,field_hdl) 87 90 CALL xios_set_attr(field_hdl,field_ref="field_A",name="field_C") 88 89 91 90 92 dtime%second = 3600 91 CALL xios_set_ context_attr("test", timestep=dtime)93 CALL xios_set_timestep(dtime) 92 94 93 ! Create the calendar before closing the context definition 94 ! so that calendar operations can be used 95 CALL xios_set_calendar() 96 CALL xios_get_context_attr("test", time_origin=date) 95 ! The calendar is created as soon as the calendar type is defined. This way 96 ! calendar operations can be used before the context definition is closed 97 CALL xios_get_time_origin(date) 98 PRINT *, "--> year length = ", xios_get_year_length_in_seconds(date%year) 99 PRINT *, "--> day length = ", xios_get_day_length_in_seconds() 97 100 PRINT *, "time_origin = ", date 101 PRINT *, "xios_date_get_second_of_year(time_origin) = ", xios_date_get_second_of_year(date) 102 PRINT *, "xios_date_get_day_of_year(time_origin) = ", xios_date_get_day_of_year(date) 103 PRINT *, "xios_date_get_fraction_of_year(time_origin) = ", xios_date_get_fraction_of_year(date) 104 PRINT *, "xios_date_get_second_of_day(time_origin) = ", xios_date_get_second_of_day(date) 105 PRINT *, "xios_date_get_fraction_of_day(time_origin) = ", xios_date_get_fraction_of_day(date) 98 106 dtime%timestep = 1 99 107 dtime = 0.5 * dtime … … 103 111 PRINT *, "xios_date_convert_to_seconds(date) = ", xios_date_convert_to_seconds(date) 104 112 PRINT *, "xios_date_convert_to_seconds(date - 2.5h) = ", xios_date_convert_to_seconds(date - 2.5 * xios_hour) 105 113 106 114 ni=0 ; lonvalue(:)=0 107 115 CALL xios_get_domain_attr("domain_A",ni=ni,lonvalue=lonvalue) 108 116 109 117 print *,"ni",ni 110 118 print *,"lonvalue",lonvalue ; … … 113 121 PRINT *,"field_A : attribute enabled is defined ? ",ok 114 122 CALL xios_close_context_definition() 115 123 116 124 PRINT*,"field field_A is active ? ",xios_field_is_active("field_A") 117 125 DO ts=1,24*10 … … 123 131 CALL xios_context_finalize() 124 132 CALL xios_finalize() 125 133 126 134 CALL MPI_FINALIZE(ierr) 127 135 128 136 END PROGRAM test_client 129 137 130 138 131 132 139 133 140 141 -
XIOS/trunk/src/test/test_complete.f90
r537 r549 8 8 INTEGER :: size_loc 9 9 INTEGER :: ierr 10 10 11 11 CHARACTER(len=*),PARAMETER :: id="client" 12 12 INTEGER :: comm 13 TYPE(xios_date) :: start_date, time_origin14 13 TYPE(xios_duration) :: dtime 15 14 TYPE(xios_context) :: ctx_hdl 16 15 INTEGER,PARAMETER :: ni_glo=100 17 INTEGER,PARAMETER :: nj_glo=100 18 INTEGER,PARAMETER :: llm=5 16 INTEGER,PARAMETER :: nj_glo=100 17 INTEGER,PARAMETER :: llm=5 19 18 DOUBLE PRECISION :: lval(llm)=1 20 19 TYPE(xios_field) :: field_hdl … … 34 33 35 34 CALL MPI_INIT(ierr) 36 35 37 36 CALL init_wait 38 37 39 38 !!! XIOS Initialization (get the local communicator) 40 39 … … 42 41 43 42 CALL MPI_COMM_RANK(comm,rank,ierr) 44 CALL MPI_COMM_SIZE(comm,size_loc,ierr) 45 43 CALL MPI_COMM_SIZE(comm,size_loc,ierr) 44 46 45 47 46 !########################################################################### … … 66 65 nj=nj_glo/size_loc 67 66 IF (n<MOD(nj_glo,size_loc)) nj=nj+1 68 IF (n==rank) exit 67 IF (n==rank) exit 69 68 jbegin=jbegin+nj 70 69 ENDDO 71 70 72 71 iend=ibegin+ni-1 ; jend=jbegin+nj-1 73 72 … … 76 75 lat(:,:)=lat_glo(ibegin:iend,jbegin:jend) 77 76 field_A_atm(1:ni,1:nj,:)=field_A_glo(ibegin:iend,jbegin:jend,:) 78 77 79 78 80 79 !!! Context ATMOSPHERE … … 83 82 CALL xios_get_handle("atmosphere",ctx_hdl) 84 83 CALL xios_set_current_context(ctx_hdl) 85 86 CALL xios_set_context_attr("atmosphere",calendar_type="Gregorian") 87 start_date = xios_date(2000, 01, 01, 00, 00, 00) 88 CALL xios_set_context_attr("atmosphere",start_date=start_date) 89 time_origin = xios_date(1999, 01, 01, 15, 00, 00) 90 CALL xios_set_context_attr("atmosphere",time_origin=time_origin) 84 85 CALL xios_define_calendar(type="Gregorian", & 86 start_date=xios_date(2000, 01, 01, 00, 00, 00), & 87 time_origin=xios_date(1999, 01, 01, 15, 00, 00)) 91 88 92 89 CALL xios_set_axis_attr("axis_atm",size=llm ,value=lval) ; … … 104 101 CALL xios_set_fieldgroup_attr("field_definition",enabled=.TRUE.) 105 102 106 !!! Création d un nouveau champ 103 !!! Création d un nouveau champ 107 104 108 105 CALL xios_get_handle("field_definition",fieldgroup_hdl) … … 112 109 113 110 CALL xios_set_attr(field_hdl,field_ref="field_A_atm",name="field_B_atm") 114 111 115 112 !!! Affectation de ce nouveau champ au fichier avec un nouveau nom 116 113 … … 118 115 CALL xios_add_child(file_hdl,field_hdl) 119 116 CALL xios_set_attr(field_hdl,field_ref="field_B_atm",name="field_C_atm") 120 117 121 118 !!! Definition du timestep 122 119 123 120 dtime%second=3600 124 CALL xios_set_ context_attr("atmosphere",timestep=dtime)125 121 CALL xios_set_timestep(timestep=dtime) 122 126 123 !!! Recupration des valeurs des longitudes et de taille des domaines locaux (pour test de fonctionnalité) 127 124 128 125 ni=0 ; lonvalue(:)=0 129 126 CALL xios_get_domain_attr("domain_atm",ni=ni,lonvalue=lonvalue) 130 127 131 128 PRINT *,"ni",ni 132 129 PRINT *,"lonvalue",lonvalue ; … … 137 134 138 135 !!! Test des valeurs des champs/fichiers 139 140 !!! Attribut defini ? 136 137 !!! Attribut defini ? 141 138 142 139 CALL xios_is_defined_field_attr("field_A_atm",enabled=ok) … … 144 141 145 142 !!! Recuperer la valeur d un attribut 146 143 147 144 CALL xios_get_field_attr("field_A_atm",name=crname) 148 145 PRINT *,"field_A_atm : attribute name is : ",TRIM(crname) 149 146 150 !!! Champ actif (besoin de fournir la valeur) ? 147 !!! Champ actif (besoin de fournir la valeur) ? 151 148 152 149 PRINT*,"field field_A_atm is active ? ",xios_field_is_active("field_A_atm") … … 173 170 CALL xios_get_handle("surface",ctx_hdl) 174 171 CALL xios_set_current_context(ctx_hdl) 175 176 CALL xios_set_context_attr("surface",calendar_type="Gregorian") 177 start_date = xios_date(2000, 01, 01, 00, 00, 00) 178 CALL xios_set_context_attr("surface",start_date=start_date) 179 time_origin = xios_date(1999, 01, 01, 15, 00, 00) 180 CALL xios_set_context_attr("surface",time_origin=time_origin) 172 173 CALL xios_define_calendar(type="Gregorian", & 174 start_date=xios_date(2000, 01, 01, 00, 00, 00), & 175 time_origin=xios_date(1999, 01, 01, 15, 00, 00)) 181 176 182 177 CALL xios_set_axis_attr("axis_srf",size=llm ,value=lval) ; … … 186 181 CALL xios_set_domain_attr("domain_srf",lonvalue=RESHAPE(lon,(/ni*nj/)),latvalue=RESHAPE(lat,(/ni*nj/))) 187 182 188 !!! Création d un nouveau champ 183 !!! Création d un nouveau champ 189 184 190 185 CALL xios_get_handle("field_definition",fieldgroup_hdl) … … 194 189 195 190 CALL xios_set_attr(field_hdl,field_ref="field_A_srf",name="field_B_srf") 196 191 197 192 !!! Affectation de ce nouveau champ au fichier avec un nouveau nom 198 193 … … 200 195 CALL xios_add_child(file_hdl,field_hdl) 201 196 CALL xios_set_attr(field_hdl,field_ref="field_B_srf",name="field_C_srf") 202 197 203 198 !!! Definition du timestep 204 199 205 200 dtime%second=1800 206 CALL xios_set_ context_attr("surface",timestep=dtime)207 201 CALL xios_set_timestep(timestep=dtime) 202 208 203 !!! Recupration des valeurs des longitudes et de taille des domaines locaux (pour test de fonctionnalité) 209 204 210 205 ni=0 ; lonvalue(:)=0 211 206 CALL xios_get_domain_attr("domain_srf",ni=ni,lonvalue=lonvalue) 212 207 213 208 PRINT *,"ni",ni 214 209 PRINT *,"lonvalue",lonvalue ; … … 226 221 227 222 CALL xios_get_handle("atmosphere",ctx_hdl) 228 CALL xios_set_current_context(ctx_hdl) 223 CALL xios_set_current_context(ctx_hdl) 229 224 230 225 !!! Mise a jour du pas de temps … … 239 234 240 235 CALL xios_get_handle("surface",ctx_hdl) 241 CALL xios_set_current_context(ctx_hdl) 236 CALL xios_set_current_context(ctx_hdl) 242 237 243 238 !!! Mise a jour du pas de temps … … 257 252 258 253 !!! Fin des contextes 259 254 260 255 CALL xios_context_finalize() 261 256 CALL xios_get_handle("atmosphere",ctx_hdl) 262 CALL xios_set_current_context(ctx_hdl) 257 CALL xios_set_current_context(ctx_hdl) 263 258 CALL xios_context_finalize() 264 259 265 260 !!! Fin de XIOS 266 261 267 262 CALL xios_finalize() 268 263 269 264 CALL MPI_FINALIZE(ierr) 270 265 271 266 END PROGRAM test_complete 272 267 273 268 274 269 275 276 277 270 271 272 -
XIOS/trunk/src/test/test_cs.f90
r537 r549 5 5 INTEGER :: size 6 6 INTEGER :: ierr 7 7 8 8 CALL MPI_INIT(ierr) 9 9 CALL MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr) 10 10 CALL MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierr) 11 11 12 12 IF (rank<11) THEN 13 13 CALL client("client",rank,11) 14 ELSE 14 ELSE 15 15 CALL server 16 16 ENDIF 17 18 17 18 19 19 CALL MPI_FINALIZE(ierr) 20 20 21 21 END PROGRAM test_cs 22 22 … … 32 32 TYPE(xios_duration) :: dtime 33 33 TYPE(xios_context) :: ctx_hdl 34 INTEGER,PARAMETER :: ni_glo=100 35 INTEGER,PARAMETER :: nj_glo=100 36 INTEGER,PARAMETER :: llm=3 34 INTEGER,PARAMETER :: ni_glo=100 35 INTEGER,PARAMETER :: nj_glo=100 36 INTEGER,PARAMETER :: llm=3 37 37 DOUBLE PRECISION :: lval(llm)=(/1.0,2.0,3.0/) 38 38 TYPE(xios_field) :: field_hdl 39 39 TYPE(xios_fieldgroup) :: fieldgroup_hdl 40 40 TYPE(xios_file) :: file_hdl 41 42 41 42 43 43 DOUBLE PRECISION,DIMENSION(ni_glo,nj_glo) :: lon_glo,lat_glo 44 44 DOUBLE PRECISION :: field_A_glo(ni_glo,nj_glo,llm) … … 47 47 INTEGER :: ni,ibegin,iend,nj,jbegin,jend,data_ibegin,data_ni 48 48 INTEGER :: i,j,k,l,ts,n,nij_begin 49 50 49 50 51 51 CALL init_wait 52 53 52 53 54 54 DO j=1,nj_glo 55 55 DO i=1,ni_glo … … 63 63 ni=ni_glo ; ibegin=1 64 64 65 65 66 66 nij_begin=1 67 67 DO n=0,size-1 … … 70 70 IF (n==rank) THEN 71 71 ibegin=1 ; iend=ni_glo ; ni=iend-ibegin+1 72 jbegin=(nij_begin-1)/ni_glo +1 72 jbegin=(nij_begin-1)/ni_glo +1 73 73 jend=MOD(nij_begin-1 + data_ni-1,ni_glo) +1 74 74 nj = jend-jbegin+1 … … 79 79 ENDIF 80 80 ENDDO 81 81 82 82 83 83 ALLOCATE(lon(ni),lat(nj),field_A(data_ni,llm),lonvalue(ni*nj)) … … 92 92 field_A(k,:)=field_A_glo(i,j,:) 93 93 ENDDO 94 94 95 95 mask(:,:)=.TRUE. 96 96 mask(1:ni,6)=.TRUE. 97 97 98 98 99 99 CALL xios_initialize(id,return_comm=comm) … … 102 102 CALL xios_get_handle("test",ctx_hdl) 103 103 CALL xios_set_current_context(ctx_hdl) 104 105 CALL xios_set_context_attr("test",calendar_type="Gregorian") 106 CALL xios_set_context_attr("test",calendar_type="Gregorian") 107 CALL xios_set_context_attr("test",calendar_type="Gregorian") 108 ! CALL xios_set_context_attr("test",start_date="01/01/2000 - 00:00:00") 109 CALL xios_set_context_attr("test",calendar_type="Gregorian") 104 105 ! CALL xios_define_calendar(type="Gregorian") 106 ! CALL xios_set_start_date(start_date=xios_date(2000, 01, 01, 00, 00, 00)) 110 107 CALL xios_set_axis_attr("axis_A",size=llm ,value=lval) ; 111 108 CALL xios_set_domain_attr("domain_A",ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, iend=iend,jbegin=jbegin,jend=jend) 112 ! 109 ! CALL xios_set_domain_attr("domain_A",zoom_ni=10,zoom_ibegin=5,zoom_nj=nj_glo,zoom_jbegin=1) 113 110 CALL xios_set_domain_attr("domain_A",data_dim=1, data_ibegin=data_ibegin, data_ni=data_ni) 114 111 CALL xios_set_domain_attr("domain_A",lonvalue=lon,latvalue=lat) 115 ! 112 ! CALL xios_set_domain_attr("domain_A",mask=mask) 116 113 CALL xios_set_fieldgroup_attr("field_definition",enabled=.TRUE.) 117 114 118 115 CALL xios_get_handle("field_definition",fieldgroup_hdl) 119 116 CALL xios_add_child(fieldgroup_hdl,field_hdl,"field_B") 120 117 CALL xios_set_attr(field_hdl,field_ref="field_A",name="field_B") 121 118 122 119 CALL xios_get_handle("output",file_hdl) 123 120 CALL xios_add_child(file_hdl,field_hdl) 124 121 CALL xios_set_attr(field_hdl,field_ref="field_A",name="field_C") 125 126 122 123 127 124 dtime%second=3600 128 CALL xios_set_ context_attr("test",timestep=dtime)129 125 CALL xios_set_timestep(timestep=dtime) 126 130 127 ! ni=0 ; lonvalue(:)=0 131 128 ! CALL xios_get_domain_attr("domain_A",ni=ni,lonvalue=lonvalue) 132 129 133 130 ! print *,"ni",ni 134 131 ! print *,"lonvalue",lonvalue ; 135 132 136 133 CALL xios_close_context_definition() 137 134 138 135 PRINT*,"field field_A is active ? ",xios_field_is_active("field_A") 139 136 DO ts=1,24*10 … … 142 139 CALL wait_us(5000) ; 143 140 ENDDO 144 141 145 142 CALL xios_context_finalize() 146 143 CALL xios_finalize() 147 144 148 145 END SUBROUTINE client 149 150 146 151 147 148 152 149 SUBROUTINE server 153 150 USE xios 154 151 IMPLICIT NONE 155 152 156 153 CALL xios_init_server 157 154 158 155 END SUBROUTINE server 159 160 156 161 157 158 -
XIOS/trunk/src/test/test_new_features.f90
r543 r549 69 69 70 70 ALLOCATE(lon(ni,nj),lat(ni,nj),field_A(0:ni+1,-1:nj+2,llm),lonvalue(ni*nj)) 71 ! 71 ! ALLOCATE(lon(ni,nj),lat(ni,nj),field_A(0:ni+1,-1:nj+2,llm,llm),lonvalue(ni*nj)) 72 72 lon(:,:)=lon_glo(ibegin:iend,jbegin:jend) 73 73 lat(:,:)=lat_glo(ibegin:iend,jbegin:jend) … … 78 78 CALL xios_set_current_context(ctx_hdl) 79 79 80 CALL xios_set_context_attr("test",calendar_type="Gregorian")80 ! CALL xios_define_calendar(type="Gregorian") 81 81 CALL xios_set_axis_attr("axis_A",size=llm ,value=lval) ; 82 ! 82 ! CALL xios_set_axis_attr("axis_B",size=llm ,value=lval2) ; 83 83 CALL xios_set_domain_attr("domain_A",ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, ni=ni,jbegin=jbegin,nj=nj) 84 84 CALL xios_set_domain_attr("domain_A",data_dim=2, data_ibegin=-1, data_ni=ni+2, data_jbegin=-2, data_nj=nj+4) … … 96 96 97 97 dtime%second=3600 98 CALL xios_set_context_attr("test",timestep=dtime)98 ! CALL xios_set_timestep(timestep=dtime) 99 99 100 100 ni=0 ; lonvalue(:)=0 -
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 -
XIOS/trunk/src/test/test_xios_interface.f90
r537 r549 96 96 CALL xios_set_current_context(ctx_hdl) 97 97 98 CALL xios_set_context_attr("atmosphere",calendar_type="Gregorian") 99 start_date = xios_date(2000, 01, 01, 00, 00, 00) 100 CALL xios_set_context_attr("atmosphere",start_date=start_date) 101 time_origin = xios_date(1999, 01, 01, 15, 00, 00) 102 CALL xios_set_context_attr("atmosphere",time_origin=time_origin) 98 CALL xios_define_calendar(type="Gregorian", & 99 start_date=xios_date(2000, 01, 01, 00, 00, 00), & 100 time_origin=xios_date(1999, 01, 01, 15, 00, 00)) 103 101 104 102 CALL xios_set_axis_attr("axis_atm",size=llm ,value=lval) ; … … 131 129 132 130 dtime%second=3600 133 CALL xios_set_ context_attr("atmosphere",timestep=dtime)131 CALL xios_set_timestep(timestep=dtime) 134 132 135 133 !!! Recupration des valeurs des longitudes et de taille des domaines locaux (pour test de fonctionnalité) … … 183 181 CALL xios_set_current_context(ctx_hdl) 184 182 185 CALL xios_set_context_attr("surface",calendar_type="Gregorian") 186 start_date = xios_date(2000, 01, 01, 00, 00, 00) 187 CALL xios_set_context_attr("surface",start_date=start_date) 188 time_origin = xios_date(1999, 01, 01, 15, 00, 00) 189 CALL xios_set_context_attr("surface",time_origin=time_origin) 183 CALL xios_define_calendar(type="Gregorian", & 184 start_date=xios_date(2000, 01, 01, 00, 00, 00), & 185 time_origin=xios_date(1999, 01, 01, 15, 00, 00)) 190 186 191 187 CALL xios_set_axis_attr("axis_srf",size=llm ,value=lval) ; … … 213 209 214 210 dtime%second=1800 215 CALL xios_set_ context_attr("surface",timestep=dtime)211 CALL xios_set_timestep(timestep=dtime) 216 212 217 213 !!! Recupration des valeurs des longitudes et de taille des domaines locaux (pour test de fonctionnalité)
Note: See TracChangeset
for help on using the changeset viewer.