OGS 6.2.0-244-g47b8a9a9d
HTLocalAssemblerInterface.h
Go to the documentation of this file.
1 
12 #pragma once
13 
18 
19 namespace ProcessLib
20 {
21 struct CoupledSolutionsForStaggeredScheme;
22 
23 namespace HT
24 {
25 template <typename NodalRowVectorType, typename GlobalDimNodalMatrixType>
27 {
28  IntegrationPointData(NodalRowVectorType N_,
29  GlobalDimNodalMatrixType dNdx_,
30  double const& integration_weight_)
31  : N(std::move(N_)),
32  dNdx(std::move(dNdx_)),
33  integration_weight(integration_weight_)
34  {
35  }
36 
37  NodalRowVectorType const N;
38  GlobalDimNodalMatrixType const dNdx;
39  double const integration_weight;
40 
42 };
43 
46 {
47 public:
48  HTLocalAssemblerInterface() = default;
50  std::size_t const /*mesh_item_id*/,
51  CoupledSolutionsForStaggeredScheme* const coupling_term)
52  {
53  _coupled_solutions = coupling_term;
54  }
55 
56  virtual std::vector<double> const& getIntPtDarcyVelocity(
57  const double /*t*/,
58  GlobalVector const& /*current_solution*/,
59  NumLib::LocalToGlobalIndexMap const& /*dof_table*/,
60  std::vector<double>& /*cache*/) const = 0;
61 
62  Eigen::Vector3d getFlux(MathLib::Point3d const& pnt_local_coords,
63  double const t,
64  std::vector<double> const& local_x) const override =
65  0;
66 
67 protected:
68  // TODO: remove _coupled_solutions or move integration point data from
69  // local assembler class to a new class to make local assembler unique
70  // for each process.
77  CoupledSolutionsForStaggeredScheme* _coupled_solutions{nullptr};
78 };
79 
80 } // namespace HT
81 } // namespace ProcessLib
void setStaggeredCoupledSolutions(std::size_t const, CoupledSolutionsForStaggeredScheme *const coupling_term)
IntegrationPointData(NodalRowVectorType N_, GlobalDimNodalMatrixType dNdx_, double const &integration_weight_)