Flow123d
Classes | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
DarcyFlowMH_Steady Class Reference

Mixed-hybrid of steady Darcy flow with sources and variable density. More...

#include <darcy_flow_mh.hh>

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

Classes

class  EqData
 

Public Member Functions

 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)
 
void get_partitioning_vector (int *&elem_part, unsigned &lelem_part)
 
virtual void postprocess ()
 postprocess velocity field (add sources) More...
 
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
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 make_serial_scatter ()
 
virtual void modify_system ()
 
virtual void setup_time_term ()
 
void prepare_parallel (const Input::AbstractRecord in_rec)
 
void make_row_numberings ()
 
void create_linear_system ()
 
virtual void read_init_condition ()
 
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 ()
 

Protected Attributes

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
 
std::vector< double > solution_
 
std::vector< unsigned > solver_indices_
 
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_
 
- 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_
 

Friends

class DarcyFlowMHOutput
 
class P0_CouplingAssembler
 
class P1_CouplingAssembler
 

Additional Inherited Members

- Public Types inherited from DarcyFlowMH
enum  MortarMethod { NoMortar = 0, MortarP0 = 1, MortarP1 = 2 }
 

Detailed Description

Mixed-hybrid of steady Darcy flow with sources and variable density.

solve equations:

\[ q= -{\mathbf{K}} \nabla h -{\mathbf{K}} R \nabla z \]

\[ \mathrm{div} q = f \]

where

Definition at line 263 of file darcy_flow_mh.hh.

Constructor & Destructor Documentation

DarcyFlowMH_Steady::DarcyFlowMH_Steady ( Mesh mesh_in,
const Input::Record  in_rec,
bool  make_tg = true 
)

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 196 of file darcy_flow_mh.cc.

DarcyFlowMH_Steady::~DarcyFlowMH_Steady ( )

Definition at line 1208 of file darcy_flow_mh.cc.

Member Function Documentation

void DarcyFlowMH_Steady::assembly_linear_system ( )
protected

Assembly or update whole linear system.

Definition at line 984 of file darcy_flow_mh.cc.

Here is the caller graph for this function:

void DarcyFlowMH_Steady::assembly_steady_mh_matrix ( )
protected

Abstract assembly method used for both assembly and preallocation. Assembly only steady part of the equation. TODO:

  • use general preallocation methods in DofHandler
  • include alos time term
  • add support for Robin type sources
  • support for nonlinear solvers - assembly either residual vector, matrix, or both (using FADBAD++)

Definition at line 386 of file darcy_flow_mh.cc.

Here is the caller graph for this function:

void DarcyFlowMH_Steady::create_linear_system ( )
protected

Create and preallocate MH linear system (including matrix, rhs and solution vectors)

Definition at line 873 of file darcy_flow_mh.cc.

Here is the caller graph for this function:

void DarcyFlowMH_Steady::get_parallel_solution_vector ( Vec &  vector)
virtual

Child class have to implement getter for parallel solution vector. DEPRECATED

Reimplemented from EquationBase.

Definition at line 362 of file darcy_flow_mh.cc.

void DarcyFlowMH_Steady::get_partitioning_vector ( int *&  elem_part,
unsigned &  lelem_part 
)
virtual

Reimplemented from DarcyFlowMH.

Definition at line 354 of file darcy_flow_mh.cc.

void DarcyFlowMH_Steady::get_solution_vector ( double *&  vector,
unsigned int &  size 
)
virtual

Child class have to implement getter for sequential solution vector. DEPRECATED

Reimplemented from EquationBase.

Definition at line 327 of file darcy_flow_mh.cc.

Here is the caller graph for this function:

void DarcyFlowMH_Steady::make_row_numberings ( )
protected

Make connectivity graph of the second Schur complement and compute optimal partitioning. This verison assign 1D and 2D edges to one processor, represent them as a weighted vertex, and 2D-3D neghbourings as weighted edges. 3D edges are then distributed over all procesors. Make connectivity graph of elements of mesh - dual graph: elements vertices of graph.

Definition at line 1368 of file darcy_flow_mh.cc.

Here is the caller graph for this function:

void DarcyFlowMH_Steady::make_serial_scatter ( )
protected

Definition at line 1416 of file darcy_flow_mh.cc.

virtual void DarcyFlowMH_Steady::modify_system ( )
inlineprotectedvirtual

Reimplemented in DarcyFlowLMH_Unsteady, and DarcyFlowMH_Unsteady.

Definition at line 292 of file darcy_flow_mh.hh.

Here is the caller graph for this function:

void DarcyFlowMH_Steady::output_data ( void  )
overridevirtual

Write computed fields.

Reimplemented from EquationBase.

Definition at line 316 of file darcy_flow_mh.cc.

Here is the caller graph for this function:

void DarcyFlowMH_Steady::postprocess ( )
virtual

postprocess velocity field (add sources)

Reimplemented in DarcyFlowLMH_Unsteady.

Definition at line 289 of file darcy_flow_mh.cc.

Here is the caller graph for this function:

void DarcyFlowMH_Steady::prepare_parallel ( const Input::AbstractRecord  in_rec)
protected

Definition at line 1462 of file darcy_flow_mh.cc.

Here is the caller graph for this function:

