PUBLIC INTERFACE ~ PUBLIC ROUTINES

Module grids_type_mod

Contact: Z. Liang
Reviewers: S. M. Griffies
Change History: WebCVS Log


OVERVIEW

Define grid types, including cell type, horizontal grid, vertical grid and topography type

From discussions with Robert Hallberg, as a prototype for ESMF


OTHER MODULES USED

mpp_domains_mod

PUBLIC INTERFACE



PUBLIC ROUTINES


    PUBLIC TYPES

      type cell_type
         real, dimension(:,:), pointer   :: x => NULL()        ! geographical longitude of cell center
         real, dimension(:,:), pointer   :: y => NULL()        ! geographical latitude of cell center 
         real, dimension(:,:,:), pointer :: x_vert => NULL()   ! geographical longitude of cell vertices
         real, dimension(:,:,:), pointer :: y_vert => NULL()   ! geographical latitude of cell vertices
         real, dimension(:,:), pointer   :: area => NULL()     ! cell area
         real, dimension(:,:), pointer   :: angle => NULL()    ! Angle between i-unit and x-unit vector of cell
         real, dimension(:,:), pointer   :: ds_00_02 => NULL() ! Length of western face of cell
         real, dimension(:,:), pointer   :: ds_20_22 => NULL() ! Length of eastern face of cell
         real, dimension(:,:), pointer   :: ds_02_22 => NULL() ! Length of northern face of cell
         real, dimension(:,:), pointer   :: ds_00_20 => NULL() ! Length of southern face of cell
         real, dimension(:,:), pointer   :: ds_01_21 => NULL() ! width of cell
         real, dimension(:,:), pointer   :: ds_10_12 => NULL() ! height of cell
         real, dimension(:,:), pointer   :: ds_00_01 => NULL() ! Distance from southwest corner to western face center of cell
         real, dimension(:,:), pointer   :: ds_01_02 => NULL() ! Distance from northwest corner to western face center of cell
         real, dimension(:,:), pointer   :: ds_02_12 => NULL() ! Distance from northwest corner to northern face center of cell
         real, dimension(:,:), pointer   :: ds_12_22 => NULL() ! Distance from northeast corner to northern face center of cell
         real, dimension(:,:), pointer   :: ds_21_22 => NULL() ! Distance from northeast corner to eastern face center of cell
         real, dimension(:,:), pointer   :: ds_20_21 => NULL() ! Distance from southeast corner to eastern face center of cell
         real, dimension(:,:), pointer   :: ds_10_20 => NULL() ! Distance from southeast corner to southern face center of cell
         real, dimension(:,:), pointer   :: ds_00_10 => NULL() ! Distance from southwest corner to southern face center of cell
         real, dimension(:,:), pointer   :: ds_01_11 => NULL() ! Distance from center to western face of cell
         real, dimension(:,:), pointer   :: ds_11_12 => NULL() ! Distance from center to northern face of cell
         real, dimension(:,:), pointer   :: ds_11_21 => NULL() ! Distance from center to eastern face of cell 
         real, dimension(:,:), pointer   :: ds_10_11 => NULL() ! Distance from center to southern face of cell
      end type cell_type
      type hgrid_data_type
         type(cell_type) :: T             ! T-cell
         type(cell_type) :: E             ! E-cell
         type(cell_type) :: N             ! N-cell
         type(cell_type) :: C             ! C-cell
         logical         :: tripolar_grid ! true means tripolar grid
         logical         :: cyclic_x      ! true means cyclic in i-direction
         logical         :: cyclic_y      ! true means cyclic in j-direction
         integer         :: ni, nj        ! grid size
         type(domain2d)  :: Domain
      end type hgrid_data_type
      type vgrid_data_type
         real, dimension(:), pointer :: zt => NULL()   ! vertical level at T-cell center 
         real, dimension(:), pointer :: zb => NULL()   ! vertical level at T-cell boundary
      end type vgrid_data_type
      type topog_data_type
         real, dimension(:,:), pointer :: depth_t => NULL()    ! topographic depth of T-cell
         real, dimension(:,:), pointer :: num_levels => NULL() ! number of vertical T-cells
         real, dimension(:,:), pointer :: wet => NULL()        ! wet mask of T-cell
         real, dimension(:,:), pointer :: depth_c => NULL()    ! topographic depth of C-cell
         real, dimension(:,:), pointer :: num_levels_c => NULL() ! number of vertical C-cells
         real, dimension(:,:), pointer :: wet_c => NULL()        ! wet mask of C-cell
      end type topog_data_type


    top