= 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---' & ) }}}