Skip to content

Digital twinning of a high-temperature aquifer thermal energy storage system

This script was prepared for the 2025 DTE & AICOMAS conference:

Ø. Klemetsdal, O. Andersen, S. Krogstad, O. Møyner, "Predictive Digital Twins for Underground Thermal Energy Storage using Differentiable Programming"

The example demonstrates digital twinning of high-temperature aquifer thermal energy storage (HT-ATES). We first set up and simulate a high-fidelity model of the system, before we construct reduced-order models at a lower resolution and calibrate using adjoint-based optimization so that its output matches that of the high-fidelity model.

Add modules to namespace

julia
using Jutul, JutulDarcy # Jutul and JutulDarcy modules
using Fimbul # Fimbul module
using HYPRE # Iterative linear solvers
using GLMakie # Visualization

Set up model

We use the first realization of the EGG benchmark model [?], and place a well doublet near the center of the domain. The fluid model is a single-phase water system with PVT formulations taken from the NIST database, which can be conveniently set up with the :geothermal keyword.

The HT-ATES system is operated by charging the aquifer through the main well (labelled "Hot" in this setup) with water at 25 l/s and 90°C from June to September while a supporting well (labelled "Cold") is used to extract water at a constant BHP of 25 bar. The system is then discharged from December to March by producing hot water from the main well at a rate of 25 l/s with the supporting well injecting water at 10°C at a BHP of 45 bar. For the remaining months, the system is left to rest with no external forces applied. This cycle of charge – rest – discharge – rest is repeated for a total of 5 years.

julia
hifi = egg_ates(;
    use_bc = false, report_interval = si_unit(:year)/12/4)
Jutul case with 240 time-steps (5 years) and forces for each step.

Model:

MultiModel with 5 models and 18 cross-terms. 37181 equations, 37181 degrees of freedom and 301469 parameters.

  models:
    1) Reservoir (37106x37106)
       SinglePhaseSystem{AqueousPhase, Tuple{Float64}}(AqueousPhase(), (998.20715,))
       ∈ MinimalTPFATopology (18553 cells, 52113 faces)
    2) WellA (23x23)
       SinglePhaseSystem{AqueousPhase, Tuple{Float64}}(AqueousPhase(), (998.20715,))
       ∈ MultiSegmentWell [WellA] (8 nodes, 7 segments, 7 perforations)
    3) WellB (23x23)
       SinglePhaseSystem{AqueousPhase, Tuple{Float64}}(AqueousPhase(), (998.20715,))
       ∈ MultiSegmentWell [WellB] (8 nodes, 7 segments, 7 perforations)
    4) WellObs (23x23)
       SinglePhaseSystem{AqueousPhase, Tuple{Float64}}(AqueousPhase(), (998.20715,))
       ∈ MultiSegmentWell [WellObs] (8 nodes, 7 segments, 7 perforations)
    5) Facility (6x6)
       JutulDarcy.PredictionMode()
       ∈ WellGroup([:WellA, :WellB, :WellObs], true, true)

  cross_terms:
    1) WellA <-> Reservoir (Eqs: mass_conservation <-> mass_conservation)
       JutulDarcy.ReservoirFromWellFlowCT
    2) WellA <-> Reservoir (Eqs: energy_conservation <-> energy_conservation)
       JutulDarcy.ReservoirFromWellThermalCT
    3) WellB <-> Reservoir (Eqs: mass_conservation <-> mass_conservation)
       JutulDarcy.ReservoirFromWellFlowCT
    4) WellB <-> Reservoir (Eqs: energy_conservation <-> energy_conservation)
       JutulDarcy.ReservoirFromWellThermalCT
    5) WellObs <-> Reservoir (Eqs: mass_conservation <-> mass_conservation)
       JutulDarcy.ReservoirFromWellFlowCT
    6) WellObs <-> Reservoir (Eqs: energy_conservation <-> energy_conservation)
       JutulDarcy.ReservoirFromWellThermalCT
    7) WellA  -> Facility (Eq: control_equation)
       JutulDarcy.FacilityFromWellFlowCT
    8) Facility  -> WellA (Eq: mass_conservation)
       JutulDarcy.WellFromFacilityFlowCT
    9) Facility  -> WellA (Eq: energy_conservation)
       JutulDarcy.WellFromFacilityThermalCT
    10) WellA  -> Facility (Eq: temperature_equation)
       JutulDarcy.FacilityFromWellTemperatureCT
    11) WellB  -> Facility (Eq: control_equation)
       JutulDarcy.FacilityFromWellFlowCT
    12) Facility  -> WellB (Eq: mass_conservation)
       JutulDarcy.WellFromFacilityFlowCT
    13) Facility  -> WellB (Eq: energy_conservation)
       JutulDarcy.WellFromFacilityThermalCT
    14) WellB  -> Facility (Eq: temperature_equation)
       JutulDarcy.FacilityFromWellTemperatureCT
    15) WellObs  -> Facility (Eq: control_equation)
       JutulDarcy.FacilityFromWellFlowCT
    16) Facility  -> WellObs (Eq: mass_conservation)
       JutulDarcy.WellFromFacilityFlowCT
    17) Facility  -> WellObs (Eq: energy_conservation)
       JutulDarcy.WellFromFacilityThermalCT
    18) WellObs  -> Facility (Eq: temperature_equation)
       JutulDarcy.FacilityFromWellTemperatureCT

Model storage will be optimized for runtime performance.

Visualize the model

We visualize the model interactively using plot_reservoir.

julia
plot_reservoir(hifi, reservoir_model(hifi.model).data_domain)

Simulate high-fidelity model

We set up a simulator for the high-fidelity model and simulate the system.

julia
results_hifi = simulate_reservoir(hifi)
ReservoirSimResult with 240 entries:

  wells (3 present):
    :WellObs
    :WellB
    :WellA
    Results per well:
       :lrat => Vector{Float64} of size (240,)
       :wrat => Vector{Float64} of size (240,)
       :temperature => Vector{Float64} of size (240,)
       :control => Vector{Symbol} of size (240,)
       :Aqueous_mass_rate => Vector{Float64} of size (240,)
       :bhp => Vector{Float64} of size (240,)
       :wcut => Vector{Float64} of size (240,)
       :mass_rate => Vector{Float64} of size (240,)
       :rate => Vector{Float64} of size (240,)

  states (Vector with 240 entries, reservoir variables for each state)
    :Pressure => Vector{Float64} of size (18553,)
    :TotalMasses => Matrix{Float64} of size (1, 18553)
    :TotalThermalEnergy => Vector{Float64} of size (18553,)
    :FluidEnthalpy => Matrix{Float64} of size (1, 18553)
    :Temperature => Vector{Float64} of size (18553,)
    :PhaseMassDensities => Matrix{Float64} of size (1, 18553)
    :RockInternalEnergy => Vector{Float64} of size (18553,)
    :FluidInternalEnergy => Matrix{Float64} of size (1, 18553)
    :PhaseViscosities => Matrix{Float64} of size (1, 18553)

  time (report time for each state)
     Vector{Float64} of length 240

  result (extended states, reports)
     SimResult with 240 entries

  extra
     Dict{Any, Any} with keys :simulator, :config

  Completed at Jul. 07 2025 22:07 after 41 seconds, 719 milliseconds, 22.94 microseconds.

Visualize the reservoir states

We visualize the results of the high-fidelity simulation interactively using plot_reservoir. We see that a hot thermal plume develops around the main well, while a cold plume develops around the supporting well. After a few cycles, the plumes start to interact slightly.

julia
plot_reservoir(hifi, results_hifi.states;
    key = :Temperature, step = length(hifi.dt),
    colormap = :seaborn_icefire_gradient)

Inspect well output

We can also inspect the well output using plot_well_results.

julia
plot_well_results(results_hifi.wells)

Construct proxy model

The high-fidelity model is posed on a logically Cartesian mesh with 60×60×7 cells. We construct a proxy model by coarsening the high-fidelity model to 15×15×3 cells using the coarsen_reservoir_case function.

julia
coarsening = (15,15,3)
proxy = JutulDarcy.coarsen_reservoir_case(hifi, coarsening,
    method=:ijk,
    setup_arg = (block_backend = true,);
)
results_proxy = simulate_reservoir(proxy, info_level=0)
plot_reservoir(proxy, results_proxy.states;
    key = :Temperature, step = length(hifi.dt),
    colormap = :seaborn_icefire_gradient)

Compare proxy models to high-fidelity model

We compare the well output of the proxy models to the high-fidelity model.

julia
plot_well_results([results_hifi.wells, results_proxy.wells],
    names = ["High-fidelity", "Proxy"])

Define mismatch objective function

We define an objective function that measures the mismatch in well output between the high-fidelity model and the proxy model. The objective function is defined as the sum of the squared differences in production temperature of all wells, weighted by the inverse of the units of the respective quantities. The objective function is also scaled by the total time simulated in the high-fidelity model.

