Module containing 2-d global surface boundary data information
USES:
use shr_kind_mod, only : r8 => shr_kind_r8 use nanMod use spmdMod , only : masterproc use abortutils , only : endrun use clm_varctl , only : iulogPUBLIC TYPES:
implicit none private public :: domain_type public :: latlon_type !--- this typically contains local domain info with arrays dim begg:endg --- type domain_type integer :: ns ! global size of domain integer :: ni,nj ! global axis if 2d (nj=1 if unstructured) integer :: nbeg,nend ! local beg/end indices character(len=8) :: clmlevel ! grid type logical :: decomped ! decomposed locally or global copy logical :: regional ! regional or global grid logical :: areaset ! has area been set integer ,pointer :: mask(:) ! land mask: 1 = land, 0 = ocean real(r8),pointer :: frac(:) ! fractional land real(r8),pointer :: topo(:) ! topography real(r8),pointer :: latc(:) ! latitude of grid cell (deg) real(r8),pointer :: lonc(:) ! longitude of grid cell (deg) real(r8),pointer :: area(:) ! grid cell area (km**2) real(r8),pointer :: asca(:) ! area scaling from CESM driver character*16 :: set ! flag to check if domain is set integer ,pointer :: glcmask(:) ! glc mask: 1=sfc mass balance required by GLC component ! 0=SMB not required (default) !--- following are valid only for land domain --- integer ,pointer :: pftm(:) ! pft mask: 1=real, 0=fake, -1=notset real(r8),pointer :: nara(:) ! normalized area in upscaling (km**2), real(r8),pointer :: ntop(:) ! normalized topo for downscaling (m) end type domain_type !--- this contains global info about a grid, lats and lons are 1d !--- global arrays of size ni or nj which assume regular lat/lon grids only type latlon_type integer :: ns ! global size of domain integer :: ni,nj ! global axis if 2d (nj=1 if unstructured) character*16 :: set ! flag to check if domain is set logical :: regional ! regional or global grid real(r8) :: edges(4) ! global edges (N,E,S,W) real(r8),pointer :: latc(:) ! latitude of 1d grid cell (deg) real(r8),pointer :: lonc(:) ! longitude of 1d grid cell (deg) real(r8),pointer :: lats(:) ! latitude of 1d south grid cell edge (deg) real(r8),pointer :: latn(:) ! latitude of 1d north grid cell edge (deg) real(r8),pointer :: lonw(:) ! longitude of 1d west grid cell edge (deg) real(r8),pointer :: lone(:) ! longitude of 1d east grid cell edge (deg) end type latlon_type type(domain_type),public :: adomain type(domain_type),public :: ldomain type(latlon_type),public :: alatlon type(latlon_type),public :: llatlon integer ,pointer,public :: gatm(:) ! gatm pulled out of domain integer ,pointer,public :: amask(:) ! global atm mask integer, pointer,public :: pftm(:) ! pft mask for lnd gridPUBLIC MEMBER FUNCTIONS:
public domain_init ! allocates/nans domain types public domain_clean ! deallocates domain types public domain_setptrs ! sets external pointer arrays into domain public domain_check ! write out domain info public latlon_init ! allocates/nans domain types public latlon_check ! write out domain info public latlon_clean ! deallocate domain info public latlon_setsame ! copy one domain to anotherREVISION HISTORY:
Originally clm_varsur by Mariana Vertenstein Migrated from clm_varsur to domainMod by T Craig character*16,parameter :: set = 'domain_set ' character*16,parameter :: unset = 'NOdomain_unsetNO'