opm-simulators/opm/autodiff/BlackoilModelParameters.hpp
Kai Bao 0dc041d46a adding a use_multisegment_well_
to determine whether we will treat mutlisegment wells with
MultisegmentWell well model. Currently, it will be faulse by default.
It might be changed to be true by default when considering the
multisegment well model is well tested.
2017-10-12 13:37:05 +02:00

94 lines
3.4 KiB
C++

/*
Copyright 2015 SINTEF ICT, Applied Mathematics.
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef OPM_BLACKOILMODELPARAMETERS_HEADER_INCLUDED
#define OPM_BLACKOILMODELPARAMETERS_HEADER_INCLUDED
#include <string>
namespace Opm
{
class ParameterGroup;
/// Solver parameters for the BlackoilModel.
struct BlackoilModelParameters
{
/// Max relative change in pressure in single iteration.
double dp_max_rel_;
/// Max absolute change in saturation in single iteration.
double ds_max_;
/// Max relative change in gas-oil or oil-gas ratio in single iteration.
double dr_max_rel_;
/// Max relative change in bhp in single iteration.
double dbhp_max_rel_;
/// Max absolute change in well volume fraction in single iteration.
double dwell_fraction_max_;
/// Absolute max limit for residuals.
double max_residual_allowed_;
/// Relative mass balance tolerance (total mass balance error).
double tolerance_mb_;
/// Local convergence tolerance (max of local saturation errors).
double tolerance_cnv_;
/// Well convergence tolerance.
double tolerance_wells_;
/// Tolerance for the well control equations
// TODO: it might need to distinguish between rate control and pressure control later
double tolerance_well_control_;
/// Tolerance for time step in seconds where single precision can be used
/// for solving for the Jacobian
double maxSinglePrecisionTimeStep_;
/// Maximum number of Newton iterations before we give up on the CNV convergence criterion
int max_strict_iter_;
/// Solve well equation initially
bool solve_welleq_initially_;
/// Update scaling factors for mass balance equations
bool update_equations_scaling_;
/// Try to detect oscillation or stagnation.
bool use_update_stabilization_;
/// Whehter to use MultisegmentWell to handle multisegment wells
// it is something temporary before the multisegment well model is considered to be
// well developed and tested.
// if it is false, we will handle multisegment wells as standard wells, which will be
// the default behavoir for the moment. Later, we might it to be true by default if necessary
bool use_multisegment_well_;
// The file name of the deck
std::string deck_file_name_;
/// Construct from user parameters or defaults.
explicit BlackoilModelParameters( const ParameterGroup& param );
/// Construct with default parameters.
BlackoilModelParameters();
/// Set default parameters.
void reset();
};
} // namespace Opm
#endif // OPM_BLACKOILMODELPARAMETERS_HEADER_INCLUDED