julia
states_hf = results_hifi.result.states
states_proxy = results_proxy.result.states
240-element Vector{OrderedDict{Symbol, Any}}:
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [3.4526569036489357e6, 3.4580050929046767e6, 3.4960555658529014e6, 3.551712175297575e6, 3.5846252334411e6, 3.6142761186056198e6, 3.6450042582871714e6, 3.656345291008661e6, 3.657882134979945e6, 3.660328904838103e6  …  3.3513904463122454e6, 3.3693855159617555e6, 3.3908401756137433e6, 3.4262275939511633e6, 3.3236369314277777e6, 3.3250645355892153e6, 3.327310087601747e6, 3.3331551372908535e6, 3.3445623893510345e6, 3.3473516403375017e6], :TotalMasses => [455965.3920599099 1.4185888653210783e6 … 557151.7977182243 101302.42970287481], :TotalThermalEnergy => [1.687551582215362e12, 5.249529495276468e12, 7.499163609102e12, 7.686696100697611e12, 8.249155739223399e12, 8.249192832949213e12, 8.249230089284115e12, 7.499334299452283e12, 6.561889598817289e12, 5.0621428992851875e12  …  6.00827853973643e12, 6.008291541755489e12, 4.693895966202006e12, 1.5020221843681875e12, 9.387562325296041e11, 5.257090352810471e12, 4.881641684218826e12, 3.191854269042379e12, 2.0652407504543643e12, 3.754512378597019e11], :FluidEnthalpy => [1.3525778825226068e6 1.3524055241461217e6 … 1.3544234921972577e6 1.354242500565252e6], :Temperature => [323.2343092992202, 323.1936958846079, 323.1867185832251, 323.1897039488857, 323.1908364984362, 323.1926961974489, 323.1945717966381, 323.19624391241547, 323.19482191749967, 323.2024551539154  …  323.68980575054775, 323.69074127722047, 323.6850754067146, 323.67993882102166, 323.6760307747807, 323.67962191068546, 323.6836593332409, 323.68495990105447, 323.672497544426, 323.6300333028371]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [24.955178779006303, 13.611766855333908, 7.169066209861422], :Pressure => [4.242512921739692e6, 4.255615640487741e6, 4.336953319488003e6, 4.405697449879149e6], :PhaseMassDensities => [967.2842437271602 967.2941482684889 967.3393454320243 967.3816629726814], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [283.62255357579784 364.6613028072818 243.11889449100855 243.12953004899626], :TotalThermalEnergy => [4.3218586779327977e8, 5.556599849077417e8, 3.70429276090784e8, 3.704150151931988e8], :FluidEnthalpy => [1.5281924236584536e6 1.5281695916667273e6 1.5281382063026838e6 1.5280837652987968e6], :Temperature => [363.14999954129235, 363.1442694097818, 363.1330285366141, 363.11737239774004]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [-25.12813732626597, -14.430857121034151, -6.935336057500528], :Pressure => [2.5e6, 2.564040590400435e6, 2.6755612785014524e6, 2.760106388804982e6], :PhaseMassDensities => [988.9965150303556 989.0269959518124 988.9988509293096 988.9821603835417], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.9889240308921 372.8543933621036 248.56252195906129 248.5583271673838], :TotalThermalEnergy => [3.9166066713129526e8, 5.035551213002811e8, 3.358558768816346e8, 3.3596212620946485e8], :FluidEnthalpy => [1.3531334230383632e6 1.3531334236959992e6 1.3538980700783322e6 1.3544338684701973e6], :Temperature => [323.4256424570484, 323.4215381923319, 323.593050872397, 323.7127904483713]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.024955177928219458, -0.007323840905425007, 0.0009342920409531481], :Pressure => [3.400536150171095e6, 3.439375498370441e6, 3.536416639649644e6, 3.6140380073994407e6], :PhaseMassDensities => [989.4824014534422 989.5008202370101 989.4382958414851 989.3796985200058], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.1313933711686 373.03302090931993 248.67296651168115 248.6582393985068], :TotalThermalEnergy => [3.914311768454302e8, 5.032634780809021e8, 3.3571776710407335e8, 3.3590195717120695e8], :FluidEnthalpy => [1.352588086252259e6 1.3525882798975832e6 1.3536114128878345e6 1.3545107727226058e6], :Temperature => [323.2400717006699, 323.2375992184517, 323.47032422775493, 323.67537326480135]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [24.95517875, -25.128137328040285, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = -1.0e-20, bhp = 2.5e6), :WellA => (rate = 0.025,)), 1), :SurfaceTemperature => [363.14999954129235, 323.4256424570484, 323.2400717006699]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [3.4514571661250554e6, 3.456634635654e6, 3.4942491560748797e6, 3.549209605680172e6, 3.581626639597787e6, 3.610628118491084e6, 3.64056933232199e6, 3.6515596414447e6, 3.6530057157520563e6, 3.6554233915158547e6  …  3.3513067316064094e6, 3.369305862290823e6, 3.390752627346202e6, 3.426120933254414e6, 3.3235355264314623e6, 3.3249643402062347e6, 3.3272123522011023e6, 3.333061812537836e6, 3.344477146332981e6, 3.3472713530072207e6], :TotalMasses => [455965.2544300566 1.4185864326608714e6 … 557152.6561333853 101302.5772330148], :TotalThermalEnergy => [1.687549064945837e12, 5.249566838861507e12, 7.499213201761451e12, 7.686740594233322e12, 8.249198823890104e12, 8.249235116511841e12, 8.249276761842264e12, 7.499367376298588e12, 6.56192138980774e12, 5.06216947325209e12  …  6.008231728817378e12, 6.008241375215014e12, 4.69385742599588e12, 1.502010529316261e12, 9.387482416832561e11, 5.2570477554718545e12, 4.881602354687152e12, 3.1918272606128887e12, 2.0652198061579624e12, 3.754476385635903e11], :FluidEnthalpy => [1.3525753303131452e6 1.3524153810612422e6 … 1.3544087512721904e6 1.3542285680951625e6], :Temperature => [323.2337908064286, 323.1960874895195, 323.18893572804774, 323.19163406617076, 323.1925696012011, 323.1943890142688, 323.1964361072101, 323.1976822549874, 323.19640612833234, 323.2041760473504  …  323.68716401418044, 323.68791029821864, 323.6822914732229, 323.6773076583304, 323.6731445236937, 323.67687438014417, 323.6809274613388, 323.68209078060187, 323.6690593496427, 323.62678363650593]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [24.955178760451492, 13.608860341798305, 7.142557621934226], :Pressure => [4.176567349819286e6, 4.1896688338378235e6, 4.271006063395834e6, 4.33977361515331e6], :PhaseMassDensities => [967.2536987738813 967.261568302336 967.3041748545127 967.3418058260248], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [283.61359732772087 364.64902044940334 243.11005516077392 243.11951285546593], :TotalThermalEnergy => [4.3218701093125415e8, 5.556653098837726e8, 3.7043610037856156e8, 3.704277761175676e8], :FluidEnthalpy => [1.5281765349873463e6 1.5281674886621994e6 1.5281536628941589e6 1.5281310653622577e6], :Temperature => [363.14999983474274, 363.14730926503154, 363.13993973768527, 363.13130414299883]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [-25.12789025097495, -14.430317975302415, -6.934897768182122], :Pressure => [2.5e6, 2.564040238057524e6, 2.675560161159014e6, 2.7601047156195706e6], :PhaseMassDensities => [988.9938994890693 989.0243803523343 988.9970182573242 988.9810602819389], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.98815711413175 372.853407304331 248.56206135835362 248.5580506816947], :TotalThermalEnergy => [3.916667720905754e8, 5.0356297081381005e8, 3.358595426082159e8, 3.359643257359875e8], :FluidEnthalpy => [1.3531580540441682e6 1.3531580544174805e6 1.3539153255361775e6 1.3544442225407239e6], :Temperature => [323.4313989835665, 323.42729451896156, 323.5970833227249, 323.71521003872016]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.024955177011269182, -0.006902000139558772, 0.0012829939296025786], :Pressure => [3.4011054269179497e6, 3.4399446771465195e6, 3.5369850899017076e6, 3.614606062520739e6], :PhaseMassDensities => [989.4799301438022 989.4982964810081 989.434566206101 989.3822435569664], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.1306687453357 373.0320694757221 248.67202915207127 248.65887903606026], :TotalThermalEnergy => [3.914375232971056e8, 5.0327179558263165e8, 3.3572572602011025e8, 3.3589734985138994e8], :FluidEnthalpy => [1.3526139142443037e6 1.3526146019642628e6 1.3536490954686443e6 1.3544893339227093e6], :Temperature => [323.2460689114504, 323.24371177161527, 323.4790901897996, 323.6703284650109]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [24.95517875, -25.127890251982144, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = -1.0e-20, bhp = 2.5e6), :WellA => (rate = 0.025,)), 2), :SurfaceTemperature => [363.14999983474274, 323.4313989835665, 323.2460689114504]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [3.4502043664823174e6, 3.455209210816106e6, 3.4923971251987964e6, 3.5466969859926566e6, 3.578665663897384e6, 3.6071535363155785e6, 3.636495017418974e6, 3.647222127825763e6, 3.6486194750340907e6, 3.651050197639043e6  …  3.351257383142343e6, 3.3692648571830317e6, 3.390708314357002e6, 3.4260645192326293e6, 3.323460204841939e6, 3.3248906102660387e6, 3.3271417444718867e6, 3.3329976860475116e6, 3.344425757378684e6, 3.3472290902588796e6], :TotalMasses => [455965.03863070224 1.4185839972045608e6 … 557153.5038264185 101302.71887104253], :TotalThermalEnergy => [1.6875481530986143e12, 5.24960342293951e12, 7.499261762286054e12, 7.686784329200947e12, 8.249241766635418e12, 8.249280479519809e12, 8.249353307678951e12, 7.499401284415436e12, 6.561953372059539e12, 5.0621961792756045e12  …  6.008185507028213e12, 6.008192073195324e12, 4.693819769867211e12, 1.5019988278460095e12, 9.387403875241313e11, 5.257005860282902e12, 4.881563635117446e12, 3.191800613298e12, 2.065199317027814e12, 3.754442203881389e11], :FluidEnthalpy => [1.3525741389468405e6 1.35242501049272e6 … 1.3543943411680532e6 1.3542153478338374e6], :Temperature => [323.23359367612625, 323.19842951310943, 323.191105784733, 323.1935306805467, 323.1942973162845, 323.19621012988733, 323.1995298588871, 323.1991631756339, 323.1980057487717, 323.2059117907064  …  323.68455590084085, 323.6851285262993, 323.67957186580884, 323.6746665878041, 323.6703079190247, 323.67417241899267, 323.6782382476704, 323.6792603376601, 323.6656962372542, 323.6236978821063]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [24.95517875542967, 13.623758044434013, 7.1326795052287455], :Pressure => [4.1502835803255113e6, 4.163384574001283e6, 4.244705777491803e6, 4.313481992413355e6], :PhaseMassDensities => [967.2415245697523 967.2486739293709 967.2902422781829 967.3261314792986], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [283.61002766463037 364.6441593853178 243.10655352241847 243.11557346246394], :TotalThermalEnergy => [4.321874662516402e8, 5.556672594206963e8, 3.704387030362181e8, 3.7043258483654267e8], :FluidEnthalpy => [1.528170200909563e6 1.5281660327894539e6 1.5281591901673544e6 1.5281484267440562e6], :Temperature => [363.14999991415084, 363.1483848478852, 363.14255560430354, 363.1365288671363]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [-25.127820322856923, -14.429921034731578, -6.934539645838606], :Pressure => [2.5e6, 2.5640401073026853e6, 2.6755595116135976e6, 2.7601036664708783e6], :PhaseMassDensities => [988.9923715192738 989.022852379463 988.9961750400652 988.9808968166233], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.98770908998785 372.85283127212927 248.56184943474193 248.55800959837993], :TotalThermalEnergy => [3.916703385244277e8, 5.0356755639681965e8, 3.3586122909757316e8, 3.359646518757757e8], :FluidEnthalpy => [1.35317244321033e6 1.353172443462915e6 1.3539232642151779e6 1.354445757478855e6], :Temperature => [323.43476188159985, 323.4306573060099, 323.5989385308695, 323.71556878237993]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.02495516981252359, -0.006430265260690634, 0.0017325195634633587], :Pressure => [3.4016470966848833e6, 3.440485555244269e6, 3.537523385212827e6, 3.6151425379104028e6], :PhaseMassDensities => [989.4598908657767 989.4779722831149 989.4118382904717 989.370034826532], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.1247929221304 373.0244074336271 248.66631700384949 248.65581064743287], :TotalThermalEnergy => [3.914848916104493e8, 5.0333355518922013e8, 3.3577170612298423e8, 3.359222599416322e8], :FluidEnthalpy => [1.352805124581349e6 1.3528084962548367e6 1.3538656412242737e6 1.3546067694284625e6], :Temperature => [323.2907055108472, 323.28897473713937, 323.52964124858534, 323.6977253810533]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [24.95517875, -25.127820323538394, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = -1.0e-20, bhp = 2.5e6), :WellA => (rate = 0.025,)), 3), :SurfaceTemperature => [363.14999991415084, 323.43476188159985, 323.2907055108472]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [3.44900808171516e6, 3.453842631800083e6, 3.490616620552962e6, 3.5442860502022603e6, 3.5758376954423157e6, 3.603879729638403e6, 3.6327047583815465e6, 3.6432058350205203e6, 3.644569329049035e6, 3.6470246228523217e6  …  3.3512591138300546e6, 3.3692757689609835e6, 3.390716848743715e6, 3.426062303173499e6, 3.323434876931398e6, 3.3248668812458855e6, 3.327121173979958e6, 3.3329838431095304e6, 3.3444253760520085e6, 3.3472386242508455e6], :TotalMasses => [455964.78683466377 1.4185816202936019e6 … 557154.348750296 101302.85720685062], :TotalThermalEnergy => [1.687548371554505e12, 5.249639496906117e12, 7.499309658892527e12, 7.686827660358852e12, 8.249285316129098e12, 8.249332161221048e12, 8.249472719812809e12, 7.499436401995684e12, 6.561985451766965e12, 5.062222926658376e12  …  6.008139777973695e12, 6.008143478920044e12, 4.693782778086977e12, 1.5019871597001724e12, 9.387326451003129e11, 5.256964538706708e12, 4.881525415019488e12, 3.1917742656902676e12, 2.0651791949535303e12, 3.754409364438686e11], :FluidEnthalpy => [1.3525739363032233e6 1.3524345183721196e6 … 1.3543802055860145e6 1.354202663111302e6], :Temperature => [323.2336238709064, 323.20073932851125, 323.1932467033036, 323.1954106825705, 323.19605144111097, 323.1982927271066, 323.2043851498364, 323.2007023035828, 323.1996141992868, 323.20765423327447  …  323.6819761601726, 323.6823872661221, 323.67690082602485, 323.6720336479249, 323.6675122203701, 323.6715080043004, 323.6755842778095, 323.6764622880526, 323.66239393982676, 323.6207338713798]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [24.9551787531123, 13.637110956105804, 7.1288029325315625], :Pressure => [4.1352176545253685e6, 4.1483183687477033e6, 4.229625644778575e6, 4.298405068940166e6], :PhaseMassDensities => [967.2345462898672 967.2413651389556 967.2824171875766 967.3174789641603], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [283.6079815261004 364.64140403624475 243.10458686264548 243.11339884822442], :TotalThermalEnergy => [4.3218772716682124e8, 5.556682208640443e8, 3.704399885688529e8, 3.7043491782214963e8], :FluidEnthalpy => [1.528166569851459e6 1.5281646403218035e6 1.52816125039631e6 1.5281561057727847e6], :Temperature => [363.1499999507927, 363.148878411114, 363.1438109981347, 363.139022917888]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [-25.129666974686053, -14.430639892271717, -6.9347212712033075], :Pressure => [2.5e6, 2.5640419248258616e6, 2.675561975165513e6, 2.760106298094277e6], :PhaseMassDensities => [988.9912104585953 989.0216922255113 988.9956595272467 988.9810420466408], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.987368649216 372.85239390439347 248.56171987223928 248.55804609866442], :TotalThermalEnergy => [3.916730485485779e8, 5.0357104059397197e8, 3.358622626203896e8, 3.3596436358298045e8], :FluidEnthalpy => [1.3531833771321622e6 1.35318337732408e6 1.3539281304498566e6 1.3544444013809257e6], :Temperature => [323.4373172519245, 323.43321247641165, 323.60007554719726, 323.7152517267655]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.024955156884147463, -0.00591967766549613, 0.0022568455263581072], :Pressure => [3.402168179175689e6, 3.441004704512509e6, 3.538036958604977e6, 3.6156519661471737e6], :PhaseMassDensities => [989.4108640622956 989.4284329526561 989.3580759721506 989.331490204054], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.11041751253686 373.00573154603114 248.65280505950727 248.6461233272079], :TotalThermalEnergy => [3.9159996436901003e8, 5.034830490858787e8, 3.358798085963929e8, 3.359998803735848e8], :FluidEnthalpy => [1.3532693363695634e6 1.3532775359932114e6 1.3543744828825896e6 1.354972232495296e6], :Temperature => [323.3991224018518, 323.39851789276963, 323.64847387979455, 323.7830599049908]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [24.95517875, -25.129666975203882, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = -1.0e-20, bhp = 2.5e6), :WellA => (rate = 0.025,)), 4), :SurfaceTemperature => [363.1499999507927, 323.4373172519245, 323.3991224018518]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [3.447795770131863e6, 3.4524611331784353e6, 3.4888299054651144e6, 3.5418908025297634e6, 3.573047783397765e6, 3.600687311187291e6, 3.6290456024119738e6, 3.639342461007488e6, 3.640678986026214e6, 3.643161690088703e6  …  3.3512390711448193e6, 3.3692615191098964e6, 3.390696109302036e6, 3.4260241401332943e6, 3.3233935373705896e6, 3.32482693857685e6, 3.327083944725507e6, 3.33295197068122e6, 3.3444036222303538e6, 3.3472235080610565e6], :TotalMasses => [455964.49061601446 1.418579257391785e6 … 557155.1740905188 101302.98937173349], :TotalThermalEnergy => [1.687549570587871e12, 5.249675012950943e12, 7.499356832759516e12, 7.686870581650939e12, 8.249330180488992e12, 8.249394380574604e12, 8.24965128657709e12, 7.4994732137771045e12, 6.562017454154402e12, 5.062249570958787e12  …  6.008094473587528e12, 6.008095516485069e12, 4.693746354998721e12, 1.5019755491357368e12, 9.38725003363427e11, 5.256923727928262e12, 4.881487636354223e12, 3.19174818256198e12, 2.0651594130201675e12, 3.754377729849709e11], :FluidEnthalpy => [1.3525745701926425e6 1.3524438674496156e6 … 1.3543663019924676e6 1.354190435866262e6], :Temperature => [323.2338505379188, 323.20301301315254, 323.1953549433365, 323.19727282503965, 323.1978599395216, 323.2008085032009, 323.21166839276253, 323.2023196082355, 323.2012204745385, 323.2093916292448  …  323.6794201342119, 323.67968137003254, 323.67427052410545, 323.66941329938084, 323.6647526972789, 323.66887634248326, 323.672960772927, 323.67369212373694, 323.65914722697244, 323.6178783370407]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [24.955178752065, 13.645982335025636, 7.127589079787873], :Pressure => [4.1252214535772847e6, 4.1383219836927205e6, 4.219620018164597e6, 4.288400238891038e6], :PhaseMassDensities => [967.2299162252605 967.2365826291391 967.2773785329368 967.3120461226611], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [283.6066239202513 364.6396010725201 243.10332051061346 243.11203342622906], :TotalThermalEnergy => [4.321879002487831e8, 5.556687320861531e8, 3.7044064787504154e8, 3.704360757526302e8], :FluidEnthalpy => [1.5281641604952943e6 1.5281632633433845e6 1.5281615786849072e6 1.5281591085875072e6], :Temperature => [363.14999996735185, 363.14910602128265, 363.1444149538482, 363.1402164644858]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [-25.130977245413852, -14.431058410759256, -6.934758487777457], :Pressure => [2.5e6, 2.5640432075468227e6, 2.6755636142477524e6, 2.760107970439246e6], :PhaseMassDensities => [988.9902115142863 989.0206939248736 988.9952801247578 988.9813155678817], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.98707574344644 372.85201755391955 248.5616245179935 248.5581148420501], :TotalThermalEnergy => [3.9167538017296416e8, 5.0357403833965075e8, 3.3586302311259234e8, 3.3596381779190534e8], :FluidEnthalpy => [1.3531927843776327e6 1.3531927845427445e6 1.3539317110787912e6 1.3544418326461923e6], :Temperature => [323.4395158214652, 323.43541089788346, 323.6009121874018, 323.7146513709216]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.02495513799450446, -0.005357223220969089, 0.0028467757719202965], :Pressure => [3.402524494438418e6, 3.4413574205376273e6, 3.5383797427434865e6, 3.615987200022596e6], :PhaseMassDensities => [989.3194836021678 989.3363045634712 989.2591227768611 989.2530026454583], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.08362336219636 372.9709999615531 248.62793540899762 248.6263972522093], :TotalThermalEnergy => [3.918137998567285e8, 5.037602331741719e8, 3.3607822992369366e8, 3.361573147461035e8], :FluidEnthalpy => [1.3541318451315549e6 1.3541470902808076e6 1.3553083694871569e6 1.3557132918192323e6], :Temperature => [323.60059663346453, 323.6016349583992, 323.86660290305025, 323.9561370345324]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [24.95517875, -25.130977245859377, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = -1.0e-20, bhp = 2.5e6), :WellA => (rate = 0.025,)), 5), :SurfaceTemperature => [363.14999996735185, 323.4395158214652, 323.60059663346453]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [3.446559003477388e6, 3.451055846029449e6, 3.48702659594286e6, 3.539497241634664e6, 3.57027746262061e6, 3.597545792683673e6, 3.62547199692889e6, 3.6355799503537905e6, 3.6368935737862126e6, 3.639403864556421e6  …  3.3511927067443826e6, 3.369216592076654e6, 3.390639144611704e6, 3.425940620939466e6, 3.323333093928432e6, 3.324767642605193e6, 3.327026810914757e6, 3.3328984955295827e6, 3.3443560949091134e6, 3.3471784255950456e6], :TotalMasses => [455964.1532334018 1.418576902714687e6 … 557155.9789924618 101303.11550662108], :TotalThermalEnergy => [1.6875516318762573e12, 5.249709975562187e12, 7.499403305185193e12, 7.686913217006219e12, 8.249377507720207e12, 8.249472371558584e12, 8.249904892564174e12, 7.499512470533571e12, 6.562049328962169e12, 5.062276067368213e12  …  6.008049588828933e12, 6.008048174885299e12, 4.693710466723561e12, 1.5019640317402795e12, 9.387174603631367e11, 5.256883416224865e12, 4.881450288943571e12, 3.191722360581842e12, 2.065139965597728e12, 3.7543472094956934e11], :FluidEnthalpy => [1.3525759362940476e6 1.3524530560705739e6 … 1.354352624994986e6 1.354178629350613e6], :Temperature => [323.234249851969, 323.20525075523227, 323.1974313474168, 323.19912240376647, 323.19976969169807, 323.2039718059159, 323.2220306664877, 323.2040483767613, 323.20282136242986, 323.21112033299977  …  323.67688748739687, 323.67701015509, 323.67167843542813, 323.6668134666191, 323.66202861070917, 323.66627664235244, 323.6703669897587, 323.6709494507059, 323.6559551250516, 323.61512303961507]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [24.955178751528837, 13.652385032775307, 7.127563254391121], :Pressure => [4.117820707302129e6, 4.130921101941031e6, 4.212212464803509e6, 4.280992419380826e6], :PhaseMassDensities => [967.2264883321783 967.2330841365481 967.2737522630996 967.3082313284506], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [283.6056188095037 364.6382821718854 243.102409129599 243.11107466387173], :TotalThermalEnergy => [4.321880283734746e8, 5.556690304816025e8, 3.704410045532277e8, 3.704366705747369e8], :FluidEnthalpy => [1.5281623766334855e6 1.528161957458169e6 1.5281611167167104e6 1.5281599237516376e6], :Temperature => [363.14999997582896, 363.14921139770144, 363.144706653313, 363.1407897035321]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [-25.13183005870578, -14.431218835055322, -6.934667328398016], :Pressure => [2.5e6, 2.5640440287967008e6, 2.675564529696575e6, 2.760108789169579e6], :PhaseMassDensities => [988.9892155192538 989.0196983509875 988.9948852519176 988.9815815204286], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.98678370244994 372.85164223140674 248.5615252756244 248.5581816832155], :TotalThermalEnergy => [3.916777049088719e8, 5.035770272986609e8, 3.3586381393253744e8, 3.3596328640755224e8], :FluidEnthalpy => [1.3532021638522497e6 1.353202164016868e6 1.3539354341707383e6 1.354439331376469e6], :Temperature => [323.44170789996474, 323.43760286421076, 323.6017821660165, 323.71406683508036]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.024955113566111617, -0.00482537211835555, 0.003422138294303952], :Pressure => [3.402680338578136e6, 3.441507512595263e6, 3.5385144037623536e6, 3.6161099856436434e6], :PhaseMassDensities => [989.1733307058228 989.1891845124353 989.1023855469501 989.1216675688091], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.0407690947536 372.9155370089695 248.58854304659505 248.59338914725254], :TotalThermalEnergy => [3.921553100549582e8, 5.042022312401039e8, 3.363920893181522e8, 3.364203222175983e8], :FluidEnthalpy => [1.3555095349770524e6 1.3555338912956223e6 1.3567858391742988e6 1.3569514094480665e6], :Temperature => [323.9224264850409, 323.9255881589249, 324.2117088934928, 324.24532234861016]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [24.95517875, -25.13183005914999, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = -1.0e-20, bhp = 2.5e6), :WellA => (rate = 0.025,)), 6), :SurfaceTemperature => [363.14999997582896, 323.44170789996474, 323.9224264850409]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [3.445307112538064e6, 3.449636567024746e6, 3.4852165710334266e6, 3.537113824645364e6, 3.567532637476982e6, 3.5944545518470323e6, 3.621975549036877e6, 3.6319071020045555e6, 3.633200889402261e6, 3.6357382260605926e6  …  3.351114372303724e6, 3.3691340305142347e6, 3.3905376090867394e6, 3.425801258795497e6, 3.3232503914949317e6, 3.324685745117582e6, 3.3269463345708824e6, 3.3328193362149266e6, 3.3442771937003625e6, 3.3470964930281485e6], :TotalMasses => [455963.7808256343 1.4185745616230986e6 … 557156.7623235454 101303.23564931018], :TotalThermalEnergy => [1.6875544542839226e12, 5.249744404285589e12, 7.499449125411667e12, 7.686955774875771e12, 8.2494288431614e12, 8.249572143926012e12, 8.250248299622523e12, 7.499555075142162e12, 6.562081071224512e12, 5.062302406011418e12  …  6.008005117473104e12, 6.008001440896536e12, 4.693675084777092e12, 1.5019526376218804e12, 9.387100141482837e11, 5.256843592300577e12, 4.8814133626570625e12, 3.191696796316505e12, 2.0651208465943003e12, 3.754317720488673e11], :FluidEnthalpy => [1.3525779508324252e6 1.3524620928226828e6 … 1.3543391684852382e6 1.3541672092916847e6], :Temperature => [323.23480163677874, 323.2074539262348, 323.19947824997956, 323.2009686913929, 323.2018441543899, 323.2080291472173, 323.23607743392944, 323.2059292212732, 323.2044164687544, 323.2128395381836  …  323.6743778050031, 323.67437279695696, 323.6691224092222, 323.66424082547695, 323.6593392206094, 323.6637081390082, 323.66780218618055, 323.66823385839683, 323.6528165711299, 323.6124604197987]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [24.955178751251438, 13.65623020672264, 7.1280435990435995], :Pressure => [4.111774335749233e6, 4.124874620045233e6, 4.206161904921664e6, 4.274941150781934e6], :PhaseMassDensities => [967.2236824104036 967.2302486210007 967.2708529616441 967.305241069489], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [283.60479607026855 364.6372132077079 243.10168045566675 243.11032312982488], :TotalThermalEnergy => [4.3218813429485863e8, 5.556692311884121e8, 3.7044121672466695e8, 3.704369973535256e8], :FluidEnthalpy => [1.528160932059162e6 1.5281607364835762e6 1.5281603147109472e6 1.5281597361550066e6], :Temperature => [363.1499999801997, 363.1492635301933, 363.14485129330126, 363.14106978795456]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [-25.132397519886773, -14.431215563321878, -6.934485567992789], :Pressure => [2.5e6, 2.5640445554841287e6, 2.675564967365586e6, 2.7601090258340337e6], :PhaseMassDensities => [988.9880508751282 989.0185339899131 988.9943063115497 988.9816955939054], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.98644221095657 372.85120327762303 248.56137977203988 248.55821035300724], :TotalThermalEnergy => [3.9168042328006583e8, 5.035805224296099e8, 3.358649726077606e8, 3.359630583851886e8], :FluidEnthalpy => [1.3532131315312812e6 1.35321313172377e6 1.3539408887094986e6 1.354438258008679e6], :Temperature => [323.44427115707254, 323.4401660245876, 323.6030567917409, 323.7138160011031]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.024955084808718976, -0.004355517190613741, 0.00394233630763032], :Pressure => [3.4026003671205826e6, 3.4414192564109373e6, 3.538404119396759e6, 3.6159824993903697e6], :PhaseMassDensities => [988.9626990505915 988.9774146633531 988.8744893188932 988.9242976795917], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.97900866775603 372.8357016567141 248.53126647732748 248.5437846837321], :TotalThermalEnergy => [3.926470062278447e8, 5.048378407492182e8, 3.3683969490992004e8, 3.368077611811469e8], :FluidEnthalpy => [1.3574937805759094e6 1.357528860553441e6 1.3588994159480694e6 1.3587809372716087e6], :Temperature => [324.38594056723144, 324.39159969659767, 324.7047408233645, 324.6720674028818]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [24.95517875, -25.132397520406204, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = -1.0e-20, bhp = 2.5e6), :WellA => (rate = 0.025,)), 7), :SurfaceTemperature => [363.1499999801997, 323.44427115707254, 324.38594056723144]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [3.4440316708858823e6, 3.4481944904684494e6, 3.483389603003436e6, 3.5347269786589867e6, 3.564796242737131e6, 3.5913899582210667e6, 3.618527673322767e6, 3.628294324593037e6, 3.6295712253583902e6, 3.6321355826901495e6  …  3.351005506299012e6, 3.3690153175319317e6, 3.39039268594996e6, 3.4256065755254654e6, 3.3231464754680987e6, 3.3245823176970645e6, 3.326843635744796e6, 3.3327157296265378e6, 3.344168367929019e6, 3.3469792279461306e6], :TotalMasses => [455963.3756350978 1.418572228329418e6 … 557157.5246180696 101303.35017191294], :TotalThermalEnergy => [1.68755794370121e12, 5.249778304634902e12, 7.49949432779168e12, 7.68699850692354e12, 8.249486071287625e12, 8.24970020804408e12, 8.2506946659631875e12, 7.499601988129354e12, 6.562112660889539e12, 5.062328564423721e12  …  6.007961059781703e12, 6.00795530849183e12, 4.693640193387671e12, 1.501941396990042e12, 9.38702663392773e11, 5.256804248461869e12, 4.881376851006628e12, 3.191671488970411e12, 2.065102051844708e12, 3.754289190510927e11], :FluidEnthalpy => [1.352580530272653e6 1.352470976354911e6 … 1.3543259300094582e6 1.3541561482429642e6], :Temperature => [323.2354869230218, 323.2096227812063, 323.2014970844799, 323.20282261179693, 323.20416043414144, 323.21324731444076, 323.25434817342494, 323.2080051476234, 323.20600442363985, 323.21454741313914  …  323.67189111781994, 323.6717689721166, 323.6666013197415, 323.6617021983646, 323.6566840597982, 323.6611703483346, 323.66526592416545, 323.66554527608974, 323.64973089769546, 323.60988396691715]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [24.95517875109517, 13.658855384107033, 7.128743908879732], :Pressure => [4.10648381940615e6, 4.11958400740143e6, 4.200868456571871e6, 4.2696468080615755e6], :PhaseMassDensities => [967.221226863592 967.2277806364491 967.2683526418878 967.3026961798641], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [283.60407606633834 364.6362827994515 243.1010520567725 243.1096835293009], :TotalThermalEnergy => [4.3218822705951315e8, 5.556693820483612e8, 3.704413566306951e8, 3.7043719314503825e8], :FluidEnthalpy => [1.528159668981826e6 1.5281595796029193e6 1.5281593678273624e6 1.528159088668766e6], :Temperature => [363.14999998267126, 363.14928963206705, 363.14492377154784, 363.1412082678245]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [-25.132965422511308, -14.431213660033299, -6.934283557954691], :Pressure => [2.5e6, 2.564045067158175e6, 2.675565352074765e6, 2.7601091598211853e6], :PhaseMassDensities => [988.9864938380056 989.0169772366736 988.9933196844909 988.981469755583], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.9859856638272 372.8506163954782 248.56113180561428 248.5581535936461], :TotalThermalEnergy => [3.9168405751761955e8, 5.035851951653612e8, 3.3586694690155566e8, 3.359635103343727e8], :FluidEnthalpy => [1.3532277944575415e6 1.3532277947148788e6 1.353950182690214e6 1.3544403857196446e6], :Temperature => [323.4476980291826, 323.4435927861536, 323.60522864745536, 323.71431318420605]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.02495505015695393, -0.0038887988184668886, 0.004411336608869308], :Pressure => [3.4022772381526167e6, 3.4410847909537987e6, 3.53804000572773e6, 3.6155953350034854e6], :PhaseMassDensities => [988.6743724932792 988.6877435766801 988.569024979477 988.654087241114], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.89446690562255 372.7264982297722 248.454494915356 248.4758733934565], :TotalThermalEnergy => [3.93300252502453e8, 5.05681432378502e8, 3.3743231609207624e8, 3.373320108452565e8], :FluidEnthalpy => [1.3601427322883666e6 1.360189557732826e6 1.3617041730178574e6 1.3612617774325446e6], :Temperature => [325.0034033233379, 325.0117797702525, 325.358418787881, 325.2502490489]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [24.95517875, -25.132965423205743, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = -1.0e-20, bhp = 2.5e6), :WellA => (rate = 0.025,)), 8), :SurfaceTemperature => [363.14999998267126, 323.4476980291826, 325.0034033233379]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [3.442698644449774e6, 3.446694465999202e6, 3.481508414337024e6, 3.5322963463196903e6, 3.562025558881209e6, 3.5883063706967137e6, 3.6150788403861565e6, 3.6246900472924714e6, 3.625951820871327e6, 3.6285418150633513e6  …  3.350848609243926e6, 3.368841906348138e6, 3.390184179684407e6, 3.4253335672548283e6, 3.323005182291525e6, 3.3244411698694844e6, 3.326702442505229e6, 3.33257113239758e6, 3.3440123087933897e6, 3.3468083476489745e6], :TotalMasses => [455962.93454407813 1.4185698813300591e6 … 557158.2620217693 101303.45859170468], :TotalThermalEnergy => [1.6875620099839268e12, 5.249811660526856e12, 7.499538925610349e12, 7.68704171231547e12, 8.249551397168131e12, 8.249863392993191e12, 8.251255251060753e12, 7.499654201801527e12, 6.562144057162828e12, 5.062354501044962e12  …  6.007917398348409e12, 6.007909752822537e12, 4.693605766707021e12, 1.5019303350140566e12, 9.38695404298146e11, 5.256765362930752e12, 4.88134073464503e12, 3.191646429105803e12, 2.0650835709446128e12, 3.754261538270137e11], :FluidEnthalpy => [1.3525835861315194e6 1.3524796907648328e6 … 1.3543128966084395e6 1.3541454088283337e6], :Temperature => [323.2362872451923, 323.2117558829878, 323.2034880255774, 323.20469687481733, 323.2068084963604, 323.2199059214707, 323.2773042427662, 323.2103203477365, 323.2075825272391, 323.2162405682999  …  323.66942624718837, 323.66919707024044, 323.66411307339223, 323.6592030059111, 323.6540615750806, 323.6586616842058, 323.66275667746055, 323.66288251559484, 323.64669620247867, 323.6073861374578]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [24.955178751007377, 13.660693353412945, 7.129486495295547], :Pressure => [4.1016174019569475e6, 4.1147175014724545e6, 4.195999913025001e6, 4.264777346246455e6], :PhaseMassDensities => [967.2189681591587 967.2255156558102 967.2660725843111 967.3003937643972], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [283.60341377960793 364.63542892186723 243.1004790158019 243.10910486917956], :TotalThermalEnergy => [4.3218831238175106e8, 5.556695069967127e8, 3.704414605941771e8, 3.7043732491224784e8], :FluidEnthalpy => [1.5281585071269346e6 1.5281584693982622e6 1.52815836438614e6 1.5281582340018705e6], :Temperature => [363.1499999840604, 363.1493021502845, 363.14496120969807, 363.14127850097526]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [-25.133175615830677, -14.431005057663318, -6.933947854832184], :Pressure => [2.5e6, 2.564045190506057e6, 2.6755650697701243e6, 2.760108440952147e6], :PhaseMassDensities => [988.9842414592865 989.0147249727875 988.9916201878432 988.9806473310339], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.9853252318931 372.84976731199674 248.56070467551962 248.55794689581234], :TotalThermalEnergy => [3.9168931471298647e8, 5.0359195471523374e8, 3.3587034686237234e8, 3.359651551342476e8], :FluidEnthalpy => [1.3532490055661092e6 1.3532490059383633e6 1.3539661876445801e6 1.3544481286991837e6], :Temperature => [323.4526552737478, 323.44854991526654, 323.6089688105872, 323.7161225671562]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.024955016594914975, -0.0034604286367022064, 0.004796196112199353], :Pressure => [3.4016567469390463e6, 3.4404500118141347e6, 3.5373681461406117e6, 3.6148946008596164e6], :PhaseMassDensities => [988.3107943773477 988.3228427646472 988.1864327513784 988.3103934141332], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.7878602340744 372.58893386452763 248.3583390007068 248.38949371330233], :TotalThermalEnergy => [3.941226047055951e8, 5.0674260830112255e8, 3.381738886542216e8, 3.379982533944386e8], :FluidEnthalpy => [1.3634802446132593e6 1.3635392284186932e6 1.365216596313818e6 1.3644167087491176e6], :Temperature => [325.78124768238064, 325.7924469231086, 326.1769405415199, 325.98546732529593]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [24.95517875, -25.133175616835235, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = -1.0e-20, bhp = 2.5e6), :WellA => (rate = 0.025,)), 9), :SurfaceTemperature => [363.1499999840604, 323.4526552737478, 325.78124768238064]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [3.4413128167088465e6, 3.4451423751046844e6, 3.4795808429738595e6, 3.5298317880868334e6, 3.5592307262543067e6, 3.585212032937973e6, 3.6116349698115825e6, 3.621099399828052e6, 3.622347839762247e6, 3.624962429304027e6  …  3.350640936854404e6, 3.368611138676841e6, 3.3899095938097807e6, 3.424980065112252e6, 3.3228236659963527e6, 3.3242594690627786e6, 3.326519961304271e6, 3.3323827273992547e6, 3.343806124604744e6, 3.346581047106179e6], :TotalMasses => [455962.4615272952 1.418567523468291e6 … 557158.9740656373 101303.56104979035], :TotalThermalEnergy => [1.6875665815725332e12, 5.249844492629026e12, 7.499582999246974e12, 7.687085836915836e12, 8.24962741903369e12, 8.2500687560765e12, 8.251939375562637e12, 7.499712811268836e12, 6.562175280313689e12, 5.06238022071646e12  …  6.007874129320234e12, 6.007864763713762e12, 4.693571797650542e12, 1.5019194865084229e12, 9.386882350080326e11, 5.256726925322535e12, 4.881305004548262e12, 3.1916216140503633e12, 2.065065397992363e12, 3.754234700059092e11], :FluidEnthalpy => [1.352587058540144e6 1.3524882436726477e6 … 1.3543000631918171e6 1.354134965517585e6], :Temperature => [323.23718830673266, 323.21385463085267, 323.2054547895369, 323.20661122064337, 323.20989503712923, 323.22829456311166, 323.3053278557281, 323.21292429313706, 323.2091518830317, 323.21791938937645  …  323.66698294475555, 323.666656487254, 323.6616571303274, 323.6567510793143, 323.6514710640631, 323.65618144510455, 323.6602737879663, 323.6602452613183, 323.64371148416785, 323.6049611493144]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [24.955178750949447, 13.662044301012184, 7.130195702220245], :Pressure => [4.097030833869139e6, 4.110130850033054e6, 4.19141171829399e6, 4.2601882779506855e6], :PhaseMassDensities => [967.2168393445834 967.2233829657758 967.2639338328167 967.2982433886527], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [283.60278957857304 364.63462491666587 243.0999414889233 243.10856442080828], :TotalThermalEnergy => [4.321883927923609e8, 5.556696176739722e8, 3.704415459214239e8, 3.7043742450399077e8], :FluidEnthalpy => [1.5281574120626987e6 1.5281574003768037e6 1.528157350870197e6 1.5281572966581427e6], :Temperature => [363.1499999849772, 363.1493078863933, 363.1449815358078, 363.141315614083]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [-25.133360933686994, -14.430776701316557, -6.933551026105219], :Pressure => [2.5e6, 2.564045245456393e6, 2.675564589998562e6, 2.760107382269907e6], :PhaseMassDensities => [988.9808900383797 989.0113736604212 988.9888014818547 988.9788842826922], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.98434254395846 372.8485038969996 248.55999625743755 248.5575037934349], :TotalThermalEnergy => [3.916971370992593e8, 5.036020125340937e8, 3.3587598584379387e8, 3.359686815320647e8], :FluidEnthalpy => [1.353280566607174e6 1.353280567161063e6 1.3539927326842926e6 1.3544647296501275e6], :Temperature => [323.460031392575, 323.4559258730198, 323.6151720596223, 323.7200018520132]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.024954981607230635, -0.0031792271418448438, 0.005053628834750321], :Pressure => [3.4007470870021647e6, 3.4395229836251703e6, 3.5363962102151727e6, 3.6138875805933676e6], :PhaseMassDensities => [987.8687681735837 987.8793373523928 987.71981103802 987.8891755539904], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [289.6582513817934 372.4217362631317 248.2410641729714 248.2836301185035], :TotalThermalEnergy => [3.951121321739409e8, 5.0801862895861113e8, 3.390580736562417e8, 3.3880199433783406e8], :FluidEnthalpy => [1.3675056084555506e6 1.3675767254766878e6 1.3694223721491394e6 1.3682346403168857e6], :Temperature => [326.71864219051463, 326.732627024783, 327.15535836566636, 326.87412404947224]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [24.95517875, -25.13336093518172, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => ProducerControl{BottomHolePressureTarget{Float64}, Float64}(BottomHolePressureTarget with value 25.0 [bar], 1.0), :WellA => InjectorControl{TotalRateTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(TotalRateTarget with value 0.025 [m^3/s], [1.0], 998.20715, ((1, 1.0),), 363.15, missing, 1.0, missing)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = -1.0e-20, bhp = 2.5e6), :WellA => (rate = 0.025,)), 10), :SurfaceTemperature => [363.1499999849772, 323.460031392575, 326.71864219051463]))

 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [2.755577892101259e6, 2.719858237431632e6, 2.6747524833158725e6, 2.618674817303512e6, 2.5857797376031945e6, 2.5576714853985123e6, 2.5294317217906504e6, 2.519875241227582e6, 2.5173251850642296e6, 2.5194319176201555e6  …  3.243923191852656e6, 3.216890685657893e6, 3.178886853639974e6, 3.1212243546668817e6, 3.276348173834802e6, 3.2770079223844814e6, 3.2768550994251785e6, 3.2688076899799174e6, 3.240986951889134e6, 3.201365760457547e6], :TotalMasses => [455646.2873724252 1.4174955472966086e6 … 557392.2488023576 101360.65222936364], :TotalThermalEnergy => [1.6917799408072788e12, 5.264460263059595e12, 7.5210036689476875e12, 7.71652222987712e12, 8.296746309909717e12, 8.325477489621873e12, 8.360322902432424e12, 7.585662707789756e12, 6.580821483260209e12, 5.065265245383982e12  …  5.94639064850954e12, 5.939678134084858e12, 4.648496744303181e12, 1.4878945433033132e12, 9.380959373413706e11, 5.252983218798439e12, 4.872734508840877e12, 3.1849910554903237e12, 2.0589027623523833e12, 3.739025712195069e11], :FluidEnthalpy => [1.3559812107321236e6 1.3562856014540507e6 … 1.3499384123448157e6 1.3482154358893812e6], :Temperature => [324.07464876395557, 324.1480897841833, 324.1632152276835, 324.49274328616974, 325.1332960890857, 326.3136983158581, 327.74693871162975, 327.0846229198317, 324.1585262740606, 323.39820823822777  …  320.2007294307886, 319.822675875302, 320.40732955227094, 320.49123283813606, 323.4371035167432, 323.4142867190779, 323.0646862843208, 322.95548483347915, 322.63131283590945, 322.2308961940299]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [-24.95517900588424, -13.673391387073789, -7.166151935128203], :Pressure => [1.8386837356885106e6, 1.902104506072732e6, 2.0117573964111537e6, 2.0956633680315022e6], :PhaseMassDensities => [977.6663102280796 977.6974381956054 977.9160137394979 977.8706240513882], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [286.6667344683123 368.58325071226506 245.77710116734576 245.76569349448863], :TotalThermalEnergy => [4.1378926373865336e8, 5.3200779126017976e8, 3.544157753092542e8, 3.545405418042459e8], :FluidEnthalpy => [1.4453312650197828e6 1.4453311883701645e6 1.4440783270862305e6 1.4447388258586254e6], :Temperature => [344.72589004940465, 344.721886987058, 344.4303149925609, 344.5752084447882]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [25.209150395887963, 14.557718811012366, 7.010405364408947], :Pressure => [4.5e6, 4.514213329749074e6, 4.598012689888401e6, 4.669624452436345e6], :PhaseMassDensities => [1001.7883063999748 1001.7950716802565 1001.8349574224881 1001.8690234168623], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [293.73967315824336 377.66784451117854 251.78858738783455 251.79714910604764], :TotalThermalEnergy => [3.4756334759743816e8, 4.4686482894409645e8, 2.9790072838774157e8, 2.978928949020071e8], :FluidEnthalpy => [1.187727938690787e6 1.1877279302311284e6 1.1877279193679772e6 1.1877279015817416e6], :Temperature => [283.15, 283.15014570823826, 283.15101556376044, 283.1516968603062]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-0.02495543123621694, -0.01835001457935099, -0.013053881375220839], :Pressure => [2.665123150715347e6, 2.704010008241294e6, 2.801195041218493e6, 2.8789538118969603e6], :PhaseMassDensities => [990.6885983906559 990.7169076452053 990.9318761108955 991.0322816879292], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.4850687852637 373.49147506144504 249.04834417583524 249.07357884969034], :TotalThermalEnergy => [3.877634730121362e8, 4.985158284269005e8, 3.319729695043354e8, 3.318294705980411e8], :FluidEnthalpy => [1.3375728038598099e6 1.3374742116991405e6 1.3357928064379222e6 1.335159803562974e6], :Temperature => [319.7702340321958, 319.7446232708443, 319.3435511497538, 319.1899870041619]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [-24.95517875, 25.209150395887963, -0.02495517875], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => InjectorControl{BottomHolePressureTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(BottomHolePressureTarget with value 45.0 [bar], [1.0], 998.20715, ((1, 1.0),), 283.15, missing, 1.0, missing), :WellA => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -0.025 [m^3/s], 1.0)), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -2.5e-5 [m^3/s], 1.0), :WellB => InjectorControl{BottomHolePressureTarget{Float64}, Float64, Tuple{Tuple{Int64, Float64}}, Vector{Float64}, Missing, Missing}(BottomHolePressureTarget with value 45.0 [bar], [1.0], 998.20715, ((1, 1.0),), 283.15, missing, 1.0, missing), :WellA => ProducerControl{TotalRateTarget{Float64}, Float64}(TotalRateTarget with value -0.025 [m^3/s], 1.0)), Dict{Symbol, Any}(:WellObs => (bhp = 10000.0, rate = -2.5e-5), :WellB => (rate_lower = 1.0e-20, bhp = 4.5e6), :WellA => (bhp = 10000.0, rate = -0.025)), 232), :SurfaceTemperature => [344.72589004940465, 283.15, 319.7702340321958]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [2.818203335462722e6, 2.803528534762415e6, 2.800386430335173e6, 2.8001820883202576e6, 2.7998803209598013e6, 2.799862464044513e6, 2.7998255464247316e6, 2.800097124341594e6, 2.799442728723099e6, 2.8017349247302134e6  …  2.972571400362507e6, 2.972451343011686e6, 2.969996751843184e6, 2.967265992465949e6, 2.968734065718831e6, 2.9698544128279164e6, 2.9711322333059586e6, 2.971480279804607e6, 2.9672388628989267e6, 2.952963125590672e6], :TotalMasses => [455658.39721499133 1.4175452357149452e6 … 557329.8645094835 101350.60342531106], :TotalThermalEnergy => [1.6917946241043843e12, 5.264536734568893e12, 7.521170970650127e12, 7.716764622698307e12, 8.297082778230805e12, 8.325871011953846e12, 8.360769845259186e12, 7.586066260592871e12, 6.581184107351043e12, 5.065503980709946e12  …  5.946044079249489e12, 5.939284216540725e12, 4.64826486098548e12, 1.48783636894961e12, 9.38050438406687e11, 5.25272462703853e12, 4.872474336795369e12, 3.1847954269905747e12, 2.0587713224184062e12, 3.738741329562883e11], :FluidEnthalpy => [1.3560141852349888e6 1.356333922970453e6 … 1.3497571025311425e6 1.348025318459227e6], :Temperature => [324.0782943782547, 324.153954160757, 324.17216749579393, 324.5054317143073, 325.14944316157766, 326.3324143662538, 327.7680614623696, 327.1057696448377, 324.1803869159942, 323.4173961263713  …  320.1778432271134, 319.79742576181667, 320.388019826551, 320.4762158873105, 323.4171850306656, 323.39412648208935, 323.04311675895326, 322.93129189112875, 322.60656572354316, 322.20233414972495]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [-1.4573767377860826e-7, -0.0031869929321767655, -0.002575304131542168], :Pressure => [2.758661985509388e6, 2.797025680750582e6, 2.892955615999333e6, 2.9697095818953654e6], :PhaseMassDensities => [977.9930777855484 978.0110160944737 978.3501863177647 978.2657421515948], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [286.76254772039005 368.70146679507457 245.8862206379276 245.8649975041614], :TotalThermalEnergy => [4.1392758721171355e8, 5.3219026579239386e8, 3.543459381261123e8, 3.545255651035382e8], :FluidEnthalpy => [1.4462713923065392e6 1.4462777277977003e6 1.444054149328665e6 1.444987851603347e6], :Temperature => [344.881291421411, 344.88029159819797, 344.3688018958952, 344.5763271392197]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [3.516662745576977e-7, 0.000983763569444316, 0.0007484703137992217], :Pressure => [2.7574176517975037e6, 2.79668315072883e6, 2.8948474168887762e6, 2.973382174125711e6], :PhaseMassDensities => [1000.9998133253747 1000.9834981191968 1001.0304331510008 1001.0677734339849], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [293.5084749135235 377.3618884867058 251.58638838455943 251.5957730212559], :TotalThermalEnergy => [3.4728914914562654e8, 4.470408951141051e8, 2.980157467907046e8, 2.980086431770106e8], :FluidEnthalpy => [1.185988467050948e6 1.187441640224834e6 1.1874382522011362e6 1.187444176970868e6], :Temperature => [282.6701857338828, 283.05397159691205, 283.0544787923912, 283.05716096158204]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [-1.5329281853815737e-8, 0.001363057055744609, 0.0010485376233871104], :Pressure => [2.757598002538042e6, 2.796458104410452e6, 2.8936143153382065e6, 2.9713577110889e6], :PhaseMassDensities => [990.7229691378236 990.5908259438211 990.8722380511981 991.0595164958709], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.4951468146984 373.4439433798265 249.03335549661767 249.08042370349443], :TotalThermalEnergy => [3.877769691470423e8, 4.9904847199259293e8, 3.321858469404413e8, 3.3185622667491436e8], :FluidEnthalpy => [1.3376661998420162e6 1.3391640719484622e6 1.3368212899616736e6 1.3353237696245164e6], :Temperature => [319.78634297998076, 320.13571523845303, 319.5793240173169, 319.22271168830457]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [0.0, 0.0, 0.0], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, Any}(:WellObs => nothing, :WellB => nothing, :WellA => nothing), 233), :SurfaceTemperature => [344.881291421411, 282.6701857338828, 319.78634297998076]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [2.8175512945835358e6, 2.80293825435863e6, 2.799916867899821e6, 2.799860069868573e6, 2.799635852333485e6, 2.799696632954858e6, 2.7997406153614456e6, 2.800051246405709e6, 2.799440364088554e6, 2.8017943158164485e6  …  2.9708064358902746e6, 2.9708271423253566e6, 2.968490951929672e6, 2.965942130600769e6, 2.9667399702862273e6, 2.9678626712278146e6, 2.969166716493715e6, 2.9695593611250147e6, 2.96544782309451e6, 2.9513153120065792e6], :TotalMasses => [455658.3419256031 1.4175445524820378e6 … 557331.3745571848 101351.1480885847], :TotalThermalEnergy => [1.6917927859425645e12, 5.264544114525982e12, 7.521191447915312e12, 7.716791202853504e12, 8.297145842081076e12, 8.325955249128721e12, 8.360865985477662e12, 7.586135243176596e12, 6.581254984261994e12, 5.065521537782949e12  …  5.945943174971635e12, 5.93910384051619e12, 4.648178138089187e12, 1.4878134515703958e12, 9.380490695201499e11, 5.2527127578888125e12, 4.87244083277487e12, 3.184743841573211e12, 2.0587247686933467e12, 3.7385893943930383e11], :FluidEnthalpy => [1.3560123947547667e6 1.3563357680357588e6 … 1.3497238349061883e6 1.3479662983147164e6], :Temperature => [324.07791828058237, 324.15442354637514, 324.17308673631334, 324.50659987128546, 325.15203147252447, 326.33587474999115, 327.77201662113305, 327.10889089872796, 324.1840438412984, 323.4185708092383  …  320.17214236638256, 319.7872549727046, 320.38174926079836, 320.47103612989, 323.4166680408362, 323.39333849073455, 323.04076799058896, 322.9257923195751, 322.5989062318628, 322.18861519142956]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [3.539160137063074e-11, -0.0032092897828713035, -0.002590224875761277], :Pressure => [2.758434587721893e6, 2.796798352096991e6, 2.892728634400128e6, 2.969483003000833e6], :PhaseMassDensities => [977.9929984318926 978.0146277781437 978.3531977990424 978.2726163795169], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [286.7625244526829 368.7028283677407 245.88697750572427 245.8667251860765], :TotalThermalEnergy => [4.139275508573409e8, 5.3218191991270614e8, 3.543411776291352e8, 3.5451510523923236e8], :FluidEnthalpy => [1.4462711503660437e6 1.4462495186493217e6 1.4440301118549558e6 1.444934923379074e6], :Temperature => [344.88125092805865, 344.8738990830323, 344.363343230573, 344.5643185992958]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [3.228027897844177e-10, 0.000960476691026952, 0.0007384806619984033], :Pressure => [2.7558226845591515e6, 2.7950881146070533e6, 2.8932521306156474e6, 2.9717866828480186e6], :PhaseMassDensities => [1000.9990895464427 1000.9806920078663 1001.0276630070246 1001.0650629088187], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [293.50826269045643 377.3608306076569 251.58569217144222 251.59509179197994], :TotalThermalEnergy => [3.472888978239694e8, 4.470722018530428e8, 2.980362206633319e8, 2.980284888138758e8], :FluidEnthalpy => [1.185986874944603e6 1.1875263379240301e6 1.1875213238709245e6 1.1875246776188086e6], :Temperature => [282.6697400015619, 283.0762839855665, 283.07635111583744, 283.07834696175286]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [9.928149008391945e-11, 0.0013594435424445776, 0.001054722958042725], :Pressure => [2.756999695288337e6, 2.79585965850851e6, 2.8930152967248843e6, 2.9707584989268864e6], :PhaseMassDensities => [990.7227465321157 990.5839800405187 990.8673302112691 991.0596478815319], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.4950815432958 373.4413625350839 249.03212202190838 249.08045672431263], :TotalThermalEnergy => [3.877768823962292e8, 4.9906962874869025e8, 3.321958078613322e8, 3.318553931775264e8], :FluidEnthalpy => [1.3376655978617303e6 1.3392293762353158e6 1.3368673053361233e6 1.3353196416839825e6], :Temperature => [319.7862392931794, 320.1510914752904, 319.59016966260845, 319.22177966498464]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [0.0, 0.0, 0.0], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, Any}(:WellObs => nothing, :WellB => nothing, :WellA => nothing), 234), :SurfaceTemperature => [344.88125092805865, 282.6697400015619, 319.7862392931794]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [2.816698769193173e6, 2.8020852954090196e6, 2.79906306539264e6, 2.799005182221491e6, 2.7987802632776373e6, 2.798840430861726e6, 2.7988833929325873e6, 2.799194318488179e6, 2.7985838994401167e6, 2.8009383374538156e6  …  2.969960375167601e6, 2.969980175326808e6, 2.9676413397767586e6, 2.965088626838374e6, 2.9658944402315347e6, 2.9670171384604205e6, 2.968321324975278e6, 2.96871381682336e6, 2.964601773134527e6, 2.950468443763301e6], :TotalMasses => [455658.2436334225 1.417543708629382e6 … 557333.0996600107 101351.71895031666], :TotalThermalEnergy => [1.6917910015957524e12, 5.264551364508266e12, 7.521211762618914e12, 7.71681794525594e12, 8.297209796483234e12, 8.326038116272668e12, 8.360959606380803e12, 7.586203053419937e12, 6.581324951037775e12, 5.065538410281731e12  …  5.9458427948311455e12, 5.938924899903222e12, 4.64809172257608e12, 1.4877892446881116e12, 9.380478660209176e11, 5.252701605690895e12, 4.872408306017054e12, 3.1846927717003076e12, 2.0586786799508923e12, 3.738439903095736e11], :FluidEnthalpy => [1.3560105852922788e6 1.3563374917953524e6 … 1.349691200485912e6 1.3479084788556367e6], :Temperature => [324.07755074085765, 324.15488162232487, 324.17399435883675, 324.50776929957067, 325.15464974964954, 326.3392715979058, 327.77586033871165, 327.1119507791248, 324.18764430266907, 323.41968929183054  …  320.16648251083546, 319.7771748235708, 320.37551322046994, 320.46557168926944, 323.4162238588004, 323.3926097992055, 323.0384999787175, 322.9203599254837, 322.5913340728741, 322.17512608302104]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.3563063837187103e-10, -0.0032093408524767482, -0.0025918392021712054], :Pressure => [2.757576585972353e6, 2.7959403795212167e6, 2.891870624888689e6, 2.968625019635504e6], :PhaseMassDensities => [977.9926943263341 978.0164193379503 978.3506519183437 978.2757876422949], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [286.76243528427597 368.70350376987597 245.8863376561163 245.86752221134418], :TotalThermalEnergy => [4.139274218957143e8, 5.3217704206818795e8, 3.543444949642715e8, 3.5450978241155857e8], :FluidEnthalpy => [1.4462702730573246e6 1.446232762387152e6 1.4440464838745052e6 1.4449077131481469e6], :Temperature => [344.88110621891315, 344.8701478743047, 344.3671258139305, 344.55819222078026]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.6880166833345063e-10, 0.0009855212040334614, 0.0007568188673723223], :Pressure => [2.7549886043053525e6, 2.794254010316012e6, 2.892417920080706e6, 2.970952389647165e6], :PhaseMassDensities => [1000.9987110648703 1000.9798448626234 1001.0268538543124 1001.0642319184701], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [293.50815171386324 377.3605112414243 251.58548880918494 251.59488294132598], :TotalThermalEnergy => [3.472887662083444e8, 4.470791561196449e8, 2.9804046524605674e8, 2.980329482278891e8], :FluidEnthalpy => [1.1859860417004684e6 1.1875449383665673e6 1.187538321750202e6 1.1875425545665228e6], :Temperature => [282.6695067313784, 283.0811772735276, 283.0808194763112, 283.0830450877603]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.4275140403637287e-10, 0.0013375839207887714, 0.0010401923275399163], :Pressure => [2.756138674733833e6, 2.7949986484946897e6, 2.8921544086485747e6, 2.96989773778311e6], :PhaseMassDensities => [990.7224264605071 990.5848375383922 990.8685137979612 991.061329788578], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.49498769339846 373.4416858041663 249.03241948968895 249.08087943365823], :TotalThermalEnergy => [3.877767568566911e8, 4.990656856424173e8, 3.3219247965137476e8, 3.318509962392475e8], :FluidEnthalpy => [1.3376647287790186e6 1.3392167889130344e6 1.3368514750691715e6 1.3352988543668129e6], :Temperature => [319.7860894259603, 320.14818947340956, 319.5865056196626, 319.2169511184187]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [0.0, 0.0, 0.0], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, Any}(:WellObs => nothing, :WellB => nothing, :WellA => nothing), 235), :SurfaceTemperature => [344.88110621891315, 282.6695067313784, 319.7860894259603]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [2.815832399115016e6, 2.8012189340026686e6, 2.7981967168769552e6, 2.7981388550403593e6, 2.797913951641668e6, 2.797974106390969e6, 2.7980170388452453e6, 2.798327979226544e6, 2.7977175818449226e6, 2.8000720077702776e6  …  2.9690941768093375e6, 2.969114002116668e6, 2.9667751204289054e6, 2.964222380961913e6, 2.965028144440574e6, 2.9661508529107403e6, 2.9674550557127977e6, 2.9678475977285802e6, 2.963735594761634e6, 2.9496022843200495e6], :TotalMasses => [455658.13909624034 1.4175428539386152e6 … 557334.8134381415 101352.28066351423], :TotalThermalEnergy => [1.6917892989367124e12, 5.264558670765988e12, 7.521232091123308e12, 7.716844873235585e12, 8.297273855660723e12, 8.326121105840572e12, 8.361053183885881e12, 7.5862705959604375e12, 6.581394803642986e12, 5.065555285253822e12  …  5.945742464328132e12, 5.938746933879709e12, 4.648005380987631e12, 1.487765062445336e12, 9.38046660682737e11, 5.252690437190438e12, 4.872375831792895e12, 3.1846417737468784e12, 2.0586327418489922e12, 3.738292442889765e11], :FluidEnthalpy => [1.3560088414738774e6 1.3563392267290542e6 … 1.34965866541741e6 1.3478514353333814e6], :Temperature => [324.07719943642377, 324.1553431787282, 324.17490246549994, 324.5089467833394, 325.15727221877, 326.34267337680564, 327.7797021851134, 327.1149984528171, 324.1912387696425, 323.42080782299104  …  320.1608252021711, 319.76714929597324, 320.3692823062352, 320.46011264720283, 323.41577877592545, 323.3918798196236, 323.03623537385573, 322.9149349345684, 322.5837864091054, 322.16181992765524]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.3695774228590067e-10, -0.0032098720994010468, -0.0025921938064839326], :Pressure => [2.7567101888608173e6, 2.7950740090314616e6, 2.8910042054843414e6, 2.967758611560618e6], :PhaseMassDensities => [977.9923872452466 978.0180837520795 978.3479790884585 978.2787402521028], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [286.7623452433984 368.7041312392201 245.88566590069777 245.8682642831267], :TotalThermalEnergy => [4.13927291672262e8, 5.321724417854124e8, 3.543480008462658e8, 3.545047819500699e8], :FluidEnthalpy => [1.4462693871637848e6 1.4462169384161572e6 1.4440638015700367e6 1.444882128557762e6], :Temperature => [344.88096009393, 344.8666089435396, 344.37112425215935, 344.5524356467339]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.7531688879928654e-10, 0.0009860481422472602, 0.0007571778306601849], :Pressure => [2.7541223336900724e6, 2.7933877166419253e6, 2.891551551080898e6, 2.97008596107947e6], :PhaseMassDensities => [1000.9983179756208 1000.9790622790815 1001.0261109619731 1001.0634653990179], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [293.50803645407535 377.3602162143796 251.58530209997568 251.5946902939756], :TotalThermalEnergy => [3.4728862951300687e8, 4.470849023013481e8, 2.9804388868908554e8, 2.980366057208472e8], :FluidEnthalpy => [1.1859851762977636e6 1.187560228676218e6 1.1875519450623048e6 1.1875571356080805e6], :Temperature => [282.669264456355, 283.085197251867, 283.08439798587744, 283.0868744550182]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.436551139509479e-10, 0.0013397745608915244, 0.0010417035955428513], :Pressure => [2.755272202624741e6, 2.794132194522652e6, 2.891288053870606e6, 2.9690314679080844e6], :PhaseMassDensities => [990.7221043623446 990.5860843689153 990.8693346332005 991.0627118979928], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.4948932492845 373.44215584819966 249.03262578808557 249.08122679564096], :TotalThermalEnergy => [3.877766305224366e8, 4.990604847914893e8, 3.3218992341972643e8, 3.318472366361047e8], :FluidEnthalpy => [1.3376638541936397e6 1.3392003017887378e6 1.336839228638974e6 1.3352810242291363e6], :Temperature => [319.785938609838, 320.1443718421029, 319.5836836792875, 319.2128174837155]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [0.0, 0.0, 0.0], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, Any}(:WellObs => nothing, :WellB => nothing, :WellA => nothing), 236), :SurfaceTemperature => [344.88096009393, 282.669264456355, 319.785938609838]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [2.8149699186461843e6, 2.800356465195092e6, 2.7973342595981727e6, 2.797276415187418e6, 2.797051525066703e6, 2.797111662960957e6, 2.7971545598308784e6, 2.7974655116162896e6, 2.7968551321103927e6, 2.7992095389337903e6  …  2.968231787962898e6, 2.968251648263074e6, 2.9659127257129895e6, 2.963359965191095e6, 2.9641656362452926e6, 2.9652883557679183e6, 2.9665925780058075e6, 2.96698517479763e6, 2.962873224178367e6, 2.9487399423824106e6], :TotalMasses => [455658.031842326 1.4175419988182215e6 … 557336.5218097175 101352.83462853132], :TotalThermalEnergy => [1.6917876797666646e12, 5.2645660458294795e12, 7.521252453885e12, 7.716872002940884e12, 8.297338039541719e12, 8.326204237255016e12, 8.361146737220475e12, 7.586337895385775e12, 6.581464562559887e12, 5.065572175388502e12  …  5.945642199709387e12, 5.938569940397214e12, 4.647919124729676e12, 1.4877409078141257e12, 9.380454568896296e11, 5.25267927136024e12, 4.872343425584896e12, 3.184590855384217e12, 2.0585869549527314e12, 3.738146926144352e11], :FluidEnthalpy => [1.3560071706131096e6 1.3563409819203133e6 … 1.349626237862638e6 1.347795141491395e6], :Temperature => [324.0768649267959, 324.155809216463, 324.17581216291205, 324.5101332036396, 325.15989985699207, 326.3460810316704, 327.7835430825543, 327.1180351687742, 324.1948284517546, 323.42192741308196  …  320.1551716545435, 319.7571785659509, 320.363057593909, 320.45465987904083, 323.4153342939475, 323.3911500552057, 323.0339755351964, 322.9095184442711, 322.5762636124654, 322.1486890948078]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.3634333689213883e-10, -0.0032104399833006603, -0.002592595679022376], :Pressure => [2.75584767801078e6, 2.7942115245575854e6, 2.8901416756799747e6, 2.966896093398124e6], :PhaseMassDensities => [977.9920815416395 978.0197342656147 978.345392507471 978.2816133724447], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [286.76225560641916 368.7047534681637 245.88501582199152 245.86898637702743], :TotalThermalEnergy => [4.139271620330087e8, 5.321678765981853e8, 3.5435137736400044e8, 3.544999032603243e8], :FluidEnthalpy => [1.44626850524359e6 1.4462012342132772e6 1.444080469911802e6 1.4448571607695664e6], :Temperature => [344.88081462454625, 344.8630969665191, 344.37497458331603, 344.54681893005954]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.7454169346172944e-10, 0.0009865612337643195, 0.0007575317149791996], :Pressure => [2.7532598936061193e6, 2.7925252535979147e6, 2.8906890130216666e6, 2.969223363737827e6], :PhaseMassDensities => [1000.9979266239179 1000.9782829935323 1001.0253708240721 1001.0627032755696], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [293.5079217037628 377.3599224306488 251.5851160830323 251.5944987514615], :TotalThermalEnergy => [3.472884934221199e8, 4.4709062567504394e8, 2.980473024362463e8, 2.980402369665612e8], :FluidEnthalpy => [1.185984314721844e6 1.1875754584828857e6 1.187565530414803e6 1.1875716109604978e6], :Temperature => [282.6690232507181, 283.0892013772397, 283.08796658615387, 283.0906760760236]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.4301298111066975e-10, 0.0013419194050462106, 0.0010431729127616553], :Pressure => [2.7544096025636285e6, 2.793269612930553e6, 2.8904255716708973e6, 2.9681690692982627e6], :PhaseMassDensities => [990.7217837036037 990.587346685263 990.870143093417 991.0640718393624], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.494799227231 373.44263173025143 249.0328289762997 249.08156858618625], :TotalThermalEnergy => [3.877765047527142e8, 4.990552395533613e8, 3.32187397260294e8, 3.318435280942375e8], :FluidEnthalpy => [1.3376629835158559e6 1.3391836788202093e6 1.3368271235890507e6 1.3352634329126354e6], :Temperature => [319.78578846750605, 320.1405220536659, 319.5808946987613, 319.2087396940145]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [0.0, 0.0, 0.0], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, Any}(:WellObs => nothing, :WellB => nothing, :WellA => nothing), 237), :SurfaceTemperature => [344.88081462454625, 282.6690232507181, 319.78578846750605]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [2.8141094356983746e6, 2.7994959947474822e6, 2.7964738025702937e6, 2.7964159780705874e6, 2.796191102742563e6, 2.7962512256825254e6, 2.7962940894659497e6, 2.796605054303354e6, 2.7959946942249066e6, 2.7983490833556294e6  …  2.9673714142995332e6, 2.9673913086279193e6, 2.965052344734617e6, 2.962499561992538e6, 2.9633051437072246e6, 2.964427874441094e6, 2.965732116296676e6, 2.9661247678021872e6, 2.962012868810689e6, 2.947879614603403e6], :TotalMasses => [455657.9216182676 1.4175411422163518e6 … 557338.2245082511 101353.38111524173], :TotalThermalEnergy => [1.6917861409648198e12, 5.26457348622818e12, 7.521272848735543e12, 7.716899328369584e12, 8.297402342895016e12, 8.326287504401365e12, 8.361240260157008e12, 7.586404953697059e12, 6.581534227071725e12, 5.065589079532766e12  …  5.94554200063982e12, 5.938393907019467e12, 4.6478329547559375e12, 1.4877167810745195e12, 9.380442542970369e11, 5.252668106601427e12, 4.872311085244462e12, 3.1845400149282773e12, 2.0585413150116953e12, 3.738003266662795e11], :FluidEnthalpy => [1.3560055694148035e6 1.3563427557951324e6 … 1.3495939142545862e6 1.347739563552401e6], :Temperature => [324.0765465646837, 324.1562794905932, 324.1767233321153, 324.51132827509116, 325.16253242901615, 326.34949429156535, 327.78738275596373, 327.12106099840673, 324.1984132913336, 323.4230479639627  …  320.14952182662586, 319.7472619104232, 320.35683912965794, 320.44921342529545, 323.4148902682606, 323.3904203826449, 323.03172029310423, 322.9041102551718, 322.568764964493, 322.1357257893866]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.3602645158876518e-10, -0.0032110316603540315, -0.0025930217102772906], :Pressure => [2.7549871712029064e6, 2.793351044006119e6, 2.88928115411141e6, 2.9660355843613585e6], :PhaseMassDensities => [977.9917765483606 978.0213779630616 978.3429002260158 978.284414264161], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [286.762166177719 368.7053731275026 245.88438944334268 245.8696903178946], :TotalThermalEnergy => [4.1392703269509745e8, 5.3216332871356905e8, 3.5435461093507475e8, 3.544951342121441e8], :FluidEnthalpy => [1.4462676253723844e6 1.4461855891192188e6 1.4440964198450113e6 1.4448327477901357e6], :Temperature => [344.8806694933579, 344.8595982857228, 344.3786612048991, 344.5413281087236]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.7413663776018513e-10, 0.0009870719269028823, 0.0007578844912505992], :Pressure => [2.752399456039007e6, 2.7916647930665645e6, 2.889828477310406e6, 2.968362768637042e6], :PhaseMassDensities => [1000.9975361802765 1000.9775025869196 1001.0246283997719 1001.0619406798332], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [293.50780721970773 377.35962822428706 251.58492949145412 251.59430709024846], :TotalThermalEnergy => [3.4728835764709854e8, 4.4709638038719e8, 2.980507488104361e8, 2.980438824908509e8], :FluidEnthalpy => [1.1859834551460736e6 1.1875907746905312e6 1.1875792501861337e6 1.1875861456477402e6], :Temperature => [282.66878260311245, 283.0932283640299, 283.0915706862113, 283.09449340317656]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.426805449635194e-10, 0.0013440280163056237, 0.0010446179341850879], :Pressure => [2.7535490065090726e6, 2.7924090352539658e6, 2.889565093193678e6, 2.9673086742029847e6], :PhaseMassDensities => [990.7214637897516 990.5886036147322 990.870952265127 991.0654251487716], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.4947054235903 373.4431055814978 249.03303234333168 249.0819087099381], :TotalThermalEnergy => [3.8777637927544755e8, 4.990500143727803e8, 3.3218487142021847e8, 3.318398356019165e8], :FluidEnthalpy => [1.3376621148612928e6 1.339167118909249e6 1.3368150209035533e6 1.3352459170359306e6], :Temperature => [319.78563867408974, 320.13668694353254, 319.57810614388023, 319.2046794918234]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [0.0, 0.0, 0.0], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, Any}(:WellObs => nothing, :WellB => nothing, :WellA => nothing), 238), :SurfaceTemperature => [344.8806694933579, 282.66878260311245, 319.78563867408974]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [2.81325245162437e6, 2.798639022428751e6, 2.7956168420331622e6, 2.7955590352613986e6, 2.795334173444222e6, 2.7953942798889545e6, 2.7954371086772573e6, 2.7957480854674918e6, 2.795137743726931e6, 2.79749211436091e6  …  2.9665145259794896e6, 2.966534455396631e6, 2.964195451110223e6, 2.961642647139286e6, 2.962448135984229e6, 2.96357087781908e6, 2.9648751391990595e6, 2.9652678453032556e6, 2.9611559985298985e6, 2.9470227728486406e6], :TotalMasses => [455657.80881923495 1.417540285108626e6 … 557339.922024954 101353.92051466087], :TotalThermalEnergy => [1.6917846803870723e12, 5.26458099131018e12, 7.521293277372908e12, 7.716926847535375e12, 8.297466764632874e12, 8.326370905230371e12, 8.361333750752769e12, 7.586471776433109e12, 6.581603799839381e12, 5.065605999101939e12  …  5.945441869926072e12, 5.938218824548275e12, 4.647746874365874e12, 1.48769268322231e12, 9.380430530325347e11, 5.252656943961672e12, 4.872278811119313e12, 3.184489252424874e12, 2.0584958190175496e12, 3.737861384803363e11], :FluidEnthalpy => [1.3560040365259673e6 1.3563445486613482e6 … 1.3495616929568783e6 1.3476846713246258e6], :Temperature => [324.07624393666845, 324.15675397579093, 324.1776360664295, 324.51253192660766, 325.16516990629606, 326.3529130878348, 327.791221140302, 327.12407620748957, 324.2019934420632, 323.4241695870487  …  320.1438758947907, 319.73739883008295, 320.35062716951046, 320.4437735286416, 323.4144467616762, 323.3896908862484, 323.0294696886479, 322.8987103891038, 322.5612899886241, 322.122922846155]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.3547439631256245e-10, -0.0032116518320603046, -0.00259347502195715], :Pressure => [2.754130154840436e6, 2.7924940538190417e6, 2.88842412723135e6, 2.9651785709834476e6], :PhaseMassDensities => [977.9914727922857 978.0230162927426 978.3405009185374 978.2871462234149], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [286.76207711178597 368.70599076324135 245.88378643160283 245.87037693414433], :TotalThermalEnergy => [4.1392690388186294e8, 5.321587963469195e8, 3.5435770459102196e8, 3.544904708445054e8], :FluidEnthalpy => [1.4462667490696888e6 1.446169997671324e6 1.4441116671646833e6 1.4448088701505873e6], :Temperature => [344.88052495098106, 344.85611156596707, 344.38218761898924, 344.5359586660796]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.734301009044788e-10, 0.000987577623933902, 0.0007582346937350791], :Pressure => [2.751542513526966e6, 2.7908078276097686e6, 2.8889714365638746e6, 2.967505668434797e6], :PhaseMassDensities => [1000.9971473219828 1000.9767215882689 1001.0238842258335 1001.0611780807794], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [293.5076932005009 377.35933379473227 251.58474246014387 251.59411542820163], :TotalThermalEnergy => [3.4728822242338645e8, 4.4710216897716886e8, 2.980542294241448e8, 2.9804754458768094e8], :FluidEnthalpy => [1.1859825990612311e6 1.1876061848922018e6 1.1875931116403088e6 1.1876007497223995e6], :Temperature => [282.6685429309205, 283.09728023597506, 283.0952122223313, 283.098329106265]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.4210134906371548e-10, 0.0013460998422558236, 0.001046038526183508], :Pressure => [2.7526919062009007e6, 2.791551953236049e6, 2.8887081102213194e6, 2.9664517745089247e6], :PhaseMassDensities => [990.7211451754947 990.5898547724622 990.8717633216095 991.0667733085895], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.4946120010108 373.4435772568498 249.03323618405864 249.0822475394565], :TotalThermalEnergy => [3.8777625430770034e8, 4.9904481254664993e8, 3.321823447603615e8, 3.318361573569687e8], :FluidEnthalpy => [1.3376612497339281e6 1.339150632909928e6 1.336802915930893e6 1.3352284688713006e6], :Temperature => [319.78548948883144, 320.13286896679796, 319.5753168283042, 319.2006349687046]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [0.0, 0.0, 0.0], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, Any}(:WellObs => nothing, :WellB => nothing, :WellA => nothing), 239), :SurfaceTemperature => [344.88052495098106, 282.6685429309205, 319.78548948883144]))
 OrderedDict(:Reservoir => OrderedDict{Symbol, Any}(:Pressure => [2.8123966177533646e6, 2.797783201057834e6, 2.7947610337965814e6, 2.7947032462232e6, 2.7944783986786413e6, 2.7945384894254627e6, 2.794581284154809e6, 2.794892273514795e6, 2.794281950729813e6, 2.796636303741265e6  …  2.96565879393167e6, 2.965678758587262e6, 2.9633397143168612e6, 2.960786889096904e6, 2.9615922836652533e6, 2.9627150367187397e6, 2.964019317698653e6, 2.964412078634451e6, 2.9603002844657055e6, 2.946167087396251e6], :TotalMasses => [455657.69309638615 1.4175394261680855e6 … 557341.6139539389 101354.45303749618], :TotalThermalEnergy => [1.6917832949755864e12, 5.26458855733675e12, 7.521313737045746e12, 7.716954554027022e12, 8.29753129892209e12, 8.326454432984994e12, 8.361427202198242e12, 7.586538364564828e12, 6.581673279508316e12, 5.065622932523994e12  …  5.945341806848184e12, 5.938044680585158e12, 4.647660884040523e12, 1.4876686143631575e12, 9.380418526761204e11, 5.252645781413292e12, 4.87224660072559e12, 3.184438566069034e12, 2.058450462869306e12, 3.737721203056135e11], :FluidEnthalpy => [1.356002568557019e6 1.3563463587236276e6 … 1.3495295703335132e6 1.3476304342058152e6], :Temperature => [324.07595640298933, 324.15723240477774, 324.17855021553567, 324.51374384974963, 325.16781202384243, 326.3563371183152, 327.7950579318552, 327.1270808159942, 324.20556880809784, 323.4252921507095  …  320.1382337893402, 319.72758859731505, 320.3444217190982, 320.4383401839066, 323.4140035959926, 323.38896140871117, 323.02722352253267, 322.89331862745416, 322.553837984649, 322.1102732472726]), :WellA => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.3529248067543967e-10, -0.0032122928992558194, -0.002593949185553324], :Pressure => [2.7532742910238e6, 2.791638216064567e6, 2.8875682569020144e6, 2.9643227150487592e6], :PhaseMassDensities => [977.9911694447669 978.0246484406591 978.3381913529369 978.2898106615426], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [286.7619881656479 368.70660606850987 245.88320597445696 245.87104658048418], :TotalThermalEnergy => [4.139267752419359e8, 5.321542790136672e8, 3.5436066170418376e8, 3.544859094985553e8], :FluidEnthalpy => [1.4462658739451135e6 1.4461544573679802e6 1.4441262279575162e6 1.4447855084857675e6], :Temperature => [344.8803806031368, 344.8526363877222, 344.38555763826304, 344.5307063524421]), :WellB => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.7319771835061247e-10, 0.0009880802409027057, 0.0007585832926504368], :Pressure => [2.7506867204035125e6, 2.7899520115184756e6, 2.8881155449650786e6, 2.9666497172274613e6], :PhaseMassDensities => [1000.9967589846376 1000.9759388916866 1001.0231372458561 1001.0604143509555], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [293.5075793340442 377.3590387250723 251.58455472359913 251.59392348196133], :TotalThermalEnergy => [3.472880873808646e8, 4.4710799162258214e8, 2.980577438957598e8, 2.980512235926148e8], :FluidEnthalpy => [1.185981744124075e6 1.1876216885274684e6 1.187607112170769e6 1.1876154235125282e6], :Temperature => [282.6683035781353, 283.1013568127514, 283.0988904751373, 283.1021832389832]), :WellObs => OrderedDict{Symbol, Any}(:TotalMassFlux => [1.419101909437945e-10, 0.0013481391153221881, 0.0010474380351811524], :Pressure => [2.7518359591726e6, 2.790696024373495e6, 2.8878522801460875e6, 2.9655960275236988e6], :PhaseMassDensities => [990.7208269899306 990.5910991533232 990.8725752246274 991.0681152843198], :Saturations => [1.0 1.0 1.0 1.0], :SurfaceWellConditions => JutulDarcy.TopConditions{1, Float64}[JutulDarcy.TopConditions{1, Float64}([998.20715], [1.0])], :TotalMasses => [290.4945187041306 373.4440463773823 249.03344023754315 249.0825848147441], :TotalThermalEnergy => [3.877761295082461e8, 4.990396340665176e8, 3.3217981734687954e8, 3.3183249341832656e8], :FluidEnthalpy => [1.3376603857706045e6 1.3391342197930797e6 1.336790807973302e6 1.3352110876847086e6], :Temperature => [319.78534050429903, 320.1290680299309, 319.57252673543866, 319.1966060990323]), :Facility => OrderedDict{Symbol, Any}(:TotalSurfaceMassRate => [0.0, 0.0, 0.0], :WellGroupConfiguration => JutulDarcy.WellGroupConfiguration{Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, JutulDarcy.WellControlForce}, Dict{Symbol, Any}}(Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, JutulDarcy.WellControlForce}(:WellObs => DisabledControl{DisabledTarget}(DisabledTarget()), :WellB => DisabledControl{DisabledTarget}(DisabledTarget()), :WellA => DisabledControl{DisabledTarget}(DisabledTarget())), Dict{Symbol, Any}(:WellObs => nothing, :WellB => nothing, :WellA => nothing), 240), :SurfaceTemperature => [344.8803806031368, 282.6683035781353, 319.78534050429903]))

