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

Implementation of the DDR scheme for the Kirchoff-Love plate problem. More...

Classes

struct  HArDCore2D::KirchhoffLove
 Assemble a Kirchhoff-Love plate problem. More...
 

Typedefs

typedef Eigen::SparseMatrix< double > HArDCore2D::KirchhoffLove::SystemMatrixType
 
typedef std::function< double(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::ForcingTermType
 
typedef std::function< double(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::DeflectionType
 
typedef std::function< Eigen::Vector2d(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::GradientDeflectionType
 
typedef std::function< Eigen::Matrix2d(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::MomentTensorType
 
typedef std::function< double(const Eigen::Vector2d &, const Edge &)> HArDCore2D::KirchhoffLove::MomentTensorEdgeDerivativeType
 
typedef XDivDiv::ConstitutiveLawType HArDCore2D::KirchhoffLove::ConstitutiveLawType
 

Functions

 HArDCore2D::KirchhoffLove::KirchhoffLove (const PlatesCore &platescore, const ConstitutiveLawType &law, bool use_threads, std::ostream &output=std::cout)
 Constructor. More...
 
size_t HArDCore2D::KirchhoffLove::dimensionSpace () const
 Returns the dimension of the moment + deflection space. More...
 
size_t HArDCore2D::KirchhoffLove::nbSCDOFs () const
 Returns the number of statically condensed DOFs (here, the cell moments DOFs) More...
 
size_t HArDCore2D::KirchhoffLove::sizeSystem () const
 Returns the size of the statically condensed system. More...
 
const XDivDivHArDCore2D::KirchhoffLove::xDivDiv () const
 Returns the space XDivDiv. More...
 
const GlobalDOFSpace HArDCore2D::KirchhoffLove::polykm2Th () const
 Returns the space \(\mathbb{P}^{k-2}(\mathcal{T}_h)\). More...
 
const SystemMatrixTypeHArDCore2D::KirchhoffLove::systemMatrix () const
 Returns the linear system matrix. More...
 
SystemMatrixTypeHArDCore2D::KirchhoffLove::systemMatrix ()
 Returns the linear system matrix. More...
 
const Eigen::VectorXd & HArDCore2D::KirchhoffLove::systemVector () const
 Returns the linear system right-hand side vector. More...
 
Eigen::VectorXd & HArDCore2D::KirchhoffLove::systemVector ()
 Returns the linear system right-hand side vector. More...
 
const SystemMatrixTypeHArDCore2D::KirchhoffLove::scMatrix () const
 Returns the static condensation recovery operator. More...
 
Eigen::VectorXd & HArDCore2D::KirchhoffLove::scVector ()
 Returns the static condensation rhs. More...
 
const double & HArDCore2D::KirchhoffLove::stabilizationParameter () const
 Returns the stabilization parameter. More...
 
double & HArDCore2D::KirchhoffLove::stabilizationParameter ()
 Returns the stabilization parameter. More...
 
void HArDCore2D::KirchhoffLove::assembleLinearSystem (const ForcingTermType &f, const DeflectionType &u, const GradientDeflectionType &grad_u)
 Assemble the global system. More...
 
Eigen::VectorXd HArDCore2D::KirchhoffLove::interpolateDeflection (const DeflectionType &u, int deg_quad=-1) const
 Interpolate deflection. More...
 
double HArDCore2D::KirchhoffLove::computeNorm (const Eigen::VectorXd &v) const
 Compute the discrete norm. More...
 

Variables

static const double HArDCore2D::PI = boost::math::constants::pi<double>()
 
static KirchhoffLove::DeflectionType HArDCore2D::trigonometric_u
 
static KirchhoffLove::GradientDeflectionType HArDCore2D::trigonometric_grad_u
 
static KirchhoffLove::MomentTensorType HArDCore2D::trigonometric_hess_u
 
static KirchhoffLove::MomentTensorType HArDCore2D::trigonometric_dx_hess_u
 
static KirchhoffLove::MomentTensorType HArDCore2D::trigonometric_dy_hess_u
 
static KirchhoffLove::GradientDeflectionType HArDCore2D::trigonometric_grad_Delta_u
 
static KirchhoffLove::MomentTensorEdgeDerivativeType HArDCore2D::trigonometric_hess_u_DE
 
static KirchhoffLove::ForcingTermType HArDCore2D::trigonometric_divdiv_hess_u
 
static KirchhoffLove::DeflectionType HArDCore2D::quartic_u
 
static KirchhoffLove::GradientDeflectionType HArDCore2D::quartic_grad_u
 
static KirchhoffLove::MomentTensorType HArDCore2D::quartic_hess_u
 
static KirchhoffLove::MomentTensorType HArDCore2D::quartic_dx_hess_u
 
static KirchhoffLove::MomentTensorType HArDCore2D::quartic_dy_hess_u
 
static KirchhoffLove::GradientDeflectionType HArDCore2D::quartic_grad_Delta_u
 
static KirchhoffLove::MomentTensorEdgeDerivativeType HArDCore2D::quartic_hess_u_DE
 
static KirchhoffLove::ForcingTermType HArDCore2D::quartic_divdiv_hess_u
 
static KirchhoffLove::DeflectionType HArDCore2D::biquartic_u
 
static KirchhoffLove::GradientDeflectionType HArDCore2D::biquartic_grad_u
 
static KirchhoffLove::MomentTensorType HArDCore2D::biquartic_hess_u
 
static KirchhoffLove::MomentTensorType HArDCore2D::biquartic_dx_hess_u
 
static KirchhoffLove::MomentTensorType HArDCore2D::biquartic_dy_hess_u
 
static KirchhoffLove::GradientDeflectionType HArDCore2D::biquartic_grad_Delta_u
 
static KirchhoffLove::MomentTensorEdgeDerivativeType HArDCore2D::biquartic_hess_u_DE
 
static KirchhoffLove::ForcingTermType HArDCore2D::biquartic_divdiv_hess_u
 

Detailed Description

Implementation of the DDR scheme for the Kirchoff-Love plate problem.

Typedef Documentation

◆ ConstitutiveLawType

◆ DeflectionType

typedef std::function<double(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::DeflectionType

◆ ForcingTermType

typedef std::function<double(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::ForcingTermType

◆ GradientDeflectionType

typedef std::function<Eigen::Vector2d(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::GradientDeflectionType

◆ MomentTensorEdgeDerivativeType

typedef std::function<double(const Eigen::Vector2d &, const Edge &)> HArDCore2D::KirchhoffLove::MomentTensorEdgeDerivativeType

◆ MomentTensorType

typedef std::function<Eigen::Matrix2d(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::MomentTensorType

◆ SystemMatrixType

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

Function Documentation

◆ assembleLinearSystem()

void KirchhoffLove::assembleLinearSystem ( const ForcingTermType f,
const DeflectionType u,
const GradientDeflectionType grad_u 
)

Assemble the global system.

Parameters
fForcing term
uDeflection (for BC)
grad_uGradient of deflection (for BC)

◆ computeNorm()

double KirchhoffLove::computeNorm ( const Eigen::VectorXd &  v) const

Compute the discrete norm.

Parameters
vThe vector

◆ dimensionSpace()

size_t HArDCore2D::KirchhoffLove::dimensionSpace ( ) const
inline

Returns the dimension of the moment + deflection space.

◆ interpolateDeflection()

Eigen::VectorXd KirchhoffLove::interpolateDeflection ( const DeflectionType u,
int  deg_quad = -1 
) const

Interpolate deflection.

Parameters
uThe function to interpolate
deg_quadThe degree of the quadrature rules (equal to \(2(k+1)\) with \(k\) equal to the degree of the complex by default)

◆ KirchhoffLove()

KirchhoffLove::KirchhoffLove ( const PlatesCore platescore,
const ConstitutiveLawType law,
bool  use_threads,
std::ostream &  output = std::cout 
)

Constructor.

Parameters
platescoreCore for the DDR space sequence
lawConstitutive law: law(sigma)+hess u = 0
use_threadsTrue for parallel execution, false for sequential execution
outputOutput stream to print status messages

◆ nbSCDOFs()

size_t HArDCore2D::KirchhoffLove::nbSCDOFs ( ) const
inline

Returns the number of statically condensed DOFs (here, the cell moments DOFs)

◆ polykm2Th()

const GlobalDOFSpace HArDCore2D::KirchhoffLove::polykm2Th ( ) const
inline

Returns the space \(\mathbb{P}^{k-2}(\mathcal{T}_h)\).

◆ scMatrix()

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

Returns the static condensation recovery operator.

◆ scVector()

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

Returns the static condensation rhs.

◆ sizeSystem()

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

Returns the size of the statically condensed system.

◆ stabilizationParameter() [1/2]

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

Returns the stabilization parameter.

◆ stabilizationParameter() [2/2]

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

Returns the stabilization parameter.

◆ systemMatrix() [1/2]

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

Returns the linear system matrix.

◆ systemMatrix() [2/2]

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

Returns the linear system matrix.

◆ systemVector() [1/2]

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

Returns the linear system right-hand side vector.

◆ systemVector() [2/2]

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

Returns the linear system right-hand side vector.

◆ xDivDiv()

const XDivDiv& HArDCore2D::KirchhoffLove::xDivDiv ( ) const
inline

Returns the space XDivDiv.

Variable Documentation

◆ biquartic_divdiv_hess_u

KirchhoffLove::ForcingTermType HArDCore2D::biquartic_divdiv_hess_u
static
Initial value:
= [](const VectorRd & x) -> double {
return 24*pow(x(0), 2)*pow(x(0) - 1, 2) + 32*x(0)*x(1)*(x(0) - 1)*(x(1) - 1) + 8*x(0)*x(1)*(x(0) - 1)*(4*x(1) - 2) + 8*x(0)*x(1)*(4*x(0) - 2)*(x(1) - 1) + 8*x(0)*x(1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1)) + 8*x(0)*(x(0) - 1)*(x(1) - 1)*(4*x(1) - 2) + 8*x(0)*(x(1) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1)) + 24*pow(x(1), 2)*pow(x(1) - 1, 2) + 8*x(1)*(x(0) - 1)*(4*x(0) - 2)*(x(1) - 1) + 8*x(1)*(x(0) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1)) + 2*(4*x(0) - 4)*(x(1) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1));
}
Eigen::Matrix< double, DIMENSION, 1 > VectorRd
Definition: Polytope2D.hpp:19

◆ biquartic_dx_hess_u

KirchhoffLove::MomentTensorType HArDCore2D::biquartic_dx_hess_u
static
Initial value:
= [](const VectorRd & x) -> Eigen::Matrix2d {
Eigen::Matrix2d M;
M.row(0) << 2*pow(x(1), 2)*(12*x(0) - 6)*pow(x(1) - 1, 2), 4*x(0)*x(1)*(x(0) - 1)*(x(1) - 1)*(4*x(1) - 2) + 4*x(0)*x(1)*(x(1) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1)) + 4*x(1)*(x(0) - 1)*(x(1) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1));
M.row(1) << 4*x(0)*x(1)*(x(0) - 1)*(x(1) - 1)*(4*x(1) - 2) + 4*x(0)*x(1)*(x(1) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1)) + 4*x(1)*(x(0) - 1)*(x(1) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1)), 2*pow(x(0), 2)*(2*x(0) - 2)*(pow(x(1), 2) + 4*x(1)*(x(1) - 1) + pow(x(1) - 1, 2)) + 4*x(0)*pow(x(0) - 1, 2)*(pow(x(1), 2) + 4*x(1)*(x(1) - 1) + pow(x(1) - 1, 2));
return M;
}

◆ biquartic_dy_hess_u

KirchhoffLove::MomentTensorType HArDCore2D::biquartic_dy_hess_u
static
Initial value:
= [](const VectorRd & x) -> Eigen::Matrix2d {
Eigen::Matrix2d M;
M.row(0) << 2*pow(x(1), 2)*(2*x(1) - 2)*(pow(x(0), 2) + 4*x(0)*(x(0) - 1) + pow(x(0) - 1, 2)) + 4*x(1)*pow(x(1) - 1, 2)*(pow(x(0), 2) + 4*x(0)*(x(0) - 1) + pow(x(0) - 1, 2)), 4*x(0)*x(1)*(x(0) - 1)*(4*x(0) - 2)*(x(1) - 1) + 4*x(0)*x(1)*(x(0) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1)) + 4*x(0)*(x(0) - 1)*(x(1) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1));
M.row(1) << 4*x(0)*x(1)*(x(0) - 1)*(4*x(0) - 2)*(x(1) - 1) + 4*x(0)*x(1)*(x(0) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1)) + 4*x(0)*(x(0) - 1)*(x(1) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1)), 2*pow(x(0), 2)*pow(x(0) - 1, 2)*(12*x(1) - 6);
return M;
}

◆ biquartic_grad_Delta_u

KirchhoffLove::GradientDeflectionType HArDCore2D::biquartic_grad_Delta_u
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
Eigen::Vector2d G {
};
return G;
}
static KirchhoffLove::MomentTensorType biquartic_dx_hess_u
Definition: ddr-klplate.hpp:364
static KirchhoffLove::MomentTensorType biquartic_dy_hess_u
Definition: ddr-klplate.hpp:374

