48 #ifndef DARCY_FLOW_MH_HH
49 #define DARCY_FLOW_MH_HH
125 inline static std::shared_ptr< FieldAlgorithmBase<3, FieldValue<3>::Scalar> >
130 if (! field_ptr && rec.
opt_val(
"bc_piezo_head", field_a_rec)) {
131 return std::make_shared< FieldAddPotential<3, FieldValue<3>::Scalar > >(
gravity_, field_a_rec);
211 double *velocity_array;
284 {
ASSERT(0,
"Modify system called for Steady darcy.\n"); };
286 {
ASSERT(0,
"Setup time term called for Steady darcy.\n"); };
371 arma::mat master_map(1,2), slave_map(1,3);
372 master_map.fill(1.0 / 2);
373 slave_map.fill(1.0 / 3);
384 unsigned int &ele_type,
386 arma::vec &dirichlet);
499 #endif //DARCY_FLOW_MH_HH
Abstract base class for equation clasess.
Common abstract parent of all Field<...> classes.
Container for various descendants of FieldCommonBase.
virtual void postprocess()
postprocess velocity field (add sources)
virtual void get_solution_vector(double *&vec, unsigned int &vec_size)
virtual void setup_time_term()
P1_CouplingAssembler(const DarcyFlowMH_Steady &darcy)
Solver based on the original PETSc solver using MPIAIJ matrix and succesive Schur complement construc...
vector< vector< arma::mat > > tensor_average
Row matrices to compute element pressure as average of boundary pressures.
MortarMethod mortar_method_
Class template representing a field with values dependent on: point, element, and region...
static Input::Type::Selection mh_mortar_selection
void assembly(LinSys &ls)
bool solution_changed_for_scatter
const DarcyFlowMH_Steady & darcy_
void assembly(LinSys &ls)
static Input::Type::Record input_type
virtual void read_init_condition()
boost::shared_ptr< Distribution > rows_ds
vector< IsecList >::const_iterator ml_it_
BCField< 3, FieldValue< 3 >::Scalar > bc_flux
void pressure_diff(int i_ele, vector< int > &dofs, unsigned int &ele_type, double &delta, arma::vec &dirichlet)
vector< double > dirichlet
const MH_DofHandler & get_mh_dofhandler()
static Input::Type::Record input_type
BCField< 3, FieldValue< 3 >::Enum > bc_type
Field< 3, FieldValue< 3 >::Scalar > storativity
virtual double solution_precision() const =0
void mat_count_off_proc_values(Mat m, Vec v)
class to manage local indices on sub-domain to global indices on domain
static arma::vec4 gravity_
void modify_system() override
vector< unsigned int > IsecList
BCField< 3, FieldValue< 3 >::Scalar > bc_pressure
void setup_velocity_vector()
const DarcyFlowMH_Steady & darcy_
Data for Darcy flow equation.
virtual void update_solution()
Mixed-hybrid solution of unsteady Darcy flow.
FieldCommon * field(const std::string &field_name) const
virtual void get_parallel_solution_vector(Vec &vector)
virtual void modify_system()
P0_CouplingAssembler(const DarcyFlowMH_Steady &darcy)
Virtual class for construction and partitioning of a distributed sparse graph.
Field< 3, FieldValue< 3 >::TensorFixed > anisotropy
void assembly_linear_system()
void get_velocity_seq_vector(Vec &velocity_vec)
void modify_system() override
static std::shared_ptr< FieldAlgorithmBase< 3, FieldValue< 3 >::Scalar > > bc_piezo_head_hook(Input::Record rec, const FieldCommon &field)
void read_init_condition() override
const vector< IsecList > & master_list_
Mixed-hybrid model of linear Darcy flow, possibly unsteady.
double solution_precision() const
const vector< Intersection > & intersections_
const vector< Intersection > & intersections_
virtual void get_solution_vector(double *&vector, unsigned int &size)
Field< 3, FieldValue< 3 >::Scalar > conductivity
FieldSet main_matrix_fields
static Input::Type::AbstractRecord input_type
double delta_0
measure of master element, should be sum of intersection measures
Field< 3, FieldValue< 3 >::Scalar > sigma
virtual void postprocess()
postprocess velocity field (add sources)
boost::shared_ptr< LocalToGlobalMap > global_row_4_sub_row
virtual void set_concentration_vector(Vec &vc)
void assembly_steady_mh_matrix()
Vector classes to support both Iterator, index and Id access and creating co-located vectors...
Edge lumped mixed-hybrid solution of unsteady Darcy flow.
static std::vector< Input::Type::Record > bc_input_types
Abstract linear system class.
Mixed-hybrid of steady Darcy flow with sources and variable density.
BCField< 3, FieldValue< 3 >::Scalar > bc_robin_sigma
static Input::Type::Record input_type
void make_row_numberings()
void set_mesh_data_for_bddc(LinSys_BDDC *bddc_ls)
void read_init_condition() override
void add_sides(const Element *ele, unsigned int shift, vector< int > &dofs, vector< double > &dirichlet)
static Input::Type::Record bc_segment_rec
virtual void output_data() override
Write computed fields.
Field< 3, FieldValue< 3 >::Scalar > cross_section
void set_solution(double time, double *solution, double precision)
DarcyFlowMH(Mesh &mesh, const Input::Record in_rec)
static Input::Type::Selection bc_type_selection
Field< 3, FieldValue< 3 >::Scalar > init_pressure
DarcyFlowMHOutput * output_object
DarcyFlowMH_Steady(Mesh &mesh, const Input::Record in_rec, bool make_tg=true)
CREATE AND FILL GLOBAL MH MATRIX OF THE WATER MODEL.
static Input::Type::AbstractRecord bc_input_type
EqData()
Collect all fields.
void make_serial_scatter()
Field< 3, FieldValue< 3 >::Scalar > water_source_density
FieldSet time_term_fields
void prepare_parallel(const Input::AbstractRecord in_rec)
void create_linear_system()
Solver based on Multilevel BDDC - using corresponding class of OpenFTL package.