From c08c6618944be4f5fd9a59769b69bec4d82272ac Mon Sep 17 00:00:00 2001 From: sumbel <sumbel.enikeeva@gmail.com> Date: Sat, 28 Jun 2025 11:10:09 +0300 Subject: [PATCH] small refactoring of spot_setup --- main_spotpy.py | 15 +++------------ parameters_config.nml | 2 +- source/spotpy_optim/spot_setup.py | 13 +++++++------ 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/main_spotpy.py b/main_spotpy.py index 63e060d..edaa51e 100644 --- a/main_spotpy.py +++ b/main_spotpy.py @@ -1,11 +1,9 @@ import os -import numpy as np import spotpy -import f90nml as nml -from source.spotpy_optim.spot_setup import spot_setup from plot import main_plot +from source.spotpy_optim.spot_setup import spot_setup parameters_nml_path = os.path.join('parameters_config.nml') config_nml_path = os.path.join('ui1_config.nml') @@ -26,15 +24,8 @@ sampler.sample(n_it) results = sampler.getdata() -kd_in_optim = spotpy.analyser.get_best_parameterset(results)[0] - -params_nml = nml.read(parameters_nml_path) -kd_in = np.array(params_nml['parameters_config_namelist']['kd_in']) -kd_in[0, 5] = kd_in_optim - -params_nml['parameters_config_namelist']['kd_in'] = kd_in.tolist() -params_nml.write(parameters_nml_path, force=True) - +kd_in_optim = spotpy.analyser.get_best_parameterset(results) +setup.write_params(kd_in_optim) os.system(f'./run.exe') main_plot() diff --git a/parameters_config.nml b/parameters_config.nml index 38cbfed..e42634d 100644 --- a/parameters_config.nml +++ b/parameters_config.nml @@ -1,5 +1,5 @@ ¶meters_config_namelist - kd_in(1:6,1) = 0.03, 0.03, 0.0402, 0.08581933, 0.012, 0.07087475 + kd_in(1:6,1) = 0.03, 0.03, 0.0402, 0.08581933, 0.012, 0.07115579 kd_in(1:6,2) = 0.03, 0.03, 0.05067, 0.08581933, 0.007, 0.007 kd_in(1:6,3) = 0.035, 0.035, 0.04185, 0.08581933, 0.007, 0.007 kd_in(1:6,4) = 0.03, 0.03, 0.0, 0.0, 0.0, 0.0 diff --git a/source/spotpy_optim/spot_setup.py b/source/spotpy_optim/spot_setup.py index 7979535..453f6a5 100644 --- a/source/spotpy_optim/spot_setup.py +++ b/source/spotpy_optim/spot_setup.py @@ -48,12 +48,7 @@ class spot_setup(object): return model_out def simulation(self, x): - params_nml = nml.read(self.params_path) - kd_in = np.array(params_nml['parameters_config_namelist']['kd_in']) - kd_in[self.station_opt - 1, 5] = x[0] - params_nml['parameters_config_namelist']['kd_in'] = kd_in.tolist() - params_nml.write(self.params_path, force=True) - + self.write_params(x) os.system(f'./run.exe') model_out = self.read_model_output() @@ -78,4 +73,10 @@ class spot_setup(object): def parameters(self): return spotpy.parameter.generate(self.params) + def write_params(self, par): + params_nml = nml.read(self.params_path) + kd_in = np.array(params_nml['parameters_config_namelist']['kd_in']) + kd_in[self.station_opt - 1, 5] = par[0] + params_nml['parameters_config_namelist']['kd_in'] = kd_in.tolist() + params_nml.write(self.params_path, force=True) -- GitLab