Flow123d
JS_before_hm-2198-g122e1f2e2
|
Mixed-hybrid model of linear Darcy flow, possibly unsteady. More...
#include <darcy_flow_lmh.hh>
Classes | |
class | EqData |
class | EqFields |
Public Member Functions | |
TYPEDEF_ERR_INFO (EI_Reason, string) | |
DECLARE_EXCEPTION (ExcSolverDiverge,<< "Diverged nonlinear solver. Reason: "<< EI_Reason::val) | |
DECLARE_INPUT_EXCEPTION (ExcMissingTimeGovernor,<< "Missing the key 'time', obligatory for the transient problems.") | |
DarcyLMH (Mesh &mesh, const Input::Record in_rec, TimeGovernor *tm=nullptr) | |
CREATE AND FILL GLOBAL MH MATRIX OF THE WATER MODEL. More... | |
void | init_eq_data () |
void | initialize () override |
virtual void | initialize_specific () |
void | zero_time_step () override |
void | update_solution () override |
void | solve_time_step (bool output=true) |
Solve the problem without moving to next time and without output. More... | |
virtual void | accept_time_step () |
postprocess velocity field (add sources) More... | |
virtual void | postprocess () |
virtual void | output_data () override |
Write computed fields. More... | |
virtual double | solved_time () override |
EqFields & | eq_fields () |
EqData & | eq_data () |
void | set_extra_storativity (const Field< 3, FieldValue< 3 >::Scalar > &extra_stor) |
Sets external storarivity field (coupling with other equation). More... | |
void | set_extra_source (const Field< 3, FieldValue< 3 >::Scalar > &extra_src) |
Sets external source field (coupling with other equation). More... | |
virtual | ~DarcyLMH () override |
Public Member Functions inherited from DarcyFlowInterface | |
DECLARE_EXCEPTION (ExcBddcmlNotSupported,<< "Flow123d was not build with BDDCML support.\n") | |
DECLARE_EXCEPTION (ExcUnknownSolver,<< "Unknown solver type. Internal error.\n") | |
DarcyFlowInterface (Mesh &mesh, const Input::Record in_rec) | |
virtual | ~DarcyFlowInterface () |
Public Member Functions inherited from EquationBase | |
EquationBase () | |
EquationBase (Mesh &mesh, const Input::Record in_rec) | |
virtual | ~EquationBase () |
virtual void | choose_next_time () |
virtual void | set_time_upper_constraint (double dt, std::string message) |
virtual void | set_time_lower_constraint (double dt, std::string message) |
TimeGovernor & | time () |
virtual void | set_time_governor (TimeGovernor &time) |
double | planned_time () |
Mesh & | mesh () |
std::shared_ptr< Balance > | balance () const |
TimeMark::Type | mark_type () |
FieldSet & | eq_fieldset () |
Static Public Member Functions | |
static const Input::Type::Selection & | get_mh_mortar_selection () |
Selection for enum MortarMethod. More... | |
static const Input::Type::Record & | type_field_descriptor () |
static const Input::Type::Record & | get_input_type () |
Static Public Member Functions inherited from DarcyFlowInterface | |
static Input::Type::Abstract & | get_input_type () |
Static Public Member Functions inherited from EquationBase | |
static Input::Type::Record & | record_template () |
Template Record with common keys for derived equations. More... | |
Protected Member Functions | |
virtual bool | zero_time_term (bool time_global=false) |
void | solve_nonlinear () |
Solve method common to zero_time_step and update solution. More... | |
void | create_linear_system (Input::AbstractRecord rec) |
void | allocate_mh_matrix () |
virtual void | assembly_linear_system () |
void | print_matlab_matrix (string matlab_file) |
Print darcy flow matrix in matlab format into a file. More... | |
std::vector< int > | get_component_indices_vec (unsigned int component) const |
Get vector of all DOF indices of given component (0..side, 1..element, 2..edge) More... | |
LinSys & | lin_sys_schur () |
Getter for the linear system of the 2. Schur complement. More... | |
virtual void | initialize_asm () |
Create and initialize assembly objects. More... | |
virtual void | read_init_cond_asm () |
Call assemble of read_init_cond_assembly_. More... | |
Protected Attributes | |
std::shared_ptr< Balance > | balance_ |
DarcyFlowMHOutput * | output_object |
int | size |
bool | data_changed_ |
double | tolerance_ |
unsigned int | min_n_it_ |
unsigned int | max_n_it_ |
std::shared_ptr< EqFields > | eq_fields_ |
std::shared_ptr< EqData > | eq_data_ |
GenericAssembly< ReadInitCondAssemblyLMH > * | read_init_cond_assembly_ |
general assembly objects, hold assembly objects of appropriate dimension More... | |
GenericAssemblyBase * | mh_matrix_assembly_ |
GenericAssemblyBase * | reconstruct_schur_assembly_ |
Protected Attributes inherited from EquationBase | |
bool | equation_empty_ |
flag is true if only default constructor was called More... | |
Mesh * | mesh_ |
TimeGovernor * | time_ |
Input::Record | input_record_ |
FieldSet * | eq_fieldset_ |
std::shared_ptr< Balance > | balance_ |
object for calculation and writing the mass balance to file. More... | |
Static Private Attributes | |
static const int | registrar |
Registrar of class to factory. More... | |
Friends | |
class | DarcyFlowMHOutput |
Additional Inherited Members | |
Public Types inherited from DarcyFlowInterface | |
enum | MortarMethod { NoMortar = 0, MortarP0 = 1, MortarP1 = 2 } |
Type of experimental Mortar-like method for non-compatible 1d-2d interaction. More... | |
typedef DarcyFlowInterface | FactoryBaseType |
Typedef for usage of Input::Factory in child classes. More... | |
Mixed-hybrid model of linear Darcy flow, possibly unsteady.
Abstract class for various implementations of Darcy flow. In future there should be one further level of abstraction for general time dependent problem.
maybe TODO: split compute_one_step to : 1) prepare_next_timestep 2) actualize_solution - this is for iterative nonlinear solvers
Mixed-hybrid of steady Darcy flow with sources and variable density.
solve equations:
where
where is concentration in .
The time key is optional, when not specified the equation is forced to steady regime. Using Steady TimeGovernor which have no dt constraints.
TODO: Make solution regular field (need FeSeystem and parallel DofHandler for edge pressures), then remove get_solution_vector from Equation interface. Model for transition coefficients due to Martin, Jaffre, Roberts (see manual for full reference)
TODO:
Definition at line 132 of file darcy_flow_lmh.hh.
DarcyLMH::DarcyLMH | ( | Mesh & | mesh_in, |
const Input::Record | in_rec, | ||
TimeGovernor * | tm = nullptr |
||
) |
CREATE AND FILL GLOBAL MH MATRIX OF THE WATER MODEL.
Parameters {Solver,NSchurs} number of performed Schur complements (0,1,2) for water flow MH-system
Definition at line 203 of file darcy_flow_lmh.cc.
|
overridevirtual |
Definition at line 1348 of file darcy_flow_lmh.cc.
|
virtual |
postprocess velocity field (add sources)
Reimplemented in RichardsLMH.
Definition at line 688 of file darcy_flow_lmh.cc.
|
protected |
Read initial condition into solution vector. Must be called after create_linear_system.
For the LMH scheme we have to be able to save edge pressures in order to restart simulation or use results of one simulation as initial condition for other one. In some circumstances, the intial condition must be processed. It is called at the end of read_initial_condition()
. This is used in Richards equation due the update of water content. Allocates linear system matrix for MH. TODO:
Definition at line 752 of file darcy_flow_lmh.cc.
|
protectedvirtual |
Assembles linear system matrix for MH. Element by element assembly is done using dim-template assembly class. Assembles only steady part of the equation. TODO:
Reimplemented in RichardsLMH.
Definition at line 1067 of file darcy_flow_lmh.cc.
|
protected |
Create and preallocate MH linear system (including matrix, rhs and solution vectors)
Definition at line 927 of file darcy_flow_lmh.cc.
DarcyLMH::DECLARE_EXCEPTION | ( | ExcSolverDiverge | , |
<< "Diverged nonlinear solver. Reason: "<< EI_Reason::val | |||
) |
DarcyLMH::DECLARE_INPUT_EXCEPTION | ( | ExcMissingTimeGovernor | , |
<< "Missing the key 'time' | , | ||
obligatory for the transient problems." | |||
) |
|
inline |
Definition at line 236 of file darcy_flow_lmh.hh.
|
inline |
|
protected |
Get vector of all DOF indices of given component (0..side, 1..element, 2..edge)
Definition at line 1369 of file darcy_flow_lmh.cc.
|
static |
|
static |
Selection for enum MortarMethod.
Definition at line 81 of file darcy_flow_lmh.cc.
void DarcyLMH::init_eq_data | ( | ) |
|
overridevirtual |
This method should initialize fields of the equation. All members (e.g. number of components) that are necessary for the field initialization must be set between construction and call of initialize. After this method the upper level coupling may set sharing of some fields between equations.
Reimplemented from EquationBase.
Definition at line 319 of file darcy_flow_lmh.cc.
|
protectedvirtual |
Create and initialize assembly objects.
Reimplemented in RichardsLMH.
Definition at line 1383 of file darcy_flow_lmh.cc.
|
virtual |
Reimplemented in RichardsLMH.
Definition at line 430 of file darcy_flow_lmh.cc.
|
inlineprotected |
Getter for the linear system of the 2. Schur complement.
Definition at line 322 of file darcy_flow_lmh.hh.
|
overridevirtual |
Write computed fields.
Reimplemented from EquationBase.
Definition at line 696 of file darcy_flow_lmh.cc.
|
virtual |
Definition at line 1039 of file darcy_flow_lmh.cc.
|
protected |
Print darcy flow matrix in matlab format into a file.
Return a norm of residual vector. TODO: Introduce Equation::compute_residual() updating residual field, standard part of EqData.
Definition at line 1107 of file darcy_flow_lmh.cc.
|
protectedvirtual |
Call assemble of read_init_cond_assembly_.
Reimplemented in RichardsLMH.
Definition at line 1390 of file darcy_flow_lmh.cc.
|
inline |
Sets external source field (coupling with other equation).
Definition at line 243 of file darcy_flow_lmh.hh.
|
inline |
Sets external storarivity field (coupling with other equation).
Definition at line 239 of file darcy_flow_lmh.hh.
|
protected |
Solve method common to zero_time_step and update solution.
Definition at line 594 of file darcy_flow_lmh.cc.
void DarcyLMH::solve_time_step | ( | bool | output = true | ) |
Solve the problem without moving to next time and without output.
Definition at line 531 of file darcy_flow_lmh.cc.
|
overridevirtual |
Time until which the actual solution is valid. By default, it returns the actual time of the time governor. However, it can be overriden by a specific equation. E.g. it differs in Darcy flow in the steady case.
Reimplemented from EquationBase.
Definition at line 253 of file darcy_flow_lmh.cc.
|
static |
DarcyLMH::TYPEDEF_ERR_INFO | ( | EI_Reason | , |
string | |||
) |
|
overridevirtual |
Calculation of the next time step and its output.
Reimplemented from EquationBase.
Definition at line 517 of file darcy_flow_lmh.cc.
|
overridevirtual |
Initialization of the solution in the zero time.
There may be fields that can not be initialized in the initialize method as they are provided by the coupling. Fields coming from coupling has to be set after the initialize method and before zero_time_step.
Reimplemented from EquationBase.
Definition at line 473 of file darcy_flow_lmh.cc.
|
protectedvirtual |
Returns true is the fields involved in the time term have values that makes the time term zero. For time_global==true, it returns true if there are no field descriptors in the input list, so the fields )of the time ter) have their default values for whole simulation. If time_global==false (default), only the actual values are considered.
Reimplemented in RichardsLMH.
Definition at line 585 of file darcy_flow_lmh.cc.
|
friend |
Definition at line 348 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 331 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 337 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 345 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 344 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 342 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 354 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 341 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 333 of file darcy_flow_lmh.hh.
|
protected |
general assembly objects, hold assembly objects of appropriate dimension
Definition at line 353 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 355 of file darcy_flow_lmh.hh.
|
staticprivate |
Registrar of class to factory.
Definition at line 358 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 335 of file darcy_flow_lmh.hh.
|
protected |
Definition at line 340 of file darcy_flow_lmh.hh.