Differences between revisions 3 and 17 (spanning 14 versions)
Revision 3 as of 2014-12-08 12:34:00
Size: 7316
Editor: NicoleThomas
Comment:
Revision 17 as of 2018-04-24 11:04:12
Size: 9857
Editor: NicoleThomas
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= MESSy/CLaMS: Dimensionen und Representationen für Channels =


== Allgemeines ==

 * Channel-Objekte sind immer vom Typ ''REAL(DP)''

 * Verwendete parallele Zerlegungstypen (''dctype'')
  * DC_BC = 0 ! BROADCAST (IO-PE ONLY) -> keine Zerlegung
= 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
Line 12: Line 10:
== Deklaration der Dimensionen und Representationen == == Deklaration of dimensions and representations ==
Line 16: Line 14:
==== Dimensionen ==== ==== Dimensions ====
Line 23: Line 21:

  INTEGER, SAVE, PUBLIC :: DIMID_THETA = DIMID_UNDEF
Line 24: Line 24:
  INTEGER, SAVE, PUBLIC :: DIMID_MIX_GRID = DIMID_UNDEF
Line 26: Line 27:
}}}

==== Representationen ====
  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 ====
Line 33: Line 42:
  INTEGER, SAVE, PUBLIC :: REPR_LEVARR_CLAMS = REPR_UNDEF
Line 35: Line 43:
  INTEGER, SAVE, PUBLIC :: REPR_3DINP_CLAMS2 = REPR_UNDEF
  INTEGER, SAVE, PUBLIC :: REPR_2D_CLAMSTEST = REPR_UNDEF
Line 38: Line 44:
}}}

== Initialisieren der Dimensionen und Representationen ==
  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 ==
Line 44: Line 62:
==== Dimensionen ====

Initialisieren mit ''new_dimension''

|| ID || Name || Länge ||
==== Dimensions ====

Initialize with ''new_dimension''

|| ID || Name || Length ||
Line 53: Line 71:
|| DIMID_THETA || THETA || ntheta ||
Line 55: Line 74:
|| DIMID_MIX_GRID || NLEVS || adapt_par%nlevs ||
Line 56: Line 76:
|| DIMID_WAVE || WAVELENGTH || jpschi || || DIMID_WAVE || WAVELENGTH || jpwave ||
Line 62: Line 82:


==== Dimensionsvariablen ====

Anlegen mit ''add_dimension_variable''

||Name der Dimension || Name der Dimensionsvariablen || Werte der Dimensionsvariablen ||
||time|| time || 0.0 ||
||time|| YYYYMMDD || yyyymmdd ||
||time|| dt || delta_time ||
||time|| nstep || REAL(current_time_step, DP) ||
||LON || LON || longrid ||
||LAT || LAT || latgrid ||
||LEV || LEV || levelgrid(1:nz) ||


==== Representationen ====

Anlegen mit ''new_representation''
|| 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''
Line 91: Line 114:
 Variablen mit dieser Representation:  Variables with representation SCALAR:
Line 94: Line 117:
   * '''year_uvfirst''', '''month_uvfirst''', '''day_uvfirst''', '''hour_uvfirst'''
  * In ''messy_clamstraj_si.f90''
   * '''pre_year''', '''pre_month''', '''pre_day''', '''pre_sec'''
Line 103: Line 125:
     , ldimlen = (/ 1 /) &      , ldimlen = (/ 1 /) &  INTEGER, SAVE, PUBLIC :: REPR_SEDI_TBOX = REPR_UNDEF
 
Line 107: Line 130:
  * Variable mit dieser Representation in ''messy_clams_si.f90'':   * Variables with representation REPR_NTASKS in ''messy_clams_si.f90'':
Line 109: Line 132:
  * Eindimensionales Feld der Länge NTASKS
  * Index-verteilt auf die Tasks (dctype=DC_IX), so dass jede Task ''dnparts'' (Anz. der von der Task zu bearbeitenden Trajektorien) als Skalar nutzen kann
    * '''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
Line 121: Line 145:
  * Variablen mit dieser Representation in ''messy_clamstraj_si.f90'':
   * '''UDT, VDT, WDT, LEVELDT'''
   * '''UFUT, VFUT, WFUT, LEVELFUT'''
  * 3-dimensionale Felder
  * Dimensionier
ung (nlon,nlat,nlev) wie sie innerhalb des TRAJ genutzt wird
  * Die Windfelder müssen auf allen Tasks vollständig vorhanden sein => keine parallele Zerlegung der Felder
(dctype=0)

 * '''REPR_3DINP_CLAMS2'''
 {{{
CALL new_representation(status, REPR_3DINP_CLAMS2, 'REPR_3DINP_CLAMS2' &
  * 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
    an
d current winds
  * no parallel
decomposition (dctype=0)


* '''REPR_3DINP_CLAMSTHETA'''
 {{{
CALL new_representation(status, REPR_3DINP_CLAMSTHETA, 'REPR_3DINP_CLAMSTHETA' &
Line 132: Line 158:
     , dimension_ids = (/ DIMID_LEV, DIMID_LAT, DIMID_LON /) &      , dimension_ids = (/ DIMID_LON, DIMID_LAT, DIMID_THETA /) &
Line 134: Line 160:
     , axis = 'ZYX-' &
     )
}}}
  * Variablen mit dieser Representation in ''messy_clamstraj_si.f90'':
    * '''PREDATA_param, FUTDATA_param''' (für TEMP,PRESS etc)
  * 3-dimensionale Felder
  * Dimensionierung wie auf Net
cdf-Winddateien (nlev,nlat,nlon)
  * Die Felder müssen auf allen Tasks vollständig vorhanden sein => keine parallele Zerlegung der Felder
(dctype=0)
     , 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)
 
Line 153: Line 178:
  * Variablen mit dieser Representation in ''messy_clams_si.f90'':
    * '''SPECARR''' für alle Spezies (1-nspec)
  * Variablen mit dieser Representation in ''messy_clamstraj_si.f90'':
  * Variables with this representation in ''messy_clams_si.f90'':
Line 161: Line 184:
  * Variablen mit dieser Representation in ''messy_dissoc_si.f90'':     * '''SPECARR''' for all species (1-nspec)
    * '''STATE, STATE_VERT'''
    * '''THETA_OLD_MIX, BVFWET_OLD_MIX'''
  * Variables with this representation in ''messy_dissoc_si.f90'':
Line 163: Line 189:
  * Eindimensionale Felder der Länge '''nparts_max'''
  * Index-Zerlegung (dctype=DC_IX) => jede Task erhält ein eindimensionales Feld der Länge '''dnparts_max'''
  * 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'''
Line 175: Line 206:
  * Variablen mit dieser Representation in ''messy_clamsmix_si.f90'':   * Variables with this representation in ''messy_clamsmix_si.f90'':
Line 181: Line 212:
    * '''param_SHUFFLED '''(für alle Spezies)
  * Eindimensionale Felder der Länge '''nparts_max_shuffle'''
  * Index-Zerlegung (dctype=DX_IX) => jede Task erhält ein eindimensionales Feld der Länge '''dnparts_max_shuffle'''
    * '''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
Line 195: Line 246:

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

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

messy/ClamsRepr (last edited 2018-04-24 11:04:12 by NicoleThomas)