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 @@
 &parameters_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