HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Loading...
Searching...
No Matches
Classes | Typedefs | Functions | Variables
BGG_rmplate

Implementation of the DDR-BGG scheme for the Reissner-Mindlin plate problem. More...

Collaboration diagram for BGG_rmplate:

Classes

struct  HArDCore2D::KLNorms
 Structure to store component norms (displacement total energy) More...
 
struct  HArDCore2D::KirchhoffLove
 Assemble a RM problem. More...
 
struct  HArDCore2D::RMParameters
 Structure to store model data. More...
 
struct  HArDCore2D::RMNorms
 Structure to store component norms (for rotation, displacement, Kirchoff term and total energy) More...
 
struct  HArDCore2D::ReissnerMindlin
 Assemble a RM 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::SolutionDisplacementType
 
typedef std::function< Eigen::Vector2d(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::GradientDisplacementType
 
typedef Eigen::SparseMatrix< double > HArDCore2D::ReissnerMindlin::SystemMatrixType
 
typedef std::function< double(const RMParameters &, const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::ForcingTermType
 
typedef std::function< Eigen::Vector2d(const RMParameters &, const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::SolutionRotationType
 
typedef std::function< Eigen::Matrix2d(const RMParameters &, const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::GradientRotationType
 
typedef std::function< double(const RMParameters &, const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::SolutionDisplacementType
 
typedef std::function< Eigen::Vector2d(const RMParameters &, const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::GradientDisplacementType
 

Functions

 HArDCore2D::KLNorms::KLNorms (double norm_displacement)
 Constructor.
 
 HArDCore2D::KirchhoffLove::KirchhoffLove (const DDRCore &ddrcore, const DDRCore &ddrcore_plus, const SerendipityProblem &sp, const SerendipityProblem &sp_plus, const BoundaryConditions &BC_u, bool use_threads, std::ostream &output=std::cout)
 Constructor.
 
void HArDCore2D::KirchhoffLove::assembleLinearSystem (const ForcingTermType &f, const SolutionDisplacementType &u, const GradientDisplacementType &grad_u, size_t iT_dirac)
 Assemble the global system

 
size_t HArDCore2D::KirchhoffLove::dimensionSpace () const
 Returns the dimension of the rotation + displacement space (with BC)
 
size_t HArDCore2D::KirchhoffLove::nb_bdryDOFs () const
 Returns the nb of DOFs for BC.
 
size_t HArDCore2D::KirchhoffLove::sizeSystem () const
 Returns the size of the system without BC.
 
const std::vector< std::pair< size_t, size_t > > & HArDCore2D::KirchhoffLove::locUKN () const
 Returns the location of the unknowns among the DOFs.
 
std::vector< size_t > HArDCore2D::KirchhoffLove::globalDOFIndices (const Cell &T) const
 Create the vector of DOF indices for cell T, which combines the DOFs for the spaces VSXgrad and Xhess.
 
const VSXGradHArDCore2D::KirchhoffLove::vsxGrad () const
 Returns the space VSXGrad.
 
const XHessHArDCore2D::KirchhoffLove::xHess () const
 Returns the space XHess.
 
const SystemMatrixTypeHArDCore2D::KirchhoffLove::systemMatrix () const
 Returns the linear system matrix.
 
SystemMatrixTypeHArDCore2D::KirchhoffLove::systemMatrix ()
 Returns the linear system matrix.
 
const Eigen::VectorXd & HArDCore2D::KirchhoffLove::systemVector () const
 Returns the linear system right-hand side vector.
 
Eigen::VectorXd & HArDCore2D::KirchhoffLove::systemVector ()
 Returns the linear system right-hand side vector.
 
const SystemMatrixTypeHArDCore2D::KirchhoffLove::bdryMatrix () const
 Returns the Matrix for BC.
 
const Eigen::VectorXd & HArDCore2D::KirchhoffLove::bdryValues () const
 Returns the boundary values.
 
const double & HArDCore2D::KirchhoffLove::stabilizationParameter () const
 Returns the stabilization parameter.
 
double & HArDCore2D::KirchhoffLove::stabilizationParameter ()
 Returns the stabilization parameter.
 
KLNorms HArDCore2D::KirchhoffLove::computeNorms (const Eigen::VectorXd &v) const
 Compute the discrete norms: displacement,and energy.
 
template<typename outValue , typename Fct >
std::function< outValue(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::contractPara (const Fct &F) const
 Takes a function dependent on KLParameter and a position x, and returns a function depending only on x (using the parameters of this class)
 
 HArDCore2D::RMParameters::RMParameters (const double thickness, const double young_modulus, const double poisson_ratio)
 Constructor.
 
 HArDCore2D::RMNorms::RMNorms (double norm_rotation, double norm_displacement, double norm_kirchoff)
 Constructor.
 
 HArDCore2D::ReissnerMindlin::ReissnerMindlin (const DDRCore &ddrcore, const DDRCore &ddrcore_plus, const SerendipityProblem &sp, const SerendipityProblem &sp_plus, const RMParameters &para, const BoundaryConditions &BC_theta, const BoundaryConditions &BC_u, bool use_threads, std::ostream &output=std::cout)
 Constructor.
 
void HArDCore2D::ReissnerMindlin::assembleLinearSystem (const ForcingTermType &f, const SolutionRotationType &theta, const GradientRotationType &grad_theta, const SolutionDisplacementType &u, const GradientDisplacementType &grad_u)
 Assemble the global system

 
size_t HArDCore2D::ReissnerMindlin::dimensionSpace () const
 Returns the dimension of the rotation + displacement space (with BC)
 
size_t HArDCore2D::ReissnerMindlin::nb_bdryDOFs () const
 Returns the nb of DOFs for BC.
 
size_t HArDCore2D::ReissnerMindlin::sizeSystem () const
 Returns the size of the system without BC.
 
const std::vector< std::pair< size_t, size_t > > & HArDCore2D::ReissnerMindlin::locUKN () const
 Returns the location of the unknowns among the DOFs.
 
const Eigen::VectorXi & HArDCore2D::ReissnerMindlin::DOFtoUKN () const
 Returns the map from global DOFs to system unknowns.
 
const BoundaryConditionsHArDCore2D::ReissnerMindlin::BC_u () const
 Returns the boundary conditions for u.
 
std::vector< size_t > HArDCore2D::ReissnerMindlin::globalDOFIndices (const Cell &T) const
 Create the vector of DOF indices for cell T, which combines the DOFs for the spaces VSXgrad and Xhess.
 
const RMParametersHArDCore2D::ReissnerMindlin::para () const
 Returns the parameters.
 
const VSXGradHArDCore2D::ReissnerMindlin::vsxGrad () const
 Returns the space VSXGrad.
 
const VSXCurlHArDCore2D::ReissnerMindlin::vsxCurl () const
 Returns the space VSXCurl.
 
const XHessFullHArDCore2D::ReissnerMindlin::xHess () const
 Returns the space XHess.
 
const SystemMatrixTypeHArDCore2D::ReissnerMindlin::systemMatrix () const
 Returns the linear system matrix.
 
SystemMatrixTypeHArDCore2D::ReissnerMindlin::systemMatrix ()
 Returns the linear system matrix.
 
const Eigen::VectorXd & HArDCore2D::ReissnerMindlin::systemVector () const
 Returns the linear system right-hand side vector.
 
Eigen::VectorXd & HArDCore2D::ReissnerMindlin::systemVector ()
 Returns the linear system right-hand side vector.
 
const SystemMatrixTypeHArDCore2D::ReissnerMindlin::bdryMatrix () const
 Returns the Matrix for BC.
 
const Eigen::VectorXd & HArDCore2D::ReissnerMindlin::bdryValues () const
 Returns the boundary values.
 
const double & HArDCore2D::ReissnerMindlin::stabilizationParameter () const
 Returns the stabilization parameter.
 
double & HArDCore2D::ReissnerMindlin::stabilizationParameter ()
 Returns the stabilization parameter.
 
RMNorms HArDCore2D::ReissnerMindlin::computeNorms (const Eigen::VectorXd &v) const
 Compute the discrete norms: rotation, displacement, Kirchoff term, and complete energy.
 
template<typename outValue , typename Fct >
std::function< outValue(const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::contractPara (const Fct &F) const
 Takes a function dependent on RMParameter and a position x, and returns a function depending only on x (using the parameters of this class)
 

Variables

double HArDCore2D::KLNorms::displacement
 Norm of displacement.
 
double HArDCore2D::KLNorms::energy
 Total energy.
 
static const double HArDCore2D::PI = boost::math::constants::pi<double>()
 
static KirchhoffLove::SolutionDisplacementType HArDCore2D::constant_u
 
static KirchhoffLove::GradientDisplacementType HArDCore2D::constant_grad_u
 
static KirchhoffLove::ForcingTermType HArDCore2D::constant_f
 
static KirchhoffLove::SolutionDisplacementType HArDCore2D::polynomial_u
 
static KirchhoffLove::GradientDisplacementType HArDCore2D::polynomial_grad_u
 
static KirchhoffLove::ForcingTermType HArDCore2D::polynomial_f
 
static KirchhoffLove::SolutionDisplacementType HArDCore2D::trigo_u
 
static KirchhoffLove::GradientDisplacementType HArDCore2D::trigo_grad_u
 
static KirchhoffLove::ForcingTermType HArDCore2D::trigo_f
 
static KirchhoffLove::SolutionDisplacementType HArDCore2D::dirac_u
 
static KirchhoffLove::GradientDisplacementType HArDCore2D::dirac_grad_u
 
static KirchhoffLove::ForcingTermType HArDCore2D::dirac_f
 
double HArDCore2D::RMParameters::t
 
double HArDCore2D::RMParameters::E
 
double HArDCore2D::RMParameters::nu
 
double HArDCore2D::RMParameters::beta0
 
double HArDCore2D::RMParameters::beta1
 
double HArDCore2D::RMParameters::kappa
 
double HArDCore2D::RMNorms::rotation
 Norm of rotation.
 
double HArDCore2D::RMNorms::displacement
 Norm of displacement.
 
double HArDCore2D::RMNorms::kirchoff
 Norm of kirchoff term.
 
double HArDCore2D::RMNorms::energy
 Total energy.
 
static const double HArDCore2D::PI = boost::math::constants::pi<double>()
 
static ReissnerMindlin::SolutionRotationType HArDCore2D::constant_theta
 
static ReissnerMindlin::GradientRotationType HArDCore2D::constant_grad_theta
 
static ReissnerMindlin::SolutionDisplacementType HArDCore2D::constant_u
 
static ReissnerMindlin::GradientDisplacementType HArDCore2D::constant_grad_u
 
static ReissnerMindlin::ForcingTermType HArDCore2D::constant_f
 
static ReissnerMindlin::SolutionRotationType HArDCore2D::polynomial_theta
 
static ReissnerMindlin::GradientRotationType HArDCore2D::polynomial_grad_theta
 
static ReissnerMindlin::SolutionDisplacementType HArDCore2D::polynomial_u
 
static ReissnerMindlin::ForcingTermType HArDCore2D::polynomial_f
 
static ReissnerMindlin::GradientDisplacementType HArDCore2D::polynomial_grad_u
 
static std::function< double(const VectorRd &)> HArDCore2D::an_g = [](const VectorRd &x)->double { return sin(PI*x(0))*sin(PI*x(1)); }
 
static std::function< VectorRd(const VectorRd &)> HArDCore2D::an_GRAD_g
 
static std::function< MatrixRd(const VectorRd &)> HArDCore2D::an_HESS_g
 
static std::function< double(const VectorRd &)> HArDCore2D::an_LAPL_g = [](const VectorRd &x)->double { return -2*pow(PI,2)*sin(PI*x(0))*sin(PI*x(1)); }
 
static std::function< double(const VectorRd &)> HArDCore2D::an_V = [](const VectorRd &x)->double { return x(0) * exp(-x(0))*cos(x(1)); }
 
static std::function< VectorRd(const VectorRd &)> HArDCore2D::an_GRAD_V
 
static std::function< MatrixRd(const VectorRd &)> HArDCore2D::an_HESS_V
 
static std::function< double(const VectorRd &)> HArDCore2D::an_LAPL_V = [](const VectorRd &x)->double { return -2.* exp(-x(0))*cos(x(1)); }
 
static ReissnerMindlin::SolutionDisplacementType HArDCore2D::an_v
 
static ReissnerMindlin::SolutionRotationType HArDCore2D::an_GRAD_v
 
static ReissnerMindlin::GradientRotationType HArDCore2D::an_HESS_v
 
static ReissnerMindlin::SolutionDisplacementType HArDCore2D::an_LAPL_v
 
static ReissnerMindlin::SolutionRotationType HArDCore2D::analytical_theta = an_GRAD_v
 
static ReissnerMindlin::GradientRotationType HArDCore2D::analytical_grad_theta = an_HESS_v
 
static ReissnerMindlin::SolutionDisplacementType HArDCore2D::analytical_u
 
static ReissnerMindlin::ForcingTermType HArDCore2D::analytical_f
 
static std::function< VectorRd(const VectorRd &)> HArDCore2D::an_GRAD_LAPL_g
 
static std::function< VectorRd(const VectorRd &)> HArDCore2D::an_GRAD_LAPL_V
 
static ReissnerMindlin::SolutionRotationType HArDCore2D::an_GRAD_LAPL_v
 
static ReissnerMindlin::GradientDisplacementType HArDCore2D::analytical_grad_u
 
static ReissnerMindlin::SolutionRotationType HArDCore2D::ukn_theta
 
static ReissnerMindlin::GradientRotationType HArDCore2D::ukn_grad_theta
 
static ReissnerMindlin::SolutionDisplacementType HArDCore2D::ukn_u
 
static ReissnerMindlin::GradientDisplacementType HArDCore2D::ukn_grad_u
 
static ReissnerMindlin::ForcingTermType HArDCore2D::ukn_f
 
static ReissnerMindlin::SolutionRotationType HArDCore2D::kir_theta
 
static ReissnerMindlin::GradientRotationType HArDCore2D::kir_grad_theta
 
static ReissnerMindlin::SolutionDisplacementType HArDCore2D::kir_u
 
static ReissnerMindlin::GradientDisplacementType HArDCore2D::kir_grad_u
 
static ReissnerMindlin::ForcingTermType HArDCore2D::kir_f
 

Detailed Description

Implementation of the DDR-BGG scheme for the Reissner-Mindlin plate problem.

Typedef Documentation

◆ ForcingTermType [1/2]

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

◆ ForcingTermType [2/2]

typedef std::function<double(const RMParameters &, const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::ForcingTermType

◆ GradientDisplacementType [1/2]

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

◆ GradientDisplacementType [2/2]

typedef std::function<Eigen::Vector2d(const RMParameters&, const Eigen::Vector2d&)> HArDCore2D::ReissnerMindlin::GradientDisplacementType

◆ GradientRotationType

typedef std::function<Eigen::Matrix2d(const RMParameters &, const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::GradientRotationType

◆ SolutionDisplacementType [1/2]

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

◆ SolutionDisplacementType [2/2]

typedef std::function<double(const RMParameters &, const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::SolutionDisplacementType

◆ SolutionRotationType

typedef std::function<Eigen::Vector2d(const RMParameters &, const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::SolutionRotationType

◆ SystemMatrixType [1/2]

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

◆ SystemMatrixType [2/2]

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

Function Documentation

◆ assembleLinearSystem() [1/2]

void KirchhoffLove::assembleLinearSystem ( const ForcingTermType f,
const SolutionDisplacementType u,
const GradientDisplacementType grad_u,
size_t  iT_dirac 
)

Assemble the global system

Parameters
fForcing term
uBoundary value
grad_uBoundary value
iT_diracIndex of the cell containing the Dirac delta

◆ assembleLinearSystem() [2/2]

void ReissnerMindlin::assembleLinearSystem ( const ForcingTermType f,
const SolutionRotationType theta,
const GradientRotationType grad_theta,
const SolutionDisplacementType u,
const GradientDisplacementType grad_u 
)

Assemble the global system

Parameters
fForcing term
thetaBoundary value
grad_thetaBoundary value
uBoundary value
grad_uBoundary value

◆ BC_u()

const BoundaryConditions & HArDCore2D::ReissnerMindlin::BC_u ( ) const
inline

Returns the boundary conditions for u.

◆ bdryMatrix() [1/2]

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

Returns the Matrix for BC.

◆ bdryMatrix() [2/2]

const SystemMatrixType & HArDCore2D::ReissnerMindlin::bdryMatrix ( ) const
inline

Returns the Matrix for BC.

◆ bdryValues() [1/2]

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

Returns the boundary values.

◆ bdryValues() [2/2]

const Eigen::VectorXd & HArDCore2D::ReissnerMindlin::bdryValues ( ) const
inline

Returns the boundary values.

◆ computeNorms() [1/2]

KLNorms KirchhoffLove::computeNorms ( const Eigen::VectorXd &  v) const

Compute the discrete norms: displacement,and energy.

Parameters
vThe vector

◆ computeNorms() [2/2]

RMNorms ReissnerMindlin::computeNorms ( const Eigen::VectorXd &  v) const

Compute the discrete norms: rotation, displacement, Kirchoff term, and complete energy.

Parameters
vThe vector

◆ contractPara() [1/2]

template<typename outValue , typename Fct >
std::function< outValue(const Eigen::Vector2d &)> HArDCore2D::KirchhoffLove::contractPara ( const Fct &  F) const
inline

Takes a function dependent on KLParameter and a position x, and returns a function depending only on x (using the parameters of this class)

◆ contractPara() [2/2]

template<typename outValue , typename Fct >
std::function< outValue(const Eigen::Vector2d &)> HArDCore2D::ReissnerMindlin::contractPara ( const Fct &  F) const
inline

Takes a function dependent on RMParameter and a position x, and returns a function depending only on x (using the parameters of this class)

◆ dimensionSpace() [1/2]

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

Returns the dimension of the rotation + displacement space (with BC)

◆ dimensionSpace() [2/2]

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

Returns the dimension of the rotation + displacement space (with BC)

◆ DOFtoUKN()

const Eigen::VectorXi & HArDCore2D::ReissnerMindlin::DOFtoUKN ( ) const
inline

Returns the map from global DOFs to system unknowns.

◆ globalDOFIndices() [1/2]

std::vector< size_t > HArDCore2D::KirchhoffLove::globalDOFIndices ( const Cell &  T) const
inline

Create the vector of DOF indices for cell T, which combines the DOFs for the spaces VSXgrad and Xhess.

◆ globalDOFIndices() [2/2]

std::vector< size_t > HArDCore2D::ReissnerMindlin::globalDOFIndices ( const Cell &  T) const
inline

Create the vector of DOF indices for cell T, which combines the DOFs for the spaces VSXgrad and Xhess.

◆ KirchhoffLove()

KirchhoffLove::KirchhoffLove ( const DDRCore ddrcore,
const DDRCore ddrcore_plus,
const SerendipityProblem sp,
const SerendipityProblem sp_plus,
const BoundaryConditions BC_u,
bool  use_threads,
std::ostream &  output = std::cout 
)

Constructor.

Parameters
ddrcoreCore for the DDR space sequence
ddrcore_plusCore for the DDR space sequence of degree +1
sp_plusSerendipity problem of degree +1
BC_uBoundary conditions for displacement
use_threadsTrue for parallel execution, false for sequential execution
outputOutput stream to print status messages

◆ KLNorms()

HArDCore2D::KLNorms::KLNorms ( double  norm_displacement)
inline

Constructor.

◆ locUKN() [1/2]

const std::vector< std::pair< size_t, size_t > > & HArDCore2D::KirchhoffLove::locUKN ( ) const
inline

Returns the location of the unknowns among the DOFs.

◆ locUKN() [2/2]

const std::vector< std::pair< size_t, size_t > > & HArDCore2D::ReissnerMindlin::locUKN ( ) const
inline

Returns the location of the unknowns among the DOFs.

◆ nb_bdryDOFs() [1/2]

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

Returns the nb of DOFs for BC.

◆ nb_bdryDOFs() [2/2]

size_t HArDCore2D::ReissnerMindlin::nb_bdryDOFs ( ) const
inline

Returns the nb of DOFs for BC.

◆ para()

const RMParameters & HArDCore2D::ReissnerMindlin::para ( ) const
inline

Returns the parameters.

◆ ReissnerMindlin()

ReissnerMindlin::ReissnerMindlin ( const DDRCore ddrcore,
const DDRCore ddrcore_plus,
const SerendipityProblem sp,
const SerendipityProblem sp_plus,
const RMParameters para,
const BoundaryConditions BC_theta,
const BoundaryConditions BC_u,
bool  use_threads,
std::ostream &  output = std::cout 
)

Constructor.

Parameters
ddrcoreCore for the DDR space sequence
ddrcore_plusCore for the DDR space sequence of degree +1
sp_plusSerendipity problem of degree +1
paraPhysical parameters
BC_thetaBoundary conditions for rotation
BC_uBoundary conditions for displacement
use_threadsTrue for parallel execution, false for sequential execution
outputOutput stream to print status messages

◆ RMNorms()

HArDCore2D::RMNorms::RMNorms ( double  norm_rotation,
double  norm_displacement,
double  norm_kirchoff 
)
inline

Constructor.

◆ RMParameters()

HArDCore2D::RMParameters::RMParameters ( const double  thickness,
const double  young_modulus,
const double  poisson_ratio 
)
inline

Constructor.

◆ sizeSystem() [1/2]

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

Returns the size of the system without BC.

◆ sizeSystem() [2/2]

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

Returns the size of the system without BC.

◆ stabilizationParameter() [1/4]

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

Returns the stabilization parameter.

◆ stabilizationParameter() [2/4]

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

Returns the stabilization parameter.

◆ stabilizationParameter() [3/4]

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

Returns the stabilization parameter.

◆ stabilizationParameter() [4/4]

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

Returns the stabilization parameter.

◆ systemMatrix() [1/4]

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

Returns the linear system matrix.

◆ systemMatrix() [2/4]

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

Returns the linear system matrix.

◆ systemMatrix() [3/4]

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

Returns the linear system matrix.

◆ systemMatrix() [4/4]

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

Returns the linear system matrix.

◆ systemVector() [1/4]

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

Returns the linear system right-hand side vector.

◆ systemVector() [2/4]

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

Returns the linear system right-hand side vector.

◆ systemVector() [3/4]

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

Returns the linear system right-hand side vector.

◆ systemVector() [4/4]

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

Returns the linear system right-hand side vector.

◆ vsxCurl()

const VSXCurl & HArDCore2D::ReissnerMindlin::vsxCurl ( ) const
inline

Returns the space VSXCurl.

◆ vsxGrad() [1/2]

const VSXGrad & HArDCore2D::KirchhoffLove::vsxGrad ( ) const
inline

Returns the space VSXGrad.

◆ vsxGrad() [2/2]

const VSXGrad & HArDCore2D::ReissnerMindlin::vsxGrad ( ) const
inline

Returns the space VSXGrad.

◆ xHess() [1/2]

const XHess & HArDCore2D::KirchhoffLove::xHess ( ) const
inline

Returns the space XHess.

◆ xHess() [2/2]

const XHessFull & HArDCore2D::ReissnerMindlin::xHess ( ) const
inline

Returns the space XHess.

Variable Documentation

◆ an_g

std::function<double(const VectorRd &)> HArDCore2D::an_g = [](const VectorRd &x)->double { return sin(PI*x(0))*sin(PI*x(1)); }
static

◆ an_GRAD_g

std::function<VectorRd(const VectorRd &)> HArDCore2D::an_GRAD_g
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
return VectorRd( PI*cos(PI*x(0))*sin(PI*x(1)), PI*sin(PI*x(0))*cos(PI*x(1)) );
}
Create grid points x
Definition generate_cartesian_mesh.m:22
static const double PI
Definition bgg-klplate.hpp:214
Eigen::Vector2d VectorRd
Definition basis.hpp:55

◆ an_GRAD_LAPL_g

std::function<VectorRd(const VectorRd &)> HArDCore2D::an_GRAD_LAPL_g
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
return VectorRd(
-2.0 * pow(PI,3) * cos(PI*x(0)) * sin(PI*x(1)),
-2.0 * pow(PI,3) * sin(PI*x(0)) * cos(PI*x(1))
);
}

◆ an_GRAD_LAPL_V

std::function<VectorRd(const VectorRd &)> HArDCore2D::an_GRAD_LAPL_V
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
return VectorRd(
2.0 * exp(-x(0)) * cos(x(1)),
2.0 * exp(-x(0)) * sin(x(1))
);
}

◆ an_GRAD_LAPL_v

ReissnerMindlin::SolutionRotationType HArDCore2D::an_GRAD_LAPL_v
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> VectorRd {
return an_GRAD_LAPL_V(x/para.t) + an_GRAD_LAPL_g(x);
}
double t
Definition bgg-rmplate.hpp:55
static std::function< VectorRd(const VectorRd &)> an_GRAD_LAPL_g
Definition bgg-rmplate.hpp:536
static std::function< VectorRd(const VectorRd &)> an_GRAD_LAPL_V
Definition bgg-rmplate.hpp:544
Structure to store model data.
Definition bgg-rmplate.hpp:39

◆ an_GRAD_V

std::function<VectorRd(const VectorRd &)> HArDCore2D::an_GRAD_V
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
return VectorRd((1.-x(0))*exp(-x(0))*cos(x(1)), -x(0)*exp(-x(0))*sin(x(1)));
}

◆ an_GRAD_v

ReissnerMindlin::SolutionRotationType HArDCore2D::an_GRAD_v
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> VectorRd {
return pow(para.t, 2) * an_GRAD_V(x/para.t) + an_GRAD_g(x);
}
static std::function< VectorRd(const VectorRd &)> an_GRAD_g
Definition bgg-rmplate.hpp:465
static std::function< VectorRd(const VectorRd &)> an_GRAD_V
Definition bgg-rmplate.hpp:484

◆ an_HESS_g

std::function<MatrixRd(const VectorRd &)> HArDCore2D::an_HESS_g
static
Initial value:
= [](const VectorRd & x) -> MatrixRd {
MatrixRd H = MatrixRd::Zero();
H.row(0) << -PI*PI*sin(PI*x(0))*sin(PI*x(1)), PI*PI*cos(PI*x(0))*cos(PI*x(1));
H.row(1) << PI*PI*cos(PI*x(0))*cos(PI*x(1)), -PI*PI*sin(PI*x(0))*sin(PI*x(1));
return H;
}
Eigen::Matrix2d MatrixRd
Definition basis.hpp:54

◆ an_HESS_V

std::function<MatrixRd(const VectorRd &)> HArDCore2D::an_HESS_V
static
Initial value:
= [](const VectorRd & x) -> MatrixRd {
MatrixRd H = MatrixRd::Zero();
H.row(0) << (x(0)-2.)*exp(-x(0))*cos(x(1)), -(1.-x(0))*exp(-x(0))*sin(x(1));
H.row(1) << -(1.-x(0))*exp(-x(0))*sin(x(1)), -x(0)*exp(-x(0))*cos(x(1));
return H;
}

◆ an_HESS_v

ReissnerMindlin::GradientRotationType HArDCore2D::an_HESS_v
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> MatrixRd {
return para.t * an_HESS_V(x/para.t) + an_HESS_g(x);
}
static std::function< MatrixRd(const VectorRd &)> an_HESS_g
Definition bgg-rmplate.hpp:470
static std::function< MatrixRd(const VectorRd &)> an_HESS_V
Definition bgg-rmplate.hpp:489

◆ an_LAPL_g

std::function<double(const VectorRd &)> HArDCore2D::an_LAPL_g = [](const VectorRd &x)->double { return -2*pow(PI,2)*sin(PI*x(0))*sin(PI*x(1)); }
static

◆ an_LAPL_V

std::function<double(const VectorRd &)> HArDCore2D::an_LAPL_V = [](const VectorRd &x)->double { return -2.* exp(-x(0))*cos(x(1)); }
static

◆ an_LAPL_v

ReissnerMindlin::SolutionDisplacementType HArDCore2D::an_LAPL_v
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> double {
return para.t * (an_LAPL_V)(x/para.t) + an_LAPL_g(x);
}
static std::function< double(const VectorRd &)> an_LAPL_g
Definition bgg-rmplate.hpp:478
static std::function< double(const VectorRd &)> an_LAPL_V
Definition bgg-rmplate.hpp:497

◆ an_V

std::function<double(const VectorRd &)> HArDCore2D::an_V = [](const VectorRd &x)->double { return x(0) * exp(-x(0))*cos(x(1)); }
static

◆ an_v

Initial value:
= [](const RMParameters & para, const VectorRd & x) -> double {
return pow(para.t,3) * an_V(x/para.t) + an_g(x);
}
static std::function< double(const VectorRd &)> an_V
Definition bgg-rmplate.hpp:481
static std::function< double(const VectorRd &)> an_g
Definition bgg-rmplate.hpp:462

◆ analytical_f

ReissnerMindlin::ForcingTermType HArDCore2D::analytical_f
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> double {
return (para.beta0+para.beta1) * 4 * pow(PI,4)*sin(PI*x(0))*sin(PI*x(1));
}
double beta1
Definition bgg-rmplate.hpp:59
double beta0
Definition bgg-rmplate.hpp:58

◆ analytical_grad_theta

ReissnerMindlin::GradientRotationType HArDCore2D::analytical_grad_theta = an_HESS_v
static

◆ analytical_grad_u

ReissnerMindlin::GradientDisplacementType HArDCore2D::analytical_grad_u
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> VectorRd {
return an_GRAD_v(para, x)
- pow(para.t, 2) * ((para.beta0 + para.beta1) / para.kappa)
* an_GRAD_LAPL_v(para, x);
}
static ReissnerMindlin::SolutionRotationType an_GRAD_LAPL_v
Definition bgg-rmplate.hpp:552
double kappa
Definition bgg-rmplate.hpp:60
static ReissnerMindlin::SolutionRotationType an_GRAD_v
Definition bgg-rmplate.hpp:506

◆ analytical_theta

ReissnerMindlin::SolutionRotationType HArDCore2D::analytical_theta = an_GRAD_v
static

◆ analytical_u

ReissnerMindlin::SolutionDisplacementType HArDCore2D::analytical_u
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> double {
return an_v(para, x) - pow(para.t,2) * ( (para.beta0+para.beta1)/para.kappa ) * an_LAPL_v(para, x);
}
static ReissnerMindlin::SolutionDisplacementType an_LAPL_v
Definition bgg-rmplate.hpp:516
static ReissnerMindlin::SolutionDisplacementType an_v
Definition bgg-rmplate.hpp:501

◆ beta0

double HArDCore2D::RMParameters::beta0

◆ beta1

double HArDCore2D::RMParameters::beta1

◆ constant_f [1/2]

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

◆ constant_f [2/2]

ReissnerMindlin::ForcingTermType HArDCore2D::constant_f
static
Initial value:
= [](const RMParameters &, const VectorRd &) -> double {
return 0.0;
}

◆ constant_grad_theta

ReissnerMindlin::GradientRotationType HArDCore2D::constant_grad_theta
static
Initial value:
= [](const RMParameters &, const VectorRd &) -> Eigen::Matrix2d {
return Eigen::Matrix2d::Zero();
}

◆ constant_grad_u [1/2]

KirchhoffLove::GradientDisplacementType HArDCore2D::constant_grad_u
static
Initial value:
= [](const VectorRd & ) -> VectorRd{
return VectorRd::Zero();
}

◆ constant_grad_u [2/2]

ReissnerMindlin::GradientDisplacementType HArDCore2D::constant_grad_u
static
Initial value:
= [](const RMParameters &, const VectorRd &) -> VectorRd {
g.setZero();
g(0) = 1.0;
return g;
}

◆ constant_theta

ReissnerMindlin::SolutionRotationType HArDCore2D::constant_theta
static
Initial value:
= [](const RMParameters &, const VectorRd &) -> VectorRd {
return VectorRd(1, 0.);
}

◆ constant_u [1/2]

KirchhoffLove::SolutionDisplacementType HArDCore2D::constant_u
static
Initial value:
= [](const VectorRd & x) -> double {
return 1.;
}

◆ constant_u [2/2]

ReissnerMindlin::SolutionDisplacementType HArDCore2D::constant_u
static
Initial value:
= [](const RMParameters &, const VectorRd & x) -> double {
return x(0);
}

◆ dirac_f

KirchhoffLove::ForcingTermType HArDCore2D::dirac_f
static
Initial value:
= [](const VectorRd & x) -> double {
const double rayon = 1e-2;
const VectorRd center(0.3, 0.7);
if ((x - center).squaredNorm() < rayon*rayon) {
return 1.0 / (M_PI*rayon*rayon);
} else {
return 0.0;
}
}

◆ dirac_grad_u

KirchhoffLove::GradientDisplacementType HArDCore2D::dirac_grad_u
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
VectorRd grad;
grad(0) = 0.0;
grad(1) = 0.0;
return grad;
}

◆ dirac_u

KirchhoffLove::SolutionDisplacementType HArDCore2D::dirac_u
static
Initial value:
= [](const VectorRd & x) -> double {
return 1.0;
}

◆ displacement [1/2]

double HArDCore2D::KLNorms::displacement

Norm of displacement.

◆ displacement [2/2]

double HArDCore2D::RMNorms::displacement

Norm of displacement.

◆ E

double HArDCore2D::RMParameters::E

◆ energy [1/2]

double HArDCore2D::KLNorms::energy

Total energy.

◆ energy [2/2]

double HArDCore2D::RMNorms::energy

Total energy.

◆ kappa

double HArDCore2D::RMParameters::kappa

◆ kir_f

ReissnerMindlin::ForcingTermType HArDCore2D::kir_f
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> double {
return sin(PI*x(0))*sin(PI*x(1));
}

◆ kir_grad_theta

ReissnerMindlin::GradientRotationType HArDCore2D::kir_grad_theta
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> Eigen::Matrix2d {
double coef = 12.*(1-pow(para.nu,2))/ (para.E * 4.*pow(PI, 4));
Eigen::Matrix2d H = Eigen::Matrix2d::Zero();
H.row(0) << -PI*PI*sin(PI*x(0))*sin(PI*x(1)), PI*PI*cos(PI*x(0))*cos(PI*x(1));
H.row(1) << PI*PI*cos(PI*x(0))*cos(PI*x(1)), -PI*PI*sin(PI*x(0))*sin(PI*x(1));
return coef * H;
}
double E
Definition bgg-rmplate.hpp:56
double nu
Definition bgg-rmplate.hpp:57

◆ kir_grad_u

ReissnerMindlin::GradientDisplacementType HArDCore2D::kir_grad_u
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> VectorRd {
double coef = 12. * (1 - pow(para.nu, 2)) / (para.E * 4. * pow(PI, 4));
VectorRd grad = VectorRd::Zero();
grad(0) = coef * PI * cos(PI * x(0)) * sin(PI * x(1));
grad(1) = coef * PI * sin(PI * x(0)) * cos(PI * x(1));
return grad;
}

◆ kir_theta

ReissnerMindlin::SolutionRotationType HArDCore2D::kir_theta
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> VectorRd {
double coef = 12.*(1-pow(para.nu,2))/ (para.E * 4.*pow(PI, 4));
return coef * PI * VectorRd(cos(PI*x(0))*sin(PI*x(1)), sin(PI*x(0))*cos(PI*x(1)));
}

◆ kir_u

Initial value:
= [](const RMParameters & para, const VectorRd & x) -> double {
double coef = 12.*(1-pow(para.nu,2))/ (para.E * 4.*pow(PI, 4));
return coef * sin(PI*x(0))*sin(PI*x(1));
}

◆ kirchoff

double HArDCore2D::RMNorms::kirchoff

Norm of kirchoff term.

◆ nu

double HArDCore2D::RMParameters::nu

◆ PI [1/2]

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

◆ PI [2/2]

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

◆ polynomial_f [1/2]

KirchhoffLove::ForcingTermType HArDCore2D::polynomial_f
static
Initial value:
= [](const VectorRd & x) -> double {
return 120. * (x(0) + x(1));
}

◆ polynomial_f [2/2]

ReissnerMindlin::ForcingTermType HArDCore2D::polynomial_f
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> double {
double val = 0;
val += 12*x(1)*(x(1)-1)*(5*x(0)*x(0)-5*x(0)+1) *
( 2*x(1)*x(1)*(x(1)-1)*(x(1)-1) + x(0)*(x(0)-1)*(5*x(1)*x(1)-5*x(1)+1) );
val += 12*x(0)*(x(0)-1)*(5*x(1)*x(1)-5*x(1)+1) *
( 2*x(0)*x(0)*(x(0)-1)*(x(0)-1) + x(1)*(x(1)-1)*(5*x(0)*x(0)-5*x(0)+1) );
return val * para.E / (12* (1.-para.nu*para.nu) );
}

◆ polynomial_grad_theta

ReissnerMindlin::GradientRotationType HArDCore2D::polynomial_grad_theta
static

◆ polynomial_grad_u [1/2]

KirchhoffLove::GradientDisplacementType HArDCore2D::polynomial_grad_u
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
VectorRd grad;
grad(0) = 5.0 * pow(x(0), 4);
grad(1) = 5.0 * pow(x(1), 4);
return grad;
}

◆ polynomial_grad_u [2/2]

ReissnerMindlin::GradientDisplacementType HArDCore2D::polynomial_grad_u
static

◆ polynomial_theta

ReissnerMindlin::SolutionRotationType HArDCore2D::polynomial_theta
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> VectorRd {
return VectorRd(
pow(x(1),3)*pow(x(1)-1,3)*pow(x(0),2)*pow(x(0)-1,2)*(2*x(0)-1),
pow(x(0),3)*pow(x(0)-1,3)*pow(x(1),2)*pow(x(1)-1,2)*(2*x(1)-1)
);
}

◆ polynomial_u [1/2]

KirchhoffLove::SolutionDisplacementType HArDCore2D::polynomial_u
static
Initial value:
= [](const VectorRd & x) -> double {
return pow(x(0), 5) + pow(x(1), 5);
}

◆ polynomial_u [2/2]

ReissnerMindlin::SolutionDisplacementType HArDCore2D::polynomial_u
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> double {
double val = 0;
val += (1./3.)*pow(x(0),3)*pow(x(0)-1,3)*pow(x(1),3)*pow(x(1)-1,3);
val -= ( 2*pow(para.t,2) / (5*(1.-para.nu)) ) *
( pow(x(1),3)*pow(x(1)-1,3)*x(0)*(x(0)-1)*(5*x(0)*x(0)-5*x(0)+1)
+ pow(x(0),3)*pow(x(0)-1,3)*x(1)*(x(1)-1)*(5*x(1)*x(1)-5*x(1)+1) );
return val;
}

◆ rotation

double HArDCore2D::RMNorms::rotation

Norm of rotation.

◆ t

double HArDCore2D::RMParameters::t

◆ trigo_f

KirchhoffLove::ForcingTermType HArDCore2D::trigo_f
static
Initial value:
= [](const VectorRd & x) -> double {
double u = std::sin(M_PI * x(0)) * std::sin(M_PI * x(1));
return 4.0 * std::pow(M_PI, 4) * u;
}

◆ trigo_grad_u

KirchhoffLove::GradientDisplacementType HArDCore2D::trigo_grad_u
static
Initial value:
= [](const VectorRd & x) -> VectorRd {
VectorRd grad;
grad(0) = M_PI * std::cos(M_PI * x(0)) * std::sin(M_PI * x(1));
grad(1) = M_PI * std::sin(M_PI * x(0)) * std::cos(M_PI * x(1));
return grad;
}

◆ trigo_u

KirchhoffLove::SolutionDisplacementType HArDCore2D::trigo_u
static
Initial value:
= [](const VectorRd & x) -> double {
return std::sin(M_PI * x(0)) * std::sin(M_PI * x(1));
}

◆ ukn_f

ReissnerMindlin::ForcingTermType HArDCore2D::ukn_f
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> double {
double val = 1.;
if (x(0)<.5){
val = -1.;
}
return val;
}

◆ ukn_grad_theta

ReissnerMindlin::GradientRotationType HArDCore2D::ukn_grad_theta
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> Eigen::Matrix2d {
return Eigen::Matrix2d::Zero();
}

◆ ukn_grad_u

ReissnerMindlin::GradientDisplacementType HArDCore2D::ukn_grad_u
static
Initial value:
= [](const RMParameters & , const VectorRd & ) -> VectorRd {
VectorRd grad = VectorRd::Zero();
grad(0) = 1.0;
return grad;
}

◆ ukn_theta

ReissnerMindlin::SolutionRotationType HArDCore2D::ukn_theta
static
Initial value:
= [](const RMParameters & para, const VectorRd & x) -> VectorRd {
return VectorRd(0., 0.);
}

◆ ukn_u

Initial value:
= [](const RMParameters & para, const VectorRd & x) -> double {
return x(0);
}