22 #ifndef HHOFULLGRADIENTDIFF_HPP
23 #define HHOFULLGRADIENTDIFF_HPP
27 #include <boost/math/constants/constants.hpp>
29 #include <Eigen/Sparse>
30 #include <unsupported/Eigen/SparseExtra>
68 std::ostream & output = std::cout
76 Eigen::VectorXd & UDir
112 return m_hhospace.
mesh();
157 const std::vector<Eigen::VectorXd> & list_dofs
162 std::pair<Eigen::MatrixXd, Eigen::VectorXd>
163 _compute_local_contribution(
173 void _assemble_local_contribution(
175 const std::pair<Eigen::MatrixXd, Eigen::VectorXd> & lsT,
176 std::list<Eigen::Triplet<double> > & A1,
177 Eigen::VectorXd & b1,
178 std::list<Eigen::Triplet<double> > & A2,
185 std::ostream & m_output;
186 const size_t m_nloc_sc;
190 Eigen::VectorXd m_sc_b;
198 static const double PI = boost::math::constants::pi<double>();
208 return vec_a.dot(x) + 4.;
229 return sin(
PI*x(0)) * sin(
PI*x(1)) * sin(
PI*x(2));
235 cos(
PI*x(0)) * sin(
PI*x(1)) * sin(
PI*x(2)),
236 sin(
PI*x(0)) * cos(
PI*x(1)) * sin(
PI*x(2)),
237 sin(
PI*x(0)) * sin(
PI*x(1)) * cos(
PI*x(2))
The BoundaryConditions class provides definition of boundary conditions.
Definition: BoundaryConditions.hpp:43
const size_t n_dir_faces() const
Returns the number of Dirichlet faces.
Definition: BoundaryConditions.hpp:63
Class definition: polynomial bases and operators.
Definition: hhospace.hpp:53
Class to describe a mesh.
Definition: MeshND.hpp:17
size_t dimension() const
Returns the dimension of the global space (all DOFs for all geometric entities)
Definition: localdofspace.hpp:80
size_t numLocalDofsFace() const
Returns the number of local face DOFs.
Definition: localdofspace.hpp:49
static const double PI
Definition: ddr-magnetostatics.hpp:186
static Magnetostatics::SolutionPotentialType linear_u
Definition: ddr-magnetostatics.hpp:213
static Magnetostatics::SolutionPotentialType trigonometric_u
Definition: ddr-magnetostatics.hpp:237
static Magnetostatics::ForcingTermType trigonometric_f
Definition: ddr-magnetostatics.hpp:255
static Magnetostatics::ForcingTermType linear_f
Definition: ddr-magnetostatics.hpp:227
const Mesh & mesh() const
Return a const reference to the mesh.
Definition: hhospace.hpp:114
bool use_threads
Definition: HHO_DiffAdvecReac.hpp:47
static Brinkman::VelocityGradientType linear_gradu
Definition: hho-brinkman.hpp:369
static Brinkman::VelocityGradientType trigonometric_gradu
Definition: hho-brinkman.hpp:514
std::function< double(const VectorRd &)> SolutionType
Definition: hho-fullgradientdiff.hpp:59
Eigen::VectorXd & systemVector()
Returns the linear system right-hand side vector.
Definition: hho-fullgradientdiff.hpp:131
std::function< double(const VectorRd &)> ForcingTermType
Definition: hho-fullgradientdiff.hpp:58
const Mesh & mesh() const
Returns the mesh.
Definition: hho-fullgradientdiff.hpp:110
std::vector< double > computeEnergyNorms(const std::vector< Eigen::VectorXd > &list_dofs) const
Compute the discrete energy norm of a family of vectors representing the dofs.
Definition: hho-fullgradientdiff.cpp:452
Eigen::SparseMatrix< double > SystemMatrixType
Definition: hho-fullgradientdiff.hpp:56
const Eigen::VectorXd & systemVector() const
Returns the linear system right-hand side vector.
Definition: hho-fullgradientdiff.hpp:126
const SystemMatrixType & systemMatrix() const
Returns the linear system matrix.
Definition: hho-fullgradientdiff.hpp:116
size_t numSkeletalDOFs() const
Returns the number of DOFs after SC but before eliminating Dirichlet DOFs.
Definition: hho-fullgradientdiff.hpp:92
static const VectorRd vec_a
Definition: hho-fullgradientdiff.hpp:204
const HHOSpace & hhospace() const
Returns the HHO space.
Definition: hho-fullgradientdiff.hpp:104
static FullGradientDiffusion::PermeabilityType trigonometric_kappa
Definition: hho-fullgradientdiff.hpp:247
size_t sizeSystem() const
Returns the size of the final system, after application of SC and removal of Dirichlet BCs.
Definition: hho-fullgradientdiff.hpp:98
FullGradientDiffusion(const HHOSpace &hho_space, const BoundaryConditions &BC, bool use_threads, std::ostream &output=std::cout)
Constructor.
Definition: hho-fullgradientdiff.cpp:264
size_t numDirDOFs() const
Returns the number of Dirichlet DOFs.
Definition: hho-fullgradientdiff.hpp:86
size_t numSCDOFs() const
Returns the number of statically condensed DOFs (the cell DOFs)
Definition: hho-fullgradientdiff.hpp:80
Eigen::VectorXd & scVector()
Returns the static condensation rhs.
Definition: hho-fullgradientdiff.hpp:151
IntegralWeight PermeabilityType
Definition: hho-fullgradientdiff.hpp:61
double & stabilizationParameter()
Returns the stabilization parameter.
Definition: hho-fullgradientdiff.hpp:141
const SystemMatrixType & scMatrix() const
Returns the static condensation recovery operator.
Definition: hho-fullgradientdiff.hpp:146
static FullGradientDiffusion::PermeabilityType linear_kappa
Definition: hho-fullgradientdiff.hpp:222
SystemMatrixType & systemMatrix()
Returns the linear system matrix.
Definition: hho-fullgradientdiff.hpp:121
std::function< VectorRd(const VectorRd &)> SolutionGradientType
Definition: hho-fullgradientdiff.hpp:60
const double & stabilizationParameter() const
Returns the stabilization parameter (scaling)
Definition: hho-fullgradientdiff.hpp:136
void assembleLinearSystem(const ForcingTermType &f, const PermeabilityType &kappa, const SolutionType &u, Eigen::VectorXd &UDir)
Assemble the global system
Definition: hho-fullgradientdiff.cpp:289
std::size_t n_cells() const
number of cells in the mesh.
Definition: MeshND.hpp:60
Definition: ddr-magnetostatics.hpp:40
MeshND::VectorRd< 2 > VectorRd
Definition: Mesh2D.hpp:14
Assemble a diffusion problem.
Definition: hho-fullgradientdiff.hpp:55
Structure for weights (scalar, at the moment) in integral.
Definition: integralweight.hpp:36
Structure to store information for, and perform, local static condensation.
Definition: local_static_condensation.hpp:25