From 92ab1d7974556f0ede8b6707682b4c9a2dc20392 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atgeirr=20Fl=C3=B8=20Rasmussen?= Date: Sun, 24 May 2015 17:33:06 +0200 Subject: [PATCH] Use separate files for model parameter struct. --- CMakeLists_files.cmake | 2 + opm/autodiff/BlackoilModelParameters.cpp | 67 ++++++++++++++++++++++++ opm/autodiff/BlackoilModelParameters.hpp | 58 ++++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 opm/autodiff/BlackoilModelParameters.cpp create mode 100644 opm/autodiff/BlackoilModelParameters.hpp diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake index 44f6e33fc..64e2f1fe2 100644 --- a/CMakeLists_files.cmake +++ b/CMakeLists_files.cmake @@ -36,6 +36,7 @@ list (APPEND MAIN_SOURCE_FILES opm/autodiff/SimulatorIncompTwophaseAd.cpp opm/autodiff/TransportSolverTwophaseAd.cpp opm/autodiff/BlackoilPropsAdFromDeck.cpp + opm/autodiff/BlackoilModelParameters.cpp opm/autodiff/WellDensitySegmented.cpp opm/autodiff/LinearisedBlackoilResidual.cpp ) @@ -98,6 +99,7 @@ list (APPEND PUBLIC_HEADER_FILES opm/autodiff/BlackoilModel_impl.hpp opm/autodiff/BlackoilModelBase.hpp opm/autodiff/BlackoilModelBase_impl.hpp + opm/autodiff/BlackoilModelParameters.hpp opm/autodiff/BlackoilPropsAdFromDeck.hpp opm/autodiff/BlackoilPropsAdInterface.hpp opm/autodiff/CPRPreconditioner.hpp diff --git a/opm/autodiff/BlackoilModelParameters.cpp b/opm/autodiff/BlackoilModelParameters.cpp new file mode 100644 index 000000000..7a18c2fed --- /dev/null +++ b/opm/autodiff/BlackoilModelParameters.cpp @@ -0,0 +1,67 @@ +/* + 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 . +*/ + +#include +#include + +namespace Opm +{ + + + BlackoilModelParameters::BlackoilModelParameters() + { + // set default values + reset(); + } + + + + + BlackoilModelParameters::BlackoilModelParameters( const parameter::ParameterGroup& param ) + { + // set default values + reset(); + + // overload with given parameters + dp_max_rel_ = param.getDefault("dp_max_rel", dp_max_rel_); + ds_max_ = param.getDefault("ds_max", ds_max_); + dr_max_rel_ = param.getDefault("dr_max_rel", dr_max_rel_); + max_residual_allowed_ = param.getDefault("max_residual_allowed", max_residual_allowed_); + tolerance_mb_ = param.getDefault("tolerance_mb", tolerance_mb_); + tolerance_cnv_ = param.getDefault("tolerance_cnv", tolerance_cnv_); + tolerance_wells_ = param.getDefault("tolerance_wells", tolerance_wells_ ); + } + + + + + void BlackoilModelParameters::reset() + { + // default values for the solver parameters + dp_max_rel_ = 1.0e9; + ds_max_ = 0.2; + dr_max_rel_ = 1.0e9; + max_residual_allowed_ = 1e7; + tolerance_mb_ = 1.0e-5; + tolerance_cnv_ = 1.0e-2; + tolerance_wells_ = 5.0e-1; + } + + +} // namespace Opm diff --git a/opm/autodiff/BlackoilModelParameters.hpp b/opm/autodiff/BlackoilModelParameters.hpp new file mode 100644 index 000000000..054345cbe --- /dev/null +++ b/opm/autodiff/BlackoilModelParameters.hpp @@ -0,0 +1,58 @@ +/* + 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 . +*/ + +#ifndef OPM_BLACKOILMODELPARAMETERS_HEADER_INCLUDED +#define OPM_BLACKOILMODELPARAMETERS_HEADER_INCLUDED + +namespace Opm +{ + + namespace parameter { 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_; + /// 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_; + + /// Construct from user parameters or defaults. + explicit BlackoilModelParameters( const parameter::ParameterGroup& param ); + + /// Construct with default parameters. + BlackoilModelParameters(); + + /// Set default parameters. + void reset(); + }; + +} // namespace Opm + +#endif // OPM_BLACKOILMODELPARAMETERS_HEADER_INCLUDED