Annotated command list - fabm-model/fabm GitHub Wiki
Framework for Aquatic Biogeochemical Modeling (FABM) Kloster Heidberg in Eupen, Belgium (6/16/2025 - 6/20/2025)
Karsten Bolding, Jorn Bruggeman, and Nicolas Azaña Schnedler-Meyer
https://github.com/BoldingBruggeman/fabmws2025
Spencer T. Gardner Cooperative Institute of Great Lakes Research University of Michigan - Ann Arbor, Michigan, USA (Institute) [email protected] (Personal) [email protected]
Simplified and annotated terminal history of the FABM workshop providing a view of 0D, 1D, and 3D
implementation. Commands were executed on a Windows system using an Anaconda terminal, and as such, some commands may differ from those using other platforms.
# navigate to workshop root directory
(base) C:\Users\Owner>cd fabmws2025
# activate virtual environment
(base) C:\Users\Owner\fabmws2025>conda activate fabmws2025
# change into code directory
(fabmws2025) C:\Users\Owner\fabmws2025>cd ./code
# view strucuture of code directory
(fabmws2025) C:\Users\Owner\fabmws2025\code>dir
<!-- Directory of C:\Users\Owner\fabmws2025\code
06/10/2025 02:27 PM <DIR> .
06/10/2025 02:27 PM <DIR> ..
06/10/2025 02:28 PM <DIR> eat
06/10/2025 03:14 PM <DIR> fabm
06/10/2025 03:23 PM <DIR> fabmos
06/10/2025 02:29 PM <DIR> gotm
06/10/2025 02:29 PM <DIR> pygetm -->
# duplicated model/template directory (should run again and replace with institute name, e.g., fabm-ciglr)
(fabmws2025) C:\Users\Owner\fabmws2025\code>cp -r fabm/src/models/template fabm-gardner
# move into newly created driectory
(fabmws2025) C:\Users\Owner\fabmws2025\code>cd fabm-gardner
# explore structure
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>dir
<!-- Directory of C:\Users\Owner\fabmws2025\code\fabm-gardner
06/16/2025 10:21 AM <DIR> .
06/16/2025 10:21 AM <DIR> ..
06/16/2025 10:21 AM 176 CMakeLists.txt
06/16/2025 10:21 AM 796 model_library.F90
06/16/2025 10:21 AM 670 mymodel.F90
3 File(s) 1,642 bytes
2 Dir(s) 738,406,612,992 bytes free -->
# rename model.F90 (phyto, mussel, etc.)
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>mv mymodel.F90 phyto.F90
# change naming scheme in CMakeList.txt (vi in linux):
# template --> institute name
# mymodel --> model name (e.g., mussel)
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>nano CMakeLists.txt
# change naming scheme in model_library.F90:
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>nano model_library.F90
# change naming scheme in model_library.F90:
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>nano phyto.F90
# backstep into fabm directory
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>cd ../fabm
# explore directory structure
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm>dir
<!-- Directory of C:\Users\Owner\fabmws2025\code\fabm
06/10/2025 03:14 PM <DIR> .
06/10/2025 03:14 PM <DIR> ..
06/10/2025 02:28 PM <DIR> .binder
06/10/2025 02:28 PM 313 .editorconfig
06/10/2025 02:28 PM <DIR> .github
06/10/2025 02:28 PM 233 .gitignore
06/10/2025 02:28 PM 649 .gitmodules
06/10/2025 02:28 PM 873 .zenodo.json
06/10/2025 03:17 PM <DIR> build
06/10/2025 02:28 PM 5,185 CMakeLists.txt
06/10/2025 02:28 PM 18,347 COPYING
06/10/2025 02:28 PM <DIR> extern
06/10/2025 02:28 PM <DIR> include
06/10/2025 02:28 PM 155 MANIFEST.in
06/10/2025 02:28 PM 1,037 pyproject.toml
06/10/2025 02:28 PM 871 README.md
06/10/2025 03:14 PM 46 setup.cfg
06/10/2025 02:28 PM 679 setup.py
06/10/2025 03:14 PM <DIR> src
06/10/2025 02:28 PM <DIR> testcases
06/10/2025 02:28 PM <DIR> util
11 File(s) 28,388 bytes
10 Dir(s) 738,410,835,968 bytes free -->
# modify setup configuration:
# add "cmake_opts=-DFABM_EXTRA_INSTITUTES=gardner -DFABM_GARDNER_BASE=../fabm-gardner"
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm>nano setup.cfg
# backstep to root directory (Note: shouldn't need to switch directories)
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm>cd ../../
# configure model --> pyfabm: "0-D box model"... note that this command is specific for pyfabm
(fabmws2025) C:\Users\Owner\fabmws2025>pip install code/fabm
<!-- Processing c:\users\owner\fabmws2025\code\fabm
Installing build dependencies ... done
... [continued]
Successfully installed pyfabm-2.1.5 -->
# advance to setups directory
(fabmws2025) C:\Users\Owner\fabmws2025>cd setups
# view directory structure
(fabmws2025) C:\Users\Owner\fabmws2025\setups>dir
<!-- Volume in drive C has no label.
Volume Serial Number is 624C-3F09
Directory of C:\Users\Owner\fabmws2025\setups
06/16/2025 05:45 AM <DIR> .
06/16/2025 05:45 AM <DIR> ..
06/10/2025 02:27 PM <DIR> global-fabmos
06/10/2025 02:27 PM <DIR> northsea-gotm
06/10/2025 02:27 PM <DIR> northsea-pygetm
06/16/2025 05:45 AM <DIR> pyfabm
0 File(s) 0 bytes
6 Dir(s) 738,413,338,624 bytes free -->
# --------------------------------------------------
# ----- create YAML file and add the following -----
# instances:
# phy1:
# model: gardner/phyto
# --------------------------------------------------
(fabmws2025) C:\Users\Owner\fabmws2025\setups>nano fabm-gardner.yaml
# retrieve list containing all components of the newly created model
# (1) -h, --help
(fabmws2025) C:\Users\Owner\fabmws2025\setups>fabm_describe_model -h
<!-- usage: fabm_describe_model [-h] [--all] [path]
... [continued]
options:
-h, --help show this help message and exit
--all, -a Show diagnostics that are by default excluded from output -->
# (2) path to YAML file
(fabmws2025) C:\Users\Owner\fabmws2025\setups>fabm_describe_model fabm-gardner.yaml
<!-- Initializing phy1...
model type: gardner/phyto
initialization succeeded.
... [continued]
Conserved quantities:
Dependencies: -->
# (3) can also check this using python (3rd option using Jupyter Notebook shown below)
(fabmws2025) C:\Users\Owner\fabmws2025\setups>python
Python 3.13.3 | packaged by conda-forge | (main, Apr 14 2025, 20:31:24) [MSC v.1943 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyfabm
>>> m=pyfabm.Model("fabm-gardner.yaml")
Initializing phy1...
model type: gardner/phyto
initialization succeeded.
>>> m.state_variables
[]
>>> m.parameters
[]
>>> exit
# now return to model directory to add traits
(fabmws2025) C:\Users\Owner\fabmws2025\setups>cd ../code/fabm-gardner
# ------------------------------------------------------
# ----- open model.F90, and register new variables -----
# define type ::
# type (type_state_variable_id) :: id_c
# real(rk) :: mumax
#
# define name, units, long_name ::
# call self%register_state_variable(self%id_c, "c", "mmol m-3", "concentration")
# call self%get_parameter(self%mumax, "mumax", "d-1", "max growth rate")
# ------------------------------------------------------
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>nano phyto.F90
# backstep to root directory
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>cd ../..
# configure model with new state variables
(fabmws2025) C:\Users\Owner\fabmws2025>pip install code/fabm
<!-- Processing c:\users\owner\fabmws2025\code\fabm
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
... [continued]
Successfully uninstalled pyfabm-2.1.5
Successfully installed pyfabm-2.1.5 -->
# advance into setups directory
(fabmws2025) C:\Users\Owner\fabmws2025>cd setups
# ----------------------------
# ----- update YAML file -----
# model: gardner/phyto (old)
# parameters: (new)
# mumax: 1
# initialization:
# c: 200
# ----------------------------
(fabmws2025) C:\Users\Owner\fabmws2025\setups>nano fabm-gardner.yaml
# check that variables are properly described
(fabmws2025) C:\Users\Owner\fabmws2025\setups>fabm_describe_model fabm-gardner.yaml
<!-- Initializing phy1...
model type: gardner/phyto
initialization succeeded.
... [continued]
Conserved quantities:
Dependencies: -->
# lets get started
(base) C:\Users\Owner>cd fabmws2025
(base) C:\Users\Owner\fabmws2025>conda activate fabmws2025
(fabmws2025) C:\Users\Owner\fabmws2025>cd code/fabm-gardner
# ------------------------------------------------------------------
# ----- add the following rocedure to model (do): in phyto.F90 -----
# ! Declare procedure in the type definition section
# procedure :: do
# ! Implement the subroutine
# subroutine do(self, _ARGUMENTS_DO_)
# class (type_gardner_phyto), intent(in) :: self
# _DECLARE_ARGUMENTS_DO_
# real(rk) :: c
# _LOOP_BEGIN_
# _GET_(self%id_c, c)
# _ADD_SOURCE_(self%id_c, self%mumax * c / 86400.0_rk)
# _LOOP_END_
# end subroutine do
# ------------------------------------------------------------------
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>nano phyto.F90
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>cd ../..
# compile model --> pyfabm: "0-D box model"
(fabmws2025) C:\Users\Owner\fabmws2025>pip install code/fabm
<!-- Processing c:\users\owner\fabmws2025\code\fabm
Installing build dependencies ... done
Getting requirements to build wheel ... done
... [continued]
Successfully installed pyfabm-2.1.5 -->
# -----------------------------------------------------------------------
# ----- add local variable -- later turned into diagnostic variable -----
# type (type_state_variable_id) :: id_c (old)
# type (type_state_variable_id) :: id_n
# type (type_diagnostic_variable_id) :: id_u ! DON'T HAVE TO EXPORT, CAN LEAVE AS LOCAL VARIABLE IN SUBROUTINE
# real(rk) :: K
# ...
# call self%register_state_variable(self%id_c, "c", "mmol m-3", "concentration") (old)
# call self%register_state_variable(self%id_n, "n", "mmol m-3", "nutrient concentration")
# call self%register_diagnostic_variable(self%id_u, "u", "mmol m-3 s-1", "nutrient uptake") ! DON'T HAVE TO EXPORT, CAN LEAVE AS LOCAL VARIABLE IN SUBROUTINE
# call self%get_parameter(self%K, "K", "mmol m-3", "half saturation nutrient concentration")
# ...
# real(rk) :: c, n, u
#
# _LOOP_BEGIN_
# _GET_(self%id_c, c)
# _GET_(self%id_n, n) (new)
#
# u = self%mumax * c * n / (n + self%K) / 86400.0_rk (new local variable created)
# _SET_DIAGNOSTIC_(self%id_u, u) (to export as diagnostic variable, set here and by using the commands above)
#
# _ADD_SOURCE_(self%id_c, self%mumax * c * n / (n + self%K) / 86400.0_rk)
# _ADD_SOURCE_(self%id_n, -u) (notice how local variable is used to streamline code)
# _LOOP_END_
# end subroutine do
# end module
# -----------------------------------------------------------------------
(fabmws2025) C:\Users\Owner\fabmws2025>cd code/fabm-gardner
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>nano phyto.F90
# change to root directory and compile model --> pyfabm: "0-D box model"
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>cd ../../
(fabmws2025) C:\Users\Owner\fabmws2025>pip install code/fabm
<!-- Processing c:\users\owner\fabmws2025\code\fabm
Installing build dependencies ... done
... [continued]
Successfully installed pyfabm-2.1.5 -->
# from the root directory, run jupyter lab
(fabmws2025) C:\Users\Owner\fabmws2025>jupyter lab
<!-- To access the server, open this file in a browser:
file:///C:/Users/Owner/AppData/Roaming/jupyter/runtime/jpserver-8408-open.html
... [continued]
[W 2025-06-17 04:37:30.846 LabApp] Could not determine jupyterlab build status without nodejs -->
# define model variables (3rd option) -----------------
# open... list_variables.ipynb
# --> change path to fabm-gardner.yaml
# --> add missing parameter to fabm-gardner.yaml
# run preliminary simulation of model -----------------
# open... simulate.ipynb
# --> change path to fabm-gardner.yaml
# --> add missing initialization to fabm-gardner.yaml
# run with GOTM... before running GOTM we're going to update our model...
(base) C:\Users\Owner>cd fabmws2025
(base) C:\Users\Owner\fabmws2025>conda activate fabmws2025
(fabmws2025) C:\Users\Owner\fabmws2025>git pull
<!-- remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
... [continued]
create mode 100644 install_gotm.bat -->
(fabmws2025) C:\Users\Owner\fabmws2025>git submodule update --init --recursive
# -------------------------------------------
# ----- add fabm module to install gotm -----
# cmake ... -DFABM_EXTRA_INSTITUTES=gardner -DFABM_GARDNER_BASE=code/fabm-gardner
# -------------------------------------------
(fabmws2025) C:\Users\Owner\fabmws2025>nano install_gotm.bat
# run gotm install --> specific for 1-D model
(fabmws2025) C:\Users\Owner\fabmws2025>install_gotm.bat
# ----------------------------
# ----- modify phyto.F90 -----
# type (type_dependency_id) :: id_par
# ...
# call self%register_dependency(self%id_par, standard_variables%downwelling_photosynthetic_radiative_flux)
# ...
# real(rk) :: c, n, u, par (!dependencies must still be assigned as a real number!)
# ...
# _LOOP_BEGIN_ (old)
# _GET_(self%id_c, c) (old)
# _GET_(self%id_n, n) (old)
# _GET_(self%id_par, par)
# ...
# u = self%mumax * c * min(n / (n + self%K), par / (par + 10.0_rk)) / 86400.0_rk - 0.1_rk / 86400.0_rk * c
# ----------------------------
(fabmws2025) C:\Users\Owner\fabmws2025>cd code/fabm-gardner
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>nano phyto.F90
# recompile gotm code modules
(fabmws2025) C:\Users\Owner\fabmws2025>../../install_gotm.bat
# change to gotm source code directory
(fabmws2025) C:\Users\Owner\fabmws2025\code\fabm-gardner>cd ../OneDrive\Desktop\Files\Research\FVCOM_FABM_ERSEM\FABM-ERSEM\gotm\hatteras
# copy fabm-gardner.yaml to gotm directory
(fabmws2025)C:\Users\Owner\OneDrive\Desktop\Files\Research\FVCOM_FABM_ERSEM\FABM-ERSEM\gotm\hatteras>cp C:\Users\Owner\fabmws2025\setups\fabm-gardner.yaml ./fabm.yaml
# remove inputs section from yaml that are not used by the model
(fabmws2025) C:\Users\Owner\OneDrive\Desktop\Files\Research\FVCOM_FABM_ERSEM\FABM-ERSEM\gotm\hatteras>nano gotm.yaml
# run gotm
(fabmws2025) C:\Users\Owner\OneDrive\Desktop\Files\Research\FVCOM_FABM_ERSEM\FABM-ERSEM\gotm\hatteras>gotm
## pyGETM - General Estuarine Transport Model
# gitHub: https://github.com/BoldingBruggeman/getm-rewrite
# Let's get started...
(base) C:\Users\Owner>cd fabmws2025
(base) C:\Users\Owner\fabmws2025>conda activate fabmws2025
(fabmws2025) C:\Users\Owner\fabmws2025>git stash
(fabmws2025) C:\Users\Owner\fabmws2025>git pull
(fabmws2025) C:\Users\Owner\fabmws2025>git stash pop
(fabmws2025) C:\Users\Owner\fabmws2025>install_gotm.bat
<!-- [39/735] Retrieving description of last GOTM commit...
-- On branch remotes/origin/v6.0 with commit id v6.0.7-3-g4a4754bd
... [continued]
-- Installing: C:/Users/Owner/anaconda3/envs/fabmws2025/lib/libconfig.a -->
(fabmws2025) C:\Users\Owner\fabmws2025>cat code/fabm/setup.cfg
<!-- [build_ext]
build_temp=../../build/pyfabm
cmake_opts=-DFABM_EXTRA_INSTITUTES=gardner -DFABM_GARDNER_BASE=../fabm-gardner -->
# ---------------------------------------------------
# ----- copy fabm setup.cfg to pygetm setup.cfg -----
# -DFABM_EXTRA_INSTITUTES=gardner -DFABM_GARDNER_BASE=../../fabm-gardner [Note: added ../ to _BASE]
# alt: use full file path... can include "" around filepath
# ---------------------------------------------------
(fabmws2025) C:\Users\Owner\fabmws2025>nano code/pygetm/python/setup.cfg
# compile model --> pygetm "general estuarine transport model" (3-D structured grid model)
(fabmws2025) C:\Users\Owner\fabmws2025>pip install code/pygetm/python
<!-- Successfully built pygetm
Installing collected packages: pygetm
... [continued]
Successfully installed pygetm-0.9.14 -->
# What are the data requirements for compiling getm? (input files, etc.)
# - much lower threshold than fvcom, but inputs could likely be taken from existing data
# Viable option for parameterizing ersem? (fvcom runs 1-year in about 24-26hrs... we've considered using a coarse grid approach but maybe this would be better).
# - configuration should be straightforwards... no more effort than compiling a coarse grid version
# - might be good option for ecologist at NOAA and academics --> python-based package with somewhat user friendly
# interface for examining data.
# - structured grid can be modified to increase resolution around specific depth profile (e.g., thermocline)
(fabmws2025) C:\Users\Owner\fabmws2025>cd setups/northsea-pygetm/
(fabmws2025) C:\Users\Owner\fabmws2025\setups\northsea-pygetm>ls -l
<!-- total 25
drwxr-xr-x 1 Owner 197121 0 Jun 10 14:27 Forcing
drwxr-xr-x 1 Owner 197121 0 Jun 10 14:27 Topo
-rw-r--r-- 1 Owner 197121 204 Jun 10 14:27 bdyinfo.dat
-rw-r--r-- 1 Owner 197121 11789 Jun 10 14:27 gotmturb.nml
-rw-r--r-- 1 Owner 197121 5161 Jun 10 14:27 riverinfo.dat
-rwxr-xr-x 1 Owner 197121 3453 Jun 18 03:17 run.py -->
(fabmws2025) C:\Users\Owner\fabmws2025\setups\northsea-pygetm>nano run.py
# run getm (note: can be run on multiple cores - using mpiexe - which would speed up run time)
(fabmws2025) C:\Users\Owner\fabmws2025\setups\northsea-pygetm>python run.py
<!-- INFO:root:2006-01-05 18:00:00
INFO:root:2006-01-05 19:00:00
... [continued]
INFO:root:Time spent in main loop: 48.549 s -->
# view output using pyncview (note: 0=bottom and 29=surface)
(fabmws2025) C:\Users\Owner\fabmws2025\setups\northsea-pygetm>pyncview north_sea_3d.nc
# add biogeochemical model to getm physics
(fabmws2025) C:\Users\Owner\fabmws2025\setups\northsea-pygetm>cp ../../fabm-configs/fabm-ersem.yaml fabm.yaml
# ---------------------------------------------
# ----- add biogeochemical to getm run.py -----
# Un-comment:
# fabm="fabm.yaml",
# sim.fabm.get_dependency("mole_fraction_of_carbon_dioxide_in_air").set(280.0)
# sim.fabm.get_dependency("absorption_of_silt").set(0.02)
# output.request(*sim.fabm.state_variables)
# ---------------------------------------------
(fabmws2025) C:\Users\Owner\fabmws2025\setups\northsea-pygetm>nano run.py
(fabmws2025) C:\Users\Owner\fabmws2025\setups\northsea-pygetm>python run.py
<!-- INFO:root:2006-01-09 23:00:00
INFO:root:2006-01-10 00:00:00
... [continued]
INFO:root: heat: 6.179548761933116e+22 J (mean conservative temperature: 10.777019129572848 degrees_Celsius)
INFO:root:Time spent in main loop: 703.507 s -->
## FABMOS - FABM Offline Simulator
# wiki: https://github.com/BoldingBruggeman/fabmos/wiki/User-guide
# add path to models ( -DFABM_EXTRA_INSTITUTES=gardner -DFABM_GARDNER_BASE=../fabm-gardner)... note that
# you do NOT have to add this if using precompiled model (e.g., ersem)
(fabmws2025) C:\Users\Owner\fabmws2025>nano code/fabmos/setup.cfg
(fabmws2025) C:\Users\Owner\fabmws2025>pip install code/fabmos
<!-- Building wheels for collected packages: fabmos
Building wheel for fabmos (pyproject.toml) ... done
... [continued]
Successfully installed fabmos-0.3.4.dev3+gdbc8c06 -->
(fabmws2025) C:\Users\Owner\fabmws2025>cd setups/global-fabmos
(fabmws2025) C:\Users\Owner\fabmws2025\setups\global-fabmos>ls -l
<!-- total 364
drwxr-xr-x 1 Owner 197121 0 Jun 10 14:27 BiogeochemData
drwxr-xr-x 1 Owner 197121 0 Jun 10 14:27 GCM
drwxr-xr-x 1 Owner 197121 0 Jun 10 14:27 Matrix10
drwxr-xr-x 1 Owner 197121 0 Jun 10 14:27 Matrix5
-rw-r--r-- 1 Owner 197121 6528 Jun 10 14:27 config_data.mat
-rw-r--r-- 1 Owner 197121 345369 Jun 10 14:27 grid.mat
-rw-r--r-- 1 Owner 197121 1960 Jun 18 03:17 run.py -->
(fabmws2025) C:\Users\Owner\fabmws2025\setups\global-fabmos>cp ../../fabm-configs/fabm-ersem.yaml fabm.yaml
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Un-comment:
# sim.fabm.get_dependency("mole_fraction_of_carbon_dioxide_in_air").set(280.0)
# sim.fabm.get_dependency("absorption_of_silt").set(0.02)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(fabmws2025) C:\Users\Owner\fabmws2025\setups\global-fabmos>nano run.py
(fabmws2025) C:\Users\Owner\fabmws2025\setups\global-fabmos>mpiexec -n 4 python run.py
<!-- INFO:root:2000-12-29 00:00:00
INFO:root:2000-12-30 00:00:00
... [continued]
INFO:root:Time spent in main loop: 2015.256 s -->
(fabmws2025) C:\Users\Owner\fabmws2025\setups\global-fabmos>pyncview output.nc
## parsac - open-source Python-based package for parallel sensitivity analysis and auto-calibration
# wiki - https://github.com/BoldingBruggeman/parsac/wiki
# replace sim and experiment path with location of GOMT: /Users/Owner/OneDrive/Desktop/Files/Research/FVCOM_FABM_ERSEM/FABM-ERSEM/gotm/hatteras
(fabmws2025) C:\Users\Owner\fabmws2025\setups>nano calibrate_gotm.py
# execute calibration script
(fabmws2025) C:\Users\Owner\fabmws2025\setups>python calibrate_gotm.py
<!-- INFO:Optimization.DE:Starting generation 85
100%|██████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:40<00:00, 4.08s/eval]
INFO:Optimization.DE: Range: 1.31e-04
INFO:Optimization.DE: Tolerance: 1.14e-04
INFO:Optimization.DE: Fitness range: 0.0006760615251550917
INFO:Optimization.DE:Starting generation 86
100%|██████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:26<00:00, 2.66s/eval]
INFO:Optimization.DE: Range: 0.00e+00
INFO:Optimization.DE: Tolerance: 1.14e-04
INFO:Optimization.DE: Fitness range: 0.0
INFO:Optimization.DE:Optimization complete as parameter and fitness ranges within specified tolerance -->
(fabmws2025) C:\Users\Owner\fabmws2025\setups>python -m parsac.optimize.plot calibrate_gotm.results.db