Local solver for the equation that governs the lengthening of an elastic beam.
More...
#include <bernoulli_beams.hxx>
|
| LengtheningBeam (const constructor_value_type &tau=1.) |
| Constructor for local solver. More...
|
|
template<class hyEdgeT , typename SmallMatInT , typename SmallMatOutT > |
SmallMatOutT & | trace_to_flux (const SmallMatInT &lambda_values_in, SmallMatOutT &lambda_values_out, hyEdgeT &hyper_edge, const lSol_float_t time=0.) const |
| Evaluate local contribution to matrix–vector multiplication. More...
|
|
template<class hyEdgeT , typename SmallMatInT , typename SmallMatOutT > |
SmallMatOutT & | residual_flux (const SmallMatInT &lambda_values_in, SmallMatOutT &lambda_values_out, hyEdgeT &hyper_edge, const lSol_float_t time=0.) const |
| Evaluate local contribution to residual. More...
|
|
template<class hyEdgeT , typename SmallMatT > |
std::array< lSol_float_t, 1U > | errors (const SmallMatT &lambda_values, hyEdgeT &hyper_edge, const lSol_float_t time=0.) const |
| Local squared contribution to the L2 error. More...
|
|
template<typename abscissa_float_t , std::size_t sizeT, class input_array_t , class hyEdgeT > |
std::array< std::array< lSol_float_t, Hypercube< hyEdge_dimT >::pow(sizeT)>, LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t >::system_dimension()> | bulk_values (const std::array< abscissa_float_t, sizeT > &abscissas, const input_array_t &lambda_values, hyEdgeT &hyper_edge, const lSol_float_t time=0.) const |
| Evaluate local local reconstruction at tensorial products of abscissas. More...
|
|
|
| HAS_MEMBER_FUNCTION (trace_to_flux, has_trace_to_flux) |
| Prepare struct to check for function to exist (cf. compile_time_tricks.hxx). More...
|
|
| HAS_MEMBER_FUNCTION (residual_flux, has_residual_flux) |
| Prepare struct to check for function to exist (cf. compile_time_tricks.hxx). More...
|
|
| HAS_MEMBER_FUNCTION (errors, has_errors) |
| Prepare struct to check for function to exist (cf. compile_time_tricks.hxx). More...
|
|
template<class hyEdgeT , typename SmallMatT > |
std::array< std::array< double, diffusion_sol_t::n_glob_dofs_per_node()>, 2 *hyEdge_dimT > | node_dof_to_edge_dof (const SmallMatT &lambda, hyEdgeT &hyper_edge) const |
| Do the pretprocessing to transfer global to local dofs. More...
|
|
template<class hyEdgeT , typename SmallMatInT , typename SmallMatOutT > |
SmallMatOutT & | edge_dof_to_node_dof (const SmallMatInT &lambda, SmallMatOutT &lambda_values_out, hyEdgeT &hyper_edge) const |
| Do the postprocessing to transfer local to global dofs. More...
|
|
|
const diffusion_sol_t | diffusion |
| The diffusion solver that solves the locally defined PDE. More...
|
|
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
class LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >
Local solver for the equation that governs the lengthening of an elastic beam.
- Authors
- Guido Kanschat, Heidelberg University, 2019–2020.
-
Andreas Rupp, Heidelberg University, 2019–2020.
◆ constructor_value_type
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
Class is constructed using a single double indicating the penalty parameter.
◆ LengtheningBeam()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
Constructor for local solver.
- Parameters
-
tau | Penalty parameter of HDG scheme. |
◆ bulk_values()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
template<typename abscissa_float_t , std::size_t sizeT, class input_array_t , class hyEdgeT >
std::array< std::array<lSol_float_t, Hypercube<hyEdge_dimT>::pow(sizeT)>, LengtheningBeam<hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t>::system_dimension()> LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >::bulk_values |
( |
const std::array< abscissa_float_t, sizeT > & |
abscissas, |
|
|
const input_array_t & |
lambda_values, |
|
|
hyEdgeT & |
hyper_edge, |
|
|
const lSol_float_t |
time = 0. |
|
) |
| const |
|
inline |
Evaluate local local reconstruction at tensorial products of abscissas.
- Template Parameters
-
absc_float_t | Floating type for the abscissa values. |
abscissas_sizeT | Size of the array of array of abscissas. |
input_array_t | Type of input array. |
hyEdgeT | The geometry type / typename of the considered hyEdge's geometry. |
- Parameters
-
abscissas | Abscissas of the supporting points. |
lambda_values | The values of the skeletal variable's coefficients. |
hyper_edge | The geometry of the considered hyperedge (of typename GeomT). |
time | Time. |
- Return values
-
func_values | Function values at tensorial points. |
◆ edge_dof_to_node_dof()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
template<class hyEdgeT , typename SmallMatInT , typename SmallMatOutT >
SmallMatOutT& LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >::edge_dof_to_node_dof |
( |
const SmallMatInT & |
lambda, |
|
|
SmallMatOutT & |
lambda_values_out, |
|
|
hyEdgeT & |
hyper_edge |
|
) |
| const |
|
inlineprivate |
Do the postprocessing to transfer local to global dofs.
◆ errors()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
template<class hyEdgeT , typename SmallMatT >
std::array<lSol_float_t, 1U> LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >::errors |
( |
const SmallMatT & |
lambda_values, |
|
|
hyEdgeT & |
hyper_edge, |
|
|
const lSol_float_t |
time = 0. |
|
) |
| const |
|
inline |
Local squared contribution to the L2 error.
- Template Parameters
-
hyEdgeT | The geometry type / typename of the considered hyEdge's geometry. |
SmallMatT | The data type of lambda_values . |
- Parameters
-
lambda_values | The values of the skeletal variable's coefficients. |
hyper_edge | The geometry of the considered hyperedge (of typename GeomT). |
time | Time at which analytic functions are evaluated. |
- Return values
-
vec_b | Local part of vector b. |
◆ HAS_MEMBER_FUNCTION() [1/3]
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
Prepare struct to check for function to exist (cf. compile_time_tricks.hxx).
◆ HAS_MEMBER_FUNCTION() [2/3]
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
Prepare struct to check for function to exist (cf. compile_time_tricks.hxx).
◆ HAS_MEMBER_FUNCTION() [3/3]
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
Prepare struct to check for function to exist (cf. compile_time_tricks.hxx).
◆ hyEdge_dim()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
static constexpr unsigned int LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >::hyEdge_dim |
( |
| ) |
|
|
inlinestaticconstexpr |
Return template parameter hyEdge_dimT
.
- Return values
-
hyEdge_dimT | Dimension of hypergraph's hyperedges. |
◆ n_glob_dofs_per_node()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
static constexpr unsigned int LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >::n_glob_dofs_per_node |
( |
| ) |
|
|
inlinestaticconstexpr |
Evaluate amount of global degrees of freedom per hypernode.
This number must be equal to HyperNodeFactory::n_glob_dofs_per_node()() of the HyperNodeFactory cooperating with this object.
- Return values
-
n_dofs | Number of global degrees of freedom per hypernode. |
◆ node_dof_to_edge_dof()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
template<class hyEdgeT , typename SmallMatT >
std::array<std::array<double, diffusion_sol_t::n_glob_dofs_per_node()>, 2 * hyEdge_dimT> LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >::node_dof_to_edge_dof |
( |
const SmallMatT & |
lambda, |
|
|
hyEdgeT & |
hyper_edge |
|
) |
| const |
|
inlineprivate |
Do the pretprocessing to transfer global to local dofs.
◆ node_system_dimension()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
static constexpr unsigned int LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >::node_system_dimension |
( |
| ) |
|
|
inlinestaticconstexpr |
Dimension of of the solution evaluated with respect to a hypernode.
◆ residual_flux()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
template<class hyEdgeT , typename SmallMatInT , typename SmallMatOutT >
SmallMatOutT& LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >::residual_flux |
( |
const SmallMatInT & |
lambda_values_in, |
|
|
SmallMatOutT & |
lambda_values_out, |
|
|
hyEdgeT & |
hyper_edge, |
|
|
const lSol_float_t |
time = 0. |
|
) |
| const |
|
inline |
Evaluate local contribution to residual.
◆ system_dimension()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
static constexpr unsigned int LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >::system_dimension |
( |
| ) |
|
|
inlinestaticconstexpr |
Dimension of of the solution evaluated with respect to a hyperedge.
◆ trace_to_flux()
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
template<class hyEdgeT , typename SmallMatInT , typename SmallMatOutT >
SmallMatOutT& LocalSolver::LengtheningBeam< hyEdge_dimT, space_dim, poly_deg, quad_deg, lSol_float_t, diffusion_sol_t >::trace_to_flux |
( |
const SmallMatInT & |
lambda_values_in, |
|
|
SmallMatOutT & |
lambda_values_out, |
|
|
hyEdgeT & |
hyper_edge, |
|
|
const lSol_float_t |
time = 0. |
|
) |
| const |
|
inline |
Evaluate local contribution to matrix–vector multiplication.
- Template Parameters
-
hyEdgeT | The geometry type / typename of the considered hyEdge's geometry. |
SmallMatInT | Data type of lambda_values_in . |
SmallMatOutT | Data type of lambda_values_out . |
- Parameters
-
lambda_values_in | Local part of vector x. |
lambda_values_out | Local part that will be added to A * x. |
hyper_edge | HyperEdge that is considered. |
time | Time at which analytic functions are evaluated. |
- Return values
-
vecAx | Local part of vector A * x. |
◆ diffusion
template<unsigned int hyEdge_dimT, unsigned int space_dim, unsigned int poly_deg, unsigned int quad_deg, typename lSol_float_t = double, typename diffusion_sol_t = DiffusionUniform<hyEdge_dimT, poly_deg, quad_deg, lSol_float_t>>
The diffusion solver that solves the locally defined PDE.
The documentation for this class was generated from the following file: