HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Classes | Typedefs | Functions | Variables
HHO_fullgradientdiff

Implementation of the HHO scheme with full gradient for variable diffusion equations. More...

Classes

struct  HArDCore2D::FullGradientDiffusion
 Assemble a diffusion problem. More...
 

Typedefs

typedef Eigen::SparseMatrix< double > HArDCore2D::FullGradientDiffusion::SystemMatrixType
 
typedef std::function< double(const VectorRd &)> HArDCore2D::FullGradientDiffusion::ForcingTermType
 
typedef std::function< double(const VectorRd &)> HArDCore2D::FullGradientDiffusion::SolutionType
 
typedef std::function< VectorRd(const VectorRd &)> HArDCore2D::FullGradientDiffusion::SolutionGradientType
 
typedef IntegralWeight HArDCore2D::FullGradientDiffusion::PermeabilityType
 

Functions

 HArDCore2D::FullGradientDiffusion::FullGradientDiffusion (const HHOSpace &hho_space, const BoundaryConditions &BC, bool use_threads, std::ostream &output=std::cout)
 Constructor. More...
 
void HArDCore2D::FullGradientDiffusion::assembleLinearSystem (const ForcingTermType &f, const PermeabilityType &kappa, const SolutionType &u, Eigen::VectorXd &UDir)
 Assemble the global system
More...
 
size_t HArDCore2D::FullGradientDiffusion::numSCDOFs () const
 Returns the number of statically condensed DOFs (the cell DOFs) More...
 
size_t HArDCore2D::FullGradientDiffusion::numDirDOFs () const
 Returns the number of Dirichlet DOFs. More...
 
size_t HArDCore2D::FullGradientDiffusion::numSkeletalDOFs () const
 Returns the number of DOFs after SC but before eliminating Dirichlet DOFs. More...
 
size_t HArDCore2D::FullGradientDiffusion::sizeSystem () const
 Returns the size of the final system, after application of SC and removal of Dirichlet BCs. More...
 
const HHOSpaceHArDCore2D::FullGradientDiffusion::hhospace () const
 Returns the HHO space. More...
 
const MeshHArDCore2D::FullGradientDiffusion::mesh () const
 Returns the mesh. More...
 
const SystemMatrixTypeHArDCore2D::FullGradientDiffusion::systemMatrix () const
 Returns the linear system matrix. More...
 
SystemMatrixTypeHArDCore2D::FullGradientDiffusion::systemMatrix ()
 Returns the linear system matrix. More...
 
const Eigen::VectorXd & HArDCore2D::FullGradientDiffusion::systemVector () const
 Returns the linear system right-hand side vector. More...
 
Eigen::VectorXd & HArDCore2D::FullGradientDiffusion::systemVector ()
 Returns the linear system right-hand side vector. More...
 
const double & HArDCore2D::FullGradientDiffusion::stabilizationParameter () const
 Returns the stabilization parameter (scaling) More...
 
double & HArDCore2D::FullGradientDiffusion::stabilizationParameter ()
 Returns the stabilization parameter. More...
 
const SystemMatrixTypeHArDCore2D::FullGradientDiffusion::scMatrix () const
 Returns the static condensation recovery operator. More...
 
Eigen::VectorXd & HArDCore2D::FullGradientDiffusion::scVector ()
 Returns the static condensation rhs. More...
 
std::vector< double > HArDCore2D::FullGradientDiffusion::computeEnergyNorms (const std::vector< Eigen::VectorXd > &list_dofs) const
 Compute the discrete energy norm of a family of vectors representing the dofs. More...
 

Variables

static const double HArDCore2D::PI = boost::math::constants::pi<double>()
 
static const VectorRd HArDCore2D::vec_a = VectorRd(1.,2.)
 
static FullGradientDiffusion::SolutionType HArDCore2D::linear_u
 
static FullGradientDiffusion::SolutionGradientType HArDCore2D::linear_gradu
 
static FullGradientDiffusion::ForcingTermType HArDCore2D::linear_f
 
static FullGradientDiffusion::PermeabilityType HArDCore2D::linear_kappa = FullGradientDiffusion::PermeabilityType(1.)
 
static FullGradientDiffusion::SolutionType HArDCore2D::trigonometric_u
 
static FullGradientDiffusion::SolutionGradientType HArDCore2D::trigonometric_gradu
 
static FullGradientDiffusion::ForcingTermType HArDCore2D::trigonometric_f
 
static FullGradientDiffusion::PermeabilityType HArDCore2D::trigonometric_kappa = FullGradientDiffusion::PermeabilityType(1.)
 

Detailed Description

Implementation of the HHO scheme with full gradient for variable diffusion equations.

Typedef Documentation

◆ ForcingTermType

◆ PermeabilityType

◆ SolutionGradientType

◆ SolutionType

◆ SystemMatrixType

typedef Eigen::SparseMatrix<double> HArDCore2D::FullGradientDiffusion::SystemMatrixType

Function Documentation

◆ assembleLinearSystem()

void FullGradientDiffusion::assembleLinearSystem ( const ForcingTermType f,
const PermeabilityType kappa,
const SolutionType u,
Eigen::VectorXd &  UDir 
)

Assemble the global system

Parameters
fForcing term
kappaPermeability
uExact solution for boundary condition
UDirVector filled in by Dirichlets BCs

