Calibration Twin: Recharge-Step Flux-Only K+Sy 1D#

Note

This page and its static assets are auto-generated by python -m tools.doc_gallery. The Sphinx build only reads committed PNG and JSON artifacts.

Same-solver noisy twin benchmark on linearized_unconfined_recharge_step_1d with K+Sy, flux-only outlet observations, and deliberately weak identifiability.

  • success_metric=best_fit_or_distribution

  • meets_target=True

  • truth_recovered=False

  • cost=0.410218

  • n_eval=24

  • calibration=31.46 s

  • candidate runtime=31.1 s

  • algorithm overhead=0.3578 s

  • actualize=0 s

  • launcher prep=0 s

  • runtime patch=0 s

  • simulate=1.296 s

  • output select=0 s

  • objective score=0 s

  • success_metric=best_fit_or_distribution

  • meets_target=True

  • truth_recovered=False

  • cost=0.407764

  • n_eval=48

  • calibration=105.2 s

  • candidate runtime=103.3 s

  • algorithm overhead=1.859 s

  • actualize=0 s

  • launcher prep=0 s

  • runtime patch=0 s

  • simulate=2.152 s

  • output select=0 s

  • objective score=0 s

  • success_metric=best_fit

  • meets_target=False

  • truth_recovered=False

  • cost=0.407793

  • n_eval=56

  • calibration=125.9 s

  • candidate runtime=124.3 s

  • algorithm overhead=1.554 s

  • actualize=0 s

  • launcher prep=0 s

  • runtime patch=0 s

  • simulate=2.221 s

  • output select=0 s

  • objective score=0 s

  • success_metric=best_fit

  • meets_target=False

  • truth_recovered=False

  • cost=0.407768

  • n_eval=16

  • calibration=26.37 s

  • candidate runtime=26.04 s

  • algorithm overhead=0.331 s

  • actualize=0 s

  • launcher prep=0 s

  • runtime patch=0 s

  • simulate=1.627 s

  • output select=0 s

  • objective score=0 s

  • success_metric=best_fit_or_distribution

  • meets_target=True

  • truth_recovered=True

  • cost=0.415671

  • n_eval=20

  • calibration=56.85 s

  • candidate runtime=37.88 s

  • algorithm overhead=18.96 s

  • actualize=0 s

  • launcher prep=0 s

  • runtime patch=0 s

  • simulate=1.894 s

  • output select=0 s

  • objective score=0 s

  • success_metric=best_fit_or_distribution

  • meets_target=True

  • truth_recovered=False

  • cost=0.649032

  • n_eval=12

  • posterior_samples=12

  • calibration=23.3 s

  • candidate runtime=22.74 s

  • algorithm overhead=0.5585 s

  • actualize=0 s

  • launcher prep=0 s

  • runtime patch=0 s

  • simulate=1.895 s

  • output select=0 s

  • objective score=0 s

Case Setup#

  • Solver: modflow6 in transient regime.

  • Benchmark family: Uncertain, Sparse-Data Benchmarks.

  • Truth parameters: K_global, Sy_global.

  • Observed outputs: q_east.

  • Benchmarked methods: random_search, optuna, cma_es, scipy_nelder_mead, gp_mapping, da_mh_gp.

  • Initial bounds widened to: K_global=[5e-05, 0.0003], Sy_global=[0.04, 0.18].

What It Shows#

  • A same-solver twin experiment where synthetic observations are generated first, then recovered through calibration on the same physics stack.

  • A case-level configuration figure, an objective trace, and an objective landscape or pairwise projection for the selected display method.

  • Per-method timing diagnostics with total calibration time plus average per-model preparation, simulation, and objective-evaluation costs.

How To Read It#

  • Open case_configuration.png first to understand the parameter block, outputs, and weighting before reading the optimization figures.

  • Use objective_trace to judge convergence speed and objective_landscape to see where the evaluated candidates concentrate relative to the truth and the selected solution(s).

  • Read timing metrics as benchmark diagnostics, not as universal solver performance numbers: they depend on the chosen method, case size, and evaluation budget.

Key Metrics#

  • Methods: 5

  • Display method: da_mh_gp

  • Posterior samples: 140

  • Calibration total: 383.3 s

  • Session prep: 384.5 s

  • Candidate runtime: 363.5 s

  • Algorithm overhead: 19.84 s

  • Model total: 2.596 s

  • Actualize: 0.1584 s

  • Launcher prep: 0.1584 s

  • Runtime patch: 0 s

  • Model prep: 0.1584 s

  • Model sim: 2.438 s

  • Output select: 0 s

  • Objective score: 0 s

Next Steps#

  • Compare this case with the other calibration gallery pages to see how deterministic and distribution-valued methods behave under different inverse problems.

  • Use the full benchmark suite in validation_cases/calibration when you need multi-seed comparisons or noisy variants beyond the curated gallery subset.

Reproduce#

Run the underlying example or validation case with:

python -m validation_cases.calibration.twin.transient.linearized_unconfined_recharge_step_1d.run_case --case flux_only_noisy

Refresh the committed gallery artifacts with:

python -m tools.doc_gallery

Case Parameters#

Benchmark Setup#

Field

Meaning

Value

Source

solver_name

Solver family used both to generate synthetic observations and to calibrate candidates.

modflow6

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

regime

Flow regime exercised by the inverse benchmark.

transient

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

output_names

Observables extracted from each candidate simulation and used in the composite objective.

q_east

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

observation_noise

Synthetic noise injected after the truth run, if any.

relative q_east=0.05; seed=31

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

perturbation_description

Any deliberate mismatch between truth generation and calibration setup.