virtual void DarcyFlowMH_Steady::read_init_condition ( )
inlineprotectedvirtual

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

Reimplemented in DarcyFlowLMH_Unsteady, and DarcyFlowMH_Unsteady.

Definition at line 312 of file darcy_flow_mh.hh.

void DarcyFlowMH_Steady::set_mesh_data_for_bddc ( LinSys_BDDC bddc_ls)
protected

type for storage of global to local map

Definition at line 1035 of file darcy_flow_mh.cc.

Here is the caller graph for this function:

virtual void DarcyFlowMH_Steady::setup_time_term ( )
inlineprotectedvirtual

Reimplemented in DarcyFlowLMH_Unsteady, and DarcyFlowMH_Unsteady.

Definition at line 294 of file darcy_flow_mh.hh.

Here is the caller graph for this function:

double DarcyFlowMH_Steady::solution_precision ( ) const
protectedvirtual

Implements DarcyFlowMH.

Definition at line 321 of file darcy_flow_mh.cc.

void DarcyFlowMH_Steady::update_solution ( void  )
virtual

Calculation of the next time step and its output.

Reimplemented from EquationBase.

Definition at line 262 of file darcy_flow_mh.cc.

Friends And Related Function Documentation

friend class DarcyFlowMHOutput
friend

Definition at line 371 of file darcy_flow_mh.hh.

friend class P0_CouplingAssembler
friend

Definition at line 372 of file darcy_flow_mh.hh.

friend class P1_CouplingAssembler
friend

Definition at line 373 of file darcy_flow_mh.hh.

Member Data Documentation

EqData DarcyFlowMH_Steady::data_
protected

Definition at line 369 of file darcy_flow_mh.hh.

int* DarcyFlowMH_Steady::edge_4_loc
protected

Definition at line 357 of file darcy_flow_mh.hh.

Distribution* DarcyFlowMH_Steady::edge_ds
protected

Definition at line 348 of file darcy_flow_mh.hh.

int* DarcyFlowMH_Steady::el_4_loc
protected

Definition at line 353 of file darcy_flow_mh.hh.

Distribution* DarcyFlowMH_Steady::el_ds
protected

Definition at line 349 of file darcy_flow_mh.hh.

boost::shared_ptr<LocalToGlobalMap> DarcyFlowMH_Steady::global_row_4_sub_row
protected

Definition at line 363 of file darcy_flow_mh.hh.

it::Record DarcyFlowMH_Steady::input_type
static
Initial value:
= it::Record("Steady_MH", "Mixed-Hybrid solver for STEADY saturated Darcy flow.")
.declare_key("input_fields", it::Array(
DarcyFlowMH_Steady::EqData().make_field_descriptor_type("DarcyFlowMH")
.declare_key("bc_piezo_head", FieldBase< 3, FieldValue<3>::Scalar >::get_input_type(), "Boundary condition for pressure as piezometric head." )
.declare_key("init_piezo_head", FieldBase< 3, FieldValue<3>::Scalar >::get_input_type(), "Initial condition for pressure as piezometric head." )
.declare_key(OldBcdInput::flow_old_bcd_file_key(), it::FileName::input(), "File with mesh dependent boundary conditions (obsolete).")

Definition at line 276 of file darcy_flow_mh.hh.

int DarcyFlowMH_Steady::n_schur_compls
protected

Definition at line 338 of file darcy_flow_mh.hh.

DarcyFlowMHOutput* DarcyFlowMH_Steady::output_object
protected

Definition at line 335 of file darcy_flow_mh.hh.

VecScatter DarcyFlowMH_Steady::par_to_all
protected

Definition at line 367 of file darcy_flow_mh.hh.

int* DarcyFlowMH_Steady::row_4_edge
protected

Definition at line 358 of file darcy_flow_mh.hh.

int* DarcyFlowMH_Steady::row_4_el
protected

Definition at line 354 of file darcy_flow_mh.hh.

boost::shared_ptr<Distribution> DarcyFlowMH_Steady::rows_ds
protected

Definition at line 351 of file darcy_flow_mh.hh.

LinSys* DarcyFlowMH_Steady::schur0
protected

Definition at line 342 of file darcy_flow_mh.hh.

Distribution* DarcyFlowMH_Steady::side_ds
protected

Definition at line 350 of file darcy_flow_mh.hh.

int* DarcyFlowMH_Steady::side_id_4_loc
protected

Definition at line 355 of file darcy_flow_mh.hh.

int* DarcyFlowMH_Steady::side_row_4_id
protected

Definition at line 356 of file darcy_flow_mh.hh.

int DarcyFlowMH_Steady::size
protected

Definition at line 337 of file darcy_flow_mh.hh.

Vec DarcyFlowMH_Steady::sol_vec
protected

Definition at line 366 of file darcy_flow_mh.hh.

double* DarcyFlowMH_Steady::solution
protected

Definition at line 339 of file darcy_flow_mh.hh.

std::vector<double> DarcyFlowMH_Steady::solution_
protected

Definition at line 361 of file darcy_flow_mh.hh.

std::vector<unsigned> DarcyFlowMH_Steady::solver_indices_
protected

Definition at line 362 of file darcy_flow_mh.hh.


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