BlackoilModel.hpp
Go to the documentation of this file.
248 OPM_THROW(std::runtime_error, "The --nonlinear-solver=nldd option can only be used with --matrix-add-well-contributions=true");
429 this->initialLinearization(report, iteration, nonlinear_solver.minIter(), nonlinear_solver.maxIter(), timer);
478 nonlinear_solver.detectOscillations(residual_norms_history_, residual_norms_history_.size() - 1, isOscillate, isStagnate);
855 const double pvValue = problem.referencePorosity(cell_idx, /*timeIdx=*/0) * model.dofTotalVolume(cell_idx);
881 OpmLog::debug(fmt::format("Setting BlackoilModel mass balance limit (XXXMBE) to {:.2e}", tuning.XXXMBE));
914 // To disable the usage of relaxed tolerances, you can set the relaxed tolerances as the strict tolerances.
916 // If min_strict_mb_iter = -1 (default) we use a relaxed tolerance for the mass balance for the last iterations
918 const bool relax_final_iteration_mb = (param_.min_strict_mb_iter_ < 0) && (iteration == maxIter);
919 const bool use_relaxed_mb = relax_final_iteration_mb || (param_.min_strict_mb_iter_ >= 0 && iteration >= param_.min_strict_mb_iter_);
924 // We also use relaxed tolerances for cells with total poro volume less than relaxed_max_pv_fraction_
926 const bool relax_final_iteration_cnv = (param_.min_strict_cnv_iter_ < 0) && (iteration == maxIter);
927 const bool relax_iter_cnv = param_.min_strict_mb_iter_ >= 0 && iteration >= param_.min_strict_mb_iter_;
929 const bool use_relaxed_cnv = relax_final_iteration_cnv || relax_pv_fraction_cnv || relax_iter_cnv;
933 std::string message = "Number of newton iterations reached its maximum try to continue with relaxed tolerances:";
1195 const unsigned compIdx = Indices::canonicalToActiveComponentIndex(FluidSystem::solventComponentIndex(phaseIdx));
1248 // the residual of the polymer molecular equation is scaled down by a 100, since molecular weight
1249 // can be much bigger than 1, and this equation shares the same tolerance with other mass balance equations
1258 B_avg[contiEnergyEqIdx] += 1.0 / (4.182e1); // converting J -> RM3 (entalpy / (cp * deltaK * rho) assuming change of 1e-5K of water
#define OPM_END_PARALLEL_TRY_CATCH(prefix, comm) Catch exception and throw in a parallel try-catch clause. Definition: DeferredLoggingErrorHelpers.hpp:172 #define OPM_BEGIN_PARALLEL_TRY_CATCH() Macro to setup the try of a parallel try-catch. Definition: DeferredLoggingErrorHelpers.hpp:138 Class for handling the blackoil aquifer model. Definition: BlackoilAquiferModel.hpp:50 Definition: BlackoilModel.hpp:164 static constexpr int contiEnergyEqIdx Definition: BlackoilModel.hpp:186 SimulatorReportSingle failureReport_ Definition: BlackoilModel.hpp:1139 BlackoilModel(Simulator &simulator, const ModelParameters ¶m, BlackoilWellModel< TypeTag > &well_model, const bool terminal_output) Definition: BlackoilModel.hpp:227 int linearIterationsLastSolve() const Number of linear iterations used in last call to solveJacobianSystem(). Definition: BlackoilModel.hpp:614 SimulatorReportSingle nonlinearIteration(const int iteration, const SimulatorTimerInterface &timer, NonlinearSolverType &nonlinear_solver) Definition: BlackoilModel.hpp:389 SimulatorReportSingle assembleReservoir(const SimulatorTimerInterface &, const int iterationIdx) Assemble the residual and Jacobian of the nonlinear system. Definition: BlackoilModel.hpp:518 GetPropType< TypeTag, Properties::SparseMatrixAdapter > SparseMatrixAdapter Definition: BlackoilModel.hpp:173 ConvergenceReport getReservoirConvergence(const double reportTime, const double dt, const int iteration, const int maxIter, std::vector< Scalar > &B_avg, std::vector< Scalar > &residual_norms) Definition: BlackoilModel.hpp:886 GetPropType< TypeTag, Properties::IntensiveQuantities > IntensiveQuantities Definition: BlackoilModel.hpp:172 ConvergenceReport getConvergence(const SimulatorTimerInterface &timer, const int iteration, const int maxIter, std::vector< double > &residual_norms) Definition: BlackoilModel.hpp:1031 static constexpr int foamConcentrationIdx Definition: BlackoilModel.hpp:200 GetPropType< TypeTag, Properties::FluidSystem > FluidSystem Definition: BlackoilModel.hpp:176 std::vector< std::vector< double > > computeFluidInPlace(const T &, const std::vector< int > &fipnum) const Wrapper required due to not following generic API. Definition: BlackoilModel.hpp:1059 static constexpr int microbialConcentrationIdx Definition: BlackoilModel.hpp:202 std::pair< double, double > localConvergenceData(std::vector< Scalar > &R_sum, std::vector< Scalar > &maxCoeff, std::vector< Scalar > &B_avg, std::vector< int > &maxCoeffCell) Get reservoir quantities on this process needed for convergence calculations. Definition: BlackoilModel.hpp:780 static constexpr bool has_polymermw_ Definition: BlackoilModel.hpp:1132 static constexpr int biofilmConcentrationIdx Definition: BlackoilModel.hpp:205 static constexpr int contiFoamEqIdx Definition: BlackoilModel.hpp:188 static constexpr int polymerMoleWeightIdx Definition: BlackoilModel.hpp:198 static constexpr int contiCalciteEqIdx Definition: BlackoilModel.hpp:194 const std::vector< std::vector< int > > & getConvCells() const Definition: BlackoilModel.hpp:1120 GetPropType< TypeTag, Properties::ElementContext > ElementContext Definition: BlackoilModel.hpp:171 const std::vector< StepReport > & stepReports() const Definition: BlackoilModel.hpp:1092 double computeCnvErrorPv(const std::vector< Scalar > &B_avg, double dt) Compute the total pore volume of cells violating CNV that are not part of a numerical aquifer. Definition: BlackoilModel.hpp:833 std::vector< StepReport > convergence_reports_ Definition: BlackoilModel.hpp:1155 static constexpr int contiMicrobialEqIdx Definition: BlackoilModel.hpp:190 bool terminalOutputEnabled() const Return true if output to cout is wanted. Definition: BlackoilModel.hpp:712 double & linearSolveSetupTime() Definition: BlackoilModel.hpp:621 int numPhases() const The number of active fluid phases in the model. Definition: BlackoilModel.hpp:1051 SimulatorReportSingle afterStep(const SimulatorTimerInterface &) Definition: BlackoilModel.hpp:506 static constexpr int contiBiofilmEqIdx Definition: BlackoilModel.hpp:193 std::tuple< double, double > convergenceReduction(Parallel::Communication comm, const double pvSumLocal, const double numAquiferPvSumLocal, std::vector< Scalar > &R_sum, std::vector< Scalar > &maxCoeff, std::vector< Scalar > &B_avg) Definition: BlackoilModel.hpp:717 static constexpr int contiUreaEqIdx Definition: BlackoilModel.hpp:192 static constexpr int calciteConcentrationIdx Definition: BlackoilModel.hpp:206 static constexpr int temperatureIdx Definition: BlackoilModel.hpp:199 GetPropType< TypeTag, Properties::SolutionVector > SolutionVector Definition: BlackoilModel.hpp:174 const ComponentName & compNames() const Returns const reference to component names. Definition: BlackoilModel.hpp:1301 GetPropType< TypeTag, Properties::PrimaryVariables > PrimaryVariables Definition: BlackoilModel.hpp:175 void initialLinearization(SimulatorReportSingle &report, const int iteration, const int minIter, const int maxIter, const SimulatorTimerInterface &timer) Definition: BlackoilModel.hpp:334 void updateSolution(const BVector &dx) Apply an update to the primary variables. Definition: BlackoilModel.hpp:690 long int global_nc_ The number of cells of the global grid. Definition: BlackoilModel.hpp:1149 GetPropType< TypeTag, Properties::Indices > Indices Definition: BlackoilModel.hpp:177 void updateTUNING(const Tuning &tuning) Definition: BlackoilModel.hpp:878 typename SparseMatrixAdapter::MatrixBlock MatrixBlockType Definition: BlackoilModel.hpp:209 const ModelParameters & param() const Returns const reference to model parameters. Definition: BlackoilModel.hpp:1295 static constexpr int contiOxygenEqIdx Definition: BlackoilModel.hpp:191 void getMaxCoeff(const unsigned cell_idx, const IntensiveQuantities &intQuants, const FluidState &fs, const Residual &modelResid, const Scalar pvValue, std::vector< Scalar > &B_avg, std::vector< Scalar > &R_sum, std::vector< Scalar > &maxCoeff, std::vector< int > &maxCoeffCell) Definition: BlackoilModel.hpp:1179 std::unique_ptr< BlackoilModelNldd< TypeTag > > nlddSolver_ Non-linear DD solver. Definition: BlackoilModel.hpp:1158 SimulatorReportSingle nonlinearIterationNewton(const int iteration, const SimulatorTimerInterface &timer, NonlinearSolverType &nonlinear_solver) Definition: BlackoilModel.hpp:420 void writePartitions(const std::filesystem::path &odir) const Definition: BlackoilModel.hpp:1097 static constexpr int solventSaturationIdx Definition: BlackoilModel.hpp:195 std::vector< std::vector< double > > computeFluidInPlace(const std::vector< int > &) const Should not be called. Definition: BlackoilModel.hpp:1066 static constexpr int polymerConcentrationIdx Definition: BlackoilModel.hpp:197 GetPropType< TypeTag, Properties::Simulator > Simulator Definition: BlackoilModel.hpp:169 const SimulatorReportSingle & failureReport() const return the statistics if the nonlinearIteration() method failed Definition: BlackoilModel.hpp:1082 GetPropType< TypeTag, Properties::MaterialLaw > MaterialLaw Definition: BlackoilModel.hpp:178 static constexpr int contiPolymerMWEqIdx Definition: BlackoilModel.hpp:187 BlackoilWellModel< TypeTag > & well_model_ Definition: BlackoilModel.hpp:1142 BlackoilWellModel< TypeTag > & wellModel() return the StandardWells object Definition: BlackoilModel.hpp:1163 typename SparseMatrixAdapter::IstlMatrix Mat Definition: BlackoilModel.hpp:210 Dune::FieldVector< Scalar, numEq > VectorBlockType Definition: BlackoilModel.hpp:208 static constexpr bool has_solvent_ Definition: BlackoilModel.hpp:1129 const BlackoilWellModel< TypeTag > & wellModel() const Definition: BlackoilModel.hpp:1166 SimulatorReportSingle localAccumulatedReports() const return the statistics if the nonlinearIteration() method failed Definition: BlackoilModel.hpp:1086 static constexpr bool has_polymer_ Definition: BlackoilModel.hpp:1131 void solveJacobianSystem(BVector &x) Definition: BlackoilModel.hpp:629 static constexpr int oxygenConcentrationIdx Definition: BlackoilModel.hpp:203 SimulatorReportSingle prepareStep(const SimulatorTimerInterface &timer) Definition: BlackoilModel.hpp:274 RSTConv rst_conv_ Helper class for RPTRST CONV. Definition: BlackoilModel.hpp:1144 static constexpr int ureaConcentrationIdx Definition: BlackoilModel.hpp:204 GetPropType< TypeTag, Properties::Grid > Grid Definition: BlackoilModel.hpp:170 Dune::BlockVector< VectorBlockType > BVector Definition: BlackoilModel.hpp:211 GetPropType< TypeTag, Properties::Scalar > Scalar Definition: BlackoilModel.hpp:180 static constexpr int saltConcentrationIdx Definition: BlackoilModel.hpp:201 static constexpr int contiBrineEqIdx Definition: BlackoilModel.hpp:189 static constexpr int contiZfracEqIdx Definition: BlackoilModel.hpp:184 static constexpr int contiSolventEqIdx Definition: BlackoilModel.hpp:183 std::vector< std::vector< double > > residual_norms_history_ Definition: BlackoilModel.hpp:1151 GetPropType< TypeTag, Properties::MaterialLawParams > MaterialLawParams Definition: BlackoilModel.hpp:179 static constexpr int contiPolymerEqIdx Definition: BlackoilModel.hpp:185 bool terminal_output_ Whether we print something to std::cout. Definition: BlackoilModel.hpp:1147 Class for handling the blackoil well model. Definition: BlackoilWellModel.hpp:101 Definition: ComponentName.hpp:34 const std::string & name(const int compIdx) const Definition: ComponentName.hpp:38 Definition: ConvergenceReport.hpp:38 @ NotANumber void setPoreVolCnvViolationFraction(const double cnvErrorPvFraction, const double cnvErrorPvFractionDenom) Definition: ConvergenceReport.hpp:167 void setReservoirFailed(const ReservoirFailure &rf) Definition: ConvergenceReport.hpp:144 This problem simulates an input file given in the data format used by the commercial ECLiPSE simulato... Definition: FlowProblem.hpp:112 const std::vector< std::vector< int > > & getData() const Obtain a const-ref to the accumulated data. Definition: RSTConv.hpp:58 void update(const ResidualVector &resid) Adds the CONV output for given residual vector. void init(const std::size_t numCells, const RSTConfig &rst_config, const std::array< int, 6 > &compIdx) Init state at beginning of step. Interface class for SimulatorTimer objects, to be improved. Definition: SimulatorTimerInterface.hpp:34 virtual int reportStepNum() const Current report step number. This might differ from currentStepNum in case of sub stepping. Definition: SimulatorTimerInterface.hpp:50 virtual bool lastStepFailed() const =0 Return true if last time step failed. virtual double currentStepLength() const =0 virtual double simulationTimeElapsed() const =0 virtual int currentStepNum() const =0 Dune::Communication< MPIComm > Communication Definition: ParallelCommunication.hpp:30 Definition: AluGridVanguard.hpp:57 std::size_t countGlobalCells(const Grid &grid) Get the number of cells of a global grid. Definition: countGlobalCells.hpp:82 Definition: BlackoilPhases.hpp:27 PhaseUsage phaseUsageFromDeck(const EclipseState &eclipseState) std::string to_string(const ConvergenceReport::ReservoirFailure::Type t) Solver parameters for the BlackoilModel. Definition: BlackoilModelParameters.hpp:485 double relaxed_max_pv_fraction_ Definition: BlackoilModelParameters.hpp:498 bool update_equations_scaling_ Update scaling factors for mass balance equations. Definition: BlackoilModelParameters.hpp:561 double tolerance_cnv_relaxed_ Relaxed local convergence tolerance (can be used when iter >= min_strict_cnv_iter_ && cnvViolatedPV <... Definition: BlackoilModelParameters.hpp:506 double max_residual_allowed_ Absolute max limit for residuals. Definition: BlackoilModelParameters.hpp:495 int min_strict_mb_iter_ Minimum number of Newton iterations before we can use relaxed MB convergence criterion. Definition: BlackoilModelParameters.hpp:555 double tolerance_cnv_ Local convergence tolerance (max of local saturation errors). Definition: BlackoilModelParameters.hpp:504 bool matrix_add_well_contributions_ Whether to add influences of wells between cells to the matrix and preconditioner matrix. Definition: BlackoilModelParameters.hpp:577 int nldd_num_initial_newton_iter_ Definition: BlackoilModelParameters.hpp:612 bool use_update_stabilization_ Try to detect oscillation or stagnation. Definition: BlackoilModelParameters.hpp:564 std::string nonlinear_solver_ Nonlinear solver type: newton or nldd. Definition: BlackoilModelParameters.hpp:603 double tolerance_mb_relaxed_ Relaxed mass balance tolerance (can be used when iter >= min_strict_mb_iter_). Definition: BlackoilModelParameters.hpp:502 int min_strict_cnv_iter_ Minimum number of Newton iterations before we can use relaxed CNV convergence criterion. Definition: BlackoilModelParameters.hpp:552 double tolerance_mb_ Relative mass balance tolerance (total mass balance error). Definition: BlackoilModelParameters.hpp:500 Definition: AquiferGridUtils.hpp:35 Definition: BlackoilPhases.hpp:46 Definition: FlowProblemProperties.hpp:118 Definition: FlowProblemProperties.hpp:98 Definition: FlowProblemProperties.hpp:63 Definition: ISTLSolver.hpp:62 Definition: BlackoilModelParameters.hpp:38 Definition: NonlinearSolver.hpp:41 Definition: BlackoilModel.hpp:76 std::tuple< FlowTimeSteppingParameters, FlowModelParameters, FlowNonLinearSolver, FlowBaseProblem, BlackOilModel > InheritsFrom Definition: BlackoilModel.hpp:78 Definition: AdaptiveTimeStepping.hpp:53 Definition: FlowProblemProperties.hpp:70 A struct for returning timing data from a simulator to its caller. Definition: SimulatorReport.hpp:34 double linear_solve_time Definition: SimulatorReport.hpp:43 double linear_solve_setup_time Definition: SimulatorReport.hpp:42 unsigned int total_newton_iterations Definition: SimulatorReport.hpp:49 unsigned int total_linearizations Definition: SimulatorReport.hpp:48 unsigned int total_linear_iterations Definition: SimulatorReport.hpp:50 |