34 "Record with data for iterative coupling of flow and mechanics.\n")
38 "Flow equation, provides the velocity field as a result.")
40 "Mechanics, provides the displacement field.")
42 "Tuning parameter for iterative splitting. Its default value" 43 "corresponds to a theoretically optimal value with fastest convergence." )
45 "Maximal count of HM iterations." )
47 "Minimal count of HM iterations." )
49 "Absolute tolerance for difference in HM iteration." )
51 "Relative tolerance for difference in HM iteration." )
56 const int HM_Iterative::registrar = Input::register_class< HM_Iterative, Mesh &, const Input::Record >(
"Coupling_Iterative")
70 using namespace Input;
75 flow_ = std::make_shared<RichardsLMH>(*
mesh_, flow_rec);
85 mechanics_->data()[
"cross_section"].copy_from(flow_->data()[
"cross_section"]);
86 mechanics_->initialize();
89 beta_ = in_record.
val<
double>(
"iteration_parameter");
90 min_it_ = in_record.
val<
unsigned int>(
"min_it");
91 max_it_ = in_record.
val<
unsigned int>(
"max_it");
97 this->
time_ = &flow_->time();
114 flow_->zero_time_step();
122 double difference = 0;
123 double init_difference = 1;
126 (it < max_it_ && difference >
a_tol_ && difference/init_difference >
r_tol_)
131 flow_->update_solution();
142 return flow_->get_mh_dofhandler();
unsigned int max_it_
Maximal number of iterations.
double beta_
Tuning parameter for iterative splitting.
double r_tol_
Relative tolerance for difference between two succeeding iterations.
static const int registrar
static const Input::Type::Record & get_input_type()
Declare input record type for the equation TransportDG.
TimeMarks::iterator begin(TimeMark::Type mask) const
Iterator for the begin mimics container-like of TimeMarks.
const MH_DofHandler & get_mh_dofhandler() override
FLOW123D_FORCE_LINK_IN_CHILD(coupling_iterative)
void zero_time_step() override
double a_tol_
Absolute tolerance for difference between two succeeding iterations.
static const Input::Type::Record & get_input_type()
Define input record.
static TimeMarks & marks()
void update_solution() override
std::shared_ptr< Elasticity > mechanics_
solute transport with chemistry through operator splitting
#define START_TIMER(tag)
Starts a timer with specified tag.
static Input::Type::Abstract & get_input_type()
void initialize() override
TimeMark add(const TimeMark &mark)
unsigned int min_it_
Minimal number of iterations to perform.
static const Input::Type::Record & get_input_type()
HM_Iterative(Mesh &mesh, Input::Record in_record)
TimeMarks::iterator end(TimeMark::Type mask) const
Iterator for the end mimics container-like of TimeMarks.
#define WarningOut()
Macro defining 'warning' record of log.
Class used for marking specified times at which some events occur.
std::shared_ptr< RichardsLMH > flow_
steady or unsteady water flow simulator based on MH scheme
static bool print_message_table(ostream &stream, std::string equation_name)