Source code for NEDAS.models.nextsim.dg.namelist

import os
import configparser
from NEDAS.utils.conversion import dt1h
from NEDAS.models.nextsim.dg import restart, forcing

[docs] def make_namelist(file_options:dict, model_config_file:str, ens_dir='.', **kwargs): ens_mem_id:int = kwargs['member'] + 1 # TODO: member could be None for deterministic runs time = kwargs['time'] forecast_period = kwargs['forecast_period'] next_time = time + forecast_period * dt1h # read the config file model_config = configparser.ConfigParser() model_config.optionxform = str #type: ignore model_config.read(model_config_file) # change the restart file name file_options_restart = file_options['restart'] fname_restart:str = restart.get_restart_filename(file_options_restart, ens_mem_id, time) model_config['model']['init_file'] = os.path.basename(fname_restart) model_config['model']['start'] = time.strftime("%Y-%m-%dT%H:%M:%SZ") model_config['model']['stop'] = next_time.strftime("%Y-%m-%dT%H:%M:%SZ") model_config['ConfigOutput']['start'] = time.strftime("%Y-%m-%dT%H:%M:%SZ") # changing the forcing file in ERA5Atmosphere file_options_forcing = file_options['forcing'] fname_atmos_forcing = forcing.get_forcing_filename(file_options_forcing['atmosphere'], 1, time) fname_atmos_forcing = os.path.basename(fname_atmos_forcing) model_config['ERA5Atmosphere']['file'] = fname_atmos_forcing # changing the forcing file in TOPAZOcean fname_ocn_forcing = forcing.get_forcing_filename(file_options_forcing['ocean'], 1, time) fname_ocn_forcing = os.path.basename(fname_ocn_forcing) model_config['TOPAZOcean']['file'] = fname_ocn_forcing # dump the config to new file config_file = os.path.join(ens_dir, 'nextsim.cfg') with open(config_file, 'w') as configfile: model_config.write(configfile)