Size: 3741
Comment:
|
Size: 7506
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 14: | Line 14: |
In ''bmil/messy_main_channel_bi.f90'' | In ''bmil/messy_main_channel_bi.f90'': |
Line 26: | Line 26: |
INTEGER, SAVE, PUBLIC :: DIMID_SEDI_TBOX = DIMID_UNDEF | |
Line 38: | Line 39: |
INTEGER, SAVE, PUBLIC :: REPR_SEDI_TBOX = REPR_UNDEF | |
Line 42: | Line 44: |
In ''bmil/messy_main_channel_clams.inc'' | In ''bmil/messy_main_channel_clams.inc'': |
Line 56: | Line 58: |
|| DIMID_WAVE || WAVELENGTH || jpschi || | || DIMID_WAVE || WAVELENGTH || jpwave || |
Line 62: | Line 64: |
|| DIMID_SEDI_TBOX || SEDI_TBOX || ntbox_max || | |
Line 84: | Line 87: |
CALL new_representation(status, SCALAR, 'SCALAR' & , rank = 0, link = '----', dctype = 0 & , dimension_ids = scdim & , ldimlen = scdim & , axis = '----' & ) |
CALL new_representation(status, SCALAR, 'SCALAR' & , rank = 0, link = '----', dctype = 0 & , dimension_ids = scdim & , ldimlen = scdim & , axis = '----' & ) |
Line 100: | Line 103: |
CALL new_representation(status, REPR_NTASKS, 'REPR_NTASKS' & , rank = 1, link = 'x---', dctype = DC_IX & , dimension_ids = (/ DIMID_NTASKS /) & , ldimlen = (/ 1 /) & , axis = 'N---' & ) |
CALL new_representation(status, REPR_NTASKS, 'REPR_NTASKS' & , rank = 1, link = 'x---', dctype = DC_IX & , dimension_ids = (/ DIMID_NTASKS /) & , ldimlen = (/ 1 /) & , axis = 'N---' & ) |
Line 107: | Line 110: |
Variable mit dieser Representation in ''messy_clams_si.f90'': * '''dnparts''': Eindimensionales Feld der Länge NTASKS; Index-verteilt auf die Tasks, so dass jede Task ''dnparts'' (Anz. der von der Task zu bearbeitenden Trajektorien) als Skalar nutzen kann |
* Variable mit dieser Representation in ''messy_clams_si.f90'': * '''dnparts''' * 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 * '''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-' & ) }}} * Variablen mit dieser Representation in ''messy_clamstraj_si.f90'': * '''UDT, VDT, WDT, LEVELDT''' * '''UFUT, VFUT, WFUT, LEVELFUT''' * 3-dimensionale Felder * Dimensionierung (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' & , rank = 3, link = 'xxx-', dctype = 0 & , dimension_ids = (/ DIMID_LEV, DIMID_LAT, DIMID_LON /) & , ldimlen = (/ AUTO, AUTO, AUTO /) & , 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 Netcdf-Winddateien (nlev,nlat,nlon) * Die Felder müssen auf allen Tasks vollständig vorhanden sein => keine parallele Zerlegung der Felder (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---' & ) }}} * 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'': * '''JULSEC''' * '''LAT, LAT_OLD, LAT_OLD_MIX''' * '''LON, LON_OLD, LON_OLD_MIX''' * '''LEV, LEV_OLD''' * '''param, param_OLD ''' (PRESS,TEMP etc) * Variablen mit dieser Representation in ''messy_dissoc_si.f90'': * '''jresult''' * Eindimensionale Felder der Länge '''nparts_max''' * Index-Zerlegung (dctype=DC_IX) => jede Task erhält ein eindimensionales Feld der Länge '''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---' & ) }}} * Variablen mit dieser Representation in ''messy_clamsmix_si.f90'': * '''ZETA_SHUFFLED''' * '''LAT_SHUFFLED''' * '''LON_SHUFFLED''' * '''LAT_OLD_MIX_SHUFFLED''' * '''LON_OLD_MIX_SHUFFLED''' * '''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''' * 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_TBOX |
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
- DC_IX = 4 ! INDEX
Deklaration der Dimensionen und Representationen
In bmil/messy_main_channel_bi.f90:
Dimensionen
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_TRAJ = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_NTASKS = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_SHUFFLE = DIMID_UNDEF INTEGER, SAVE, PUBLIC :: DIMID_SEDI_TBOX = DIMID_UNDEF
Representationen
INTEGER, SAVE, PUBLIC :: REPR_LG_CLAMS = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_CLAMS_SHUFFLE= REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_LEVARR_CLAMS = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_3DINP_CLAMS = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_3DINP_CLAMS2 = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_2D_CLAMSTEST = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_NTASKS = REPR_UNDEF INTEGER, SAVE, PUBLIC :: REPR_SEDI_TBOX = REPR_UNDEF
Initialisieren der Dimensionen und Representationen
In bmil/messy_main_channel_clams.inc:
Dimensionen
Initialisieren mit new_dimension
ID |
Name |
Länge |
DIMID_TIME |
time |
1 |
DIMID_LON |
LON |
nx |
DIMID_LAT |
LAT |
ny |
DIMID_LEV |
LEV |
nz |
DIMID_TRAJ |
NPARTS |
nparts_max |
DIMID_SHUFFLE |
NPARTS_SHUFFLE |
nparts_max_shuffle |
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_TBOX |
SEDI_TBOX |
ntbox_max |
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
SCALAR
CALL new_representation(status, SCALAR, 'SCALAR' & , rank = 0, link = '----', dctype = 0 & , dimension_ids = scdim & , ldimlen = scdim & , axis = '----' & )
Variablen mit dieser Representation:In messy_clams_si.f90
grid_switch
year_uvfirst, month_uvfirst, day_uvfirst, hour_uvfirst
In messy_clamstraj_si.f90
JULTIME
REPR_NTASKS
CALL new_representation(status, REPR_NTASKS, 'REPR_NTASKS' & , rank = 1, link = 'x---', dctype = DC_IX & , dimension_ids = (/ DIMID_NTASKS /) & , ldimlen = (/ 1 /) & , axis = 'N---' & )
Variable mit dieser Representation in messy_clams_si.f90:
dnparts
- 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
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-' & )
Variablen mit dieser Representation in messy_clamstraj_si.f90:
UDT, VDT, WDT, LEVELDT
UFUT, VFUT, WFUT, LEVELFUT
- 3-dimensionale Felder
- Dimensionierung (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' & , rank = 3, link = 'xxx-', dctype = 0 & , dimension_ids = (/ DIMID_LEV, DIMID_LAT, DIMID_LON /) & , ldimlen = (/ AUTO, AUTO, AUTO /) & , 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 Netcdf-Winddateien (nlev,nlat,nlon)
Die Felder müssen auf allen Tasks vollständig vorhanden sein => keine parallele Zerlegung der Felder (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---' & )
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:
JULSEC
LAT, LAT_OLD, LAT_OLD_MIX
LON, LON_OLD, LON_OLD_MIX
LEV, LEV_OLD
param, param_OLD (PRESS,TEMP etc)
Variablen mit dieser Representation in messy_dissoc_si.f90:
jresult
Eindimensionale Felder der Länge nparts_max
Index-Zerlegung (dctype=DC_IX) => jede Task erhält ein eindimensionales Feld der Länge 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---' & )
Variablen mit dieser Representation in messy_clamsmix_si.f90:
ZETA_SHUFFLED
LAT_SHUFFLED
LON_SHUFFLED
LAT_OLD_MIX_SHUFFLED
LON_OLD_MIX_SHUFFLED
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
- 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_TBOX