Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 17 additions & 8 deletions pygem/bin/run/run_inversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,12 +266,21 @@ def run(
'{0:0.5f}'.format(gd.glacier_rgi_table['RGIId_float']) + ' O1 region not in glen_a_df'
)
glen_a_idx = np.where(glen_a_O1regions == gdir.glacier_rgi_table.O1Region)[0][0]
glen_a_multiplier = glen_a_df.loc[glen_a_idx, 'glens_a_multiplier']
fs = glen_a_df.loc[glen_a_idx, 'fs']
# Check which columns exist
# Rounce et al. (2023) regional glen a calibration file has 'glens_a_multiplier' and 'fs'
# output of run_inversion has 'inversion_glen_a' and 'inversion_fs'
if {'glens_a_multiplier', 'fs'}.issubset(glen_a_df.columns):
glen_a = cfg.PARAMS['glen_a'] * glen_a_df.loc[glen_a_idx, 'glens_a_multiplier']
fs = glen_a_df.loc[glen_a_idx, 'fs']
elif {'inversion_glen_a', 'inversion_fs'}.issubset(glen_a_df.columns):
glen_a = glen_a_df.loc[glen_a_idx, 'inversion_glen_a']
fs = glen_a_df.loc[glen_a_idx, 'inversion_fs']
else:
glen_a_multiplier = pygem_prms['sim']['oggm_dynamics']['glen_a_multiplier']
glen_a = cfg.PARAMS['glen_a'] * pygem_prms['sim']['oggm_dynamics']['glen_a_multiplier']
fs = pygem_prms['sim']['oggm_dynamics']['fs']
glen_a = cfg.PARAMS['glen_a'] * glen_a_multiplier
# ensure float
glen_a = float(glen_a)
fs = float(fs)

# non-tidewater
if gdir.glacier_rgi_table['TermType'] not in [1, 5] or not pygem_prms['setup']['include_frontalablation']:
Expand Down Expand Up @@ -352,10 +361,10 @@ def run(
{
'O1Region': reg,
'count': len(glac_no),
'inversion_glen_a': gdirs[0].get_diagnostics()['inversion_glen_a'],
'inversion_fs': gdirs[0].get_diagnostics()['inversion_fs'],
'vol_itmix_m3': itmix_vol,
'vol_model_m3': model_vol,
'inversion_glen_a': float(gdirs[0].get_diagnostics()['inversion_glen_a']),
'inversion_fs': float(gdirs[0].get_diagnostics()['inversion_fs']),
'vol_itmix_m3': float(itmix_vol),
'vol_model_m3': float(model_vol),
}
)

Expand Down
27 changes: 16 additions & 11 deletions pygem/bin/run/run_simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -783,24 +783,29 @@ def run(list_packed_vars):
print('cfl number:', cfg.PARAMS['cfl_number'])

if args.use_regional_glen_a:
glena_df = pd.read_csv(
glen_a_df = pd.read_csv(
f'{pygem_prms["root"]}/{pygem_prms["sim"]["oggm_dynamics"]["glen_a_regional_relpath"]}'
)
glena_O1regions = [int(x) for x in glena_df.O1Region.values]
assert glacier_rgi_table.O1Region in glena_O1regions, glacier_str + ' O1 region not in glena_df'
glena_idx = np.where(glena_O1regions == glacier_rgi_table.O1Region)[0][0]
glen_a_O1regions = [int(x) for x in glen_a_df.O1Region.values]
assert glacier_rgi_table.O1Region in glen_a_O1regions, (
glacier_str + ' O1 region not in glen_a_df'
)
glen_a_idx = np.where(glen_a_O1regions == glacier_rgi_table.O1Region)[0][0]
# Check which columns exist
# Rounce et al. (2023) regional glen a calibration file has 'glens_a_multiplier' and 'fs'
# output of run_inversion has 'inversion_glen)a' and 'inversion_fs'
if {'glens_a_multiplier', 'fs'}.issubset(glena_df.columns):
glen_a = cfg.PARAMS['glen_a'] * glena_df.loc[glena_idx, 'glens_a_multiplier']
fs = glena_df.loc[glena_idx, 'fs']
elif {'inversion_glen_a', 'inversion_fs'}.issubset(glena_df.columns):
glen_a = glena_df.loc[glena_idx, 'inversion_glen_a']
fs = glena_df.loc[glena_idx, 'inversion_fs']
if {'glens_a_multiplier', 'fs'}.issubset(glen_a_df.columns):
glen_a = cfg.PARAMS['glen_a'] * glen_a_df.loc[glen_a_idx, 'glens_a_multiplier']
fs = glen_a_df.loc[glen_a_idx, 'fs']
elif {'inversion_glen_a', 'inversion_fs'}.issubset(glen_a_df.columns):
glen_a = glen_a_df.loc[glen_a_idx, 'inversion_glen_a']
fs = glen_a_df.loc[glen_a_idx, 'inversion_fs']
else:
fs = pygem_prms['sim']['oggm_dynamics']['fs']
glen_a = cfg.PARAMS['glen_a'] * pygem_prms['sim']['oggm_dynamics']['glen_a_multiplier']
fs = pygem_prms['sim']['oggm_dynamics']['fs']
# ensure float
glen_a = float(glen_a)
fs = float(fs)

# spinup
if args.spinup:
Expand Down