My Project
Loading...
Searching...
No Matches
BlackoilModelParameters.hpp
1/*
2 Copyright 2015 SINTEF ICT, Applied Mathematics.
3
4 This file is part of the Open Porous Media project (OPM).
5
6 OPM is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 OPM is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with OPM. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#ifndef OPM_BLACKOILMODELPARAMETERS_HEADER_INCLUDED
21#define OPM_BLACKOILMODELPARAMETERS_HEADER_INCLUDED
22
23#include <opm/simulators/flow/SubDomain.hpp>
24
25#include <string>
26
27namespace Opm::Parameters {
28
29template<class Scalar>
30struct DbhpMaxRel { static constexpr Scalar value = 1.0; };
31
32template<class Scalar>
33struct DwellFractionMax { static constexpr Scalar value = 0.2; };
34
35struct EclDeckFileName { static constexpr auto value = ""; };
36
37template<class Scalar>
38struct InjMultOscThreshold { static constexpr Scalar value = 0.1; };
39
40template<class Scalar>
41struct InjMultDampMult { static constexpr Scalar value = 0.9; };
42
43template<class Scalar>
44struct InjMultMinDampFactor { static constexpr Scalar value = 0.05; };
45
46template<class Scalar>
47struct MaxResidualAllowed { static constexpr Scalar value = 1e7; };
48
49template<class Scalar>
50struct RelaxedMaxPvFraction { static constexpr Scalar value = 0.03; };
51
52template<class Scalar>
53struct ToleranceMb { static constexpr Scalar value = 1e-7; };
54
55template<class Scalar>
56struct ToleranceMbRelaxed { static constexpr Scalar value = 1e-6; };
57
58template<class Scalar>
59struct ToleranceEnergyBalance { static constexpr Scalar value = 1e-7; };
60
61template<class Scalar>
62struct ToleranceEnergyBalanceRelaxed { static constexpr Scalar value = 1e-6; };
63
64template<class Scalar>
65struct ToleranceCnv { static constexpr Scalar value = 1e-2; };
66
67template<class Scalar>
68struct ToleranceCnvRelaxed { static constexpr Scalar value = 1.0; };
69
70template<class Scalar>
71struct ToleranceCnvEnergy { static constexpr Scalar value = 1e-2; };
72
73template<class Scalar>
74struct ToleranceCnvEnergyRelaxed { static constexpr Scalar value = 1.0; };
75
76template<class Scalar>
77struct ToleranceWells { static constexpr Scalar value = 1e-4; };
78
79template<class Scalar>
80struct ToleranceWellControl { static constexpr Scalar value = 1e-7; };
81
82struct MaxWelleqIter { static constexpr int value = 30; };
83
84template<class Scalar>
85struct MaxSinglePrecisionDays { static constexpr Scalar value = 20.0; };
86
87struct MinStrictCnvIter { static constexpr int value = -1; };
88struct MinStrictMbIter { static constexpr int value = -1; };
89struct SolveWelleqInitially { static constexpr bool value = true; };
90struct UpdateEquationsScaling { static constexpr bool value = false; };
91struct UseUpdateStabilization { static constexpr bool value = true; };
92struct MatrixAddWellContributions { static constexpr bool value = false; };
93
94struct UseMultisegmentWell { static constexpr bool value = true; };
95
96template<class Scalar>
97struct TolerancePressureMsWells { static constexpr Scalar value = 0.01*1e5; };
98
99template<class Scalar>
100struct MaxPressureChangeMsWells { static constexpr Scalar value = 10*1e5; };
101
102struct MaxNewtonIterationsWithInnerWellIterations { static constexpr int value = 8; };
103struct MaxInnerIterMsWells { static constexpr int value = 100; };
104struct MaxInnerIterWells { static constexpr int value = 50; };
105struct ShutUnsolvableWells { static constexpr bool value = true; };
106struct AlternativeWellRateInit { static constexpr bool value = true; };
107struct StrictOuterIterWells { static constexpr int value = 6; };
108struct StrictInnerIterWells { static constexpr int value = 40; };
109
110template<class Scalar>
111struct RegularizationFactorWells { static constexpr Scalar value = 100.0; };
112
113struct EnableWellOperabilityCheck { static constexpr bool value = true; };
114struct EnableWellOperabilityCheckIter { static constexpr bool value = false; };
115struct DebugEmitCellPartition { static constexpr bool value = false; };
116
117template<class Scalar>
118struct RelaxedWellFlowTol { static constexpr Scalar value = 1e-3; };
119
120template<class Scalar>
121struct RelaxedPressureTolMsw { static constexpr Scalar value = 1e4; };
122
123struct MaximumNumberOfWellSwitches { static constexpr int value = 3; };
124struct UseAverageDensityMsWells { static constexpr bool value = false; };
125struct LocalWellSolveControlSwitching { static constexpr bool value = true; };
126struct UseImplicitIpr { static constexpr bool value = true; };
127struct CheckGroupConstraintsInnerWellIterations { static constexpr bool value = true; };
128
129// Network solver parameters
130struct NetworkMaxStrictIterations { static constexpr int value = 100; };
131struct NetworkMaxIterations { static constexpr int value = 200; };
132struct NonlinearSolver { static constexpr auto value = "newton"; };
133struct LocalSolveApproach { static constexpr auto value = "gauss-seidel"; };
134struct MaxLocalSolveIterations { static constexpr int value = 20; };
135
136template<class Scalar>
137struct LocalToleranceScalingMb { static constexpr Scalar value = 1.0; };
138
139template<class Scalar>
140struct LocalToleranceScalingCnv { static constexpr Scalar value = 0.1; };
141struct NlddNumInitialNewtonIter { static constexpr int value = 1; };
142struct NumLocalDomains { static constexpr int value = 0; };
143
144template<class Scalar>
145struct LocalDomainsPartitioningImbalance { static constexpr Scalar value = 1.03; };
146
147struct LocalDomainsPartitioningMethod { static constexpr auto value = "zoltan"; };
148struct LocalDomainsOrderingMeasure { static constexpr auto value = "maxpressure"; };
149
150struct ConvergenceMonitoring { static constexpr bool value = false; };
151struct ConvergenceMonitoringCutOff { static constexpr int value = 6; };
152template<class Scalar>
153struct ConvergenceMonitoringDecayFactor { static constexpr Scalar value = 0.75; };
154
155} // namespace Opm::Parameters
156
157namespace Opm {
158
160template <class Scalar>
162{
163public:
178 Scalar relaxed_max_pv_fraction_;
198 // TODO: it might need to distinguish between rate control and pressure control later
204
207
210
213
216
219
222
225
228
231
234
238
241
244
247
250
253
260
262 std::string deck_file_name_;
263
266
271
274
277
280
283
286
289
292
294 std::string nonlinear_solver_;
296 DomainSolveApproach local_solve_approach_{DomainSolveApproach::Jacobi};
297
298 int max_local_solve_iterations_;
299
300 Scalar local_tolerance_scaling_mb_;
301 Scalar local_tolerance_scaling_cnv_;
302
303 int nldd_num_initial_newton_iter_{1};
304 int num_local_domains_{0};
305 Scalar local_domain_partition_imbalance_{1.03};
306 std::string local_domain_partition_method_;
307 DomainOrderingMeasure local_domain_ordering_{DomainOrderingMeasure::MaxPressure};
308
309 bool write_partitions_{false};
310
317
320
321 static void registerParameters();
322};
323
324} // namespace Opm
325
326#endif // OPM_BLACKOILMODELPARAMETERS_HEADER_INCLUDED
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilboundaryratevector.hh:37
DomainOrderingMeasure
Measure to use for domain ordering.
Definition SubDomain.hpp:39
DomainSolveApproach
Solver approach for NLDD.
Definition SubDomain.hpp:33
Solver parameters for the BlackoilModel.
Definition BlackoilModelParameters.hpp:162
Scalar tolerance_mb_relaxed_
Relaxed mass balance tolerance (can be used when iter >= min_strict_mb_iter_).
Definition BlackoilModelParameters.hpp:182
Scalar tolerance_energy_balance_
Relative energy balance tolerance (total energy balance error).
Definition BlackoilModelParameters.hpp:184
int max_niter_inner_well_iter_
Maximum newton iterations with inner well iterations.
Definition BlackoilModelParameters.hpp:224
int max_number_of_well_switches_
Maximum number of times a well can switch to the same controt.
Definition BlackoilModelParameters.hpp:273
bool use_average_density_ms_wells_
Whether to approximate segment densities by averaging over segment and its outlet.
Definition BlackoilModelParameters.hpp:276
bool matrix_add_well_contributions_
Whether to add influences of wells between cells to the matrix and preconditioner matrix.
Definition BlackoilModelParameters.hpp:265
bool solve_welleq_initially_
Solve well equation initially.
Definition BlackoilModelParameters.hpp:246
bool update_equations_scaling_
Update scaling factors for mass balance equations.
Definition BlackoilModelParameters.hpp:249
Scalar tolerance_well_control_
Tolerance for the well control equations.
Definition BlackoilModelParameters.hpp:199
int max_inner_iter_wells_
Maximum inner iteration number for standard wells.
Definition BlackoilModelParameters.hpp:230
Scalar tolerance_energy_balance_relaxed_
Relaxed energy balance tolerance (can be used when iter >= min_strict_mb_iter_).
Definition BlackoilModelParameters.hpp:186
bool shut_unsolvable_wells_
Whether to shut unsolvable well.
Definition BlackoilModelParameters.hpp:227
Scalar inj_mult_osc_threshold_
Injectivity multiplier oscillation threshold.
Definition BlackoilModelParameters.hpp:169
Scalar convergence_monitoring_decay_factor_
Decay factor used in convergence monitoring.
Definition BlackoilModelParameters.hpp:316
bool use_implicit_ipr_
Whether to use implicit IPR for thp stability checks and solution search.
Definition BlackoilModelParameters.hpp:282
int min_strict_mb_iter_
Minimum number of Newton iterations before we can use relaxed MB convergence criterion.
Definition BlackoilModelParameters.hpp:243
Scalar max_pressure_change_ms_wells_
Maximum pressure change over an iteratio for ms wells.
Definition BlackoilModelParameters.hpp:209
int min_strict_cnv_iter_
Minimum number of Newton iterations before we can use relaxed CNV convergence criterion.
Definition BlackoilModelParameters.hpp:240
bool check_well_operability_
Whether to check well operability.
Definition BlackoilModelParameters.hpp:268
bool check_well_operability_iter_
Whether to check well operability during iterations.
Definition BlackoilModelParameters.hpp:270
Scalar dwell_fraction_max_
Max absolute change in well volume fraction in single iteration.
Definition BlackoilModelParameters.hpp:167
int max_welleq_iter_
Maximum iteration number of the well equation solution.
Definition BlackoilModelParameters.hpp:233
bool use_update_stabilization_
Try to detect oscillation or stagnation.
Definition BlackoilModelParameters.hpp:252
Scalar inj_mult_min_damp_factor_
Minimum damping factor for injectivity multipliers.
Definition BlackoilModelParameters.hpp:173
bool check_group_constraints_inner_well_iterations_
Whether to allow checking/changing to group controls during inner well iterations.
Definition BlackoilModelParameters.hpp:285
Scalar regularization_factor_wells_
Regularization factor for wells.
Definition BlackoilModelParameters.hpp:221
DomainSolveApproach local_solve_approach_
'jacobi' and 'gauss-seidel' supported.
Definition BlackoilModelParameters.hpp:296
BlackoilModelParameters()
Construct from user parameters or defaults.
Definition BlackoilModelParameters.cpp:33
Scalar tolerance_pressure_ms_wells_
Tolerance for the pressure equations for multisegment wells.
Definition BlackoilModelParameters.hpp:201
Scalar tolerance_cnv_energy_
Local energy convergence tolerance (max of local energy errors).
Definition BlackoilModelParameters.hpp:192
bool local_well_solver_control_switching_
Whether to allow control switching during local well solutions.
Definition BlackoilModelParameters.hpp:279
Scalar tolerance_wells_
Well convergence tolerance.
Definition BlackoilModelParameters.hpp:196
Scalar max_residual_allowed_
Absolute max limit for residuals.
Definition BlackoilModelParameters.hpp:175
bool use_multisegment_well_
Whether to use MultisegmentWell to handle multisegment wells it is something temporary before the mul...
Definition BlackoilModelParameters.hpp:259
int max_inner_iter_ms_wells_
Maximum inner iteration number for ms wells.
Definition BlackoilModelParameters.hpp:212
int strict_outer_iter_wells_
Newton iteration where wells are stricly convergent.
Definition BlackoilModelParameters.hpp:218
Scalar tolerance_cnv_energy_relaxed_
Relaxed local energy convergence tolerance (can be used when iter >= min_strict_cnv_iter_ && cnvViola...
Definition BlackoilModelParameters.hpp:194
Scalar inj_mult_damp_mult_
Injectivity multiplier dampening multiplier.
Definition BlackoilModelParameters.hpp:171
Scalar tolerance_mb_
Relative mass balance tolerance (total mass balance error).
Definition BlackoilModelParameters.hpp:180
bool convergence_monitoring_
Whether to enable convergence monitoring.
Definition BlackoilModelParameters.hpp:312
Scalar tolerance_cnv_
Local convergence tolerance (max of local saturation errors).
Definition BlackoilModelParameters.hpp:188
Scalar dbhp_max_rel_
Max relative change in bhp in single iteration.
Definition BlackoilModelParameters.hpp:165
Scalar tolerance_cnv_relaxed_
Relaxed local convergence tolerance (can be used when iter >= min_strict_cnv_iter_ && cnvViolatedPV <...
Definition BlackoilModelParameters.hpp:190
int network_max_iterations_
Maximum number of iterations in the network solver before giving up.
Definition BlackoilModelParameters.hpp:291
Scalar relaxed_tolerance_pressure_ms_well_
Relaxed tolerance for the MSW pressure solution.
Definition BlackoilModelParameters.hpp:206
std::string deck_file_name_
The file name of the deck.
Definition BlackoilModelParameters.hpp:262
int convergence_monitoring_cutoff_
Cut-off limit for convergence monitoring.
Definition BlackoilModelParameters.hpp:314
int network_max_strict_iterations_
Maximum number of iterations in the network solver before relaxing tolerance.
Definition BlackoilModelParameters.hpp:288
std::string nonlinear_solver_
Nonlinear solver type: newton or nldd.
Definition BlackoilModelParameters.hpp:294
int strict_inner_iter_wells_
Strict inner iteration number for wells.
Definition BlackoilModelParameters.hpp:215
Scalar relaxed_tolerance_flow_well_
Relaxed tolerance for for the well flow residual.
Definition BlackoilModelParameters.hpp:203
Scalar maxSinglePrecisionTimeStep_
Tolerance for time step in seconds where single precision can be used for solving for the Jacobian.
Definition BlackoilModelParameters.hpp:237
Definition BlackoilModelParameters.hpp:106
Definition BlackoilModelParameters.hpp:127
Definition BlackoilModelParameters.hpp:151
Definition BlackoilModelParameters.hpp:153
Definition BlackoilModelParameters.hpp:150
Definition BlackoilModelParameters.hpp:30
Definition BlackoilModelParameters.hpp:115
Definition BlackoilModelParameters.hpp:33
Definition BlackoilModelParameters.hpp:35
Definition BlackoilModelParameters.hpp:114
Definition BlackoilModelParameters.hpp:113
Definition BlackoilModelParameters.hpp:41
Definition BlackoilModelParameters.hpp:44
Definition BlackoilModelParameters.hpp:38
Definition BlackoilModelParameters.hpp:148
Definition BlackoilModelParameters.hpp:145
Definition BlackoilModelParameters.hpp:147
Definition BlackoilModelParameters.hpp:133
Definition BlackoilModelParameters.hpp:140
Definition BlackoilModelParameters.hpp:137
Definition BlackoilModelParameters.hpp:125
Definition BlackoilModelParameters.hpp:92
Definition BlackoilModelParameters.hpp:103
Definition BlackoilModelParameters.hpp:104
Definition BlackoilModelParameters.hpp:134
Definition BlackoilModelParameters.hpp:102
Definition BlackoilModelParameters.hpp:100
Definition BlackoilModelParameters.hpp:47
Definition BlackoilModelParameters.hpp:85
Definition BlackoilModelParameters.hpp:82
Definition BlackoilModelParameters.hpp:123
Definition BlackoilModelParameters.hpp:87
Definition BlackoilModelParameters.hpp:88
Definition BlackoilModelParameters.hpp:131
Definition BlackoilModelParameters.hpp:130
Definition BlackoilModelParameters.hpp:141
Definition BlackoilModelParameters.hpp:132
Definition BlackoilModelParameters.hpp:142
Definition BlackoilModelParameters.hpp:111
Definition BlackoilModelParameters.hpp:50
Definition BlackoilModelParameters.hpp:121
Definition BlackoilModelParameters.hpp:118
Definition BlackoilModelParameters.hpp:105
Definition BlackoilModelParameters.hpp:89
Definition BlackoilModelParameters.hpp:108
Definition BlackoilModelParameters.hpp:107
Definition BlackoilModelParameters.hpp:74
Definition BlackoilModelParameters.hpp:71
Definition BlackoilModelParameters.hpp:68
Definition BlackoilModelParameters.hpp:65
Definition BlackoilModelParameters.hpp:62
Definition BlackoilModelParameters.hpp:59
Definition BlackoilModelParameters.hpp:56
Definition BlackoilModelParameters.hpp:53
Definition BlackoilModelParameters.hpp:97
Definition BlackoilModelParameters.hpp:80
Definition BlackoilModelParameters.hpp:77
Definition BlackoilModelParameters.hpp:90
Definition BlackoilModelParameters.hpp:124
Definition BlackoilModelParameters.hpp:126
Definition BlackoilModelParameters.hpp:94
Definition BlackoilModelParameters.hpp:91