We calibrate against the first two years. Since we have defined report steps of 1/4 month, this corresponds to the first 12_4_2 steps. To see the effect of more or less data used for calibration, and to exclude data from one or more of the wells and WellObs, you can change num_years_cal and wells_cal below.

julia
num_years_cal = 2
n_steps = 12*4*num_years_cal
wells_cal = [:WellA, :WellObs, :WellB]
objective = (model, state, dt, step_no, forces) ->
    well_mismatch_thermal(model, wells_cal,
        states_hf, state, dt, step_no, forces;
        scale=sum(hifi.dt[1:n_steps]),
        w_bhp = 0.0,
        w_temp = 1.0/si_unit(:Kelvin),
        w_energy = 0.0,
    )
#1 (generic function with 1 method)

Compute mismatch for initial proxy model

julia
obj0 = Jutul.evaluate_objective(
    objective, proxy.model, states_proxy[1:n_steps],
    proxy.dt[1:n_steps], proxy.forces[1:n_steps])
println("Initial proxy mismatch: $obj0")
Initial proxy mismatch: 37.20929407336612

Set up optimization

We start by declaring the parameters to be optimized and their bounds

julia
parameters = setup_parameters(proxy.model)
opt_config = optimization_config(proxy.model, parameters,
    use_scaling = true,
    rel_min = 1e-3,
    rel_max = 1e3
)
Dict{Symbol, Jutul.OptimizationConfig} with 5 entries:
  :WellObs   => OptimizationConfig(Dict{Symbol, Any}(:MaterialHeatCapacities=>O…
  :WellB     => OptimizationConfig(Dict{Symbol, Any}(:MaterialHeatCapacities=>O…
  :Reservoir => OptimizationConfig(Dict{Symbol, Any}(:RockDensity=>OrderedDict{…
  :WellA     => OptimizationConfig(Dict{Symbol, Any}(:MaterialHeatCapacities=>O…
  :Facility  => OptimizationConfig(Dict{Symbol, Any}(), false)

We will only consider a subset of all the model parameters

julia
wells = well_symbols(proxy.model)
for (k, v) in opt_config
    for (ki, vi) in v
        if ki in [ # Volumetric properties
            :FluidVolume, :BulkVolume
            ]
            vi[:active] = k == :Reservoir
            vi[:rel_min] = 1e-3
            vi[:rel_max] = 1e2
        elseif ki in [ # Rock density and heat capacity
            :RockDensity, :RockHeatCapacity
            ]
            vi[:active] = k == :Reservoir
            vi[:rel_min] = 1e-3
            vi[:rel_max] = 1e3
        elseif ki in [ # Conductive properties
            :Transmissibilities,
            :RockThermalConductivities, :FluidThermalConductivities
            ]
            vi[:active] = k == :Reservoir
            vi[:rel_min] = 1e-5
            vi[:rel_max] = 1e3
        elseif ki in [ # Well properties
            :WellIndices, :WellIndicesThermal
            ]
            vi[:active] = k in wells
            vi[:rel_min] = 1e-5
            vi[:rel_max] = 1e2
        else
            vi[:active] = false
        end
    end
end

Calibrate proxy model

Setting up the calibration requires a few steps, which has been conveniently implemented in the calibrate_case utility function. We use the LBFGS optimization algorithm, which has a number of parameters that can be set, including the maximum number of function evaluations (maxfun), and the maximum number of iterations (maxiter), both we set to 200 here. Increasing these numbers will likely give a better match.

julia
proxy_cal = calibrate_case(objective, proxy, n_steps, opt_config;
    lbfgs_args = (maxfun = 200, maxiter = 200, factr = 1e-6))
Jutul case with 240 time-steps (5 years) and forces for each step.

Model:

MultiModel with 5 models and 18 cross-terms. 1161 equations, 1161 degrees of freedom and 8549 parameters.

  models:
    1) Reservoir (1122x1122)
       SinglePhaseSystem{AqueousPhase, Tuple{Float64}}(AqueousPhase(), (998.20715,))
       ∈ MinimalTPFATopology (561 cells, 1406 faces)
    2) WellA (11x11)
       SinglePhaseSystem{AqueousPhase, Tuple{Float64}}(AqueousPhase(), (998.20715,))
       ∈ MultiSegmentWell [WellA] (4 nodes, 3 segments, 3 perforations)
    3) WellB (11x11)
       SinglePhaseSystem{AqueousPhase, Tuple{Float64}}(AqueousPhase(), (998.20715,))
       ∈ MultiSegmentWell [WellB] (4 nodes, 3 segments, 3 perforations)
    4) WellObs (11x11)
       SinglePhaseSystem{AqueousPhase, Tuple{Float64}}(AqueousPhase(), (998.20715,))
       ∈ MultiSegmentWell [WellObs] (4 nodes, 3 segments, 3 perforations)
    5) Facility (6x6)
       JutulDarcy.PredictionMode()
       ∈ WellGroup([:WellA, :WellB, :WellObs], true, true)

  cross_terms:
    1) WellA <-> Reservoir (Eqs: mass_conservation <-> mass_conservation)
       JutulDarcy.ReservoirFromWellFlowCT
    2) WellA <-> Reservoir (Eqs: energy_conservation <-> energy_conservation)
       JutulDarcy.ReservoirFromWellThermalCT
    3) WellB <-> Reservoir (Eqs: mass_conservation <-> mass_conservation)
       JutulDarcy.ReservoirFromWellFlowCT
    4) WellB <-> Reservoir (Eqs: energy_conservation <-> energy_conservation)
       JutulDarcy.ReservoirFromWellThermalCT
    5) WellObs <-> Reservoir (Eqs: mass_conservation <-> mass_conservation)
       JutulDarcy.ReservoirFromWellFlowCT
    6) WellObs <-> Reservoir (Eqs: energy_conservation <-> energy_conservation)
       JutulDarcy.ReservoirFromWellThermalCT
    7) WellA  -> Facility (Eq: control_equation)
       JutulDarcy.FacilityFromWellFlowCT
    8) Facility  -> WellA (Eq: mass_conservation)
       JutulDarcy.WellFromFacilityFlowCT
    9) Facility  -> WellA (Eq: energy_conservation)
       JutulDarcy.WellFromFacilityThermalCT
    10) WellA  -> Facility (Eq: temperature_equation)
       JutulDarcy.FacilityFromWellTemperatureCT
    11) WellB  -> Facility (Eq: control_equation)
       JutulDarcy.FacilityFromWellFlowCT
    12) Facility  -> WellB (Eq: mass_conservation)
       JutulDarcy.WellFromFacilityFlowCT
    13) Facility  -> WellB (Eq: energy_conservation)
       JutulDarcy.WellFromFacilityThermalCT
    14) WellB  -> Facility (Eq: temperature_equation)
       JutulDarcy.FacilityFromWellTemperatureCT
    15) WellObs  -> Facility (Eq: control_equation)
       JutulDarcy.FacilityFromWellFlowCT
    16) Facility  -> WellObs (Eq: mass_conservation)
       JutulDarcy.WellFromFacilityFlowCT
    17) Facility  -> WellObs (Eq: energy_conservation)
       JutulDarcy.WellFromFacilityThermalCT
    18) WellObs  -> Facility (Eq: temperature_equation)
       JutulDarcy.FacilityFromWellTemperatureCT

