Flow123d
master-f44eb46
|
Edge lumped mixed-hybrid solution of unsteady Darcy flow. More...
#include <richards_lmh.hh>
Classes | |
class | EqData |
class | EqFields |
Public Member Functions | |
RichardsLMH (Mesh &mesh, const Input::Record in_rec, TimeGovernor *tm=nullptr) | |
void | accept_time_step () override |
postprocess velocity field (add sources) More... | |
virtual | ~RichardsLMH () override |
Public Member Functions inherited from DarcyLMH | |
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 |
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 | 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 () |
std::shared_ptr< FieldSet > | eq_fieldset_ptr () |
void | init_user_fields (Input::Array user_fields, FieldSet &output_fields) |
Static Public Member Functions | |
static const Input::Type::Record & | get_input_type () |
Static Public Member Functions inherited from DarcyLMH | |
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... | |
static Input::Type::Record & | user_fields_template (std::string equation_name) |
Template Record with common key user_fields for derived equations. More... | |
Protected Member Functions | |
bool | zero_time_term (bool time_global=false) override |
void | initialize_specific () override |
void | assembly_linear_system () override |
void | initialize_asm () override |
Create and initialize assembly objects. More... | |
void | read_init_cond_asm () override |
Call assemble of read_init_cond_assembly_ and init_cond_postprocess_assembly_. More... | |
Protected Member Functions inherited from DarcyLMH | |
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 () |
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... | |
Static Protected Attributes | |
static const int | registrar |
Registrar of class to factory. More... | |
Static Private Member Functions | |
static std::string | equation_name () |
Private Attributes | |
std::shared_ptr< EqFields > | eq_fields_ |
std::shared_ptr< EqData > | eq_data_ |
GenericAssembly< InitCondPostprocessAssembly > * | init_cond_postprocess_assembly_ |
general assembly object, hold assembly objects of appropriate dimension More... | |
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... | |
Protected Attributes inherited from DarcyLMH | |
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_ |
std::shared_ptr< FieldSet > | eq_fieldset_ |
std::shared_ptr< Balance > | balance_ |
object for calculation and writing the mass balance to file. More... | |
Edge lumped mixed-hybrid solution of unsteady Darcy flow.
The time term and sources are evenly distributed form an element to its edges. This applies directly to the second Schur complement. After this system for pressure traces is solved we reconstruct pressures and side flows as follows:
This lumping technique preserves discrete maximum principle for any time step provided one use acute mesh. But in practice even worse meshes are tractable.
Ideas how to unify steady and unsteady flow: zero_time_step:
update solution:
Definition at line 65 of file richards_lmh.hh.
RichardsLMH::RichardsLMH | ( | Mesh & | mesh, |
const Input::Record | in_rec, | ||
TimeGovernor * | tm = nullptr |
||
) |
Definition at line 128 of file richards_lmh.cc.
|
overridevirtual |
Definition at line 255 of file richards_lmh.cc.
|
overridevirtual |
postprocess velocity field (add sources)
Reimplemented from DarcyLMH.
Definition at line 184 of file richards_lmh.cc.
|
overrideprotectedvirtual |
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 from DarcyLMH.
Definition at line 208 of file richards_lmh.cc.
|
inlinestaticprivate |
|
static |
Definition at line 83 of file richards_lmh.cc.
|
overrideprotectedvirtual |
Create and initialize assembly objects.
Reimplemented from DarcyLMH.
Definition at line 241 of file richards_lmh.cc.
|
overrideprotectedvirtual |
Reimplemented from DarcyLMH.
Definition at line 143 of file richards_lmh.cc.
|
overrideprotectedvirtual |
Call assemble of read_init_cond_assembly_ and init_cond_postprocess_assembly_.
Reimplemented from DarcyLMH.
Definition at line 249 of file richards_lmh.cc.
|
overrideprotectedvirtual |
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 from DarcyLMH.
Definition at line 194 of file richards_lmh.cc.
|
private |
Definition at line 129 of file richards_lmh.hh.
|
private |
Definition at line 128 of file richards_lmh.hh.
|
private |
general assembly object, hold assembly objects of appropriate dimension
Definition at line 132 of file richards_lmh.hh.
|
staticprotected |
Registrar of class to factory.
Definition at line 111 of file richards_lmh.hh.