Skip to content
Draft
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
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
compass run -w /work/restart
"""

import configparser
import glob
import json
import os
Expand Down Expand Up @@ -57,9 +58,16 @@ def configure(self):
4. Sets up ensemble_manager to handle job submission
"""
config = self.config
section = config.get('restart_ensemble', {})

spinup_work_dir = section.get('spinup_work_dir')
try:
spinup_work_dir = config.get('restart_ensemble', 'spinup_work_dir')
except (configparser.NoSectionError, configparser.NoOptionError):
raise ValueError(
"restart_ensemble config must specify spinup_work_dir\n"
"Add to config file:\n"
"[restart_ensemble]\n"
"spinup_work_dir = /path/to/spinup/ensemble"
)

if not spinup_work_dir:
raise ValueError(
Expand All @@ -72,12 +80,24 @@ def configure(self):
if not os.path.exists(spinup_work_dir):
raise ValueError(f"spinup_work_dir not found: {spinup_work_dir}")

# Get restart configuration
max_consecutive_restarts = section.getint(
'max_consecutive_restarts', 3)
min_simulation_years = section.getfloat(
'min_simulation_years_before_restart', 50.0)
auto_restart = section.getboolean('auto_restart_incomplete', True)
# Get restart configuration using proper configparser API
try:
max_consecutive_restarts = config.getint(
'restart_ensemble', 'max_consecutive_restarts')
except (configparser.NoSectionError, configparser.NoOptionError):
max_consecutive_restarts = 3

try:
min_simulation_years = config.getfloat(
'restart_ensemble', 'min_simulation_years_before_restart')
except (configparser.NoSectionError, configparser.NoOptionError):
min_simulation_years = 50.0

try:
auto_restart = config.getboolean(
'restart_ensemble', 'auto_restart_incomplete')
except (configparser.NoSectionError, configparser.NoOptionError):
auto_restart = True

# Scan for existing run directories
run_dirs = sorted(glob.glob(os.path.join(spinup_work_dir, 'run*')))
Expand Down