Model storage will be optimized for runtime performance.

Simulate the full schedule using the calibrated proxy

julia
results_proxy_cal = simulate_reservoir(proxy_cal)
states_proxy_cal = results_proxy_cal.result.states
obj = Jutul.evaluate_objective(
    objective, proxy_cal.model, states_proxy_cal[1:n_steps],
    proxy_cal.dt[1:n_steps], proxy_cal.forces[1:n_steps])
println("Final proxy mismatch: $obj")
Jutul: Simulating 5 years as 240 report steps
╭────────────────┬───────────┬───────────────┬──────────╮
 Iteration type   Avg/step   Avg/ministep     Total 
 240 steps  247 ministeps  (wasted) 
├────────────────┼───────────┼───────────────┼──────────┤
 Newton         │    2.7125 │       2.63563 │  651 (0) │
 Linearization  │   3.74167 │       3.63563 │  898 (0) │
 Linear solver  │   9.44583 │       9.17814 │ 2267 (0) │
 Precond apply  │   18.8917 │       18.3563 │ 4534 (0) │
╰────────────────┴───────────┴───────────────┴──────────╯
╭───────────────┬────────┬────────────┬────────╮
 Timing type      Each    Relative   Total 
     ms  Percentage       s 
├───────────────┼────────┼────────────┼────────┤
 Properties    │ 0.1136 │     4.57 % │ 0.0739 │
 Equations     │ 0.3426 │    19.02 % │ 0.3076 │
 Assembly      │ 0.1279 │     7.10 % │ 0.1148 │
 Linear solve  │ 0.1529 │     6.15 % │ 0.0995 │
 Linear setup  │ 0.7728 │    31.09 % │ 0.5031 │
 Precond apply │ 0.0495 │    13.86 % │ 0.2242 │
 Update        │ 0.0767 │     3.09 % │ 0.0500 │
 Convergence   │ 0.1750 │     9.71 % │ 0.1572 │
 Input/Output  │ 0.0371 │     0.57 % │ 0.0092 │
 Other         │ 0.1203 │     4.84 % │ 0.0783 │