Only the outlet flux time series is observed; no head data are used, and 5% relative noise is added to strengthen the weakly constrained inverse setting.

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

Calibrated Parameters#

Field

Meaning

Value

Source

K_global

Truth value, initial search interval, and acceptance tolerance for this calibrated parameter.

truth=0.0001, bounds=5e-05, 0.0003, tolerance=2e-05

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

Sy_global

Truth value, initial search interval, and acceptance tolerance for this calibrated parameter.

truth=0.1, bounds=0.04, 0.18, tolerance=0.05

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

Methods And Timing#

Field

Meaning

Value

Source

random_search

Method result summary including target status, evaluation count, total time, and mean per-model actualize / launcher / simulation / objective timings.

meets_target=true, cost=0.410218, n_eval=24, calib_s=36.4947, candidate_runtime_s=36.2963, algorithm_overhead_s=0.198431, actualize_s=0.0784446, launcher_prep_s=0.0784446, runtime_patch_s=0, model_sim_s=1.4339, output_select_s=0, objective_score_s=0

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

cma_es

Method result summary including target status, evaluation count, total time, and mean per-model actualize / launcher / simulation / objective timings.

meets_target=false, cost=0.407793, n_eval=56, calib_s=77.0399, candidate_runtime_s=76.6184, algorithm_overhead_s=0.421502, actualize_s=0.0691418, launcher_prep_s=0.0691418, runtime_patch_s=0, model_sim_s=1.29904, output_select_s=0, objective_score_s=0

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

simplex

Method result summary including target status, evaluation count, total time, and mean per-model actualize / launcher / simulation / objective timings.

meets_target=false, cost=0.407768, n_eval=16, calib_s=29.1811, candidate_runtime_s=29.0434, algorithm_overhead_s=0.137763, actualize_s=0.106476, launcher_prep_s=0.106476, runtime_patch_s=0, model_sim_s=1.70874, output_select_s=0, objective_score_s=0

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

gp_mapping

Method result summary including target status, evaluation count, total time, and mean per-model actualize / launcher / simulation / objective timings.

meets_target=true, cost=0.410619, n_eval=20, calib_s=52.4479, candidate_runtime_s=41.2383, algorithm_overhead_s=11.2096, actualize_s=0.145772, launcher_prep_s=0.145772, runtime_patch_s=0, model_sim_s=1.91614, output_select_s=0, objective_score_s=0

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

da_mh_gp

Method result summary including target status, evaluation count, total time, and mean per-model actualize / launcher / simulation / objective timings.

meets_target=true, cost=0.649032, n_eval=140, posterior_samples=140, calib_s=383.292, candidate_runtime_s=363.457, algorithm_overhead_s=19.8351, actualize_s=0.158424, launcher_prep_s=0.158424, runtime_patch_s=0, model_sim_s=2.43769, output_select_s=0, objective_score_s=0

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

Displayed Metrics#

Field

Meaning

Value

Source

method_count

Metric surfaced on the gallery page for the selected display method.

5

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

display_method_name

Metric surfaced on the gallery page for the selected display method.

da_mh_gp

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

posterior_sample_count

Metric surfaced on the gallery page for the selected display method.

140

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

calibration_time_seconds

Metric surfaced on the gallery page for the selected display method.

383.3 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

session_prepare_time_seconds

Metric surfaced on the gallery page for the selected display method.

384.5 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

estimated_candidate_runtime_seconds

Metric surfaced on the gallery page for the selected display method.

363.5 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

algorithm_overhead_time_seconds

Metric surfaced on the gallery page for the selected display method.

19.84 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

mean_candidate_total_time_seconds

Metric surfaced on the gallery page for the selected display method.

2.596 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

mean_candidate_actualize_time_seconds

Metric surfaced on the gallery page for the selected display method.

0.1584 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

mean_candidate_launcher_prepare_time_seconds

Metric surfaced on the gallery page for the selected display method.

0.1584 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

mean_candidate_runtime_patch_time_seconds

Metric surfaced on the gallery page for the selected display method.

0 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

mean_candidate_preparation_time_seconds

Metric surfaced on the gallery page for the selected display method.

0.1584 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

mean_candidate_simulation_time_seconds

Metric surfaced on the gallery page for the selected display method.

2.438 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

mean_candidate_output_selection_time_seconds

Metric surfaced on the gallery page for the selected display method.

0 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

mean_candidate_objective_compute_time_seconds

Metric surfaced on the gallery page for the selected display method.

0 s

docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json

Source Pointers#

  • validation_cases/calibration/README.md

  • validation_cases/calibration/run_benchmarks.py

  • validation_cases/calibration/plotting.py

  • validation_cases/calibration/shared/definitions.py

  • validation_cases/calibration/shared/runtime.py

  • validation_cases/calibration/twin/transient/linearized_unconfined_recharge_step_1d/run_case.py

  • validation_cases/calibration/twin/transient/linearized_unconfined_recharge_step_1d/experiment.py

  • hydromodpy/calibration/cli.py

  • hydromodpy/calibration/engine.py

Artifacts#

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__configuration.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__random_search_landscape.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__random_search_trace.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__cma_es_landscape.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__cma_es_trace.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__simplex_landscape.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__simplex_trace.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__gp_mapping_landscape.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__gp_mapping_trace.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__da_mh_gp_landscape.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__da_mh_gp_trace.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6__da_mh_gp_posterior.png

  • docs/readthedocs/source/_static/capability_gallery/calibration/calibration_twin_linearized_recharge_step_flux_only_noisy_modflow6_summary.json stores the displayed metrics plus source hashes used by python -m tools.doc_gallery --check.