47 return it::Abstract(
"Problem",
"The root record of description of particular the problem to solve.")
54 "Record with data for a general sequential coupling.\n")
57 "Short description of the solved problem.\n" 58 "Is displayed in the main log, and possibly in other text output files.")
60 "Computational mesh common to all equations.")
62 "Simulation time frame and time step.")
65 "Primary equation, have all data given.")
67 "The equation that depends (the velocity field) on the result of the primary equation.")
83 using namespace Input;
89 mesh->init_from_input();
93 in_record.
opt_val<
string>(
"description", description);
114 secondary_eq->data()[
"cross_section"]
115 .copy_from(water->data()[
"cross_section"]);
116 secondary_eq->initialize();
119 secondary_eq = std::make_shared<TransportNothing>(*mesh);
143 const double theta=0.5;
146 double velocity_interpolation_time;
147 bool velocity_changed=
true;
151 water->zero_time_step();
169 while (! (water->time().is_end() && secondary_eq->time().is_end() ) ) {
171 if (! water->time().is_end()) {
172 double water_dt=water->time().estimate_dt();
173 secondary_eq->set_time_upper_constraint(water_dt,
"Time discretisation of flow.");
180 velocity_interpolation_time= theta * secondary_eq->planned_time() + (1-theta) * secondary_eq->solved_time();
188 if (water->solved_time() < velocity_interpolation_time) {
190 water->update_solution();
197 water->choose_next_time();
199 velocity_changed =
true;
206 if (velocity_changed) {
208 secondary_eq->set_velocity_field( water->get_mh_dofhandler() );
209 velocity_changed =
false;
211 if (secondary_eq->time().tlevel() == 0) secondary_eq->zero_time_step();
213 secondary_eq->update_solution();
217 secondary_eq->output_data();
221 xprintf(
Msg,
"End of simulation at time: %f\n", secondary_eq->solved_time());
227 secondary_eq.reset();
static Input::Type::Abstract & get_input_type()
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.
static const int registrar
#define START_TIMER(tag)
Starts a timer with specified tag.
static Input::Type::Abstract & get_input_type()
static Profiler * instance()
static const Input::Type::Record & get_input_type()
static const Input::Type::Record & get_input_type()
FLOW123D_FORCE_LINK_IN_PARENT(transportOperatorSplitting)
void set_task_info(string description, int size)