Skip to content

Commit 948a9a7

Browse files
authored
Add plotting scripts for paper (#40)
1 parent e48412e commit 948a9a7

31 files changed

+10234
-1
lines changed

agile1d/sandbox/define_idealized_experiment.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def idealized_experiment(use_experiment_glaciers,
4444
utils.mkdir(output_folder)
4545

4646
cfg.initialize(file=params_file, params=override_params,
47-
logging_level=logging_level, future=True)
47+
logging_level=logging_level)
4848

4949
# store model geometry for hydro output
5050
cfg.PARAMS['store_model_geometry'] = True
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import copy
2+
import numpy as np
3+
from agile1d.core.inversion import get_default_inversion_settings
4+
5+
# here specifiy the glaciers which should be used for the experiments
6+
use_experiment_glaciers = ['Aletsch',
7+
'Baltoro',
8+
'Artesonraju',
9+
'Peyto'
10+
]
11+
12+
use_experiment_glacier_states = ['equilibrium',
13+
'retreating',
14+
'advancing']
15+
16+
# define some glacier specific parameters
17+
inversion_settings_individual = None
18+
19+
# general description of the current experiments
20+
general_description = 'full_run_fg_oggm'
21+
22+
# define different experiments here with file_suffixes for experiment
23+
# description, all possible combinations will be generated
24+
# 'key is inversion setting' = {'exp1': value, 'exp2': value}
25+
26+
# create lambdas dict
27+
start_ex = -4 # == 10^start_ex
28+
end_ex = 3
29+
nr_lam = 29
30+
all_lambdas = np.logspace(start_ex, end_ex, num=nr_lam)
31+
lam_dict = {'lam0': 0}
32+
for i, lam in enumerate(all_lambdas):
33+
lam_dict[f'lam{i + 1}'] = lam
34+
35+
experiment_options = \
36+
{
37+
'cost_lambda': lam_dict,
38+
'observations': {
39+
'obs0': {'fl_surface_h:m': {}},
40+
'obs1': {'dmdtda:kg m-2 yr-1': {}},
41+
'obs2': {'volume:km3': {}},
42+
'obs3': {'fl_surface_h:m': {},
43+
'dmdtda:kg m-2 yr-1': {}},
44+
'obs4': {'fl_surface_h:m': {},
45+
'volume:km3': {}},
46+
'obs5': {'dmdtda:kg m-2 yr-1': {},
47+
'volume:km3': {}},
48+
'obs6': {'fl_surface_h:m': {},
49+
'dmdtda:kg m-2 yr-1': {},
50+
'volume:km3': {}},
51+
},
52+
'regularisation_terms': {
53+
'reg0': {'smoothed_bed': 1},
54+
},
55+
}
56+
57+
default_inversion_settings_options = get_default_inversion_settings()
58+
59+
default_inversion_settings_options['obs_scaling_parameters'] = {
60+
'uncertainty': {'fl_surface_h:m': {'absolute': 10.},
61+
'dmdtda:kg m-2 yr-1': {'absolute': 100.},
62+
'volume:km3': {'relative': 0.1}}
63+
}
64+
65+
default_inversion_settings_options['spinup_options'] = {
66+
'section': {'extra_grid_points': 10,
67+
'limits': (0.6, 1.4),
68+
'fg_years': 0,
69+
}}
70+
default_inversion_settings_options['experiment_description'] = general_description
71+
default_inversion_settings_options['minimize_options']['disp'] = False
72+
default_inversion_settings_options['minimize_options']['maxiter'] = 50
73+
default_inversion_settings_options['max_time_minimize'] = 60 * 60 * 4, # in s
74+
75+
def recursive_define_inversion_setting(inv_var_list, tmp_inversion_setting):
76+
# global inversion_settings_all
77+
tmp_description = copy.deepcopy(tmp_inversion_setting['experiment_description'])
78+
inv_var = inv_var_list.pop(0)
79+
for inv_var_opt in experiment_options[inv_var]:
80+
tmp_inversion_setting['experiment_description'] = tmp_description + \
81+
'_' + inv_var_opt
82+
tmp_inversion_setting[inv_var] = experiment_options[inv_var][inv_var_opt]
83+
84+
if len(inv_var_list) == 0:
85+
inversion_settings_all.append(copy.deepcopy(tmp_inversion_setting))
86+
else:
87+
recursive_define_inversion_setting(copy.deepcopy(inv_var_list),
88+
tmp_inversion_setting)
89+
90+
91+
# set all experiment combinations together
92+
inversion_settings_all = []
93+
all_experiment_options = list(experiment_options.keys())
94+
recursive_define_inversion_setting(all_experiment_options,
95+
default_inversion_settings_options)

0 commit comments

Comments
 (0)