19 #ifndef HM_ITERATIVE_HH_ 20 #define HM_ITERATIVE_HH_ 41 "Record with data for iterative coupling.\n")
43 "Maximal count of HM iterations." )
45 "Minimal count of HM iterations." )
47 "Absolute tolerance for difference in HM iteration." )
49 "Relative tolerance for difference in HM iteration." )
56 min_it_ = in_record.
val<
unsigned int>(
"min_it");
57 max_it_ = in_record.
val<
unsigned int>(
"max_it");
65 double abs_error = std::numeric_limits<double>::max();
66 double rel_error = std::numeric_limits<double>::max();
131 void initialize(
Mesh &mesh);
144 std::shared_ptr<FieldFE<3, FieldValue<3>::Scalar> >
beta_ptr_;
148 std::shared_ptr<FieldFE<3, FieldValue<3>::Scalar> >
div_u_ptr_;
156 void initialize()
override;
157 void zero_time_step()
override;
158 void update_solution()
override;
159 double last_t()
override;
164 void update_potential();
166 void update_flow_fields();
Abstract base class for equation clasess.
Common abstract parent of all Field<...> classes.
Container for various descendants of FieldCommonBase.
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > old_div_u_ptr_
virtual void compute_iteration_error(double &abs_error, double &rel_error)=0
Compute absolute and relative error in the solution.
Class for solution of fully coupled flow and mechanics using fixed-stress iterative splitting...
double beta_
Tuning parameter for iterative splitting.
static const int registrar
Class template representing a field with values dependent on: point, element, and region...
double a_tol_
Absolute tolerance for difference between two succeeding iterations.
unsigned int it
Iteration index.
static const Input::Type::Record & record_template()
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > potential_ptr_
FieldFE for pressure_potential field.
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > old_pressure_ptr_
FEM for linear elasticity.
virtual void update_after_iteration()=0
Save data (e.g. solution fields) for the next iteration.
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > div_u_ptr_
virtual void solve_iteration()=0
Solve equations and update data (fields).
Field< 3, FieldValue< 3 >::Scalar > pressure_potential
Potential -alpha*pressure whose gradient is passed to mechanics as additional load.
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > flow_source_ptr_
Edge lumped mixed-hybrid solution of unsteady Darcy flow.
Field< 3, FieldValue< 3 >::Scalar > alpha
Biot coefficient.
std::shared_ptr< Elasticity > mechanics_
solute transport with chemistry through operator splitting
Field< 3, FieldValue< 3 >::Scalar > gravity
Standard gravity.
Field< 3, FieldValue< 3 >::Scalar > flow_source
Field< 3, FieldValue< 3 >::Scalar > beta
unsigned int min_it_
Minimal number of iterations to perform.
IterativeCoupling(Input::Record in_record)
unsigned int max_it_
Maximal number of iterations.
double r_tol_
Relative tolerance for difference between two succeeding iterations.
std::shared_ptr< RichardsLMH > flow_
steady or unsteady water flow simulator based on MH scheme
virtual void update_after_converged()=0
Save data after iterations have finished.
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > old_iter_pressure_ptr_
Field< 3, FieldValue< 3 >::Scalar > density
Density of fluid.
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > beta_ptr_