Skip to content

Commit

Permalink
add era option
Browse files Browse the repository at this point in the history
  • Loading branch information
jonasjucker committed Feb 11, 2025
1 parent 00cf3a4 commit a613e75
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 7 deletions.
29 changes: 22 additions & 7 deletions python/WrapExtpar.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ def main():
isoil_type = config.get('isoil_type')
itopo_type = config.get('itopo_type')
it_cl_type = config.get('it_cl_type')
iera_type = config.get('iera_type')
lsgsl = config.get('lsgsl', False)
lfilter_oro = config.get('lfilter_oro', False)
lurban = config.get('lurban', False)
Expand All @@ -78,7 +79,7 @@ def main():

generate_external_parameters(igrid_type, args.input_grid, iaot_type,
ilu_type, ialb_type, isoil_type, itopo_type,
it_cl_type, radtopo_radius,
it_cl_type, iera_type, radtopo_radius,
args.raw_data_path, args.run_dir,
args.account, args.host, args.no_batch_job,
lurban, lsgsl, lfilter_oro,lradtopo)
Expand All @@ -92,6 +93,7 @@ def generate_external_parameters(igrid_type,
isoil_type,
itopo_type,
it_cl_type,
iera_type,
radtopo_radius,
raw_data_path,
run_dir,
Expand Down Expand Up @@ -120,6 +122,7 @@ def generate_external_parameters(igrid_type,
'isoil_type': isoil_type,
'itopo_type': itopo_type,
'it_cl_type': it_cl_type,
'iera_type': iera_type,
'radtopo_radius': radtopo_radius,
'lsgsl': lsgsl,
'lfilter_oro': lfilter_oro,
Expand Down Expand Up @@ -540,6 +543,8 @@ def setup_tclim_namelist(args):
namelist['it_cl_type'] = args['it_cl_type']
namelist['raw_data_tclim_coarse'] = 'absolute_hadcrut3.nc'
namelist['raw_data_tclim_fine'] = 'CRU_T_SOIL_clim.nc'
if args['it_cl_type'] > 2:
raise ValueError(f'Unknown it_cl_type {args["it_cl_type"]}')

return namelist

Expand Down Expand Up @@ -588,14 +593,24 @@ def setup_ndvi_namelist(args):

def setup_era_namelist(args):
namelist = {}
iera_type = args['iera_type']

namelist['iera_type'] = 1
namelist['raw_data_era_path'] = args['raw_data_path']
namelist['raw_data_era_ORO'] = 'ERA5_ORO_1990.nc'
namelist['raw_data_era_SD'] = 'ERA5_SD_1990_2019.nc'
namelist['raw_data_era_T2M'] = 'ERA5_T2M_1990_2019.nc'
namelist['raw_data_era_SST'] = 'ERA5_SST_1990_2019.nc'
namelist['iera_type'] = iera_type
namelist['era_buffer_file'] = 'era_buffer.nc'
namelist['raw_data_era_path'] = args['raw_data_path']

if iera_type == 1:
namelist['raw_data_era_ORO'] = 'ERA5_ORO_1990.nc'
namelist['raw_data_era_SD'] = 'ERA5_SD_1990_2019.nc'
namelist['raw_data_era_T2M'] = 'ERA5_T2M_1990_2019.nc'
namelist['raw_data_era_SST'] = 'ERA5_SST_1990_2019.nc'
elif iera_type == 2:
namelist['raw_data_era_ORO'] = 'ERA-I_ORO_1986.nc'
namelist['raw_data_era_SD'] = 'ERA-I_SD_1986_2015.nc'
namelist['raw_data_era_T2M'] = 'ERA-I_T2M_1986_2015.nc'
namelist['raw_data_era_SST'] = 'ERA-I_SST_1986_2015.nc'
else:
raise ValueError(f'Unknown iera_type {iera_type}')

return namelist

Expand Down
47 changes: 47 additions & 0 deletions test/pytest/test_wrap_extpar.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ def test_setup_tclim_2_namelist():
result = setup_tclim_namelist(args)
assert result == expected_output

def test_setup_tclim_unknown_type():
args = {'raw_data_path': '/path/to/raw/data',
'it_cl_type': 9,}
with pytest.raises(ValueError, match='Unknown it_cl_type 9'):
setup_tclim_namelist(args)


def test_setup_albedo_namelist_type_1():
args = {'raw_data_path': '/path/to/data', 'ialb_type': 1}
Expand Down Expand Up @@ -465,3 +471,44 @@ def test_setup_soil_namelist_unknown_type():
args = {'isoil_type': 99, 'raw_data_path': '/path/to/raw_data'}
with pytest.raises(ValueError, match='Unknown isoil_type 99'):
setup_soil_namelist(args)


def test_setup_era_namelist_era5():
args = {
'iera_type': 1,
'raw_data_path': '/path/to/raw/data'
}
expected_namelist = {
'iera_type': 1,
'era_buffer_file': 'era_buffer.nc',
'raw_data_era_path': '/path/to/raw/data',
'raw_data_era_ORO': 'ERA5_ORO_1990.nc',
'raw_data_era_SD': 'ERA5_SD_1990_2019.nc',
'raw_data_era_T2M': 'ERA5_T2M_1990_2019.nc',
'raw_data_era_SST': 'ERA5_SST_1990_2019.nc'
}
assert setup_era_namelist(args) == expected_namelist

def test_setup_era_namelist_erai():
args = {
'iera_type': 2,
'raw_data_path': '/path/to/raw/data'
}
expected_namelist = {
'iera_type': 2,
'era_buffer_file': 'era_buffer.nc',
'raw_data_era_path': '/path/to/raw/data',
'raw_data_era_ORO': 'ERA-I_ORO_1986.nc',
'raw_data_era_SD': 'ERA-I_SD_1986_2015.nc',
'raw_data_era_T2M': 'ERA-I_T2M_1986_2015.nc',
'raw_data_era_SST': 'ERA-I_SST_1986_2015.nc'
}
assert setup_era_namelist(args) == expected_namelist

def test_setup_era_namelist_invalid():
args = {
'iera_type': 99,
'raw_data_path': '/path/to/raw/data'
}
with pytest.raises(ValueError, match='Unknown iera_type 99'):
setup_era_namelist(args)

0 comments on commit a613e75

Please sign in to comment.