OGS
StaggeredHTFEM.h
Go to the documentation of this file.
1
12#pragma once
13
14#include <Eigen/Core>
15#include <vector>
16
17#include "HTFEM.h"
24
25namespace ProcessLib
26{
27
28namespace HT
29{
30template <typename ShapeFunction, int GlobalDim>
31class StaggeredHTFEM : public HTFEM<ShapeFunction, GlobalDim>
32{
35
37 typename ShapeMatricesType::template MatrixType<ShapeFunction::NPOINTS,
38 ShapeFunction::NPOINTS>;
40 typename ShapeMatricesType::template VectorType<ShapeFunction::NPOINTS>;
41
45
50
51 using HTFEM<ShapeFunction, GlobalDim>::pressure_index;
52 using HTFEM<ShapeFunction, GlobalDim>::pressure_size;
53 using HTFEM<ShapeFunction, GlobalDim>::temperature_index;
54 using HTFEM<ShapeFunction, GlobalDim>::temperature_size;
55
56public:
58 std::size_t const local_matrix_size,
59 NumLib::GenericIntegrationMethod const& integration_method,
60 bool is_axially_symmetric,
61 HTProcessData const& process_data)
62 : HTFEM<ShapeFunction, GlobalDim>(element, local_matrix_size,
63 integration_method,
64 is_axially_symmetric, process_data, 1)
65 {
66 }
67
68 void assembleForStaggeredScheme(double const t, double const dt,
69 Eigen::VectorXd const& local_x,
70 Eigen::VectorXd const& local_x_prev,
71 int const process_id,
72 std::vector<double>& local_M_data,
73 std::vector<double>& local_K_data,
74 std::vector<double>& local_b_data) override;
75
76 std::vector<double> const& getIntPtDarcyVelocity(
77 const double t,
78 std::vector<GlobalVector*> const& x,
79 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
80 std::vector<double>& cache) const override;
81
82private:
83 void assembleHydraulicEquation(double const t, double const dt,
84 Eigen::VectorXd const& local_x,
85 Eigen::VectorXd const& local_x_prev,
86 std::vector<double>& local_M_data,
87 std::vector<double>& local_K_data,
88 std::vector<double>& local_b_data);
89
90 void assembleHeatTransportEquation(double const t,
91 double const dt,
92 Eigen::VectorXd const& local_x,
93 std::vector<double>& local_M_data,
94 std::vector<double>& local_K_data);
95};
96
97} // namespace HT
98} // namespace ProcessLib
99
100#include "StaggeredHTFEM-impl.h"
static const int temperature_index
Definition HTFEM.h:325
static const int temperature_size
Definition HTFEM.h:326
static const int pressure_size
Definition HTFEM.h:324
static const int pressure_index
Definition HTFEM.h:323
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
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