Flow123d  jenkins-Flow123d-linux-release-multijob-282
Public Member Functions | Static Public Attributes | Protected Member Functions | Private Attributes | List of all members
DarcyFlowLMH_Unsteady Class Reference

Edge lumped mixed-hybrid solution of unsteady Darcy flow. More...

#include <darcy_flow_mh.hh>

Inheritance diagram for DarcyFlowLMH_Unsteady:
Inheritance graph
[legend]
Collaboration diagram for DarcyFlowLMH_Unsteady:
Collaboration graph
[legend]

Public Member Functions

 DarcyFlowLMH_Unsteady (Mesh &mesh, const Input::Record in_rec)
 
 DarcyFlowLMH_Unsteady ()
 
- Public Member Functions inherited from DarcyFlowMH_Steady
 DarcyFlowMH_Steady (Mesh &mesh, const Input::Record in_rec, bool make_tg=true)
 CREATE AND FILL GLOBAL MH MATRIX OF THE WATER MODEL. More...
 
virtual void update_solution ()
 
virtual void get_solution_vector (double *&vec, unsigned int &vec_size)
 
virtual void get_parallel_solution_vector (Vec &vector)
 
virtual void output_data () override
 Write computed fields. More...
 
 ~DarcyFlowMH_Steady ()
 
- Public Member Functions inherited from DarcyFlowMH
 DarcyFlowMH (Mesh &mesh, const Input::Record in_rec)
 
void get_velocity_seq_vector (Vec &velocity_vec)
 
const MH_DofHandlerget_mh_dofhandler ()
 
virtual void set_concentration_vector (Vec &vc)
 
- Public Member Functions inherited from EquationBase
 EquationBase ()
 
 EquationBase (Mesh &mesh, const Input::Record in_rec)
 
virtual ~EquationBase ()
 
virtual void zero_time_step ()
 
virtual void initialize ()
 Initialize fields. More...
 
virtual void choose_next_time ()
 
virtual void set_time_upper_constraint (double dt)
 
virtual void set_time_lower_constraint (double dt)
 
TimeGovernor const & time ()
 
virtual void set_time_governor (TimeGovernor &time)
 
double planned_time ()
 
double solved_time ()
 
Meshmesh ()
 
TimeMark::Type mark_type ()
 
FieldSetdata ()
 

Static Public Attributes

static Input::Type::Record input_type
 
- Static Public Attributes inherited from DarcyFlowMH_Steady
static Input::Type::Record input_type
 
- Static Public Attributes inherited from DarcyFlowMH
static Input::Type::Selection mh_mortar_selection
 
static Input::Type::AbstractRecord input_type
 
static Input::Type::Record bc_segment_rec
 
static Input::Type::AbstractRecord bc_input_type
 
static std::vector
< Input::Type::Record
bc_input_types
 

Protected Member Functions

void read_init_condition () override
 
void modify_system () override
 
void assembly_source_term () override
 Source term is implemented differently in LMH version. More...
 
void setup_time_term ()
 
virtual void postprocess ()
 postprocess velocity field (add sources) More...
 
- Protected Member Functions inherited from DarcyFlowMH_Steady
void make_serial_scatter ()
 
void prepare_parallel (const Input::AbstractRecord in_rec)
 
void make_row_numberings ()
 
void create_linear_system ()
 
void assembly_steady_mh_matrix ()
 
void assembly_linear_system ()
 
void set_mesh_data_for_bddc (LinSys_BDDC *bddc_ls)
 
double solution_precision () const
 
- Protected Member Functions inherited from DarcyFlowMH
void setup_velocity_vector ()
 

Private Attributes

Vec steady_diagonal
 
Vec steady_rhs
 
Vec new_diagonal
 
Vec previous_solution
 

Additional Inherited Members

- Public Types inherited from DarcyFlowMH
enum  MortarMethod { NoMortar = 0, MortarP0 = 1, MortarP1 = 2 }
 
- Protected Attributes inherited from DarcyFlowMH_Steady
DarcyFlowMHOutputoutput_object
 
int size
 
int n_schur_compls
 
double * solution
 