├───────────────┼────────┼────────────┼────────┤
 Total         │ 2.4852 │   100.00 % │ 1.6179 │
╰───────────────┴────────┴────────────┴────────╯
Final proxy mismatch: 0.8570406943612441

Plot the calibrated results

Finally, we plot the resulting production temperatures for the high-fidelity and proxy model. The calibrated proxy does a good job of reproducing the temperatures used for calibration, but the prediction for the remaining three years of storage are not perfect, with the calibrated proxy model showing mismatch comparable to the initial proxy model for WellA in the final year. The match in the observation well is almost perfect.

julia
fig = Figure(size = (800, 1200), fontsize = 20)
time_tot = results_hifi.wells.time/si_unit(:year)
for (wno, well) in enumerate(well_symbols(hifi.model))
    ax = Axis(fig[wno, 1], xlabel = "Time (years)", ylabel = "Temperature (°C)",
        title = "Well: $well")
    plot_well_data!(ax, time_tot, states_hf,
        vcat([states_proxy], [states_proxy_cal], [states_proxy_cal]);
        wells = [well],
        field = :Temperature,
        nan_ix = [
            missing,
            n_steps+1:length(hifi.dt),
            1:n_steps-1],
        names=vcat(
            "High-fidelity",
            "Proxy (initial)",
            "Proxy (calibration)",
            "Proxy (prediction)"),
        legend = wno == 2
        )
end
fig

Example on GitHub

If you would like to run this example yourself, it can be downloaded from the Fimbul.jl GitHub repository as a script.

This example took 369.40541249 seconds to complete.

This page was generated using Literate.jl.