◆ biquartic_grad_u

KirchhoffLove::GradientDeflectionType HArDCore2D::biquartic_grad_u
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
return VectorRd(pow(x(0), 2)*pow(x(1), 2)*pow(1 - x(1), 2)*(2*x(0) - 2) + 2*x(0)*pow(x(1), 2)*pow(1 - x(0), 2)*pow(1 - x(1), 2), pow(x(0), 2)*pow(x(1), 2)*pow(1 - x(0), 2)*(2*x(1) - 2) + 2*pow(x(0), 2)*x(1)*pow(1 - x(0), 2)*pow(1 - x(1), 2));
}

◆ biquartic_hess_u

KirchhoffLove::MomentTensorType HArDCore2D::biquartic_hess_u
static
Initial value:
= [](const VectorRd & x) -> Eigen::Matrix2d {
Eigen::Matrix2d M;
M.row(0) << 2*pow(x(1), 2)*pow(x(1) - 1, 2)*(pow(x(0), 2) + 4*x(0)*(x(0) - 1) + pow(x(0) - 1, 2)), 4*x(0)*x(1)*(x(0) - 1)*(x(1) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1));
M.row(1) << 4*x(0)*x(1)*(x(0) - 1)*(x(1) - 1)*(x(0)*x(1) + x(0)*(x(1) - 1) + x(1)*(x(0) - 1) + (x(0) - 1)*(x(1) - 1)), 2*pow(x(0), 2)*pow(x(0) - 1, 2)*(pow(x(1), 2) + 4*x(1)*(x(1) - 1) + pow(x(1) - 1, 2));
return M;
}

