6868
6969function setup_simulation (inputparams:: AbstractInputParams ;
7070 use_p2d:: Bool = true ,
71+ use_model_scaling:: Bool = true ,
7172 extra_timing:: Bool = false ,
7273 max_step:: Union{Integer, Nothing} = nothing ,
7374 linear_solver:: Symbol = :direct ,
@@ -81,8 +82,6 @@ function setup_simulation(inputparams::AbstractInputParams;
8182 general_ad= general_ad,
8283 model_kwargs... )
8384
84- setup_scalings! (model, parameters)
85-
8685 state0 = setup_initial_state (inputparams, model)
8786
8887 forces = setup_forces (model)
@@ -93,8 +92,10 @@ function setup_simulation(inputparams::AbstractInputParams;
9392
9493 cfg = setup_config (simulator,
9594 model,
95+ parameters,
9696 linear_solver,
97- extra_timing;
97+ extra_timing,
98+ use_model_scaling;
9899 config_kwargs... )
99100
100101 output = Dict (:simulator => simulator,
@@ -1015,16 +1016,7 @@ end
10151016# Setup scalings #
10161017# #################
10171018
1018- function Jutul. get_scaling (model:: SimulationModel{O, S, F, C} , equation:: JutulEquation ) where {O, S <: ElectroChemicalComponent , F, C}
1019- if haskey (model. system. scalings, equation)
1020- return model. system. scalings[equation]
1021- else
1022- return 1.0
1023- end
1024- end
1025-
1026-
1027- function setup_scalings! (model, parameters)
1019+ function get_scalings (model, parameters)
10281020
10291021 refT = 298.15
10301022
@@ -1131,16 +1123,6 @@ function setup_scalings!(model, parameters)
11311123
11321124 end
11331125
1134- for scaling in scalings
1135-
1136- submodel = model[scaling[:model_label ]]
1137- eq = submodel. equations[scaling[:equation_label ]]
1138- value = scaling[:value ]
1139-
1140- submodel. system. scalings[eq] = value
1141-
1142- end
1143-
11441126 return scalings
11451127
11461128end
@@ -1237,8 +1219,10 @@ probably be given as inputs in future versions of BattMo.jl
12371219"""
12381220function setup_config (sim:: Jutul.JutulSimulator ,
12391221 model:: MultiModel ,
1222+ parameters,
12401223 linear_solver:: Symbol ,
1241- extra_timing:: Bool ;
1224+ extra_timing:: Bool ,
1225+ use_model_scaling:: Bool ;
12421226 kwargs... )
12431227
12441228 cfg = simulator_config (sim; kwargs... )
@@ -1255,8 +1239,19 @@ function setup_config(sim::Jutul.JutulSimulator,
12551239 cfg[:error_on_incomplete ] = false
12561240 cfg[:failure_cuts_timestep ] = true
12571241
1258- for key in Jutul. submodels_symbols (model)
1259- cfg[:tolerances ][key][:default ] = 1e-5
1242+ if use_model_scaling
1243+ scalings = get_scalings (model, parameters)
1244+ tol_default = 1e-5
1245+ for scaling in scalings
1246+ model_label = scaling[:model_label ]
1247+ equation_label = scaling[:equation_label ]
1248+ value = scaling[:value ]
1249+ cfg[:tolerances ][model_label][equation_label] = value* tol_default
1250+ end
1251+ else
1252+ for key in Jutul. submodels_symbols (model)
1253+ cfg[:tolerances ][key][:default ] = 1e-5
1254+ end
12601255 end
12611256
12621257 if model[:Control ]. system. policy isa CyclingCVPolicy
0 commit comments