Changeset 905


Ignore:
Timestamp:
06/14/19 01:11:56 (5 years ago)
Author:
dubos
Message:

devel : XIOS output for unstructured mesh

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/output/xios_mod.F90

    r886 r905  
    88  USE field_mod, ONLY : t_field, field_T, field_U, field_Z 
    99  USE domain_mod, ONLY : t_domain, t_cellset, domain, ndomain, mesh_loc 
     10  USE grid_param, ONLY : grid_type, grid_unst, grid_ico 
    1011  IMPLICIT NONE    
    1112  PRIVATE 
     
    163164      PRINT *, "xios_write_field : dimension > 4 are not supported for now" 
    164165   ELSE 
    165       CALL xios_write_field_hex(name, field, cells, &  
     166      CALL xios_write_field_gen(name, field, cells, &  
    166167           ncells, field(1)%dim3, field(1)%dim4) 
    167168   END IF 
     
    205206 END SUBROUTINE xios_read_field 
    206207 
    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) 
    208209   CHARACTER(LEN=*),INTENT(IN) :: name 
    209210   TYPE(t_field) :: field(:) 
    210211   TYPE(t_cellset), TARGET :: cells(:) 
    211212   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) 
    214214   TYPE(t_cellset), POINTER :: cellset 
    215    INTEGER :: ind, n_beg, n_end, n, ij, sgn 
     215   INTEGER :: ind, n_beg, n, ij, sgn 
    216216   LOGICAL :: signed 
    217217 
     
    226226   DO ind=1,ndomain 
    227227      cellset => cells(ind) 
    228       n_end = n_beg + cellset%ncell 
    229228      DO n=1, cellset%ncell 
    230229         ij = cellset%ij(n) 
    231230         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 
    239250         END SELECT 
    240251      END DO 
     252      n_beg = n_beg + cellset%ncell 
    241253   END DO 
    242254   CALL xios_send_field(name,field_tmp)   
    243  END SUBROUTINE xios_write_field_hex 
     255    
     256 END SUBROUTINE xios_write_field_gen 
    244257 
    245258SUBROUTINE xios_read_field_hex(name, field, cells, ncell_tot, nlev, nq) 
Note: See TracChangeset for help on using the changeset viewer.