Flow123d
JS_before_hm-2207-gef9ee6d82
|
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... | |
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 () |
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... | |
Protected Member Functions | |
bool | zero_time_term (bool time_global=false) override |
void | initialize_specific () override |
void | initial_condition_postprocess () override |
void | assembly_linear_system () override |
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 | read_initial_condition () |
void | allocate_mh_matrix () |
void | assembly_mh_matrix (MultidimAssembly &assembler) |
void | reconstruct_solution_from_schur (MultidimAssembly &assembler) |
virtual double | solution_precision () const |
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... | |
Private Attributes | |
std::shared_ptr< EqFields > | eq_fields_ |
std::shared_ptr< EqData > | eq_data_ |
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_ |
unsigned int | nonlinear_iteration_ |
std::shared_ptr< EqFields > | eq_fields_ |
std::shared_ptr< EqData > | eq_data_ |
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... | |
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 62 of file richards_lmh.hh.
RichardsLMH::RichardsLMH | ( | Mesh & | mesh, |
const Input::Record | in_rec, | ||
TimeGovernor * | tm = nullptr |
||
) |
Definition at line 125 of file richards_lmh.cc.
|
overridevirtual |
postprocess velocity field (add sources)
Reimplemented from DarcyLMH.
Definition at line 179 of file richards_lmh.cc.
|
overrideprotectedvirtual |
Assembly or update whole linear system.
Reimplemented from DarcyLMH.
Definition at line 203 of file richards_lmh.cc.
|
static |
Definition at line 83 of file richards_lmh.cc.
|
overrideprotectedvirtual |
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.
Reimplemented from DarcyLMH.
Definition at line 168 of file richards_lmh.cc.
|
overrideprotectedvirtual |
Reimplemented from DarcyLMH.
Definition at line 137 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 189 of file richards_lmh.cc.
|
private |
Definition at line 117 of file richards_lmh.hh.
|
private |
Definition at line 116 of file richards_lmh.hh.
|
staticprotected |
Registrar of class to factory.
Definition at line 106 of file richards_lmh.hh.