Skip to content

Commit 33282fd

Browse files
committed
Updates on Perlmutter
1 parent c4529a8 commit 33282fd

File tree

6 files changed

+226
-82
lines changed

6 files changed

+226
-82
lines changed

docs/source/v1/WaterCycle/reproducing_simulations/index.rst

Lines changed: 0 additions & 9 deletions
This file was deleted.

docs/source/v1/WaterCycle/reproducing_simulations/reproduction_table.rst

Whitespace-only changes.

docs/source/v1/WaterCycle/simulation_data/simulation_table.rst

Lines changed: 111 additions & 0 deletions
Large diffs are not rendered by default.

utils/generate_html.bash

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
pr_num=56
1+
pr_num=59
22

33
# Chrysalis
44
#destination_dir=/lcrc/group/e3sm/public_html/diagnostic_output/$USER/data_docs_${pr_num}
@@ -8,6 +8,9 @@ destination_dir=/global/cfs/cdirs/e3sm/www/$USER/data_docs_${pr_num}
88
web_page="https://portal.nersc.gov/cfs/e3sm/$USER/data_docs_${pr_num}/html/"
99

1010
python generate_tables.py
11+
if [ $? != 0 ]; then
12+
exit 1
13+
fi
1114
cd ../docs/ && make html
1215
rm -rf ls ${destination_dir}
1316
mv _build ${destination_dir}

utils/generate_tables.py

Lines changed: 59 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@
33
import re
44
import requests
55
from collections import OrderedDict
6-
from typing import List, Tuple
7-
8-
# Make edits on Perlmutter so HPSS is available.
9-
# TODO: update this file!!!
10-
# TODO: update HPSS paths in v1 csv
6+
from typing import Dict, List, Tuple
117

128
# Functions to compute fields for simulations ###########################################
139
def get_data_size_and_hpss(hpss_path: str) -> Tuple[str, str]:
@@ -41,22 +37,25 @@ def get_data_size_and_hpss(hpss_path: str) -> Tuple[str, str]:
4137
hpss = ""
4238
return (data_size, hpss)
4339

44-
def get_esgf(source_id: str, model_version: str, experiment: str, ensemble_num: str, cmip_only: str, node: str) -> str:
40+
def get_esgf(source_id: str, model_version: str, experiment: str, ensemble_num: str, link_type: str, node: str) -> str:
41+
esgf: str
4542
if node == "cels.anl":
4643
esgf = f"`CMIP <https://esgf-node.{node}.gov/search/?project=CMIP6&activeFacets=%7B%22source_id%22%3A%22{source_id}%22%2C%22experiment_id%22%3A%22{experiment}%22%2C%22variant_label%22%3A%22r{ensemble_num}i1p1f1%22%7D>`_"
4744
elif experiment and ensemble_num:
4845
# See https://github.com/E3SM-Project/CMIP6-Metadata/pull/9#issuecomment-1246086256 for the table of ensemble numbers
49-
# remove v from model_version
50-
esgf = f"`Native <https://esgf-node.{node}.gov/search/e3sm/?model_version={model_version[1:]}_0&experiment={experiment}&ensemble_member=ens{ensemble_num}>`_"
46+
# Note that `[1:]`` removes `v` from `model_version`
47+
esgf_native: str = f"`Native <https://esgf-node.{node}.gov/search/e3sm/?model_version={model_version[1:]}_0&experiment={experiment}&ensemble_member=ens{ensemble_num}>`_"
5148
if experiment == 'hist-all-xGHG-xaer':
5249
experiment_id = 'hist-nat'
5350
else:
5451
experiment_id = experiment
55-
esgf_cmip = f"`CMIP <https://esgf-node.{node}.gov/search/cmip6/?source_id={source_id}&experiment_id={experiment_id}&variant_label=r{ensemble_num}i1p1f1>`_"
56-
if cmip_only:
52+
esgf_cmip: str = f"`CMIP <https://esgf-node.{node}.gov/search/cmip6/?source_id={source_id}&experiment_id={experiment_id}&variant_label=r{ensemble_num}i1p1f1>`_"
53+
if link_type == "cmip":
5754
esgf = esgf_cmip
55+
elif link_type == "native":
56+
esgf = esgf_native
5857
else:
59-
esgf = esgf_cmip + ', ' + esgf
58+
esgf = esgf_cmip + ', ' + esgf_native
6059
else:
6160
esgf = ""
6261
return esgf
@@ -92,7 +91,13 @@ def __init__(self, simulation_dict):
9291
self.experiment = simulation_dict["experiment"]
9392

