Flow123d
JS_before_hm-2139-g05f84414c
|
Go to the documentation of this file.
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->eq_fieldset()[
"cross_section"]
95 .copy_from(
water->eq_fieldset()[
"cross_section"]);
106 FieldCommon *porosity = process->eq_fieldset().field(
"porosity");
107 process->eq_fieldset()[
"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;
167 if (pdata.
process->time().is_end())
return;
178 auto& flux = pdata.
process->eq_fieldset()[
"flow_flux"];
179 flux.copy_from(
water->eq_fieldset()[
"flux"]);
180 flux.set_time_result_changed();
183 if (pdata.
process->time().tlevel() == 0) pdata.
process->zero_time_step();
185 pdata.
process->update_solution();
193 if (
water->solved_time() < requested_time) {
195 water->update_solution();
200 water->choose_next_time();
203 pdata.velocity_changed =
true;
225 const double theta=0.5;
229 water->zero_time_step();
231 process.velocity_changed =
true;
256 if(! pdata.process->time().is_end())
260 double water_dt=
water->time().estimate_dt();
269 if(! pdata.process->time().is_end()){
270 pdata.process->set_time_upper_constraint(water_dt,
"Flow time step");
271 pdata.velocity_time = theta * pdata.process->planned_time() + (1-theta) * pdata.process->solved_time();
284 if (!
water->time().is_end() ) {
297 for(
auto &pdata :
processes_) pdata.process.reset();
static Profiler * instance(bool clear=false)
const RegionDB & region_db() const
HC_ExplicitSequential(Input::Record in_record)
static Input::Type::Abstract & get_input_type()
void advection_process_step(AdvectionData &pdata)
virtual void copy_from(const FieldCommon &other)=0
FieldCommon * water_content_p0_
static const Input::Type::Record & get_input_type()
std::shared_ptr< DarcyFlowInterface > water
steady or unsteady water flow simulator based on MH scheme
Mesh * mesh
mesh common to darcy flow and transport
static const int registrar
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
FieldCommon * water_content_saturated_
Common abstract parent of all Field<...> classes.
static bool print_message_table(ostream &stream, std::string equation_name)
RegionSet get_region_set(const std::string &set_name) const
static Input::Type::Abstract & get_input_type()
Common specification of the input record for secondary equations.
static Input::Type::Abstract & get_input_type()
#define FLOW123D_FORCE_LINK_IN_PARENT(x)
Discontinuous Galerkin method for equation of transport with dispersion.
#define WarningOut()
Macro defining 'warning' record of log.
static Input::Type::Record & record_template()
Template Record with common keys for derived equations.
virtual FieldResult field_result(RegionSet region_set) const =0
Indicates special field states.
mixed-hybrid model of linear Darcy flow, possibly unsteady.
static const double inf_time
Infinity time used for steady case.
void set_task_info(string, int)
static const Input::Type::Record & get_input_type()
unsigned int n_elements() const
void flow_step(double requested_time)
#define START_TIMER(tag)
Starts a timer with specified tag.