OGS
StaggeredHTFEM.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <Eigen/Core>
7#include <vector>
8
9#include "HTFEM.h"
16
17namespace ProcessLib
18{
19
20namespace HT
21{
22template <typename ShapeFunction, int GlobalDim>
23class StaggeredHTFEM : public HTFEM<ShapeFunction, GlobalDim>
24{
27
29 typename ShapeMatricesType::template MatrixType<ShapeFunction::NPOINTS,
30 ShapeFunction::NPOINTS>;
32 typename ShapeMatricesType::template VectorType<ShapeFunction::NPOINTS>;
33
37
42
43 using HTFEM<ShapeFunction, GlobalDim>::pressure_index;
44 using HTFEM<ShapeFunction, GlobalDim>::pressure_size;
46 using HTFEM<ShapeFunction, GlobalDim>::temperature_size;
47
48public:
50 std::size_t const local_matrix_size,
51 NumLib::GenericIntegrationMethod const& integration_method,
52 bool is_axially_symmetric,
53 HTProcessData const& process_data)
54 : HTFEM<ShapeFunction, GlobalDim>(element, local_matrix_size,
55 integration_method,
56 is_axially_symmetric, process_data, 1)
57 {
58 }
59
60 void assembleForStaggeredScheme(double const t, double const dt,
61 Eigen::VectorXd const& local_x,
62 Eigen::VectorXd const& local_x_prev,
63 int const process_id,
64 std::vector<double>& local_M_data,
65 std::vector<double>& local_K_data,
66 std::vector<double>& local_b_data) override;
67
68 std::vector<double> const& getIntPtDarcyVelocity(
69 const double t,
70 std::vector<GlobalVector*> const& x,
71 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
72 std::vector<double>& cache) const override;
73
74private:
75 void assembleHydraulicEquation(double const t, double const dt,
76 Eigen::VectorXd const& local_x,
77 Eigen::VectorXd const& local_x_prev,
78 std::vector<double>& local_M_data,
79 std::vector<double>& local_K_data,
80 std::vector<double>& local_b_data);
81
82 void assembleHeatTransportEquation(double const t,
83 double const dt,
84 Eigen::VectorXd const& local_x,
85 std::vector<double>& local_M_data,
86 std::vector<double>& local_K_data);
87};
88
89} // namespace HT
90} // namespace ProcessLib
91
92#include "StaggeredHTFEM-impl.h"
EigenFixedShapeMatrixPolicy< ShapeFunction, GlobalDim > ShapeMatrixPolicyType
static const int temperature_index
Definition HTFEM.h:316
static const int temperature_size
Definition HTFEM.h:317
HTFEM(MeshLib::Element const &element, std::size_t const local_matrix_size, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, HTProcessData const &process_data, const unsigned dof_per_node)
Definition HTFEM.h:41
static const int pressure_size
Definition HTFEM.h:315
static const int pressure_index
Definition HTFEM.h:314
typename ShapeMatricesType::NodalMatrixType NodalMatrixType
void assembleForStaggeredScheme(double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, int const process_id, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data) override
typename ShapeMatricesType::ShapeMatrices ShapeMatrices
typename ShapeMatricesType::NodalVectorType NodalVectorType
typename ShapeMatricesType::GlobalDimNodalMatrixType GlobalDimNodalMatrixType
typename ShapeMatricesType::NodalRowVectorType NodalRowVectorType
typename ShapeMatricesType::GlobalDimVectorType GlobalDimVectorType
typename ShapeMatricesType::template MatrixType< ShapeFunction::NPOINTS, ShapeFunction::NPOINTS > LocalMatrixType
void assembleHydraulicEquation(double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data)
void assembleHeatTransportEquation(double const t, double const dt, Eigen::VectorXd const &local_x, std::vector< double > &local_M_data, std::vector< double > &local_K_data)
typename ShapeMatricesType::GlobalDimMatrixType GlobalDimMatrixType
std::vector< double > const & getIntPtDarcyVelocity(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const override
typename ShapeMatricesType::template VectorType< ShapeFunction::NPOINTS > LocalVectorType
ShapeMatrixPolicyType< ShapeFunction, GlobalDim > ShapeMatricesType
StaggeredHTFEM(MeshLib::Element const &element, std::size_t const local_matrix_size, NumLib::GenericIntegrationMethod const &integration_method, bool is_axially_symmetric, HTProcessData const &process_data)
NumLib::ShapeMatrices< NodalRowVectorType, DimNodalMatrixType, DimMatrixType, GlobalDimNodalMatrixType > ShapeMatrices
MatrixType< ShapeFunction::NPOINTS, ShapeFunction::NPOINTS > NodalMatrixType
MatrixType< GlobalDim, ShapeFunction::NPOINTS > GlobalDimNodalMatrixType
MatrixType< GlobalDim, GlobalDim > GlobalDimMatrixType
VectorType< GlobalDim > GlobalDimVectorType
VectorType< ShapeFunction::NPOINTS > NodalVectorType
RowVectorType< ShapeFunction::NPOINTS > NodalRowVectorType