◆ biquartic_hess_u_DE

KirchhoffLove::MomentTensorEdgeDerivativeType HArDCore2D::biquartic_hess_u_DE
static
Initial value:
= [](const VectorRd & x, const Edge & E) -> double {
Eigen::Vector2d tE = E.tangent();
Eigen::Vector2d nE = E.normal();
Eigen::Matrix2d dtE_hess = biquartic_dx_hess_u(x) * tE.x() + biquartic_dy_hess_u(x) * tE.y();
Eigen::Vector2d div_hess {
};
return (dtE_hess*nE).dot(tE) + div_hess.dot(nE);
}
Polytope< 1 > Edge
A Face is a Polytope with object_dim = DIMENSION - 1.
Definition: Polytope2D.hpp:147

◆ biquartic_u

KirchhoffLove::DeflectionType HArDCore2D::biquartic_u
static
Initial value:
= [](const VectorRd & x) -> double {
return pow(x(0),2)*pow(1.-x(0),2)*pow(x(1),2)*pow(1.-x(1),2);
}

◆ PI

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

◆ quartic_divdiv_hess_u

KirchhoffLove::ForcingTermType HArDCore2D::quartic_divdiv_hess_u
static
Initial value:
= [](const VectorRd & x) -> double {
return 48.;
}

◆ quartic_dx_hess_u

KirchhoffLove::MomentTensorType HArDCore2D::quartic_dx_hess_u
static
Initial value:
= [](const VectorRd & x) -> Eigen::Matrix2d {
Eigen::Matrix2d M;
M.row(0) << 24*x(0) - 12, 0;
M.row(1) << 0., 0.;
return M;
}

◆ quartic_dy_hess_u

KirchhoffLove::MomentTensorType HArDCore2D::quartic_dy_hess_u
static
Initial value:
= [](const VectorRd & x) -> Eigen::Matrix2d {
Eigen::Matrix2d M;
M.row(0) << 0., 0.;
M.row(1) << 0., 24*x(1) - 12;
return M;
}

◆ quartic_grad_Delta_u

KirchhoffLove::GradientDeflectionType HArDCore2D::quartic_grad_Delta_u
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
Eigen::Vector2d G {
};
return G;
}
static KirchhoffLove::MomentTensorType quartic_dx_hess_u
Definition: ddr-klplate.hpp:291
static KirchhoffLove::MomentTensorType quartic_dy_hess_u
Definition: ddr-klplate.hpp:301

◆ quartic_grad_u

KirchhoffLove::GradientDeflectionType HArDCore2D::quartic_grad_u
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
return VectorRd(pow(x(0), 2)*(2*x(0) - 2) + 2*x(0)*pow(1 - x(0), 2), pow(x(1), 2)*(2*x(1) - 2) + 2*x(1)*pow(1 - x(1), 2));
}

◆ quartic_hess_u

KirchhoffLove::MomentTensorType HArDCore2D::quartic_hess_u
static
Initial value:
= [](const VectorRd & x) -> Eigen::Matrix2d {
Eigen::Matrix2d M;
M <<
2.*(pow(x(0),2)+4.*x(0)*(x(0)-1.)+pow(1.-x(0),2)), 0.,
0., 2.*(pow(x(1),2)+4.*x(1)*(x(1)-1.)+pow(1.-x(1),2));
return M;
}

