52 return it::Abstract(
"Coupling_Base",
"The root record of description of particular the problem to solve.")
59 "Record with data for a general sequential coupling.\n")
62 "Short description of the solved problem.\n" 63 "Is displayed in the main log, and possibly in other text output files.")
65 "Computational mesh common to all equations.")
67 "Simulation time frame and time step.")
70 "Flow equation, provides the velocity field as a result.")
72 "Transport of soluted substances, depends on the velocity field from a Flow equation.")
74 "Heat transfer, depends on the velocity field from a Flow equation.")
85 using namespace Input;
93 process->data()[
"cross_section"]
94 .copy_from(water->data()[
"cross_section"]);
105 FieldCommon *porosity = process->data().field(
"porosity");
106 process->data()[
"water_content"].
copy_from( *porosity );
109 process->initialize();
112 return std::make_shared<TransportNothing>(*mesh);
120 : in_record_(in_record)
123 using namespace Input;
133 in_record.
opt_val<
string>(
"description", description);
147 RegionSet bulk_set = mesh->region_db().get_region_set(
"BULK");
162 if (pdata.
process->time().is_end())
return;
173 pdata.
process->set_velocity_field(
water->get_mh_dofhandler() );
176 if (pdata.
process->time().tlevel() == 0) pdata.
process->zero_time_step();
178 pdata.
process->update_solution();
202 const double theta=0.5;
206 water->zero_time_step();
228 double water_dt=
water->time().estimate_dt();
237 pdata.process->set_time_upper_constraint(water_dt,
"Flow time step");
238 pdata.velocity_time = theta * pdata.process->planned_time() + (1-theta) * pdata.process->solved_time();
249 if (!
water->time().is_end() ) {
254 water->update_solution();
261 water->choose_next_time();
263 for(
auto &process : processes_) process.velocity_changed =
true;
276 for(
auto &pdata :
processes_) pdata.process.reset();
Mesh * mesh
mesh common to darcy flow and transport
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()
HC_ExplicitSequential(Input::Record in_record)
static Input::Type::Abstract & get_input_type()
Common specification of the input record for secondary equations.
unsigned int n_elements() const
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 FieldResult field_result(RegionSet region_set) const =0
Indicates special field states.
static Profiler * instance()
static const Input::Type::Record & get_input_type()
Discontinuous Galerkin method for equation of transport with dispersion.
static const Input::Type::Record & get_input_type()
void advection_process_step(AdvectionData &pdata)
FLOW123D_FORCE_LINK_IN_PARENT(transportOperatorSplitting)
static const double inf_time
Infinity time used for steady case.
void set_task_info(string description, int size)