9493
self.ensemble_num = simulation_dict["ensemble_num"]
95-
self.cmip_only = simulation_dict["cmip_only"]
94+
self.link_type = simulation_dict["link_type"]
95+
96+
if "hpss_path" in simulation_dict:
97+
# If `hpss_path` is specified, then it's a non-standard path
98+
hpss_path = simulation_dict["hpss_path"]
99+
else:
100+
hpss_path = f"/home/projects/e3sm/www/{self.group}/E3SM{self.model_version}/{self.resolution}/{self.simulation_name}"
96101
if "node" in simulation_dict.keys():
97102
self.node = simulation_dict["node"]
98103
else:
@@ -114,7 +119,7 @@ def __init__(self, simulation_dict):
114119
source_id = f"E3SM-{self.model_version[1]}-0"
115120
else:
116121
raise RuntimeError(f"Invalid model-version={self.model_version}")
117-
self.esgf = get_esgf(source_id, self.model_version, self.experiment, self.ensemble_num, self.cmip_only, self.node)
122+
self.esgf = get_esgf(source_id, self.model_version, self.experiment, self.ensemble_num, self.link_type, self.node)
118123

119124
self.run_script_original = get_run_script_original(self.model_version, self.simulation_name)
120125
self.run_script_reproduction = get_run_script_reproduction(self.model_version, self.simulation_name)
@@ -167,12 +172,15 @@ def append(self, group):
167172
self.groups.update([(group.name, group)])
168173

169174
# Construct simulations ###########################################
175+
170176
def read_simulations(csv_file):
171177
# model_version > group > resolution > category > simulation_name,
172178
versions: OrderedDict[str: ModelVersion] = OrderedDict()
173179
with open(csv_file, newline='') as opened_file:
174180
reader = csv.reader(opened_file)
175181
header: List[str] = []
182+
simulation_dicts: List[Dict[str, str]] = []
183+
# First, just set up the dictionary, to make sure all the necessary data is available.
176184
for row in reader:
177185
# Get labels
178186
if header == []:
@@ -183,40 +191,48 @@ def read_simulations(csv_file):
183191
for i in range(len(header)):
184192
label = header[i]
185193
if len(row) != len(header):
186-
raise RuntimeError(f"header has {len(header)} labels, but row has {len(row)} entries")
194+
raise RuntimeError(f"header has {len(header)} labels, but row={row} has {len(row)} entries")
187195
simulation_dict[label] = row[i].strip()
188-
model_version_name = simulation_dict["model_version"]
189-
group_name = simulation_dict["group"]
190-
resolution_name = simulation_dict["resolution"]
191-
category_name = simulation_dict["category"]
192-
if model_version_name not in versions:
193-
v = ModelVersion(model_version_name)
194-
versions.update([(model_version_name, v)])
195-
else:
196-
v = versions[model_version_name]
197-
if group_name not in v.groups:
198-
g = Group(group_name)
199-
v.groups.update([(group_name, g)])
200-
else:
201-
g = v.groups[group_name]
202-
if resolution_name not in g.resolutions:
203-
r = Resolution(resolution_name)
204-
g.resolutions.update([(resolution_name, r)])
205-
else:
206-
r = g.resolutions[resolution_name]
207-
if category_name not in r.categories:
208-
c = Category(category_name)
209-
r.categories.update([(category_name, c)])
210-
else:
211-
c = r.categories[category_name]
212-
s = Simulation(simulation_dict)
213-
c.simulations.update([(s.simulation_name, s)])
196+
if "cmip_only" in simulation_dict:
197+
simulation_dict["link_type"] = "cmip"
198+
simulation_dicts.append(simulation_dict)
199+
# Now, that we have valid dictionaries for each simulation, let's construct objects
200+
for simulation_dict in simulation_dicts:
201+
model_version_name = simulation_dict["model_version"]
202+
group_name = simulation_dict["group"]
203+
resolution_name = simulation_dict["resolution"]
204+
category_name = simulation_dict["category"]
205+
if model_version_name not in versions:
206+
v = ModelVersion(model_version_name)
207+
versions.update([(model_version_name, v)])
208+
else:
209+
v = versions[model_version_name]
210+
if group_name not in v.groups:
211+
g = Group(group_name)
212+
v.groups.update([(group_name, g)])
213+
else:
214+
g = v.groups[group_name]
215+
if resolution_name not in g.resolutions:
216+
r = Resolution(resolution_name)
217+
g.resolutions.update([(resolution_name, r)])
218+
else:
219+
r = g.resolutions[resolution_name]
220+
if category_name not in r.categories:
221+
c = Category(category_name)
222+
r.categories.update([(category_name, c)])
223+
else:
224+
c = r.categories[category_name]
225+
s = Simulation(simulation_dict)
226+
c.simulations.update([(s.simulation_name, s)])
214227
return versions
215228