◆ quartic_hess_u_DE

KirchhoffLove::MomentTensorEdgeDerivativeType HArDCore2D::quartic_hess_u_DE
static
Initial value:
= [](const VectorRd & x, const Edge & E) -> double {
Eigen::Vector2d tE = E.tangent();
Eigen::Vector2d nE = E.normal();
Eigen::Matrix2d dtE_hess = quartic_dx_hess_u(x) * tE.x() + quartic_dy_hess_u(x) * tE.y();
Eigen::Vector2d div_hess {
};
return (dtE_hess*nE).dot(tE) + div_hess.dot(nE);
}

◆ quartic_u

KirchhoffLove::DeflectionType HArDCore2D::quartic_u
static
Initial value:
= [](const VectorRd & x) -> double {
return pow(x(0),2)*pow(1.-x(0),2) + pow(x(1),2)*pow(1.-x(1),2);
}

◆ trigonometric_divdiv_hess_u

KirchhoffLove::ForcingTermType HArDCore2D::trigonometric_divdiv_hess_u
static
Initial value:
= [](const VectorRd & x) -> double {
return 4.*pow(PI, 4)*sin(PI*x(0))*sin(PI*x(1));
}
static const double PI
Definition: ddr-klplate.hpp:187

◆ trigonometric_dx_hess_u

KirchhoffLove::MomentTensorType HArDCore2D::trigonometric_dx_hess_u
static
Initial value:
= [](const VectorRd & x) -> Eigen::Matrix2d {
Eigen::Matrix2d M;
M.row(0) << -cos(PI*x(0))*sin(PI*x(1)), -sin(PI*x(0))*cos(PI*x(1));
M.row(1) << -sin(PI*x(0))*cos(PI*x(1)), -cos(PI*x(0))*sin(PI*x(1));
return pow(PI, 3) * M;
}

◆ trigonometric_dy_hess_u

KirchhoffLove::MomentTensorType HArDCore2D::trigonometric_dy_hess_u
static
Initial value:
= [](const VectorRd & x) -> Eigen::Matrix2d {
Eigen::Matrix2d M;
M.row(0) << -sin(PI*x(0))*cos(PI*x(1)), -cos(PI*x(0))*sin(PI*x(1));
M.row(1) << -cos(PI*x(0))*sin(PI*x(1)), -sin(PI*x(0))*cos(PI*x(1));
return pow(PI, 3) * M;
}

◆ trigonometric_grad_Delta_u

KirchhoffLove::GradientDeflectionType HArDCore2D::trigonometric_grad_Delta_u
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
Eigen::Vector2d G {
};
return G;
}
static KirchhoffLove::MomentTensorType trigonometric_dy_hess_u
Definition: ddr-klplate.hpp:226
static KirchhoffLove::MomentTensorType trigonometric_dx_hess_u
Definition: ddr-klplate.hpp:216

◆ trigonometric_grad_u

KirchhoffLove::GradientDeflectionType HArDCore2D::trigonometric_grad_u
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
return PI * VectorRd(sin(PI*x(1))*cos(PI*x(0)), sin(PI*x(0))*cos(PI*x(1)));
}

◆ trigonometric_hess_u

KirchhoffLove::MomentTensorType HArDCore2D::trigonometric_hess_u
static
Initial value:
= [](const VectorRd & x) -> Eigen::Matrix2d {
Eigen::Matrix2d M;
M.row(0) << -sin(PI*x(0))*sin(PI*x(1)), cos(PI*x(0))*cos(PI*x(1));
M.row(1) << cos(PI*x(0))*cos(PI*x(1)), -sin(PI*x(0))*sin(PI*x(1));
return pow(PI, 2) * M;
}

◆ trigonometric_hess_u_DE

KirchhoffLove::MomentTensorEdgeDerivativeType HArDCore2D::trigonometric_hess_u_DE
static
Initial value:
= [](const VectorRd & x, const Edge & E) -> double {
Eigen::Vector2d tE = E.tangent();
Eigen::Vector2d nE = E.normal();
Eigen::Matrix2d dtE_hess = trigonometric_dx_hess_u(x) * tE.x() + trigonometric_dy_hess_u(x) * tE.y();
Eigen::Vector2d div_hess {
};
return (dtE_hess*nE).dot(tE) + div_hess.dot(nE);
}

◆ trigonometric_u

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