deal.II version GIT relicensing-2289-g1e5549a87a 2024-12-21 21:30:00+00:00
|
#include <deal.II/fe/fe_nedelec_sz.h>
Public Member Functions | |
virtual std::size_t | memory_consumption () const |
Public Attributes | |
std::vector< std::vector< Tensor< 1, dim > > > | shape_values |
std::vector< std::vector< DerivativeForm< 1, dim, dim > > > | shape_grads |
std::vector< std::vector< DerivativeForm< 2, dim, dim > > > | shape_hessians |
std::vector< std::vector< std::vector< double > > > | sigma_imj_values |
std::vector< std::vector< std::vector< double > > > | sigma_imj_grads |
std::vector< std::vector< double > > | edge_sigma_values |
std::vector< std::vector< double > > | edge_sigma_grads |
std::vector< std::vector< double > > | edge_lambda_values |
std::vector< std::vector< double > > | edge_lambda_grads_2d |
std::vector< std::vector< std::vector< double > > > | edge_lambda_grads_3d |
std::vector< std::vector< std::vector< double > > > | edge_lambda_gradgrads_3d |
std::vector< std::vector< double > > | face_lambda_values |
std::vector< std::vector< double > > | face_lambda_grads |
UpdateFlags | update_each |
Derived Internal data which is used to store cell-independent data. Note that due to the nature of this element, a number of useful pre-computed quantities are stored for the computation of cell-dependent shape functions.
The main quantities which are stored are associated with edge and face parameterizations. These are:
The definitions of these functionals, as well as the edge and face parameterizations and edge and face extension parameters, can be found on page 82 of Zaglmayr's thesis. The details of the definition of the globally-defined edge and face orientations can be found on page 67.
Definition at line 301 of file fe_nedelec_sz.h.
|
virtualinherited |
Return an estimate (in bytes) for the memory consumption of this object.
|
mutable |
Storage for shape functions on the reference element. We only pre-compute cell-based DoFs, as the edge- and face-based DoFs depend on the cell.
Due to the cell-dependent DoFs, this variable is declared mutable.
Definition at line 310 of file fe_nedelec_sz.h.
|
mutable |
Storage for shape function gradients on the reference element. We only pre-compute cell-based DoFs, as the edge- and face-based DoFs depend on the cell.
Due to the cell-dependent DoFs, this variable is declared mutable.
Definition at line 319 of file fe_nedelec_sz.h.
|
mutable |
Storage for shape function hessians on the reference element. We only pre-compute cell-based DoFs, as the edge- and face-based DoFs depend on the cell.
Due to the cell-dependent DoFs, this variable is declared mutable.
Definition at line 329 of file fe_nedelec_sz.h.
std::vector<std::vector<std::vector<double> > > FE_NedelecSZ< dim, spacedim >::InternalData::sigma_imj_values |
Storage for all possible edge parameterization between vertices. These are required in the computation of edge- and face-based DoFs, which are cell-dependent.
The edge parameterization of an edge, E, starting at vertex i and ending at vertex \(j\) is given by \(\sigma_{E} = \sigma_{i} - \sigma{j}\).
sigma_imj_values[q][i][j] stores the value of the edge parameterization connected by vertices \(i\) and \(j\) at the q-th quadrature point.
Note that not all of the \(i\) and \(j\) combinations result in valid edges on the hexahedral cell, but they are computed in this fashion for use with non-standard edge and face orientations.
Definition at line 346 of file fe_nedelec_sz.h.
std::vector<std::vector<std::vector<double> > > FE_NedelecSZ< dim, spacedim >::InternalData::sigma_imj_grads |
Storage for gradients of all possible edge parameterizations between vertices. These are required in the computation of edge- and face-based DoFs, which are cell-dependent. Note that the components of the gradient are constant.
The edge parameterization of an edge, \(E\), starting at vertex \(i\) and ending at vertex \(j\) is given by \(\sigma_{E} = \sigma_{i} - \sigma{j}\).
sigma_imj_grads[i][j][d] stores the gradient of the edge parameterization connected by vertices \(i\) and \(j\) in component \(d\).
Note that the gradient of the edge parameterization is constant on an edge, so we do not need to store it at every quadrature point.
Definition at line 363 of file fe_nedelec_sz.h.
std::vector<std::vector<double> > FE_NedelecSZ< dim, spacedim >::InternalData::edge_sigma_values |
Storage for values of edge parameterizations at quadrature points. These are stored for the 12 edges such that the global vertex numbering would follow the order defined by the "standard" deal.II cell.
edge_sigma_values[m][q] stores the edge parameterization value at the q-th quadrature point on edge m.
These values change with the orientation of the edges of a physical cell and so must take the "sign" into account when used for computation.
Definition at line 376 of file fe_nedelec_sz.h.
std::vector<std::vector<double> > FE_NedelecSZ< dim, spacedim >::InternalData::edge_sigma_grads |
Storage for gradients of edge parameterization at quadrature points. These are stored for the 12 edges such that the global vertex numbering would follow the order defined by the "standard" deal.II cell.
edge_sigma_grads[m][d] stores the gradient of the edge parameterization for component d on edge m.
These values change with the orientation of the edges of a physical cell and so must take the "sign" into account when used for computation.
Definition at line 389 of file fe_nedelec_sz.h.
std::vector<std::vector<double> > FE_NedelecSZ< dim, spacedim >::InternalData::edge_lambda_values |
Storage for edge extension parameters at quadrature points. These are stored for the 12 edges such that the global vertex numbering would follow the order defined by the "standard" deal.II cell.
The edge extension parameter of an edge, \(E\), starting at vertex \(i\) and ending at vertex \(j\) is given by \(\lambda_{E} = \lambda_{i} + \lambda_{j}\).
Note that under this definition, the values of \(\lambda_{E}\) do not change with the orientation of the edge.
edge_lambda_values[m][q] stores the edge extension parameter value at the \(q\)-th quadrature point on edge \(m\).
Definition at line 406 of file fe_nedelec_sz.h.
std::vector<std::vector<double> > FE_NedelecSZ< dim, spacedim >::InternalData::edge_lambda_grads_2d |
Storage for gradients of edge extension parameters in 2d. In this case they are constant. These are stored for the 12 edges such that the global vertex numbering* would follow the order defined by the "standard" deal.II cell.
edge_lambda_grads_2d[m][d] stores the gradient of the edge extension parameter for component \(d\) on edge \(m\).
Definition at line 417 of file fe_nedelec_sz.h.
std::vector<std::vector<std::vector<double> > > FE_NedelecSZ< dim, spacedim >::InternalData::edge_lambda_grads_3d |
Storage for gradients of edge extension parameters in 3d. In this case they are non-constant. These are stored for the 12 edges such that the global vertex numbering* would follow the order defined by the "standard" deal.II cell.
edge_lambda_grads_3d[m][q][d] stores the gradient of the edge extension parameter for component \(d\) at the \(q\)-th quadrature point on edge m.
Definition at line 428 of file fe_nedelec_sz.h.
std::vector<std::vector<std::vector<double> > > FE_NedelecSZ< dim, spacedim >::InternalData::edge_lambda_gradgrads_3d |
Storage for 2nd derivatives of edge extension parameters in 3d, which are constant across the cell. These are stored for the 12 edges such that the global vertex numbering* would follow the order defined by the "standard" deal.II cell.
edge_lambda_gradgrads_3d[m][d1][d2] stores the 2nd derivatives of the edge extension parameters with respect to components d1 and d2 on edge \(m\).
Definition at line 440 of file fe_nedelec_sz.h.
std::vector<std::vector<double> > FE_NedelecSZ< dim, spacedim >::InternalData::face_lambda_values |
Storage for the face extension parameters. These are stored for the 6 faces such that the global vertex numbering would follow the order defined by the "standard" deal.II cell.
The face extension parameter of a face, F, defined by the vertices v1, v2, v3, v4 is given by \(\lambda_{F} = \lambda_{v1} + \lambda_{v2} + \lambda_{v3} + \lambda_{v4}\).
Note that under this definition, the values of \(\lambda_{F}\) do not change with the orientation of the face.
face_lambda_values[m][q] stores the face extension parameter value at the \(q\)-th quadrature point on face \(m\).
Definition at line 458 of file fe_nedelec_sz.h.
std::vector<std::vector<double> > FE_NedelecSZ< dim, spacedim >::InternalData::face_lambda_grads |
Storage for gradients of face extension parameters. These are stored for the 6 faces such that the global vertex numbering would follow the order defined by the "standard" deal.II cell.
face_lambda_grads[m][d] stores the gradient of the face extension parameters for component \(d\) on face \(m\).
Definition at line 468 of file fe_nedelec_sz.h.
|
inherited |
A set of update flags specifying the kind of information that an implementation of the FiniteElement interface needs to compute on each cell or face, i.e., in FiniteElement::fill_fe_values() and friends.
This set of flags is stored here by implementations of FiniteElement::get_data(), FiniteElement::get_face_data(), or FiniteElement::get_subface_data(), and is that subset of the update flags passed to those functions that require re-computation on every cell. (The subset of the flags corresponding to information that can be computed once and for all already at the time of the call to FiniteElement::get_data() – or an implementation of that interface – need not be stored here because it has already been taken care of.)