Flow123d
JS_before_hm-883-gc471082
|
Edge lumped mixed-hybrid solution of unsteady Darcy flow. More...
#include <richards_lmh.hh>
Classes | |
class | EqData |
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... | |
double | last_t () override |
Return last time of TimeGovernor. More... | |
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::VectorFixed > > | get_velocity_field () override |
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... | |
EqData & | 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 | |
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 () |
double | solved_time () |
Mesh & | mesh () |
std::shared_ptr< Balance > | balance () const |
TimeMark::Type | mark_type () |
FieldSet & | data () |
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< EqData > | 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< FieldFE< 3, FieldValue< 3 >::VectorFixed > > | ele_flux_ptr |
Field of flux in barycenter of every element. More... | |
std::shared_ptr< EqData > | 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_data_ |
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 121 of file richards_lmh.cc.
|
overridevirtual |
postprocess velocity field (add sources)
Reimplemented from DarcyLMH.
Definition at line 177 of file richards_lmh.cc.
|
overrideprotectedvirtual |
Assembly or update whole linear system.
Reimplemented from DarcyLMH.
Definition at line 201 of file richards_lmh.cc.
|
static |
|
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 166 of file richards_lmh.cc.
|
overrideprotectedvirtual |
Reimplemented from DarcyLMH.
Definition at line 131 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 187 of file richards_lmh.cc.
|
private |
Definition at line 113 of file richards_lmh.hh.
|
staticprotected |
Registrar of class to factory.
Definition at line 103 of file richards_lmh.hh.