Implementation of the DDR scheme for the Kirchoff-Love plate problem.
More...
Implementation of the DDR scheme for the Kirchoff-Love plate problem.
◆ ConstitutiveLawType
◆ DeflectionType
◆ ForcingTermType
◆ GradientDeflectionType
◆ MomentTensorEdgeDerivativeType
◆ MomentTensorType
◆ SystemMatrixType
◆ assembleLinearSystem()
Assemble the global system.
- Parameters
-
| f | Forcing term |
| u | Deflection (for BC) |
| grad_u | Gradient of deflection (for BC) |
◆ computeNorm()
| double KirchhoffLove::computeNorm |
( |
const Eigen::VectorXd & |
v | ) |
const |
Compute the discrete norm.
- Parameters
-
◆ dimensionSpace()
| size_t HArDCore2D::KirchhoffLove::dimensionSpace |
( |
| ) |
const |
|
inline |
Returns the dimension of the moment + deflection space.
◆ interpolateDeflection()
Interpolate deflection.
- Parameters
-
| u | The function to interpolate |
| deg_quad | The degree of the quadrature rules (equal to \(2(k+1)\) with \(k\) equal to the degree of the complex by default) |
◆ KirchhoffLove()
Constructor.
- Parameters
-
| platescore | Core for the DDR space sequence |
| law | Constitutive law: law(sigma)+hess u = 0 |
| use_threads | True for parallel execution, false for sequential execution |
| output | Output 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()
Returns the space \(\mathbb{P}^{k-2}(\mathcal{T}_h)\).
◆ scMatrix()
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]
Returns the linear system matrix.
◆ systemMatrix() [2/2]
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 |
◆ biquartic_divdiv_hess_u
Initial value:
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));
}
Create grid points x
Definition generate_cartesian_mesh.m:22
Eigen::Vector2d VectorRd
Definition basis.hpp:55
◆ biquartic_dx_hess_u
Initial value:= [](
const VectorRd &
x) -> Eigen::Matrix2d {
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));
}
depending on the Matrix Market format indicated by or array(dense array storage). The data will be duplicated % as appropriate if symmetry is indicated in the header. % % Optionally
◆ biquartic_dy_hess_u
Initial value:= [](
const VectorRd &
x) -> Eigen::Matrix2d {
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);
}
◆ biquartic_grad_Delta_u
Initial value:
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
Initial value:
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
Initial value:= [](
const VectorRd &
x) -> Eigen::Matrix2d {
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));
}
◆ biquartic_hess_u_DE
Initial value:= [](
const VectorRd &
x,
const Edge & E) ->
double {
Eigen::Vector2d
tE = E.tangent();
Eigen::Vector2d
nE = E.normal();
};
}
◆ biquartic_u
Initial value:
return pow(
x(0),2)*pow(1.-
x(0),2)*pow(
x(1),2)*pow(1.-
x(1),2);
}
◆ PI
◆ quartic_divdiv_hess_u
◆ quartic_dx_hess_u
Initial value:= [](
const VectorRd &
x) -> Eigen::Matrix2d {
M.row(0) << 24*
x(0) - 12, 0;
}
◆ quartic_dy_hess_u
Initial value:= [](
const VectorRd &
x) -> Eigen::Matrix2d {
M.row(1) << 0., 24*
x(1) - 12;
}
◆ quartic_grad_Delta_u
Initial value:
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
Initial value:
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
Initial value:= [](
const VectorRd &
x) -> Eigen::Matrix2d {
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));
}
◆ quartic_hess_u_DE
Initial value:= [](
const VectorRd &
x,
const Edge & E) ->
double {
Eigen::Vector2d
tE = E.tangent();
Eigen::Vector2d
nE = E.normal();
};
}
◆ quartic_u
Initial value:
return pow(
x(0),2)*pow(1.-
x(0),2) + pow(
x(1),2)*pow(1.-
x(1),2);
}
◆ trigonometric_divdiv_hess_u
Initial value:
return 4.*pow(
PI, 4)*sin(
PI*
x(0))*sin(
PI*
x(1));
}
static const double PI
Definition mhd-solutions.cpp:8
◆ trigonometric_dx_hess_u
Initial value:= [](
const VectorRd &
x) -> Eigen::Matrix2d {
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));
}
◆ trigonometric_dy_hess_u
Initial value:= [](
const VectorRd &
x) -> Eigen::Matrix2d {
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));
}
◆ trigonometric_grad_Delta_u
Initial value:
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
◆ trigonometric_hess_u
Initial value:= [](
const VectorRd &
x) -> Eigen::Matrix2d {
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));
}
◆ trigonometric_hess_u_DE
Initial value:= [](
const VectorRd &
x,
const Edge & E) ->
double {
Eigen::Vector2d
tE = E.tangent();
Eigen::Vector2d
nE = E.normal();
};
}
◆ trigonometric_u
Initial value:
return sin(
PI*
x(0))*sin(
PI*
x(1));
}