LinSysschur0
 
Distributionedge_ds
 
Distributionel_ds
 
Distributionside_ds
 
boost::shared_ptr< Distributionrows_ds
 
int * el_4_loc
 
int * row_4_el
 
int * side_id_4_loc
 
int * side_row_4_id
 
int * edge_4_loc
 
int * row_4_edge
 
boost::shared_ptr
< LocalToGlobalMap
global_row_4_sub_row
 
Vec sol_vec
 
VecScatter par_to_all
 
EqData data_
 
- Protected Attributes inherited from DarcyFlowMH
bool solution_changed_for_scatter
 
Vec velocity_vector
 
MH_DofHandler mh_dh
 
MortarMethod mortar_method_
 
boost::shared_ptr< Balancebalance_
 object for calculation and writing the water balance to file. More...
 
unsigned int water_balance_idx_
 index of water balance within the Balance object. More...
 
- Protected Attributes inherited from EquationBase
bool equation_empty_
 flag is true if only default constructor was called More...
 
Meshmesh_
 
TimeGovernortime_
 
Input::Record input_record_
 
FieldSeteq_data_
 

Detailed Description

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:

  1. Element pressure is average of edge pressure. This is in fact same as the MH for steady case so we let SchurComplement class do its job.
  2. We let SchurComplement to reconstruct fluxes and then account time term and sources which are evenly distributed from an element to its sides. It can be proved, that this keeps continuity of the fluxes over the edges.

This lumping technique preserves discrete maximum principle for any time step provided one use acute mesh. But in practice even worse meshes are tractable.

Definition at line 470 of file darcy_flow_mh.hh.

Constructor & Destructor Documentation

DarcyFlowLMH_Unsteady::DarcyFlowLMH_Unsteady ( Mesh mesh,
const Input::Record  in_rec 
)

Definition at line 1581 of file darcy_flow_mh.cc.

DarcyFlowLMH_Unsteady::DarcyFlowLMH_Unsteady ( )

Member Function Documentation

void DarcyFlowLMH_Unsteady::assembly_source_term ( )
overrideprotectedvirtual

Source term is implemented differently in LMH version.

Reimplemented from DarcyFlowMH_Steady.

Definition at line 1712 of file darcy_flow_mh.cc.

void DarcyFlowLMH_Unsteady::modify_system ( )
overrideprotectedvirtual

Reimplemented from DarcyFlowMH_Steady.

Definition at line 1683 of file darcy_flow_mh.cc.

void DarcyFlowLMH_Unsteady::postprocess ( )
protectedvirtual

postprocess velocity field (add sources)

Reimplemented from DarcyFlowMH_Steady.

Definition at line 1743 of file darcy_flow_mh.cc.

void DarcyFlowLMH_Unsteady::read_init_condition ( )
overrideprotectedvirtual

Read initial condition into solution vector. Must be called after create_linear_system.

Reimplemented from DarcyFlowMH_Steady.

Definition at line 1606 of file darcy_flow_mh.cc.

void DarcyFlowLMH_Unsteady::setup_time_term ( )
protectedvirtual

Reimplemented from DarcyFlowMH_Steady.

Definition at line 1634 of file darcy_flow_mh.cc.

Member Data Documentation

it::Record DarcyFlowLMH_Unsteady::input_type
static
Initial value:
= it::Record("Unsteady_LMH", "Lumped Mixed-Hybrid solver for unsteady saturated Darcy flow.")
"Time governor setting for the unsteady Darcy flow model.")

Definition at line 477 of file darcy_flow_mh.hh.

Vec DarcyFlowLMH_Unsteady::new_diagonal
private

Definition at line 487 of file darcy_flow_mh.hh.

Vec DarcyFlowLMH_Unsteady::previous_solution
private

Definition at line 488 of file darcy_flow_mh.hh.

Vec DarcyFlowLMH_Unsteady::steady_diagonal
private

Definition at line 485 of file darcy_flow_mh.hh.

Vec DarcyFlowLMH_Unsteady::steady_rhs
private

Definition at line 486 of file darcy_flow_mh.hh.


The documentation for this class was generated from the following files: