![]() |
Reference documentation for deal.II version 9.1.1
|
#include <deal.II/matrix_free/fe_evaluation.h>
Public Member Functions | |
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) |
void | submit_value (const gradient_type val_in, const unsigned int q_point) |
gradient_type | get_gradient (const unsigned int q_point) const |
value_type | get_normal_derivative (const unsigned int q_point) const |
void | submit_gradient (const gradient_type grad_in, const unsigned int q_point) |
void | submit_gradient (const value_type grad_in, const unsigned int q_point) |
void | submit_normal_derivative (const value_type grad_in, const unsigned int q_point) |
void | submit_normal_derivative (const gradient_type grad_in, const unsigned int q_point) |
Tensor< 2, 1, VectorizedArray< Number > > | get_hessian (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 |
![]() | |
~FEEvaluationBase () | |
unsigned int | get_cell_data_number () const |
unsigned int | get_mapping_data_index_offset () const |
internal::MatrixFreeFunctions::GeometryType | get_cell_type () const |
const internal::MatrixFreeFunctions::ShapeInfo< VectorizedArray< Number > > & | get_shape_info () const |
void | read_dof_values (const VectorType &src, const unsigned int first_index=0) |
void | read_dof_values_plain (const VectorType &src, const unsigned int first_index=0) |
void | distribute_local_to_global (VectorType &dst, const unsigned int first_index=0, const std::bitset< VectorizedArray< Number >::n_array_elements > &mask=std::bitset< VectorizedArray< Number >::n_array_elements >().flip()) const |
void | set_dof_values (VectorType &dst, const unsigned int first_index=0, const std::bitset< VectorizedArray< Number >::n_array_elements > &mask=std::bitset< VectorizedArray< Number >::n_array_elements >().flip()) 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 |
value_type | get_normal_derivative (const unsigned int q_point) const |
void | submit_gradient (const gradient_type grad_in, const unsigned int q_point) |
void | submit_normal_derivative (const value_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 |
VectorizedArray< Number > | get_divergence (const unsigned int q_point) const |
SymmetricTensor< 2, dim, VectorizedArray< Number > > | get_symmetric_gradient (const unsigned int q_point) const |
Tensor< 1,(dim==2 ? 1 :dim), VectorizedArray< Number > > | get_curl (const unsigned int q_point) const |
void | submit_divergence (const VectorizedArray< Number > div_in, const unsigned int q_point) |
void | submit_symmetric_gradient (const SymmetricTensor< 2, dim, VectorizedArray< Number >> grad_in, const unsigned int q_point) |
void | submit_curl (const Tensor< 1, dim==2 ? 1 :dim, VectorizedArray< Number >> curl_in, const unsigned int q_point) |
value_type | integrate_value () const |
VectorizedArray< Number > | JxW (const unsigned int q_index) const |
void | fill_JxW_values (AlignedVector< VectorizedArray< Number >> &JxW_values) const |
Tensor< 2, dim, VectorizedArray< Number > > | inverse_jacobian (const unsigned int q_index) const |
Tensor< 1, dim, VectorizedArray< Number > > | get_normal_vector (const unsigned int q_point) const |
VectorizedArray< Number > | read_cell_data (const AlignedVector< VectorizedArray< Number >> &array) 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 () |
const std::vector< unsigned int > & | get_internal_dof_numbering () const |
ArrayView< VectorizedArray< Number > > | get_scratch_data () const |
Protected Member Functions | |
FEEvaluationAccess (const MatrixFree< 1, Number > &matrix_free, const unsigned int dof_no, const unsigned int first_selected_component, const unsigned int quad_no, const unsigned int fe_degree, const unsigned int n_q_points, const bool is_interior_face=true) | |
template<int n_components_other> | |
FEEvaluationAccess (const Mapping< 1 > &mapping, const FiniteElement< 1 > &fe, const Quadrature< 1 > &quadrature, const UpdateFlags update_flags, const unsigned int first_selected_component, const FEEvaluationBase< 1, n_components_other, Number, is_face > *other) | |
FEEvaluationAccess (const FEEvaluationAccess &other) | |
FEEvaluationAccess & | operator= (const FEEvaluationAccess &other) |
![]() | |
FEEvaluationBase (const MatrixFree< dim, Number > &matrix_free, const unsigned int dof_no, const unsigned int first_selected_component, const unsigned int quad_no, const unsigned int fe_degree, const unsigned int n_q_points, const bool is_interior_face) | |
FEEvaluationBase (const Mapping< dim > &mapping, const FiniteElement< dim > &fe, const Quadrature< 1 > &quadrature, const UpdateFlags update_flags, const unsigned int first_selected_component, const FEEvaluationBase< dim, n_components_other, Number > *other) | |
FEEvaluationBase (const FEEvaluationBase &other) | |
FEEvaluationBase & | operator= (const FEEvaluationBase &other) |
void | read_write_operation (const VectorOperation &operation, VectorType *vectors[], const std::bitset< VectorizedArray< Number >::n_array_elements > &mask, const bool apply_constraints=true) const |
void | read_write_operation_contiguous (const VectorOperation &operation, VectorType *vectors[], const std::bitset< VectorizedArray< Number >::n_array_elements > &mask) const |
void | read_write_operation_global (const VectorOperation &operation, VectorType *vectors[]) const |
This class provides access to the data fields of the FEEvaluation classes. Partial specialization for scalar fields in 1d that defines access with simple data fields, i.e., scalars for the values and Tensor<1,1> for the gradients.
Definition at line 1480 of file fe_evaluation.h.
|
protected |
Constructor. Made protected to avoid initialization in user code. Takes all data stored in MatrixFree. If applied to problems with more than one finite element or more than one quadrature formula selected during construction of matrix_free
, first_selected_component
and quad_no
allow to select the appropriate components.
|
protected |
Constructor with reduced functionality for similar usage of FEEvaluation as FEValues, including matrix assembly.
|
protected |
Copy constructor
value_type FEEvaluationAccess< 1, 1, Number, is_face >::get_dof_value | ( | const unsigned int | dof | ) | const |
Return the value stored for the local degree of freedom with index dof
. If the object is vector-valued, a vector-valued return argument is given. Thus, the argument dof
can at most run until dofs_per_component
rather than dofs_per_cell
since the different components of a vector-valued FE are return together. Note that when vectorization is enabled, values from several cells are grouped together. If set_dof_values
was called last, the value corresponds to the one set there. If integrate
was called last, it instead corresponds to the value of the integrated function with the test function of the given index.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
void FEEvaluationAccess< 1, 1, Number, is_face >::submit_dof_value | ( | const value_type | val_in, |
const unsigned int | dof | ||
) |
Write a value to the field containing the degrees of freedom with component dof
. Writes to the same field as is accessed through get_dof_value
. Therefore, the original data that was read from a vector is overwritten as soon as a value is submitted.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
value_type FEEvaluationAccess< 1, 1, Number, is_face >::get_value | ( | const unsigned int | q_point | ) | const |
Return the value of a finite element function at quadrature point number q_point
after a call to evaluate
(true,...), or the value that has been stored there with a call to submit_value
. If the object is vector-valued, a vector-valued return argument is given. Note that when vectorization is enabled, values from several cells are grouped together.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
void FEEvaluationAccess< 1, 1, Number, is_face >::submit_value | ( | const value_type | val_in, |
const unsigned int | q_point | ||
) |
Write a value to the field containing the values on quadrature points with component q_point
. Access to the same field as through get_value
. If applied before the function integrate
(true,...) is called, this specifies the value which is tested by all basis function on the current cell and integrated over.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
void FEEvaluationAccess< 1, 1, Number, is_face >::submit_value | ( | const gradient_type | val_in, |
const unsigned int | q_point | ||
) |
Write a value to the field containing the values on quadrature points with component q_point
. Access to the same field as through get_value
. If applied before the function integrate
(true,...) is called, this specifies the value which is tested by all basis function on the current cell and integrated over.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
gradient_type FEEvaluationAccess< 1, 1, Number, is_face >::get_gradient | ( | const unsigned int | q_point | ) | const |
Return the gradient of a finite element function at quadrature point number q_point
after a call to evaluate
(...,true,...), or the value that has been stored there with a call to submit_gradient
.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
value_type FEEvaluationAccess< 1, 1, Number, is_face >::get_normal_derivative | ( | const unsigned int | q_point | ) | const |
Return the derivative of a finite element function at quadrature point number q_point
after a call to evaluate
(...,true,...) in the direction normal to the face: \(\boldsymbol \nabla u(\mathbf x_q) \cdot \mathbf n(\mathbf x_q)\)
This call is equivalent to calling get_gradient() * get_normal_vector()
but will use a more efficient internal representation of data.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
void FEEvaluationAccess< 1, 1, Number, is_face >::submit_gradient | ( | const gradient_type | grad_in, |
const unsigned int | q_point | ||
) |
Write a contribution that is tested by the gradient to the field containing the values on quadrature points with component q_point
. Access to the same field as through get_gradient(). If applied before the function integrate
(...,true) is called, this specifies what is tested by all basis function gradients on the current cell and integrated over.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
void FEEvaluationAccess< 1, 1, Number, is_face >::submit_gradient | ( | const value_type | grad_in, |
const unsigned int | q_point | ||
) |
Write a contribution that is tested by the gradient to the field containing the values on quadrature points with component q_point
. Access to the same field as through get_gradient(). If applied before the function integrate
(...,true) is called, this specifies what is tested by all basis function gradients on the current cell and integrated over.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
void FEEvaluationAccess< 1, 1, Number, is_face >::submit_normal_derivative | ( | const value_type | grad_in, |
const unsigned int | q_point | ||
) |
Write a contribution that is tested by the gradient to the field containing the values on quadrature points with component q_point
. Access to the same field as through get_gradient() or get_normal_derivative(). If applied before the function integrate
(...,true) is called, this specifies what is tested by all basis function gradients on the current cell and integrated over.
void FEEvaluationAccess< 1, 1, Number, is_face >::submit_normal_derivative | ( | const gradient_type | grad_in, |
const unsigned int | q_point | ||
) |
Write a contribution that is tested by the gradient to the field containing the values on quadrature points with component q_point
. Access to the same field as through get_gradient() or get_normal_derivative(). If applied before the function integrate
(...,true) is called, this specifies what is tested by all basis function gradients on the current cell and integrated over.
Tensor<2, 1, VectorizedArray<Number> > FEEvaluationAccess< 1, 1, Number, is_face >::get_hessian | ( | unsigned int | q_point | ) | const |
Return the Hessian of a finite element function at quadrature point number q_point
after a call to evaluate
(...,true). If only the diagonal or even the trace of the Hessian, the Laplacian, is needed, use the other functions below.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
gradient_type FEEvaluationAccess< 1, 1, Number, is_face >::get_hessian_diagonal | ( | const unsigned int | q_point | ) | const |
Return the diagonal of the Hessian of a finite element function at quadrature point number q_point
after a call to evaluate
(...,true).
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
value_type FEEvaluationAccess< 1, 1, Number, is_face >::get_laplacian | ( | const unsigned int | q_point | ) | const |
Return the Laplacian (i.e., the trace of the Hessian) of a finite element function at quadrature point number q_point
after a call to evaluate
(...,true). Compared to the case when computing the full Hessian, some operations can be saved when only the Laplacian is requested.
Note that the derived class FEEvaluationAccess overloads this operation with specializations for the scalar case (n_components == 1) and for the vector-valued case (n_components == dim).
value_type FEEvaluationAccess< 1, 1, Number, is_face >::integrate_value | ( | ) | const |
Takes values on quadrature points, multiplies by the Jacobian determinant and quadrature weights (JxW) and sums the values for all quadrature points on the cell. The result is a scalar, representing the integral over the function over the cell. If a vector-element is used, the resulting components are still separated. Moreover, if vectorization is enabled, the integral values of several cells are contained in the slots of the returned VectorizedArray field.
|
protected |
Copy assignment operator