Changeset 905 for codes/icosagcm/devel/src
- Timestamp:
- 06/14/19 01:11:56 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/output/xios_mod.F90
r886 r905 8 8 USE field_mod, ONLY : t_field, field_T, field_U, field_Z 9 9 USE domain_mod, ONLY : t_domain, t_cellset, domain, ndomain, mesh_loc 10 USE grid_param, ONLY : grid_type, grid_unst, grid_ico 10 11 IMPLICIT NONE 11 12 PRIVATE … … 163 164 PRINT *, "xios_write_field : dimension > 4 are not supported for now" 164 165 ELSE 165 CALL xios_write_field_ hex(name, field, cells, &166 CALL xios_write_field_gen(name, field, cells, & 166 167 ncells, field(1)%dim3, field(1)%dim4) 167 168 END IF … … 205 206 END SUBROUTINE xios_read_field 206 207 207 SUBROUTINE xios_write_field_ hex(name, field, cells, ncell_tot, nlev, nq)208 SUBROUTINE xios_write_field_gen(name, field, cells, ncell_tot, nlev, nq) 208 209 CHARACTER(LEN=*),INTENT(IN) :: name 209 210 TYPE(t_field) :: field(:) 210 211 TYPE(t_cellset), TARGET :: cells(:) 211 212 INTEGER,INTENT(IN) :: ncell_tot, nlev, nq 212 213 REAL(rstd) :: field_tmp(ncell_tot,nlev,nq) 213 REAL(rstd) :: field_tmp(ncell_tot, nlev, nq) 214 214 TYPE(t_cellset), POINTER :: cellset 215 INTEGER :: ind, n_beg, n _end, n, ij, sgn215 INTEGER :: ind, n_beg, n, ij, sgn 216 216 LOGICAL :: signed 217 217 … … 226 226 DO ind=1,ndomain 227 227 cellset => cells(ind) 228 n_end = n_beg + cellset%ncell229 228 DO n=1, cellset%ncell 230 229 ij = cellset%ij(n) 231 230 IF(signed) sgn = cellset%sgn(n) 232 SELECT CASE(field(1)%ndim) 233 CASE(2) 234 field_tmp(n_beg+n,1,1) = sgn*field(ind)%rval2d(ij) 235 CASE(3) 236 field_tmp(n_beg+n,:,1) = sgn*field(ind)%rval3d(ij,:) 237 CASE(4) 238 field_tmp(n_beg+n,:,:) = sgn*field(ind)%rval4d(ij,:,:) 231 SELECT CASE(grid_type) 232 CASE(grid_ico) 233 SELECT CASE(field(1)%ndim) 234 CASE(2) 235 field_tmp(n_beg+n,1,1) = sgn*field(ind)%rval2d(ij) 236 CASE(3) 237 field_tmp(n_beg+n,:,1) = sgn*field(ind)%rval3d(ij,:) 238 CASE(4) 239 field_tmp(n_beg+n,:,:) = sgn*field(ind)%rval4d(ij,:,:) 240 END SELECT 241 CASE(grid_unst) 242 SELECT CASE(field(1)%ndim) 243 CASE(2) 244 field_tmp(n_beg+n,1,1) = sgn*field(ind)%rval2d(ij) 245 CASE(3) 246 field_tmp(n_beg+n,:,1) = sgn*field(ind)%rval3d(:,ij) 247 CASE(4) 248 field_tmp(n_beg+n,:,:) = sgn*field(ind)%rval4d(:,ij,:) 249 END SELECT 239 250 END SELECT 240 251 END DO 252 n_beg = n_beg + cellset%ncell 241 253 END DO 242 254 CALL xios_send_field(name,field_tmp) 243 END SUBROUTINE xios_write_field_hex 255 256 END SUBROUTINE xios_write_field_gen 244 257 245 258 SUBROUTINE xios_read_field_hex(name, field, cells, ncell_tot, nlev, nq)
Note: See TracChangeset
for help on using the changeset viewer.