54 return it::Abstract(
"Coupling_Base",
"The root record of description of particular the problem to solve.")
61 "Record with data for a general sequential coupling.\n")
65 "Short description of the solved problem.\n" 66 "Is displayed in the main log, and possibly in other text output files.")
68 "Computational mesh common to all equations.")
71 "Flow equation, provides the velocity field as a result.")
73 "Transport of soluted substances, depends on the velocity field from a Flow equation.")
75 "Heat transfer, depends on the velocity field from a Flow equation.")
86 using namespace Input;
94 process->data()[
"cross_section"]
95 .copy_from(
water->data()[
"cross_section"]);
106 FieldCommon *porosity = process->data().field(
"porosity");
107 process->data()[
"water_content"].
copy_from( *porosity );
110 process->initialize();
113 return std::make_shared<TransportNothing>(*mesh);
124 using namespace Input;
134 in_record.
opt_val<
string>(
"description", description);
147 std::stringstream ss;
152 RegionSet bulk_set = mesh->region_db().get_region_set(
"BULK");
167 if (pdata.
process->time().is_end())
return;
181 water->get_velocity_field()->local_to_ghost_data_scatter_begin();
182 water->get_velocity_field()->local_to_ghost_data_scatter_end();
183 pdata.
process->set_velocity_field(
water->get_velocity_field() );
186 if (pdata.
process->time().tlevel() == 0) pdata.
process->zero_time_step();
188 pdata.
process->update_solution();
212 const double theta=0.5;
216 water->zero_time_step();
238 double water_dt=
water->time().estimate_dt();
247 if(! pdata.process->time().is_end()){
248 pdata.process->set_time_upper_constraint(water_dt,
"Flow time step");
249 pdata.velocity_time = theta * pdata.process->planned_time() + (1-theta) * pdata.process->solved_time();
261 if (!
water->time().is_end() ) {
266 water->update_solution();
273 water->choose_next_time();
275 for(
auto &process : processes_) process.velocity_changed =
true;
288 for(
auto &pdata :
processes_) pdata.process.reset();
Common abstract parent of all Field<...> classes.
virtual void copy_from(const FieldCommon &other)=0
static Input::Type::Abstract & get_input_type()
FieldCommon * water_content_p0_
static const Input::Type::Record & get_input_type()
static Input::Type::Record & record_template()
Template Record with common keys for derived equations.
HC_ExplicitSequential(Input::Record in_record)
static Input::Type::Abstract & get_input_type()
Common specification of the input record for secondary equations.
static Mesh * mesh_factory(const Input::Record &input_mesh_rec)
AdvectionPtr make_advection_process(std::string process_key)
std::vector< AdvectionData > processes_
solute transport with chemistry through operator splitting
static const int registrar
std::shared_ptr< DarcyFlowInterface > water
steady or unsteady water flow simulator based on MH scheme
#define START_TIMER(tag)
Starts a timer with specified tag.
static Input::Type::Abstract & get_input_type()
FieldCommon * water_content_saturated_
virtual unsigned int n_elements(bool boundary=false) const
Returns count of boundary or bulk elements.
virtual FieldResult field_result(RegionSet region_set) const =0
Indicates special field states.
#define WarningOut()
Macro defining 'warning' record of log.
Discontinuous Galerkin method for equation of transport with dispersion.
static const Input::Type::Record & get_input_type()
void advection_process_step(AdvectionData &pdata)
mixed-hybrid model of linear Darcy flow, possibly unsteady.
static Profiler * instance(bool clear=false)
#define FLOW123D_FORCE_LINK_IN_PARENT(x)
static bool print_message_table(ostream &stream, std::string equation_name)
static const double inf_time
Infinity time used for steady case.
void set_task_info(string description, int size)