◆ computeEnergyNorms()

std::vector< double > FullGradientDiffusion::computeEnergyNorms ( const std::vector< Eigen::VectorXd > &  list_dofs) const

Compute the discrete energy norm of a family of vectors representing the dofs.

Parameters
list_dofsThe list of vectors representing the dofs

◆ FullGradientDiffusion()

FullGradientDiffusion::FullGradientDiffusion ( const HHOSpace hho_space,
const BoundaryConditions BC,
bool  use_threads,
std::ostream &  output = std::cout 
)

Constructor.

Parameters
hho_spaceHHO space and operators
BCBoundary conditions
use_threadsTrue for parallel execution, false for sequential execution
outputOutput stream to print status messages

◆ hhospace()

const HHOSpace& HArDCore2D::FullGradientDiffusion::hhospace ( ) const
inline

Returns the HHO space.

◆ mesh()

const Mesh& HArDCore2D::FullGradientDiffusion::mesh ( ) const
inline

Returns the mesh.

◆ numDirDOFs()

size_t HArDCore2D::FullGradientDiffusion::numDirDOFs ( ) const
inline

Returns the number of Dirichlet DOFs.

◆ numSCDOFs()

size_t HArDCore2D::FullGradientDiffusion::numSCDOFs ( ) const
inline

Returns the number of statically condensed DOFs (the cell DOFs)

◆ numSkeletalDOFs()

size_t HArDCore2D::FullGradientDiffusion::numSkeletalDOFs ( ) const
inline

Returns the number of DOFs after SC but before eliminating Dirichlet DOFs.

◆ scMatrix()

const SystemMatrixType& HArDCore2D::FullGradientDiffusion::scMatrix ( ) const
inline

Returns the static condensation recovery operator.

◆ scVector()

Eigen::VectorXd& HArDCore2D::FullGradientDiffusion::scVector ( )
inline

Returns the static condensation rhs.

◆ sizeSystem()

size_t HArDCore2D::FullGradientDiffusion::sizeSystem ( ) const
inline

Returns the size of the final system, after application of SC and removal of Dirichlet BCs.

◆ stabilizationParameter() [1/2]

double& HArDCore2D::FullGradientDiffusion::stabilizationParameter ( )
inline

Returns the stabilization parameter.

◆ stabilizationParameter() [2/2]

const double& HArDCore2D::FullGradientDiffusion::stabilizationParameter ( ) const
inline

Returns the stabilization parameter (scaling)

◆ systemMatrix() [1/2]

SystemMatrixType& HArDCore2D::FullGradientDiffusion::systemMatrix ( )
inline

Returns the linear system matrix.

◆ systemMatrix() [2/2]

const SystemMatrixType& HArDCore2D::FullGradientDiffusion::systemMatrix ( ) const
inline

Returns the linear system matrix.

◆ systemVector() [1/2]

Eigen::VectorXd& HArDCore2D::FullGradientDiffusion::systemVector ( )
inline

Returns the linear system right-hand side vector.

◆ systemVector() [2/2]

const Eigen::VectorXd& HArDCore2D::FullGradientDiffusion::systemVector ( ) const
inline

Returns the linear system right-hand side vector.

Variable Documentation

◆ linear_f

FullGradientDiffusion::ForcingTermType HArDCore2D::linear_f
static
Initial value:
= [](const VectorRd & x) -> double {
return 0.;
}
Eigen::Vector2d VectorRd
Definition: basis.hpp:55

◆ linear_gradu

FullGradientDiffusion::SolutionGradientType HArDCore2D::linear_gradu
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
return vec_a;
}
static const VectorRd vec_a
Definition: hho-fullgradientdiff.hpp:203

◆ linear_kappa

◆ linear_u

FullGradientDiffusion::SolutionType HArDCore2D::linear_u
static
Initial value:
= [](const VectorRd & x) -> double {
return vec_a.dot(x) + 4.;
}

◆ PI

const double HArDCore2D::PI = boost::math::constants::pi<double>()
static

◆ trigonometric_f

FullGradientDiffusion::ForcingTermType HArDCore2D::trigonometric_f
static
Initial value:
= [](const VectorRd & x) -> double {
return 2. * std::pow(PI, 2) * trigonometric_u(x);
}
static FullGradientDiffusion::SolutionType trigonometric_u
Definition: hho-fullgradientdiff.hpp:227
static const double PI
Definition: hho-fullgradientdiff.hpp:197

◆ trigonometric_gradu

FullGradientDiffusion::SolutionGradientType HArDCore2D::trigonometric_gradu
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
return PI * VectorRd(
cos(PI*x(0)) * sin(PI*x(1)) * sin(PI*x(2)),
sin(PI*x(0)) * cos(PI*x(1)) * sin(PI*x(2))
);
}
Eigen::Matrix< double, DIMENSION, 1 > VectorRd
Definition: Polytope2D.hpp:19

◆ trigonometric_kappa

◆ trigonometric_u

FullGradientDiffusion::SolutionType HArDCore2D::trigonometric_u
static
Initial value:
= [](const VectorRd & x) -> double {
return sin(PI*x(0)) * sin(PI*x(1));
}

◆ vec_a

const VectorRd HArDCore2D::vec_a = VectorRd(1.,2.)
static