Flow123d
release_3.0.0-973-g92f55e826
|
Go to the documentation of this file.
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);
123 using namespace Input;
133 in_record.
opt_val<
string>(
"description", description);
146 std::stringstream ss;
166 if (pdata.
process->time().is_end())
return;
177 pdata.
process->set_velocity_field(
water->get_mh_dofhandler() );
180 if (pdata.
process->time().tlevel() == 0) pdata.
process->zero_time_step();
182 pdata.
process->update_solution();
206 const double theta=0.5;
210 water->zero_time_step();
232 double water_dt=
water->time().estimate_dt();
241 pdata.process->set_time_upper_constraint(water_dt,
"Flow time step");
242 pdata.velocity_time = theta * pdata.process->planned_time() + (1-theta) * pdata.process->solved_time();
253 if (!
water->time().is_end() ) {
258 water->update_solution();
265 water->choose_next_time();
267 for(
auto &process :
processes_) process.velocity_changed =
true;
280 for(
auto &pdata :
processes_) pdata.process.reset();
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_
void set_task_info(string description, int size)
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)
const RegionDB & region_db() const
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()
static const Input::Type::Record & get_input_type()
Discontinuous Galerkin method for equation of transport with dispersion.
#define WarningOut()
Macro defining 'warning' record of log.
virtual FieldResult field_result(RegionSet region_set) const =0
Indicates special field states.
static const double inf_time
Infinity time used for steady case.
static const Input::Type::Record & get_input_type()
static Profiler * instance()
virtual unsigned int n_elements(bool boundary=false) const
Returns count of boundary or bulk elements.
#define START_TIMER(tag)
Starts a timer with specified tag.
FLOW123D_FORCE_LINK_IN_PARENT(transportOperatorSplitting)