216229
# Construct table display of simulations ###########################################
217230
def pad_cells(cells: List[str], col_divider: str, cell_paddings: List[int]) -> str:
218231
string = col_divider
219232
for i in range(len(cells)):
233+
if len(cells[i]) > cell_paddings[i]:
234+
s = f"WARNING: cell padding={cell_paddings[i]} is insufficient for {cells[i]} of length {len(cells[i])}"
235+
raise RuntimeError(s)
220236
string += " " + cells[i].ljust(cell_paddings[i] + 1) + col_divider
221237
string += "\n"
222238
return string
@@ -260,7 +276,7 @@ def construct_pages(csv_file: str, model_version: str, group_name: str, include_
260276
resolutions,
261277
["Simulation", "Data Size (TB)", "ESGF Links", "HPSS Path"],
262278
f"../docs/source/{model_version}/{group_name}/simulation_data/simulation_table.rst",
263-
[65, 15, 400, 80]
279+
[85, 15, 400, 130]
264280
)
265281
if include_reproduction_scripts:
266282
generate_table(
@@ -277,4 +293,5 @@ def construct_pages(csv_file: str, model_version: str, group_name: str, include_
277293
if __name__ == "__main__":
278294
#construct_pages("simulations_v2.csv", "v2", "WaterCycle")
279295
#construct_pages("simulations_v2_1.csv", "v2.1", "WaterCycle")
280-
construct_pages("simulations_v2_1.csv", "v2.1", "BGC")
296+
#construct_pages("simulations_v2_1.csv", "v2.1", "BGC")
297+
construct_pages("simulations_v1_water_cycle.csv", "v1", "WaterCycle")
Lines changed: 52 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,52 @@
1-
model_version, group, resolution, hpss_path, checksum, ensemble_num, link_type,
2-
v1, WaterCycle, LR, /home/g/golaz/2018/E3SM_simulations/repaired/20180129.DECKv1b_piControl.ne30_oEC.edison, , 1, ,
3-
v1, WaterCycle, LR, /home/g/golaz/2018/E3SM_simulations/repaired/20180215.DECKv1b_abrupt4xCO2.ne30_oEC.edison, , 1, ,
4-
v1, WaterCycle, LR, /home/g/golaz/2019/E3SM_simulations/20190722.DECKv1b_abrupt4xCO2.ne30_oEC3.compy, , 1, ,
5-
v1, WaterCycle, LR, /home/g/golaz/2018/E3SM_simulations/repaired/20180215.DECKv1b_1pctCO2.ne30_oEC.edison, , 1, ,
6-
v1, WaterCycle, LR, /home/g/golaz/2018/E3SM_simulations/repaired/20180215.DECKv1b_H1.ne30_oEC.edison, , 1, ,
7-
v1, WaterCycle, LR, /home/g/golaz/2018/E3SM_simulations/repaired/20180220.DECKv1b_H2.ne30_oEC.edison, , 2, ,
8-
v1, WaterCycle, LR, /home/z/zshaheen/2018/E3SM_simulations/repaired/20180302.DECKv1b_H3.ne30_oEC.edison, , 3, ,
9-
v1, WaterCycle, LR, /home/t/tang30/2018/E3SM_simulations/20180305.DECKv1b_H4.ne30_oEC.edison, , 4, ,
10-
v1, WaterCycle, LR, /home/g/golaz/2018/E3SM_simulations/20180307.DECKv1b_H5.ne30_oEC.edison, , 5, ,
11-
v1, WaterCycle, LR, /home/t/tang30/2018/E3SM_simulations/20180316.DECKv1b_A1.ne30_oEC.edison, , 1, ,
12-
v1, WaterCycle, LR, /home/t/tang30/2018/E3SM_simulations/20180622.DECKv1b_A2.ne30_oEC.edison, , 2, ,
13-
v1, WaterCycle, LR, /home/t/tang30/2018/E3SM_simulations/20180716.DECKv1b_A3.ne30_oEC.edison, , 3, ,
14-
v1, WaterCycle, LR, /home/t/tang30/2018/E3SM_simulations/20180508.DECKv1b_A1_1850allF.ne30_oEC.edison, , , ,
15-
v1, WaterCycle, LR, /home/t/tang30/2018/E3SM_simulations/20180622.DECKv1b_A2_1850allF.ne30_oEC.edison, , , ,
16-
v1, WaterCycle, LR, /home/t/tang30/2018/E3SM_simulations/20180716.DECKv1b_A3_1850allF.ne30_oEC.edison, , , ,
17-
v1, WaterCycle, LR, /home/t/tang30/2018/E3SM_simulations/20180508.DECKv1b_A1_1850aeroF.ne30_oEC.edison, , , ,
18-
v1, WaterCycle, LR, /home/t/tang30/2018/E3SM_simulations/20180622.DECKv1b_A2_1850aeroF.ne30_oEC.edison, , , ,
19-
v1, WaterCycle, LR, /home/t/tang30/2018/E3SM_simulations/20180716.DECKv1b_A3_1850aeroF.ne30_oEC.edison, , , ,
20-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20190404.DECKv1b_H1_hist-GHG.ne30_oEC.edison, , , ,
21-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20190404.DECKv1b_H2_hist-GHG.ne30_oEC.edison, , , ,
22-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20190404.DECKv1b_H3_hist-GHG.ne30_oEC.edison, , , ,
23-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20190807.DECKv1b_P1_SSP5-8.5.ne30_oEC.cori-knl, , , ,
24-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20190821.DECKv1b_P2_SSP5-8.5.ne30_oEC.cori-knl, , , ,
25-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20190821.DECKv1b_P3_SSP5-8.5.ne30_oEC.cori-knl, , , ,
26-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20190821.DECKv1b_P4_SSP5-8.5.ne30_oEC.cori-knl, , , ,
27-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20190821.DECKv1b_P5_SSP5-8.5.ne30_oEC.cori-knl, , , ,
28-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20191019.DECKv1b_P1_SSP5-8.5-GHG.ne30_oEC.cori-knl, , , ,
29-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20191019.DECKv1b_P2_SSP5-8.5-GHG.ne30_oEC.cori-knl, , , ,
30-
v1, WaterCycle, LR, /home/t/tang30/2019/E3SM_simulations/20191019.DECKv1b_P3_SSP5-8.5-GHG.ne30_oEC.cori-knl, , , ,
1+
model_version, group, resolution, category, simulation_name, machine, checksum, experiment, ensemble_num, link_type, node,
2+
v1, WaterCycle, LR, DECK, 20180129.DECKv1b_piControl.ne30_oEC.edison, edison, , piControl, 1, , ,
3+
v1, WaterCycle, LR, DECK, 20180215.DECKv1b_abrupt4xCO2.ne30_oEC.edison, edison, , abrupt-4xCO2, 1, , ,
4+
v1, WaterCycle, LR, DECK, 20190722.DECKv1b_abrupt4xCO2.ne30_oEC3.compy, compy, , abrupt-4xCO2, 2, , ,
5+
v1, WaterCycle, LR, DECK, 20180215.DECKv1b_1pctCO2.ne30_oEC.edison, edison, , 1pctC02, 1, , ,
6+
v1, WaterCycle, LR, DECK, 20180215.DECKv1b_H1.ne30_oEC.edison, edison, , historical, 1, , ,
7+
v1, WaterCycle, LR, DECK, 20180220.DECKv1b_H2.ne30_oEC.edison, edison, , historical, 2, , ,
8+
v1, WaterCycle, LR, DECK, 20180302.DECKv1b_H3.ne30_oEC.edison, edison, , historical, 3, , ,
9+
v1, WaterCycle, LR, DECK, 20180305.DECKv1b_H4.ne30_oEC.edison, edison, , historical, 4, , ,
10+
v1, WaterCycle, LR, DECK, 20180307.DECKv1b_H5.ne30_oEC.edison, edison, , historical, 5, , ,
11+
v1, WaterCycle, LR, DECK, 20180316.DECKv1b_A1.ne30_oEC.edison, edison, , amip, 1, , ,
12+
v1, WaterCycle, LR, DECK, 20180622.DECKv1b_A2.ne30_oEC.edison, edison, , amip, 2, , ,
13+
v1, WaterCycle, LR, DECK, 20180716.DECKv1b_A3.ne30_oEC.edison, edison, , amip, 3, , ,
14+
v1, WaterCycle, LR, DECK, 20180508.DECKv1b_A1_1850allF.ne30_oEC.edison, edison, , amip_1850allF, 1, , ,
15+
v1, WaterCycle, LR, DECK, 20180622.DECKv1b_A2_1850allF.ne30_oEC.edison, edison, , amip_1850allF, 2, , ,
16+
v1, WaterCycle, LR, DECK, 20180716.DECKv1b_A3_1850allF.ne30_oEC.edison, edison, , amip_1850allF, 3, , ,
17+
v1, WaterCycle, LR, DECK, 20180508.DECKv1b_A1_1850aeroF.ne30_oEC.edison, edison, , amip_1850aeroF, 1, , ,
18+
v1, WaterCycle, LR, DECK, 20180622.DECKv1b_A2_1850aeroF.ne30_oEC.edison, edison, , amip_1850aeroF, 2, , ,
19+
v1, WaterCycle, LR, DECK, 20180716.DECKv1b_A3_1850aeroF.ne30_oEC.edison, edison, , amip_1850aeroF, 3, , ,
20+
v1, WaterCycle, LR, DECK, 20190404.DECKv1b_H1_hist-GHG.ne30_oEC.edison, edison, , damip_hist-GHG, 1, , ,
21+
v1, WaterCycle, LR, DECK, 20190404.DECKv1b_H2_hist-GHG.ne30_oEC.edison, edison, , damip_hist-GHG, 2, , ,
22+
v1, WaterCycle, LR, DECK, 20190404.DECKv1b_H3_hist-GHG.ne30_oEC.edison, edison, , damip_hist-GHG, 3, , ,
23+
v1, WaterCycle, LR, DECK, 20190807.DECKv1b_P1_SSP5-8.5.ne30_oEC.cori-knl, cori-knl, , projection, 1, , ,
24+
v1, WaterCycle, LR, DECK, 20190821.DECKv1b_P2_SSP5-8.5.ne30_oEC.cori-knl, cori-knl, , projection, 2, , ,
25+
v1, WaterCycle, LR, DECK, 20190821.DECKv1b_P3_SSP5-8.5.ne30_oEC.cori-knl, cori-knl, , projection, 3, , ,
26+
v1, WaterCycle, LR, DECK, 20190821.DECKv1b_P4_SSP5-8.5.ne30_oEC.cori-knl, cori-knl, , projection, 4, , ,
27+
v1, WaterCycle, LR, DECK, 20190821.DECKv1b_P5_SSP5-8.5.ne30_oEC.cori-knl, cori-knl, , projection, 5, , ,
28+
v1, WaterCycle, LR, DECK, 20191019.DECKv1b_P1_SSP5-8.5-GHG.ne30_oEC.cori-knl, cori-knl, , damip_ssp5-8.5-GHG, 1, , ,
29+
v1, WaterCycle, LR, DECK, 20191019.DECKv1b_P2_SSP5-8.5-GHG.ne30_oEC.cori-knl, cori-knl, , damip_ssp5-8.5-GHG, 2, , ,
30+
v1, WaterCycle, LR, DECK, 20191019.DECKv1b_P3_SSP5-8.5-GHG.ne30_oEC.cori-knl, cori-knl, , damip_ssp5-8.5-GHG, 3, , ,
31+
v1, WaterCycle, HR, DECK, 20211021-maint-1.0-tro.A_WCYCLSSP585_CMIP6_HR.ne120_oRRS18v3_ICG.unc12-3rd-attempt, ???, , ssp5_8.5, 1, , ,
32+
v1, WaterCycle, HR, DECK, 20200517-maint-1.0-tro.A_WCYCL20TRS_CMIP6_HR.ne120_oRRS18v3_ICG.unc11, ???, , , , , ,
33+
v1, WaterCycle, HR, DECK, 202101027-maint-1.0-tro.A_WCYCL20TRS_CMIP6_HR.ne120_oRRS18v3_ICG.unc12, ???, , , , , ,
34+
v1, WaterCycle, HR, DECK, theta.20190910.branch_noCNT.n825def.unc06.A_WCYCL1950S_CMIP6_HR.ne120_oRRS18v3_ICG, , theta, , , , ,
35+
v1, WaterCycle, HR, DECK, 20210112.A_WCYCL1950S_CMIP6_HR.ne120_oRRS18v3_ICG.unc06, ???, , , , , ,
36+
v1, WaterCycle, HR, DECK, 20210104.maint-1.0-A_WCYCL20TRS_CMIP6_LRtunedHR.ne30_oECv3_ICG.cori-knl.unc11, ???, , , , , ,
37+
v1, WaterCycle, HR, DECK, theta.20180906.branch_noCNT.A_WCYCL1950S_CMIP6_HR.ne120_oRRS18v3_ICG, theta, , , , , ,
38+
v1, WaterCycle, HR, DECK, 20190509.A_WCYCL1950S_CMIP6_LRtunedHR.ne30_oECv3_ICG.anvil, anvil, , , , , ,
39+
v1, WaterCycle, HR, DECK, theta.20190910.branch_noCNT.n438b.unc03.A_WCYCL1950S_CMIP6_HR.ne120_oRRS18v3_ICG, theta, , , , , ,
40+
v1, WaterCycle, HR, DECK, cori-knl.20190214_maint-1.0.F2010-CMIP6-HR.dailySST.noCNT.ne120_oRRS18v3, cori-knl, , , , , ,
41+
v1, WaterCycle, HR, DECK, cori-knl.20190214_maint-1.0.F2010C5-CMIP6-HR.ARE.nudgeUV.1850aero.ne120_oRRS18v3, cori-knl, , , , , ,
42+
v1, WaterCycle, HR, DECK, cori-knl.20190214_maint-1.0.F2010-CMIP6-HR.noCNT.ARE.nudgeUV.ne120_oRRS18v3, cori-knl, , , , , ,
43+
v1, WaterCycle, HR, DECK, cori-knl.20190214_maint-1.0.F2010-CMIP6-HR.dailySSTplus4K.noCNT.ne120_oRRS18v3, cori-knl, , , , , ,
44+
v1, WaterCycle, HR, DECK, cori-haswell.20190513.F2010C5-CMIP6-LR.ne30_oECv3, cori-haswell, , , , , ,
45+
v1, WaterCycle, HR, DECK, edison.20190415_maint-1.0.F2010C5-CMIP6-LR.ARE.nudgeUV.ne30_oECv3, edison, , , , , ,
46+
v1, WaterCycle, HR, DECK, edison.20190415_maint-1.0.F2010C5-CMIP6-LR.ARE.nudgeUV.1850aero.ne30_oECv3, edison, , , , , ,
47+
v1, WaterCycle, HR, DECK, cori-haswell.20190513.F2010C5-CMIP6-LR.plus4K.ne30_oECv3, cori-haswell, , , , , ,
48+
v1, WaterCycle, HR, DECK, cori-haswell.20190513.F2010C5-CMIP6-LR.plus4K.ne30_oECv3, cori-haswell, , , , , ,
49+
v1, WaterCycle, HR, DECK, cori-haswell.20190513.F2010LRtunedHR.noCNT.ne30_oECv3, cori-haswell, , , , , ,
50+
v1, WaterCycle, HR, DECK, cori-haswell.20190513.F2010LRtunedHR.noCNT.ARE.nudgeUV.ne30_oECv3, cori-haswell, , , , , ,
51+
v1, WaterCycle, HR, DECK, cori-haswell.20190513.F2010LRtunedHR.noCNT.ARE.nudgeUV.1850aero.ne30_oECv3, cori-haswell, , , , , ,
52+
v1, WaterCycle, HR, DECK, cori-haswell.20190513.F2010LRtunedHR.plus4K.noCNT.ne30_oECv3, cori-haswell, , , , , ,

0 commit comments

Comments
 (0)