Flow123d  JS_before_hm-2072-g4aad0192b
darcy_flow_mh.hh
Go to the documentation of this file.
1 /*!
2  *
3  * Copyright (C) 2015 Technical University of Liberec. All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it under
6  * the terms of the GNU General Public License version 3 as published by the
7  * Free Software Foundation. (http://www.gnu.org/licenses/gpl-3.0.en.html)
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12  *
13  *
14  * @file darcy_flow_mh.hh
15  * @brief mixed-hybrid model of linear Darcy flow, possibly unsteady.
16  * @author Jan Brezina
17  *
18  * Main object for mixed-hybrid discretization of the linear elliptic PDE (Laplace)
19  * on a multidimensional domain. Discretization of saturated Darcy flow using
20  * RT0 approximation for the velocity
21  */
22 
23 /*
24  * list of files dependent on this one:
25  *
26  * posprocess.cc
27  * problem.cc
28  * main.hh
29  * transport.cc
30  */
31 
32 
33 #ifndef DARCY_FLOW_MH_HH
34 #define DARCY_FLOW_MH_HH
35 
36 #include <petscmat.h> // for Mat
37 #include <string.h> // for memcpy
38 #include <algorithm> // for swap
39 
40 #include <memory> // for shared_ptr, allocator...
41 #include <new> // for operator new[]
42 #include <string> // for string, operator<<
43 #include <vector> // for vector, vector<>::con...
44 #include <armadillo>
45 #include "fields/bc_field.hh" // for BCField
46 #include "fields/field.hh" // for Field
47 #include "fields/field_set.hh" // for FieldSet
48 #include "fields/field_values.hh" // for FieldValue<>::Scalar
49 #include "flow/darcy_flow_interface.hh" // for DarcyFlowInterface
50 #include "input/input_exception.hh" // for DECLARE_INPUT_EXCEPTION
51 #include "input/type_base.hh" // for Array
52 #include "input/type_generic.hh" // for Instance
53 #include "mesh/mesh.h" // for Mesh
54 #include "petscvec.h" // for Vec, _p_Vec, VecScatter
55 #include "system/exceptions.hh" // for ExcStream, operator<<
56 #include "tools/time_governor.hh" // for TimeGovernor
57 
58 class AssemblyBase;
59 class Balance;
60 class DarcyFlowMHOutput;
61 class Element;
62 class Intersection;
63 class LinSys;
64 class LinSys_BDDC;
65 namespace Input {
66  class AbstractRecord;
67  class Record;
68  namespace Type {
69  class Record;
70  class Selection;
71  }
72 }
74 
75 template<int spacedim, class Value> class FieldAddPotential;
76 
77 /**
78  * @brief Mixed-hybrid model of linear Darcy flow, possibly unsteady.
79  *
80  * Abstract class for various implementations of Darcy flow. In future there should be
81  * one further level of abstraction for general time dependent problem.
82  *
83  * maybe TODO:
84  * split compute_one_step to :
85  * 1) prepare_next_timestep
86  * 2) actualize_solution - this is for iterative nonlinear solvers
87  *
88  */
89 
90 
91 /**
92  * @brief Mixed-hybrid of steady Darcy flow with sources and variable density.
93  *
94  * solve equations:
95  * @f[
96  * q= -{\mathbf{K}} \nabla h -{\mathbf{K}} R \nabla z
97  * @f]
98  * @f[
99  * \mathrm{div} q = f
100  * @f]
101  *
102  * where
103  * - @f$ q @f$ is flux @f$[ms^{-1}]@f$ for 3d, @f$[m^2s^{-1}]@f$ for 2d and @f$[m^3s^{-1}]@f$ for 1d.
104  * - @f$ \mathbf{K} @f$ is hydraulic tensor ( its orientation for 2d, 1d case is questionable )
105  * - @f$ h = \frac{\pi}{\rho_0 g}+z @f$ is pressure head, @f$ \pi, \rho_0, g @f$ are the pressure, water density, and acceleration of gravity , respectively.
106  * Assumes gravity force acts counter to the direction of the @f$ z @f$ axis.
107  * - @f$ R @f$ is destity or gravity variability coefficient. For density driven flow it should be
108  * @f[
109  * R = \frac{\rho}{\rho_0} -1 = \rho_0^{-1}\sum_{i=1}^s c_i
110  * @f]
111  * where @f$ c_i @f$ is concentration in @f$ kg m^{-3} @f$.
112  *
113  * The time key is optional, when not specified the equation is forced to steady regime. Using Steady TimeGovernor which have no dt constraints.
114  *
115  */
116 /**
117  * Model for transition coefficients due to Martin, Jaffre, Roberts (see manual for full reference)
118  *
119  * TODO:
120  * - how we can reuse field values computed during assembly
121  *
122  * TODO: Remove in future. It is supposed not to be improved anymore,
123  * however it is kept functioning aside of the LMH lumped version until
124  * the LMH version is stable and optimized.
125  */
126 
128 {
129 public:
130  TYPEDEF_ERR_INFO( EI_Reason, string);
131  DECLARE_EXCEPTION(ExcSolverDiverge,
132  << "Diverged nonlinear solver. Reason: " << EI_Reason::val
133  );
134  DECLARE_INPUT_EXCEPTION(ExcMissingTimeGovernor,
135  << "Missing the key 'time', obligatory for the transient problems.");
136 
137  /** Class with all fields used in the equation DarcyFlow.
138  * This is common to all implementations since this provides interface
139  * to this equation for possible coupling.
140  *
141  * This class is the base class for equation data also in DarcyLMH and RichardsLMH classes
142  * especially due to the common output class DarcyFlowMHOutput.
143  * This is the only dependence between DarcyMH and DarcyLMH classes.
144  */
145  class EqData : public FieldSet {
146  public:
147 
148  /**
149  * For compatibility with old BCD file we have to assign integer codes starting from 1.
150  */
151  enum BC_Type {
152  none=0,
157  };
158 
159  /// Return a Selection corresponding to enum BC_Type.
161 
162  /// Creation of all fields.
163  EqData();
164 
165  /// Return coords field
167  return this->X_;
168  }
169 
170 
176 
177  BCField<3, FieldValue<3>::Enum > bc_type; // Discrete need Selection for initialization
182 
185  Field<3, FieldValue<3>::Scalar > extra_storativity; /// Externally added storativity.
186  Field<3, FieldValue<3>::Scalar > extra_source; /// Externally added water source.
187 
193 
194  Field<3, FieldValue<3>::VectorFixed > gravity_field; /// Holds gravity vector acceptable in FieldModel
195 
196  /**
197  * Gravity vector and constant shift of pressure potential. Used to convert piezometric head
198  * to pressure head and vice versa.
199  */
200  arma::vec4 gravity_;
202 
203  // Mirroring the following members of DarcyMH:
205  std::shared_ptr<DOFHandlerMultiDim> dh_; ///< full DOF handler represents DOFs of sides, elements and edges
206  std::shared_ptr<SubDOFHandlerMultiDim> dh_cr_; ///< DOF handler represents DOFs of edges
207  std::shared_ptr<DOFHandlerMultiDim> dh_cr_disc_; ///< DOF handler represents DOFs of sides
208 
209 
211 
213 
214  std::shared_ptr<Balance> balance;
216 
217  unsigned int n_schur_compls;
218  int is_linear; ///< Hack fo BDDC solver.
219  bool force_no_neumann_bc; ///< auxiliary flag for switchting Dirichlet like BC
220 
221  /// Idicator of dirichlet or neumann type of switch boundary conditions.
223 
224  VectorMPI full_solution; //< full solution [vel,press,lambda] from 2. Schur complement
225 
227  };
228 
229  /// Selection for enum MortarMethod.
231 
232 
233 
234 
235 
236  DarcyMH(Mesh &mesh, const Input::Record in_rec, TimeGovernor *tm = nullptr);
237 
239  static const Input::Type::Record & get_input_type();
240 
241  void init_eq_data();
242  void initialize() override;
243  virtual void initialize_specific();
244  void zero_time_step() override;
245  void update_solution() override;
246  /// Solve the problem without moving to next time and without output.
247  void solve_time_step(bool output = true);
248 
249  /// postprocess velocity field (add sources)
250  virtual void postprocess();
251  virtual void output_data() override;
252 
253  EqData &data() { return *data_; }
254 
256  { data_->extra_storativity = extra_stor; }
257 
258  void set_extra_source(const Field<3, FieldValue<3>::Scalar> &extra_src)
259  { data_->extra_source = extra_src; }
260 
261  virtual ~DarcyMH() override;
262 
263 
264 protected:
265  /**
266  * Returns true is the fields involved in the time term have values that makes the time term zero.
267  * For time_global==true, it returns true if there are no field descriptors in the input list, so the
268  * fields )of the time ter) have their default values for whole simulation.
269  * If time_global==false (default), only the actual values are considered.
270  */
271  virtual bool zero_time_term(bool time_global=false);
272 
273  /// Solve method common to zero_time_step and update solution.
274  void solve_nonlinear();
275  void modify_system();
276  virtual void setup_time_term();
277  void prepare_new_time_step();
278 
279 
280  //void prepare_parallel();
281  //void make_row_numberings();
282 
283  /**
284  * Create and preallocate MH linear system (including matrix, rhs and solution vectors)
285  */
287 
288  /**
289  * Read initial condition into solution vector.
290  * Must be called after create_linear_system.
291  *
292  * For the LMH scheme we have to be able to save edge pressures in order to
293  * restart simulation or use results of one simulation as initial condition for other one.
294  */
295  virtual void read_initial_condition();
296 
297  /**
298  * Part of per element assembly that is specific for MH and LMH respectively.
299  *
300  * This implemnets MH case:
301  * - compute conductivity scaling
302  * - assembly source term
303  * - no time term, managed by diagonal extraction etc.
304  */
305  //virtual void local_assembly_specific(AssemblyData &local_data);
306 
307  /**
308  * Allocates linear system matrix for MH.
309  * TODO:
310  * - use general preallocation methods in DofHandler
311  */
312  void allocate_mh_matrix();
313 
314  /**
315  * Assembles linear system matrix for MH.
316  * Element by element assembly is done using dim-template assembly class.
317  * Assembles only steady part of the equation.
318  * TODO:
319  * - include time term
320  * - add support for Robin type sources
321  * - support for nonlinear solvers - assembly either residual vector, matrix, or both (using FADBAD++)
322  */
323  void assembly_mh_matrix(MultidimAssembly& assembler);
324 
325  /// Source term is implemented differently in LMH version.
326  virtual void assembly_source_term();
327 
328  /**
329  * Assembly or update whole linear system.
330  */
331  virtual void assembly_linear_system();
332 
333  void set_mesh_data_for_bddc(LinSys_BDDC * bddc_ls);
334  /**
335  * Return a norm of residual vector.
336  * TODO: Introduce Equation::compute_residual() updating
337  * residual field, standard part of EqData.
338  */
339  virtual double solution_precision() const;
340 
341  /// Print darcy flow matrix in matlab format into a file.
342  void print_matlab_matrix(string matlab_file);
343 
344  /// Get vector of all DOF indices of given component (0..side, 1..element, 2..edge)
345  std::vector<int> get_component_indices_vec(unsigned int component) const;
346 
347  std::shared_ptr<Balance> balance_;
348 
350 
351  int size; // global size of MH matrix
352  int n_schur_compls; // number of shur complements to make
353 
354  // Propagate test for the time term to the assembly.
355  // This flag is necessary for switching BC to avoid setting zero neumann on the whole boundary in the steady case.
358 
359  // Setting of the nonlinear solver. TODO: Move to the solver class later on.
360  double tolerance_;
361  unsigned int min_n_it_;
362  unsigned int max_n_it_;
363  unsigned int nonlinear_iteration_; //< Actual number of completed nonlinear iterations, need to pass this information into assembly.
364 
365 
366  LinSys *schur0; //< whole MH Linear System
367 
372 
373  std::shared_ptr<EqData> data_;
374 
375  friend class DarcyFlowMHOutput;
376  //friend class P0_CouplingAssembler;
377  //friend class P1_CouplingAssembler;
378 
379 private:
380  /// Registrar of class to factory
381  static const int registrar;
382 };
383 
384 
385 
386 void mat_count_off_proc_values(Mat m, Vec v);
387 /// Helper method fills range (min and max) of given component
388 void dofs_range(unsigned int n_dofs, unsigned int &min, unsigned int &max, unsigned int component);
389 
390 
391 #endif //DARCY_FLOW_MH_HH
392 //-----------------------------------------------------------------------------
393 // vim: set cindent:
394 
bc_field.hh
DarcyMH::balance_
std::shared_ptr< Balance > balance_
Definition: darcy_flow_mh.hh:347
FieldCoords
Definition: field_coords.hh:36
DarcyMH::EqData::BC_Type
BC_Type
Definition: darcy_flow_mh.hh:151
DarcyMH::previous_solution
Vec previous_solution
Definition: darcy_flow_mh.hh:371
DarcyMH::solution_precision
virtual double solution_precision() const
Definition: darcy_flow_mh.cc:781
DarcyMH::init_eq_data
void init_eq_data()
Definition: darcy_flow_mh.cc:381
DarcyMH::solve_nonlinear
void solve_nonlinear()
Solve method common to zero_time_step and update solution.
Definition: darcy_flow_mh.cc:642
DarcyMH::use_steady_assembly_
bool use_steady_assembly_
Definition: darcy_flow_mh.hh:356
DarcyMH::data
EqData & data()
Definition: darcy_flow_mh.hh:253
DarcyMH::set_extra_source
void set_extra_source(const Field< 3, FieldValue< 3 >::Scalar > &extra_src)
Definition: darcy_flow_mh.hh:258
LinSys
Definition: la_linsys_new.hh:169
DarcyMH::set_extra_storativity
void set_extra_storativity(const Field< 3, FieldValue< 3 >::Scalar > &extra_stor)
Definition: darcy_flow_mh.hh:255
time_governor.hh
Basic time management class.
DarcyMH::size
int size
Definition: darcy_flow_mh.hh:351
DarcyMH::EqData::dirichlet
@ dirichlet
Definition: darcy_flow_mh.hh:153
DarcyMH::steady_rhs
Vec steady_rhs
Definition: darcy_flow_mh.hh:369
DarcyMH::solve_time_step
void solve_time_step(bool output=true)
Solve the problem without moving to next time and without output.
Definition: darcy_flow_mh.cc:585
Input
Abstract linear system class.
Definition: balance.hh:40
DarcyMH::update_solution
void update_solution() override
Definition: darcy_flow_mh.cc:570
DarcyMH::type_field_descriptor
static const Input::Type::Record & type_field_descriptor()
Definition: darcy_flow_mh.cc:120
string.h
dofs_range
void dofs_range(unsigned int n_dofs, unsigned int &min, unsigned int &max, unsigned int component)
Helper method fills range (min and max) of given component.
Definition: darcy_flow_mh.cc:1527
Balance
Definition: balance.hh:119
DarcyMH::EqData::sigma
Field< 3, FieldValue< 3 >::Scalar > sigma
Definition: darcy_flow_mh.hh:175
DarcyMH::postprocess
virtual void postprocess()
postprocess velocity field (add sources)
Definition: darcy_flow_mh.cc:731
DarcyMH::EqData::extra_storativity
Field< 3, FieldValue< 3 >::Scalar > extra_storativity
Definition: darcy_flow_mh.hh:185
DarcyMH::setup_time_term
virtual void setup_time_term()
Definition: darcy_flow_mh.cc:1459
DarcyMH::EqData::n_schur_compls
unsigned int n_schur_compls
Definition: darcy_flow_mh.hh:217
DarcyMH::EqData::dh_cr_
std::shared_ptr< SubDOFHandlerMultiDim > dh_cr_
DOF handler represents DOFs of edges.
Definition: darcy_flow_mh.hh:206
DarcyMH::EqData::gravity_
arma::vec4 gravity_
Holds gravity vector acceptable in FieldModel.
Definition: darcy_flow_mh.hh:200
DarcyMH::EqData::multidim_assembler
MultidimAssembly multidim_assembler
Definition: darcy_flow_mh.hh:226
field_set.hh
DarcyMH::create_linear_system
void create_linear_system(Input::AbstractRecord rec)
Definition: darcy_flow_mh.cc:967
std::vector
Definition: doxy_dummy_defs.hh:7
DarcyMH::EqData::bc_flux
BCField< 3, FieldValue< 3 >::Scalar > bc_flux
Definition: darcy_flow_mh.hh:179
DarcyMH::output_data
virtual void output_data() override
Write computed fields.
Definition: darcy_flow_mh.cc:765
DarcyMH::~DarcyMH
virtual ~DarcyMH() override
Definition: darcy_flow_mh.cc:1388
DarcyMH::EqData::total_flux
@ total_flux
Definition: darcy_flow_mh.hh:154
arma::vec3
Definition: doxy_dummy_defs.hh:17
DarcyMH::get_mh_mortar_selection
static const Input::Type::Selection & get_mh_mortar_selection()
Selection for enum MortarMethod.
Definition: darcy_flow_mh.cc:82
FieldAddPotential
Definition: field_add_potential.hh:38
uint
unsigned int uint
Definition: mh_dofhandler.hh:101
type_base.hh
DarcyMH::max_n_it_
unsigned int max_n_it_
Definition: darcy_flow_mh.hh:362
DarcyMH::EqData::gravity_vec_
arma::vec3 gravity_vec_
Definition: darcy_flow_mh.hh:201
DarcyMH::EqData::field_ele_pressure
Field< 3, FieldValue< 3 >::Scalar > field_ele_pressure
Externally added water source.
Definition: darcy_flow_mh.hh:188
DarcyMH::EqData::dh_
std::shared_ptr< DOFHandlerMultiDim > dh_
full DOF handler represents DOFs of sides, elements and edges
Definition: darcy_flow_mh.hh:205
DarcyMH::EqData::bc_switch_pressure
BCField< 3, FieldValue< 3 >::Scalar > bc_switch_pressure
Definition: darcy_flow_mh.hh:181
exceptions.hh
Element
Definition: elements.h:40
DarcyMH::allocate_mh_matrix
void allocate_mh_matrix()
Definition: darcy_flow_mh.cc:817
DarcyMH::prepare_new_time_step
void prepare_new_time_step()
Definition: darcy_flow_mh.cc:726
DarcyMH::assembly_mh_matrix
void assembly_mh_matrix(MultidimAssembly &assembler)
Definition: darcy_flow_mh.cc:793
DarcyMH::EqData
Definition: darcy_flow_mh.hh:145
DarcyMH::EqData::none
@ none
Definition: darcy_flow_mh.hh:152
FieldSet::X_
FieldCoords X_
Field holds coordinates for computing of FieldFormulas.
Definition: field_set.hh:401
EquationBase::mesh
Mesh & mesh()
Definition: equation.hh:177
DarcyMH::output_object
DarcyFlowMHOutput * output_object
Definition: darcy_flow_mh.hh:349
DarcyMH::EqData::bc_pressure
BCField< 3, FieldValue< 3 >::Scalar > bc_pressure
Definition: darcy_flow_mh.hh:178
DarcyMH::EqData::river
@ river
Definition: darcy_flow_mh.hh:156
DarcyMH::EqData::X
FieldCoords & X()
Return coords field.
Definition: darcy_flow_mh.hh:166
Intersection
Definition: intersectionquadrature.hh:146
Input::Record
Accessor to the data with type Type::Record.
Definition: accessors.hh:291
DarcyMH::EqData::bc_switch_dirichlet
std::vector< char > bc_switch_dirichlet
Idicator of dirichlet or neumann type of switch boundary conditions.
Definition: darcy_flow_mh.hh:222
DarcyMH::assembly_source_term
virtual void assembly_source_term()
Source term is implemented differently in LMH version.
Definition: darcy_flow_mh.cc:930
type_generic.hh
DarcyMH::EqData::is_linear
int is_linear
Hack fo BDDC solver.
Definition: darcy_flow_mh.hh:218
mat_count_off_proc_values
void mat_count_off_proc_values(Mat m, Vec v)
DarcyMH::modify_system
void modify_system()
Definition: darcy_flow_mh.cc:1502
DarcyMH::min_n_it_
unsigned int min_n_it_
Definition: darcy_flow_mh.hh:361
TimeGovernor
Basic time management functionality for unsteady (and steady) solvers (class Equation).
Definition: time_governor.hh:310
DarcyMH::zero_time_term
virtual bool zero_time_term(bool time_global=false)
Definition: darcy_flow_mh.cc:633
DarcyMH::steady_diagonal
Vec steady_diagonal
Definition: darcy_flow_mh.hh:368
field_values.hh
Input::AbstractRecord
Accessor to the polymorphic input data of a type given by an AbstracRecord object.
Definition: accessors.hh:458
LinSys_BDDC
Definition: linsys_BDDC.hh:39
DarcyMH::print_matlab_matrix
void print_matlab_matrix(string matlab_file)
Print darcy flow matrix in matlab format into a file.
Definition: darcy_flow_mh.cc:1136
DarcyMH::EqData::field_ele_piezo_head
Field< 3, FieldValue< 3 >::Scalar > field_ele_piezo_head
Definition: darcy_flow_mh.hh:189
DarcyMH::EqData::get_bc_type_selection
static const Input::Type::Selection & get_bc_type_selection()
Return a Selection corresponding to enum BC_Type.
Definition: darcy_flow_mh.cc:91
input_exception.hh
DarcyMH::DECLARE_INPUT_EXCEPTION
DECLARE_INPUT_EXCEPTION(ExcMissingTimeGovernor,<< "Missing the key 'time', obligatory for the transient problems.")
DarcyMH::EqData::full_solution
VectorMPI full_solution
Definition: darcy_flow_mh.hh:224
DarcyMH::EqData::mesh
Mesh * mesh
Definition: darcy_flow_mh.hh:204
FieldSet
Container for various descendants of FieldCommonBase.
Definition: field_set.hh:159
DarcyMH::schur0
LinSys * schur0
Definition: darcy_flow_mh.hh:366
mesh.h
Input::Type::Selection
Template for classes storing finite set of named values.
Definition: type_selection.hh:65
DarcyFlowInterface::MortarMethod
MortarMethod
Type of experimental Mortar-like method for non-compatible 1d-2d interaction.
Definition: darcy_flow_interface.hh:30
DarcyMH::n_schur_compls
int n_schur_compls
Definition: darcy_flow_mh.hh:352
DarcyMH::EqData::force_no_neumann_bc
bool force_no_neumann_bc
auxiliary flag for switchting Dirichlet like BC
Definition: darcy_flow_mh.hh:219
DarcyMH::EqData::water_source_density
Field< 3, FieldValue< 3 >::Scalar > water_source_density
Definition: darcy_flow_mh.hh:174
Input::Type::Record
Record type proxy class.
Definition: type_record.hh:182
DarcyMH::data_
std::shared_ptr< EqData > data_
Definition: darcy_flow_mh.hh:373
DarcyMH::DECLARE_EXCEPTION
DECLARE_EXCEPTION(ExcSolverDiverge,<< "Diverged nonlinear solver. Reason: "<< EI_Reason::val)
DarcyMH::new_diagonal
Vec new_diagonal
Definition: darcy_flow_mh.hh:370
DarcyMH::EqData::storativity
Field< 3, FieldValue< 3 >::Scalar > storativity
Definition: darcy_flow_mh.hh:184
DarcyMH::get_component_indices_vec
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)
Definition: darcy_flow_mh.cc:1541
Mesh
Definition: mesh.h:355
DarcyMH::nonlinear_iteration_
unsigned int nonlinear_iteration_
Definition: darcy_flow_mh.hh:363
DarcyMH::tolerance_
double tolerance_
Definition: darcy_flow_mh.hh:360
DarcyMH::set_mesh_data_for_bddc
void set_mesh_data_for_bddc(LinSys_BDDC *bddc_ls)
Definition: darcy_flow_mh.cc:1209
DarcyMH::get_input_type
static const Input::Type::Record & get_input_type()
Definition: darcy_flow_mh.cc:135
DarcyMH::EqData::dh_cr_disc_
std::shared_ptr< DOFHandlerMultiDim > dh_cr_disc_
DOF handler represents DOFs of sides.
Definition: darcy_flow_mh.hh:207
DarcyMH::EqData::water_balance_idx
uint water_balance_idx
Definition: darcy_flow_mh.hh:210
DarcyMH::assembly_linear_system
virtual void assembly_linear_system()
Definition: darcy_flow_mh.cc:1080
DarcyMH::DarcyMH
DarcyMH(Mesh &mesh, const Input::Record in_rec, TimeGovernor *tm=nullptr)
CREATE AND FILL GLOBAL MH MATRIX OF THE WATER MODEL.
Definition: darcy_flow_mh.cc:328
DarcyMH::EqData::balance
std::shared_ptr< Balance > balance
Definition: darcy_flow_mh.hh:214
DarcyMH::initialize_specific
virtual void initialize_specific()
Definition: darcy_flow_mh.cc:531
DarcyMH::EqData::field_edge_pressure
Field< 3, FieldValue< 3 >::Scalar > field_edge_pressure
Definition: darcy_flow_mh.hh:192
DarcyMH::EqData::mortar_method_
MortarMethod mortar_method_
Definition: darcy_flow_mh.hh:212
AssemblyBase
Definition: assembly_base.hh:34
DarcyMH::EqData::flux
Field< 3, FieldValue< 3 >::VectorFixed > flux
Definition: darcy_flow_mh.hh:191
DarcyMH::EqData::anisotropy
Field< 3, FieldValue< 3 >::TensorFixed > anisotropy
Definition: darcy_flow_mh.hh:171
DarcyMH::data_changed_
bool data_changed_
Definition: darcy_flow_mh.hh:357
DarcyMH::EqData::bc_robin_sigma
BCField< 3, FieldValue< 3 >::Scalar > bc_robin_sigma
Definition: darcy_flow_mh.hh:180
BCField
Definition: bc_field.hh:32
DarcyMH::EqData::lin_sys
LinSys * lin_sys
Definition: darcy_flow_mh.hh:215
VectorMPI
Definition: vector_mpi.hh:43
Field
Class template representing a field with values dependent on: point, element, and region.
Definition: field.hh:93
DarcyMH::EqData::field_ele_velocity
Field< 3, FieldValue< 3 >::VectorFixed > field_ele_velocity
Definition: darcy_flow_mh.hh:190
DarcyMH::EqData::seepage
@ seepage
Definition: darcy_flow_mh.hh:155
DarcyMH::EqData::gravity_field
Field< 3, FieldValue< 3 >::VectorFixed > gravity_field
Definition: darcy_flow_mh.hh:194
DarcyMH::TYPEDEF_ERR_INFO
TYPEDEF_ERR_INFO(EI_Reason, string)
DarcyFlowMHOutput
Definition: darcy_flow_mh_output.hh:74
DarcyMH::EqData::init_pressure
Field< 3, FieldValue< 3 >::Scalar > init_pressure
Definition: darcy_flow_mh.hh:183
DarcyMH::read_initial_condition
virtual void read_initial_condition()
Definition: darcy_flow_mh.cc:1443
DarcyMH
Mixed-hybrid model of linear Darcy flow, possibly unsteady.
Definition: darcy_flow_mh.hh:127
DarcyMH::EqData::cross_section
Field< 3, FieldValue< 3 >::Scalar > cross_section
Definition: darcy_flow_mh.hh:173
MultidimAssembly
std::vector< std::shared_ptr< AssemblyBase > > MultidimAssembly
Definition: darcy_flow_mh.hh:73
DarcyMH::EqData::bc_type
BCField< 3, FieldValue< 3 >::Enum > bc_type
Definition: darcy_flow_mh.hh:177
DarcyMH::EqData::conductivity
Field< 3, FieldValue< 3 >::Scalar > conductivity
Definition: darcy_flow_mh.hh:172
DarcyMH::registrar
static const int registrar
Registrar of class to factory.
Definition: darcy_flow_mh.hh:381
DarcyMH::initialize
void initialize() override
Definition: darcy_flow_mh.cc:426
darcy_flow_interface.hh
DarcyMH::zero_time_step
void zero_time_step() override
Definition: darcy_flow_mh.cc:534
field.hh
DarcyFlowInterface
Definition: darcy_flow_interface.hh:15
DarcyMH::EqData::extra_source
Field< 3, FieldValue< 3 >::Scalar > extra_source
Externally added storativity.
Definition: darcy_flow_mh.hh:186
FieldValue
Definition: field_values.hh:645
DarcyMH::EqData::EqData
EqData()
Creation of all fields.
Definition: darcy_flow_mh.cc:190