OGS
|
A class to simulate the liquid flow process in porous media described by.
\[ \frac{\partial n \rho_l}{\partial T} \frac{\partial T}{\partial t}/\rho_l + (\frac{\partial n \rho_l}{\partial p}/\rho_l + \beta_s) \frac{\partial p}{\partial t} -\nabla (\frac{K}{\mu}(\nabla p + \rho_l g \nabla z) ) = Q \]
where
\begin{eqnarray*} &p:& \mbox{pore pressure,}\\ &T: & \mbox{Temperature,}\\ &\rho_l:& \mbox{liquid density,}\\ &\beta_s:& \mbox{specific storage,}\\ &K:& \mbox{permeability,}\\ &\mu:& \mbox{viscosity,}\\ \end{eqnarray*}
Definition at line 55 of file LiquidFlowProcess.h.
#include <LiquidFlowProcess.h>
Public Member Functions | |
LiquidFlowProcess (std::string name, MeshLib::Mesh &mesh, std::unique_ptr< AbstractJacobianAssembler > &&jacobian_assembler, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, unsigned const integration_order, std::vector< std::vector< std::reference_wrapper< ProcessVariable >>> &&process_variables, LiquidFlowData &&process_data, SecondaryVariableCollection &&secondary_variables, std::unique_ptr< ProcessLib::SurfaceFluxData > &&surfaceflux) | |
void | computeSecondaryVariableConcrete (double const t, double const dt, std::vector< GlobalVector * > const &x, GlobalVector const &x_dot, int const process_id) override |
bool | isLinear () const override |
Eigen::Vector3d | getFlux (std::size_t const element_id, MathLib::Point3d const &p, double const t, std::vector< GlobalVector * > const &x) const override |
void | postTimestepConcreteProcess (std::vector< GlobalVector * > const &x, const double t, const double dt, int const process_id) override |
Public Member Functions inherited from ProcessLib::Process | |
Process (std::string name_, MeshLib::Mesh &mesh, std::unique_ptr< AbstractJacobianAssembler > &&jacobian_assembler, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, unsigned const integration_order, std::vector< std::vector< std::reference_wrapper< ProcessVariable >>> &&process_variables, SecondaryVariableCollection &&secondary_variables, const bool use_monolithic_scheme=true) | |
void | preTimestep (std::vector< GlobalVector * > const &x, const double t, const double delta_t, const int process_id) |
Preprocessing before starting assembly for new timestep. More... | |
void | postTimestep (std::vector< GlobalVector * > const &x, const double t, const double delta_t, int const process_id) |
Postprocessing after a complete timestep. More... | |
void | postNonLinearSolver (GlobalVector const &x, GlobalVector const &xdot, const double t, double const dt, int const process_id) |
void | preIteration (const unsigned iter, GlobalVector const &x) final |
void | computeSecondaryVariable (double const t, double const dt, std::vector< GlobalVector * > const &x, GlobalVector const &x_dot, int const process_id) |
compute secondary variables for the coupled equations or for output. More... | |
NumLib::IterationResult | postIteration (GlobalVector const &x) final |
void | initialize () |
void | setInitialConditions (std::vector< GlobalVector * > &process_solutions, std::vector< GlobalVector * > const &process_solutions_prev, double const t, int const process_id) |
MathLib::MatrixSpecifications | getMatrixSpecifications (const int process_id) const override |
void | setCoupledSolutionsForStaggeredScheme (CoupledSolutionsForStaggeredScheme *const coupled_solutions) |
void | updateDeactivatedSubdomains (double const time, const int process_id) |
bool | isMonolithicSchemeUsed () const |
virtual void | setCoupledTermForTheStaggeredSchemeToLocalAssemblers (int const) |
virtual void | extrapolateIntegrationPointValuesToNodes (const double, std::vector< GlobalVector * > const &, std::vector< GlobalVector * > &) |
void | preAssemble (const double t, double const dt, GlobalVector const &x) final |
void | assemble (const double t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &xdot, int const process_id, GlobalMatrix &M, GlobalMatrix &K, GlobalVector &b) final |
void | assembleWithJacobian (const double t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &xdot, const double dxdot_dx, const double dx_dx, int const process_id, GlobalMatrix &M, GlobalMatrix &K, GlobalVector &b, GlobalMatrix &Jac) final |
std::vector< NumLib::IndexValueVector< GlobalIndexType > > const * | getKnownSolutions (double const t, GlobalVector const &x, int const process_id) const final |
virtual NumLib::LocalToGlobalIndexMap const & | getDOFTable (const int) const |
MeshLib::Mesh & | getMesh () const |
std::vector< std::reference_wrapper< ProcessVariable > > const & | getProcessVariables (const int process_id) const |
SecondaryVariableCollection const & | getSecondaryVariables () const |
std::vector< std::unique_ptr< IntegrationPointWriter > > const * | getIntegrationPointWriter (MeshLib::Mesh const &mesh) const |
virtual void | solveReactionEquation (std::vector< GlobalVector * > &, std::vector< GlobalVector * > const &, double const, double const, NumLib::EquationSystem &, int const) |
Private Member Functions | |
void | initializeConcreteProcess (NumLib::LocalToGlobalIndexMap const &dof_table, MeshLib::Mesh const &mesh, unsigned const integration_order) override |
Process specific initialization called by initialize(). More... | |
void | assembleConcreteProcess (const double t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &xdot, int const process_id, GlobalMatrix &M, GlobalMatrix &K, GlobalVector &b) override |
void | assembleWithJacobianConcreteProcess (const double t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &xdot, const double dxdot_dx, const double dx_dx, int const process_id, GlobalMatrix &M, GlobalMatrix &K, GlobalVector &b, GlobalMatrix &Jac) override |
Private Attributes | |
LiquidFlowData | _process_data |
std::vector< std::unique_ptr< LiquidFlowLocalAssemblerInterface > > | _local_assemblers |
std::unique_ptr< ProcessLib::SurfaceFluxData > | _surfaceflux |
MeshLib::PropertyVector< double > * | _hydraulic_flow = nullptr |
ProcessLib::LiquidFlow::LiquidFlowProcess::LiquidFlowProcess | ( | std::string | name, |
MeshLib::Mesh & | mesh, | ||
std::unique_ptr< AbstractJacobianAssembler > && | jacobian_assembler, | ||
std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const & | parameters, | ||
unsigned const | integration_order, | ||
std::vector< std::vector< std::reference_wrapper< ProcessVariable >>> && | process_variables, | ||
LiquidFlowData && | process_data, | ||
SecondaryVariableCollection && | secondary_variables, | ||
std::unique_ptr< ProcessLib::SurfaceFluxData > && | surfaceflux | ||
) |
Definition at line 28 of file LiquidFlowProcess.cpp.
References _hydraulic_flow, DBUG(), and MeshLib::Node.
|
overrideprivatevirtual |
Implements ProcessLib::Process.
Definition at line 72 of file LiquidFlowProcess.cpp.
References ProcessLib::Process::_global_assembler, _hydraulic_flow, _local_assemblers, ProcessLib::Process::_local_to_global_index_map, ProcessLib::VectorMatrixAssembler::assemble(), ProcessLib::computeResiduum(), DBUG(), NumLib::SerialExecutor::executeSelectedMemberDereferenced(), MathLib::finalizeMatrixAssembly(), MathLib::finalizeVectorAssembly(), ProcessLib::ProcessVariable::getActiveElementIDs(), ProcessLib::Process::getProcessVariables(), and NumLib::transformVariableFromGlobalVector().
|
overrideprivatevirtual |
Implements ProcessLib::Process.
Definition at line 100 of file LiquidFlowProcess.cpp.
References ProcessLib::Process::_global_assembler, _local_assemblers, ProcessLib::Process::_local_to_global_index_map, ProcessLib::VectorMatrixAssembler::assembleWithJacobian(), DBUG(), NumLib::SerialExecutor::executeSelectedMemberDereferenced(), ProcessLib::ProcessVariable::getActiveElementIDs(), and ProcessLib::Process::getProcessVariables().
|
overridevirtual |
Reimplemented from ProcessLib::Process.
Definition at line 119 of file LiquidFlowProcess.cpp.
References _local_assemblers, ProcessLib::LocalAssemblerInterface::computeSecondaryVariable(), DBUG(), NumLib::SerialExecutor::executeSelectedMemberOnDereferenced(), ProcessLib::ProcessVariable::getActiveElementIDs(), and ProcessLib::Process::getProcessVariables().
|
overridevirtual |
Reimplemented from ProcessLib::Process.
Definition at line 136 of file LiquidFlowProcess.cpp.
References _local_assemblers, ProcessLib::Process::_local_to_global_index_map, and NumLib::getRowColumnIndices().
|
overrideprivatevirtual |
Process specific initialization called by initialize().
Implements ProcessLib::Process.
Definition at line 51 of file LiquidFlowProcess.cpp.
References _local_assemblers, _process_data, ProcessLib::Process::_secondary_variables, ProcessLib::SecondaryVariableCollection::addSecondaryVariable(), MeshLib::Mesh::getElements(), ProcessLib::Process::getExtrapolator(), ProcessLib::LiquidFlow::LiquidFlowLocalAssemblerInterface::getIntPtDarcyVelocity(), ProcessLib::Process::getProcessVariables(), ProcessLib::ProcessVariable::getShapeFunctionOrder(), MeshLib::Mesh::isAxiallySymmetric(), ProcessLib::makeExtrapolator(), and ProcessLib::LiquidFlow::LiquidFlowData::mesh_space_dimension.
|
inlineoverride |
Definition at line 76 of file LiquidFlowProcess.h.
|
overridevirtual |
Reimplemented from ProcessLib::Process.
Definition at line 153 of file LiquidFlowProcess.cpp.
References ProcessLib::Process::_integration_order, ProcessLib::Process::_mesh, _surfaceflux, ProcessLib::ProcessVariable::getActiveElementIDs(), and ProcessLib::Process::getProcessVariables().
|
private |
Definition at line 111 of file LiquidFlowProcess.h.
Referenced by LiquidFlowProcess(), and assembleConcreteProcess().
|
private |
Definition at line 108 of file LiquidFlowProcess.h.
Referenced by assembleConcreteProcess(), assembleWithJacobianConcreteProcess(), computeSecondaryVariableConcrete(), getFlux(), and initializeConcreteProcess().
|
private |
Definition at line 105 of file LiquidFlowProcess.h.
Referenced by initializeConcreteProcess().
|
private |
Definition at line 110 of file LiquidFlowProcess.h.
Referenced by postTimestepConcreteProcess().