Back to OASIS4 home

Type Drv_EPIO : defined in prismdrv, for the storage of one EPIOS and EPIOT for one association source/target components.

TYPE Drv_EPIO

           Integer   :: epio_id     ! id set by the transformer (T)
           Integer   :: trans_rank  ! rank of the T process treating this epio
           Integer   :: status      ! indicates if this index has already been
                                          ! used (needed for the allocation process)
           Integer   :: src_comp_id ! source component global id
           Integer   :: tgt_comp_id ! target component global id
           Integer   :: src_process ! local rank of the source process
           Integer   :: tgt_process ! local rank of the target process
           Integer   :: src_status  ! status to inform if the src EPIO has
                                             ! already been set or not
           Integer   :: tgt_status  ! status to inform if the tgt EPIO has
                                             ! already been set or not
           Integer   :: src_size    ! number of source points in the EPIO
           Integer   :: src_lonlatz_size !size of source lat/lon/z compact
                                                      ! arrays (points or corners)
           Integer   :: src_nbr_corner ! number of corner for the source grid
           Integer   :: tgt_size    ! number of target points in the EPIO
           Integer   :: tgt_nbr_corner ! number of corner for the target grid
           Integer   :: weights_status ! indicates if the weights were already
                                                    ! calculated or not
           Integer  :: src_coord_type ! PRISM_Real or PRISM_Double_Precision
           Integer  :: tgt_coord_type ! PRISM_Real or PRISM_Double_Precision
           INTEGER      :: max_links_map1 ! current size of link arrays
           INTEGER      :: num_links_map1 ! actual number of links for remapping
           INTEGER      :: resize_increment ! default to increase array size
           INTEGER      :: src_grid_type    ! source grid type
           INTEGER       :: gaussred_stride  ! stride in lat/lon corner array
                                                                 ! between cell minimum and maximum values.
           Integer, Pointer  :: src_mask_pointer(:) ! mask for source epio
           Integer, Pointer  :: tgt_mask_pointer(:) ! mask for source epio
           Integer, Pointer  :: index_array(:,:) ! for each EPIO target point, indices
                                                                 ! to access the compact arrays of corresponding source
                                                                 ! point/corner latitudes, longitudes, and z
           Integer, Pointer  :: same_lat(:) ! array of integer to know if the bascule must
                                                           ! be done or not for each target point for gaussian reduced source grid
           Integer, Pointer  :: nbsrccells_pertgtpt(:) ! for each EPIO target point,
                                                                          ! the number of corresponding source cells (used for  conservative
                                                                          ! remapping only as this number varies for each tgt pt)
          INTEGER, POINTER  :: srcepio_add(:) ! array containing for each element of
                                                                           ! the lon/lat/z compact arrays the corresponding rank in the total
                                                                           ! number of epio source points
          INTEGER, POINTER  :: grid1_add_map1(:)
! for each 2d conservative remapping
                                                                                   ! link: rank of the corresponding source point in the total
                                                                                   ! number of epio source points
          INTEGER, POINTER  :: grid2_add_map1(:) 
! for each 2d conservative remapping
                                                                                    ! link: rank of the corresponding target point in the total
                                                                                    ! number of epio target points
          REAL, POINTER     :: src_lat_pointer_real(:) ! source epio point/corner
                                                                                    ! latitude (compact array)
          Real, Pointer     :: src_lon_pointer_real(:) ! source epio point/corner
                                                                           ! longitude (compact array)
          Real, Pointer     :: src_z_pointer_real(:)   ! source epio point/corner
                                                                          ! position in the vertical dimension (compact array)
          Real, Pointer     :: tgt_lat_pointer_real(:) ! target epio point/corner
                                                                          ! latitude (not compact array)
          Real, Pointer     :: tgt_lon_pointer_real(:) ! target epio point/corner
                                                                           ! longitude (not compact array)
          Real, Pointer     :: tgt_z_pointer_real(:)   ! target epio point/corner
                                                                         ! position in the vertical dimension (compact array)
          Double Precision, Pointer     :: src_lat_pointer_dble(:) ! see above
          Double Precision, Pointer     :: src_lon_pointer_dble(:) ! see above
          Double Precision, Pointer     :: src_z_pointer_dble(:)   ! see above
          Double Precision, Pointer     :: tgt_lat_pointer_dble(:) ! see above
          Double Precision, Pointer     :: tgt_lon_pointer_dble(:) ! see above
          Double Precision, Pointer     :: tgt_z_pointer_dble(:)   ! see above
          Double Precision, Pointer     :: weights(:,:) ! interpolation weights
          DOUBLE PRECISION, POINTER     :: wts_map1(:,:)
  ! 2d cons remapping weights
          DOUBLE PRECISION, POINTER     :: grid1_area(:) ! area of source epio cell
                                                                                                  ! as provided by the component
          DOUBLE PRECISION, POINTER     :: grid2_area(:) ! area of target epio cell
                                                                                                  ! as calculated by the 2d conservative remappin   

END TYPE Drv_EPIO