MESSy/CLaMS: dimensions and representations
The type of channel objects is REAL(DP)
Used parallel decomposition types (dctype)
DC_BC = 0 ! BROADCAST (IO-PE ONLY) -> no decomposition
- DC_IX = 4 ! INDEX
Deklaration of dimensions and representations
In bmil/messy_main_channel_bi.f90:
Dimensions
INTEGER, SAVE, PUBLIC :: DIMID_TIME = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_LEV = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_LON = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_LAT = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_THETA = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_TRAJ = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_MIX_GRID = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_NTASKS = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_SHUFFLE = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_SEDI_PARTICLE = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_WAVE = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_DISSOC_LEV = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_DISSOC_LEVC = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_DISSOC_LAT = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_DISSOC_SZA = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_DISSOC_NUMJ = DIMID_UNDEF
Representations
INTEGER, SAVE, PUBLIC :: REPR_LG_CLAMS = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_CLAMS_SHUFFLE= REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_3DINP_CLAMS = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_NTASKS = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_SEDI_PARTICLE = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_DISSOC_WAVE = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_DISSOC_LEV = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_DISSOC_LEVC = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_DISSOC_LAT = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_DISSOC_SZA = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_DISSOC_TABS = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_DISSOC_TABS_DAVG = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_DISSOC_TWOD = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_DISSOC_TWODC = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_DISSOC_RATE = REPR_UNDEF
Initialize dimensions and representations
In bmil/messy_main_channel_clams.inc:
Dimensions
Initialize with new_dimension
ID |
Name |
Length |
DIMID_TIME |
time |
1 |
DIMID_LON |
LON |
nx |
DIMID_LAT |
LAT |
ny |
DIMID_LEV |
LEV |
nz |
DIMID_THETA |
THETA |
ntheta |
DIMID_TRAJ |
NPARTS |
nparts_max |
DIMID_SHUFFLE |
NPARTS_SHUFFLE |
nparts_max_shuffle |
DIMID_MIX_GRID |
NLEVS |
adapt_par%nlevs |
DIMID_NTASKS |
ntasks |
ntasks |
DIMID_WAVE |
WAVELENGTH |
jpwave |
DIMID_DISSOC_LEV |
DISSOC_LEV |
jpslevall |
DIMID_DISSOC_LEVC |
DISSOC_LEVC |
jpslev |
DIMID_DISSOC_LAT |
DISSOC_LAT |
jpschi |
DIMID_DISSOC_SZA |
DISSOC_SZA |
jpschi |
DIMID_DISSOC_NUMJ |
DISSOC_NUMJ |
numj_max |
DIMID_SEDI_PARTICLE |
SEDI_PARTICLE |
nparticle_max |
Dimension variables
Create with add_dimension_variable
Name of dimension variable |
Name of dimension |
values of dimension variable |
time |
time |
days since starttime |
YYYYMMDD |
time |
yyyymmdd |
dt |
time |
delta_time |
nstep |
time |
REAL(current_time_step, DP) |
JULIAN_SECONDS |
time |
time in julian seconds |
LON |
LON |
longrid |
LAT |
LAT |
latgrid |
LEV |
LEV |
levelgrid(1:nz) |
THETA |
THETA |
thetagrid(1:ntheta) |
Representations
Create with new_representation
SCALAR
CALL new_representation(status, SCALAR, 'SCALAR' & , rank = 0, link = '----', dctype = 0 & , dimension_ids = scdim & , ldimlen = scdim & , axis = '----' & )
Variables with representation SCALAR:In messy_clams_si.f90
grid_switch
pre_year, pre_month, pre_day, pre_sec
JULTIME
REPR_NTASKS
CALL new_representation(status, REPR_NTASKS, 'REPR_NTASKS' & , rank = 1, link = 'x---', dctype = DC_IX & , dimension_ids = (/ DIMID_NTASKS /) & , ldimlen = (/ 1 /) & INTEGER, SAVE, PUBLIC :: REPR_SEDI_TBOX = REPR_UNDEF , axis = 'N---' & )
Variables with representation REPR_NTASKS in messy_clams_si.f90:
dnparts
dnparts_max
- one-dimensional array of length NTASKS
index distributed on tasks (dctype=DC_IX), every task can use dnparts and dnparts_max as a scalar
REPR_3DINP_CLAMS
CALL new_representation(status, REPR_3DINP_CLAMS, 'REPR_3DINP_CLAMS' & , rank = 3, link = 'xxx-', dctype = 0 & , dimension_ids = (/ DIMID_LON, DIMID_LAT, DIMID_LEV /) & , ldimlen = (/ AUTO, AUTO, AUTO /) & , axis = 'XYZ-' & )
Variables with this representation in messy_clams_si.f90:
UDT, VDT, WDT, LEVELDT, DLEVDZDT
UFUT, VFUT, WFUT, LEVELFUT, DLEVDZFUT
PREDATA_param, FUTDATA_param (TEMP, PRESS etc.)
- 3-dimensional arrays (nlev,nlat,nlon), input from meteorological files
- and current winds
- no parallel decomposition (dctype=0)
REPR_3DINP_CLAMSTHETA
CALL new_representation(status, REPR_3DINP_CLAMSTHETA, 'REPR_3DINP_CLAMSTHETA' & , rank = 3, link = 'xxx-', dctype = 0 & , dimension_ids = (/ DIMID_LON, DIMID_LAT, DIMID_THETA /) & , ldimlen = (/ AUTO, AUTO, AUTO /) & , axis = 'XYZ-' & )
Variables with this representation in messy_clams_si.f90:
PREDATA_param, FUTDATA_param (EQLAT and PV)
- 3-dimensional arrays (nlev,nlat,nlon), input from meteorological files
- no parallel decomposition (dctype=0)
REPR_LG_CLAMS
CALL new_representation(status, REPR_LG_CLAMS, 'REPR_LG_CLAMS' & , rank = 1, link = 'x---', dctype = DC_IX & , dimension_ids = (/ DIMID_TRAJ /) & , ldimlen = (/ dnparts_max /) & , axis = 'N---' & )
Variables with this representation in messy_clams_si.f90:
JULSEC
LAT, LAT_OLD, LAT_OLD_MIX
LON, LON_OLD, LON_OLD_MIX
LEV, LEV_OLD
param, param_OLD (PRESS,TEMP etc)
SPECARR for all species (1-nspec)
STATE, STATE_VERT
THETA_OLD_MIX, BVFWET_OLD_MIX
Variables with this representation in messy_dissoc_si.f90:
jresult
Variables with this representation in messy_clamschem_si.f90:
BRATES, TRATES, JRATES, HRATES
BCONST, TCONST, JCONST, HCONST
HETPAR
One-dimensional arrays of length nparts_max
Index decomposition (dctype=DC_IX) => every task gets one-dimensional arrays of length dnparts_max
REPR_CLAMS_SHUFFLE
CALL new_representation(status, REPR_CLAMS_SHUFFLE, 'REPR_CLAMS_SHUFFLE' & , rank = 1, link = 'x---', dctype = DC_IX & , dimension_ids = (/ DIMID_SHUFFLE /) & , ldimlen = (/ dnparts_max_shuffle /) & , axis = 'N---' & )
Variables with this representation in messy_clamsmix_si.f90:
ZETA_SHUFFLED
LAT_SHUFFLED
LON_SHUFFLED
LAT_OLD_MIX_SHUFFLED
LON_OLD_MIX_SHUFFLED
STATE_SHUFFLED, STATE_VERT_SHUFFLED
species_SHUFFLED (for all species)
THETA_SHUFFLED, THETA_OLD_MIX_SHUFFLED
BVFWET_SHUFFLED, BVFWET_OLD_MIX_SHUFFLED
One-dimensional arrays of length nparts_max_shuffle
Index decomposition (dctype=DX_IX) => every Task gets one-dimensional arrays of length dnparts_max_shuffle
REPR_MIX_GRID
CALL new_representation(status, REPR_MIX_GRID, 'REPR_MIX_GRID' & , rank = 1, link = 'x---', dctype = 0 & , dimension_ids = (/ DIMID_MIX_GRID /) & , ldimlen = (/ adapt_par%nlevs /) & , axis = 'N---' & )
Variables with this representation in messy_clams_si.f90:
LEV_GRID
LEV_DELTA
R_GRID
One-dimensional arrays of lenght adapt_par%nlevs
- No decomposition
- REPR_DISSOC_WAVE
- REPR_DISSOC_LEV
- REPR_DISSOC_LEVC
- REPR_DISSOC_SZA
- REPR_DISSOC_LAT
- REPR_DISSOC_TABS
- REPR_DISSOC_TABS_DAVG
- REPR_DISSOC_TWOD
- REPR_DISSOC_TWODC
- REPR_DISSOC_RATE
REPR_SEDI_PARTICLE
CALL new_representation(status, REPR_SEDI_PARTICLE, 'REPR_SEDI_PARTICLE' & , rank = 1, link = 'x---', dctype = 0 & , dimension_ids = (/ DIMID_SEDI_PARTICLE /) & , ldimlen = (/ nparticle_max /) & , axis = 'N---' & )