|
typedef FEEvaluation< dim, fe_degree, fe_degree+1, n_components_, Number > | BaseClass |
|
typedef Number | number_type |
|
typedef BaseClass::value_type | value_type |
|
typedef BaseClass::gradient_type | gradient_type |
|
typedef FEEvaluationGeneral< dim, fe_degree, n_q_points_1d, n_components_, Number > | BaseClass |
|
typedef Number | number_type |
|
typedef BaseClass::value_type | value_type |
|
typedef BaseClass::gradient_type | gradient_type |
|
typedef FEEvaluationAccess< dim, Utilities::fixed_int_power< fe_degree+1, dim >::value, Utilities::fixed_int_power< n_q_points_1d, dim >::value, n_components_, Number > | BaseClass |
|
typedef Number | number_type |
|
typedef BaseClass::value_type | value_type |
|
typedef BaseClass::gradient_type | gradient_type |
|
typedef Number | number_type |
|
typedef Tensor< 1, n_components_, VectorizedArray< Number > > | value_type |
|
typedef Tensor< 1, n_components_, Tensor< 1, dim, VectorizedArray< Number > > > | gradient_type |
|
typedef FEEvaluationBase< dim, dofs_per_cell_, n_q_points_, n_components_, Number > | BaseClass |
|
typedef Number | number_type |
|
typedef Tensor< 1, n_components_, VectorizedArray< Number > > | value_type |
|
typedef Tensor< 1, n_components_, Tensor< 1, dim, VectorizedArray< Number > > > | gradient_type |
|
|
| FEEvaluationGL (const MatrixFree< dim, Number > &matrix_free, const unsigned int fe_no=0, const unsigned int quad_no=0) |
|
void | evaluate (const bool evaluate_val, const bool evaluate_grad, const bool evaluate_lapl=false) |
|
void | integrate (const bool integrate_val, const bool integrate_grad) |
|
| FEEvaluation (const MatrixFree< dim, Number > &matrix_free, const unsigned int fe_no=0, const unsigned int quad_no=0) |
|
void | evaluate (const bool evaluate_val, const bool evaluate_grad, const bool evaluate_hess=false) |
|
void | integrate (const bool integrate_val, const bool integrate_grad) |
|
| FEEvaluationGeneral (const MatrixFree< dim, Number > &matrix_free, const unsigned int fe_no=0, const unsigned int quad_no=0) |
|
void | evaluate (const bool evaluate_val, const bool evaluate_grad, const bool evaluate_hess=false) |
|
void | integrate (const bool integrate_val, const bool integrate_grad) |
|
Point< dim, VectorizedArray< Number > > | quadrature_point (const unsigned int q_point) const |
|
void | reinit (const unsigned int cell) |
|
unsigned int | get_cell_data_number () const |
|
internal::MatrixFreeFunctions::CellType | get_cell_type () const |
|
template<typename VectorType > |
void | read_dof_values (const VectorType &src) |
|
template<typename VectorType > |
void | read_dof_values (const std::vector< VectorType > &src, const unsigned int first_index=0) |
|
template<typename VectorType > |
void | read_dof_values (const std::vector< VectorType * > &src, const unsigned int first_index=0) |
|
template<typename VectorType > |
void | read_dof_values_plain (const VectorType &src) |
|
template<typename VectorType > |
void | read_dof_values_plain (const std::vector< VectorType > &src, const unsigned int first_index=0) |
|
template<typename VectorType > |
void | read_dof_values_plain (const std::vector< VectorType * > &src, const unsigned int first_index=0) |
|
template<typename VectorType > |
void | distribute_local_to_global (VectorType &dst) const |
|
template<typename VectorType > |
void | distribute_local_to_global (std::vector< VectorType > &dst, const unsigned int first_index=0) const |
|
template<typename VectorType > |
void | distribute_local_to_global (std::vector< VectorType * > &dst, const unsigned int first_index=0) const |
|
template<typename VectorType > |
void | set_dof_values (VectorType &dst) const |
|
template<typename VectorType > |
void | set_dof_values (std::vector< VectorType > &dst, const unsigned int first_index=0) const |
|
template<typename VectorType > |
void | set_dof_values (std::vector< VectorType * > &dst, const unsigned int first_index=0) const |
|
value_type | get_dof_value (const unsigned int dof) const |
|
void | submit_dof_value (const value_type val_in, const unsigned int dof) |
|
value_type | get_value (const unsigned int q_point) const |
|
void | submit_value (const value_type val_in, const unsigned int q_point) |
|
gradient_type | get_gradient (const unsigned int q_point) const |
|
void | submit_gradient (const gradient_type grad_in, const unsigned int q_point) |
|
Tensor< 1, n_components_, Tensor< 2, dim, VectorizedArray< Number > > > | get_hessian (const unsigned int q_point) const |
|
gradient_type | get_hessian_diagonal (const unsigned int q_point) const |
|
value_type | get_laplacian (const unsigned int q_point) const |
|
value_type | integrate_value () const |
|
const VectorizedArray< Number > * | begin_dof_values () const |
|
VectorizedArray< Number > * | begin_dof_values () |
|
const VectorizedArray< Number > * | begin_values () const |
|
VectorizedArray< Number > * | begin_values () |
|
const VectorizedArray< Number > * | begin_gradients () const |
|
VectorizedArray< Number > * | begin_gradients () |
|
const VectorizedArray< Number > * | begin_hessians () const |
|
VectorizedArray< Number > * | begin_hessians () |
|
|
static const unsigned int | dimension = dim |
|
static const unsigned int | n_components = n_components_ |
|
static const unsigned int | dofs_per_cell = BaseClass::dofs_per_cell |
|
static const unsigned int | n_q_points = BaseClass::n_q_points |
|
static const unsigned int | dimension |
|
static const unsigned int | n_components |
|
static const unsigned int | dofs_per_cell |
|
static const unsigned int | n_q_points |
|
static const unsigned int | dimension = dim |
|
static const unsigned int | n_components = n_components_ |
|
static const unsigned int | dofs_per_cell = BaseClass::dofs_per_cell |
|
static const unsigned int | n_q_points = BaseClass::n_q_points |
|
static const unsigned int | dimension |
|
static const unsigned int | n_components |
|
static const unsigned int | dofs_per_cell |
|
static const unsigned int | n_q_points |
|
static const unsigned int | dimension = dim |
|
static const unsigned int | n_components = n_components_ |
|
static const unsigned int | dofs_per_cell = dofs_per_cell_ |
|
static const unsigned int | n_q_points = n_q_points_ |
|
|
template<int direction, bool dof_to_quad, bool add> |
void | apply_gradients (const VectorizedArray< Number > in[], VectorizedArray< Number > out[]) |
|
void | apply_values (const VectorizedArray< Number > in[], VectorizedArray< Number > out[]) |
|
void | apply_gradients (const VectorizedArray< Number > in[], VectorizedArray< Number > out[]) |
|
void | apply_hessians (const VectorizedArray< Number > in[], VectorizedArray< Number > out[]) |
|
template<int direction, bool dof_to_quad, bool add> |
void | apply_values (const VectorizedArray< Number > in[], VectorizedArray< Number > out[]) |
|
template<int direction, bool dof_to_quad, bool add> |
void | apply_gradients (const VectorizedArray< Number > in[], VectorizedArray< Number > out[]) |
|
template<int direction, bool dof_to_quad, bool add> |
void | apply_hessians (const VectorizedArray< Number > in[], VectorizedArray< Number > out[]) |
|
| FEEvaluationAccess (const MatrixFree< dim, Number > &matrix_free, const unsigned int fe_no=0, const unsigned int quad_no=0) |
|
| FEEvaluationBase (const MatrixFree< dim, Number > &matrix_free, const unsigned int fe_no=0, const unsigned int quad_no=0) |
|
template<typename VectorType , typename VectorOperation > |
void | read_write_operation (const VectorOperation &operation, VectorType *vectors[]) const |
|
template<typename VectorType > |
void | read_dof_values_plain (const VectorType *src_data[]) |
|
|
VectorizedArray< Number > | shape_val_evenodd [fe_degree+1][(n_q_points_1d+1)/2] |
|
VectorizedArray< Number > | shape_gra_evenodd [fe_degree+1][(n_q_points_1d+1)/2] |
|
VectorizedArray< Number > | shape_hes_evenodd [fe_degree+1][(n_q_points_1d+1)/2] |
|
VectorizedArray< Number > | values_dofs [n_components][dofs_per_cell >0?dofs_per_cell:1] |
|
VectorizedArray< Number > | values_quad [n_components][n_q_points >0?n_q_points:1] |
|
VectorizedArray< Number > | gradients_quad [n_components][dim][n_q_points >0?n_q_points:1] |
|
VectorizedArray< Number > | hessians_quad [n_components][(dim *(dim+1))/2][n_q_points >0?n_q_points:1] |
|
const unsigned int | quad_no |
|
const unsigned int | n_fe_components |
|
const unsigned int | active_fe_index |
|
const unsigned int | active_quad_index |
|
const MatrixFree< dim, Number > & | matrix_info |
|
const internal::MatrixFreeFunctions::DoFInfo & | dof_info |
|
const internal::MatrixFreeFunctions::MappingInfo< dim, Number > & | mapping_info |
|
const internal::MatrixFreeFunctions::ShapeInfo< Number > & | data |
|
const Tensor< 1, dim, VectorizedArray< Number > > * | cartesian_data |
|
const Tensor< 2, dim, VectorizedArray< Number > > * | jacobian |
|
const VectorizedArray< Number > * | J_value |
|
const VectorizedArray< Number > * | quadrature_weights |
|
const Point< dim, VectorizedArray< Number > > * | quadrature_points |
|
const Tensor< 2, dim, VectorizedArray< Number > > * | jacobian_grad |
|
const Tensor< 1,(dim >1?dim *(dim-1)/2:1), Tensor< 1, dim, VectorizedArray< Number > > > * | jacobian_grad_upper |
|
unsigned int | cell |
|
internal::MatrixFreeFunctions::CellType | cell_type |
|
unsigned int | cell_data_number |
|
bool | dof_values_initialized |
|
bool | values_quad_initialized |
|
bool | gradients_quad_initialized |
|
bool | hessians_quad_initialized |
|
bool | values_quad_submitted |
|
bool | gradients_quad_submitted |
|
template<int dim, int fe_degree, int n_components_ = 1, typename Number = double>
class FEEvaluationGL< dim, fe_degree, n_components_, Number >
The class that provides all functions necessary to evaluate functions at quadrature points and cell integrations. In functionality, this class is similar to FEValues<dim>, however, it includes a lot of specialized functions that make it much faster (between 5 and 500, depending on the polynomial order).
This class is a specialization of FEEvaluation for elements where quadrature formula and support points are chosen so that a orthonormal relation between the values holds. This is the case for FE_Q based on Gauss-Lobatto support points with Gauss-Lobatto quadrature formula of the same order (QGaussLobatto). In that case, application of values is trivial (as the transformation is the identity matrix), and application of gradients is considerably simpler (since all value applications in directions other than the gradient direction are again identity operations).
This class has four template arguments:
- Parameters
-
dim | Dimension in which this class is to be used |
fe_degree | Degree of the tensor product finite element with fe_degree+1 degrees of freedom per coordinate direction. The quadrature formula is tied to the choice of the element by setting n_q_points_1d = fe_degree+1, which gives a diagonal mass matrix |
n_components | Number of vector components when solving a system of PDEs. If the same operation is applied to several components of a PDE (e.g. a vector Laplace equation), they can be applied simultaneously with one call (and often more efficiently) |
Number | Number format, usually double or float |
- Author
- Katharina Kormann and Martin Kronbichler, 2010, 2011
Definition at line 1360 of file fe_evaluation.h.
template<int dim, int fe_degree, int n_components_ = 1, typename Number = double>
template<int direction, bool dof_to_quad, bool add>
Internal function that applies the gradient operation of the tensor product in a given coordinate direction (first template argument), from polynomials to values on quadrature points (second flag set to true) or in an integration loop from values on quadrature points to values tested by different test function (second flag set to false), and if the result is to be added to some previous results or not.