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
13 changes: 6 additions & 7 deletions src/mswm/build_inputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -593,11 +593,9 @@ def _parse_forcing_engine(self):

# Raise error if forecast or cold start is run with CSV provider
if self.forcing_provider == 'csv' and self.run_type in ('forecast', 'cold_start'):
try:
raise ValueError(f"Run type {self.run_type} requires bmi forcing provider")
except ValueError as e:
logger.critical(e)
raise
msg = f"Run type {self.run_type} requires bmi forcing provider, but {repr(self.forcing_provider)} was provided"
logger.critical(msg)
raise ValueError(msg)

# Retrieve cold_start_time
self.cold_start_datetime = self.forcingSec.get('cold_start_datetime', None)
Expand Down Expand Up @@ -626,8 +624,9 @@ def _parse_forcing_engine(self):
elif self.use_lagged_ens:
# Check that use_lagged_ens is only used with medium_range configuration
if self.forcing_configuration != "medium_range":
logger.critical(f"Lagged ensemble run must use medium range forcing configuration. {self.forcing_configuration} configuration cannot be used for a lagged ensemble.")
raise
msg = f"Lagged ensemble run must use medium range forcing configuration. {self.forcing_configuration} configuration cannot be used for a lagged ensemble."
logger.critical(msg)
raise ValueError(msg)
self.forcing_configuration_str = f"{self.forcing_configuration}_{self.lagged_ens_mem}_config.yml"
else:
self.forcing_configuration_str = f"{self.forcing_configuration}_config.yml"
Expand Down
9 changes: 5 additions & 4 deletions src/mswm/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import argparse
from mswm.build_inputs import RealizationBuilder, validate_topoflow_glacier

from mswm.utils.input_configuration import InputConfig

def build_default(input_path: str, use_cold_start: bool = False):
"""
Expand All @@ -26,17 +26,18 @@ def build_calib(input_path: str):
return real_path


def build_fcst(input_path: str, valid_yaml: str, fcst_run_name: str, use_cold_start: bool = False, use_warm_start: bool = False,
def build_fcst(input_path: str | None, valid_yaml: str, fcst_run_name: str, use_cold_start: bool = False, use_warm_start: bool = False,
use_hindcast: bool = False, use_lagged_ens: bool = False, hind_cycle: int | None = None, prev_hind_cycle: int | None = None,
lagged_ens_mem: str | None = None, forcing_lag: int | None = None, load_state_from: str = None, save_state: bool = False):
lagged_ens_mem: str | None = None, forcing_lag: int | None = None, load_state_from: str = None, save_state: bool = False,
config_overrides: InputConfig = None):
"""
Call RealizationBuilder class to generate forecast realization and config files
"""
rb = RealizationBuilder(input_path=input_path, valid_yaml=valid_yaml, fcst_run_name=fcst_run_name,
use_cold_start=use_cold_start, use_warm_start=use_warm_start, use_lagged_ens=use_lagged_ens,
use_hindcast=use_hindcast, hind_cycle=hind_cycle, prev_hind_cycle=prev_hind_cycle,
lagged_ens_mem=lagged_ens_mem, forcing_lag=forcing_lag,
load_state_from=load_state_from, save_state=save_state)
load_state_from=load_state_from, save_state=save_state, config_overrides=config_overrides)
real_path = rb.build_fcst_realization()
return real_path

Expand Down
Loading