This class permits the access of a subset of indexed fields and gives an error if any non-allowed fields are requested.
More...
|
| | FieldContainer (const std::vector< FieldAttributes > &_field_attributes, const SolutionIndexer< dim, number > &_solution_indexer, unsigned int _relative_level, const DependencyMap &dependency_map, const SolveBlock &_solve_block, const MatrixFree< dim, number > &matrix_free) |
| | Constructor.
|
| |
| void | reinit (unsigned int cell) |
| | Initialize based on cell for all dependencies.
|
| |
| void | eval (const BlockVector< number > *src_solutions, bool plain) |
| | Read solution vector, and evaluate based on dependency flags for all dependencies.
|
| |
| void | reinit_and_eval (unsigned int cell, const BlockVector< number > *src_solutions, bool plain) |
| | Initialize based on cell, read solution vector, and evaluate based on dependency flags for all dependencies.
|
| |
| void | eval_without_read () |
| | Evaluate src to quad pts based on dependency flags. Assume feeval has local dof values already.
|
| |
| void | integrate () |
| | Integrate the values.
|
| |
| void | distribute (BlockVector< number > *dst_solutions) |
| | Distribute the integrated values to a solution vector.
|
| |
| void | distribute (unsigned int field_index, BlockVector< number > *dst_solutions) |
| | Distribute the integrated values to a solution vector for one field.
|
| |
| void | integrate_and_distribute (BlockVector< number > *dst_solutions) |
| | Integrate the values and distribute from local to global.
|
| |
| void | set_q_point (unsigned int q) |
| | Set the current quadrature point.
|
| |
| template<TensorRank Rank, DependencyType type> |
| Value< Rank > | get_value (Types::Index field_index) const |
| | Return the value of the specified field.
|
| |
| template<TensorRank Rank> |
| Value< Rank > | get_value (Types::Index field_index, DependencyType type) const |
| | Return the value of the specified field.
|
| |
| template<TensorRank Rank, DependencyType type> |
| Gradient< Rank > | get_gradient (Types::Index field_index) const |
| | Return the gradient of the specified field.
|
| |
| template<TensorRank Rank> |
| Gradient< Rank > | get_gradient (Types::Index field_index, DependencyType type) const |
| | Return the gradient of the specified field.
|
| |
| template<TensorRank Rank, DependencyType type> |
| Hessian< Rank > | get_hessian (Types::Index field_index) const |
| | Return the hessian of the specified field.
|
| |
| template<TensorRank Rank> |
| Hessian< Rank > | get_hessian (Types::Index field_index, DependencyType type) const |
| | Return the hessian of the specified field.
|
| |
| template<TensorRank Rank, DependencyType type> |
| Gradient< Rank > | get_hessian_diagonal (Types::Index field_index) const |
| | Return the diagonal of the hessian of the specified field.
|
| |
| template<TensorRank Rank> |
| Gradient< Rank > | get_hessian_diagonal (Types::Index field_index, DependencyType type) const |
| | Return the diagonal of the hessian of the specified field.
|
| |
| template<TensorRank Rank, DependencyType type> |
| Value< Rank > | get_laplacian (Types::Index field_index) const |
| | Return the laplacian of the specified field.
|
| |
| template<TensorRank Rank> |
| Value< Rank > | get_laplacian (Types::Index field_index, DependencyType type) const |
| | Return the laplacian of the specified field.
|
| |
| template<TensorRank Rank, DependencyType type> |
| ScalarValue | get_divergence (Types::Index field_index) const |
| | Return the divergence of the specified field.
|
| |
| template<TensorRank Rank> |
| ScalarValue | get_divergence (Types::Index field_index, DependencyType type) const |
| | Return the divergence of the specified field.
|
| |
| template<TensorRank Rank, DependencyType type> |
| dealii::SymmetricTensor< 2, dim, ScalarValue > | get_symmetric_gradient (Types::Index field_index) const |
| | Return the symmetric gradient of the specified field.
|
| |
| template<TensorRank Rank> |
| dealii::SymmetricTensor< 2, dim, ScalarValue > | get_symmetric_gradient (Types::Index field_index, DependencyType type) const |
| | Return the symmetric gradient of the specified field.
|
| |
| template<TensorRank Rank, DependencyType type> |
| dealii::Tensor< 1,(dim==2 ? 1 :dim), ScalarValue > | get_curl (Types::Index field_index) const |
| | Return the curl of the specified field.
|
| |
| template<TensorRank Rank> |
| dealii::Tensor< 1,(dim==2 ? 1 :dim), ScalarValue > | get_curl (Types::Index field_index, DependencyType type) const |
| | Return the curl of the specified field.
|
| |
| dealii::Point< dim, ScalarValue > | get_q_point_location () const |
| | Return the quadrature point location.
|
| |
| ScalarValue | get_element_volume () const |
| | Return the quadrature point location.
|
| |
| unsigned int | get_n_q_points () const |
| | Return the number of quadrature points.
|
| |
| template<typename ValType> |
| void | set_value_term (Types::Index field_index, const ValType &val) |
| | Set the value of the specified scalar/vector field.
|
| |
| template<typename GradType> |
| void | set_gradient_term (Types::Index field_index, const GradType &val) |
| | Set the gradient of the specified scalar/vector field.
|
| |
| template<typename ValType> |
| void | get_dof_value_to (ValType &destination, Types::Index field_index, unsigned int dof_index) |
| | Get the dof values directly from a node.
|
| |
| template<typename ValType> |
| void | submit_dof_value (Types::Index field_index, const ValType &val, unsigned int dof_index) |
| | Set the dof values directly at a node.
|
| |
| template<TensorRank Rank, DependencyType type> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template Value< Rank > | get_value (Types::Index field_index) const |
| |
| template<TensorRank Rank> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template Value< Rank > | get_value (Types::Index field_index, DependencyType type) const |
| |
| template<TensorRank Rank, DependencyType type> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template Gradient< Rank > | get_gradient (Types::Index field_index) const |
| |
| template<TensorRank Rank> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template Gradient< Rank > | get_gradient (Types::Index field_index, DependencyType type) const |
| |
| template<TensorRank Rank, DependencyType type> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template Hessian< Rank > | get_hessian (Types::Index field_index) const |
| |
| template<TensorRank Rank> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template Hessian< Rank > | get_hessian (Types::Index field_index, DependencyType type) const |
| |
| template<TensorRank Rank, DependencyType type> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template Gradient< Rank > | get_hessian_diagonal (Types::Index field_index) const |
| |
| template<TensorRank Rank> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template Gradient< Rank > | get_hessian_diagonal (Types::Index field_index, DependencyType type) const |
| |
| template<TensorRank Rank, DependencyType type> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template Value< Rank > | get_laplacian (Types::Index field_index) const |
| |
| template<TensorRank Rank> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template Value< Rank > | get_laplacian (Types::Index field_index, DependencyType type) const |
| |
| template<TensorRank Rank, DependencyType type> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::ScalarValue | get_divergence (Types::Index field_index) const |
| |
| template<TensorRank Rank> |
| DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::ScalarValue | get_divergence (Types::Index field_index, DependencyType type) const |
| |
| template<TensorRank Rank, DependencyType type> |
| DEAL_II_ALWAYS_INLINE dealii::SymmetricTensor< 2, dim, typename FieldContainer< dim, degree, number >::ScalarValue > | get_symmetric_gradient (Types::Index field_index) const |
| |
| template<TensorRank Rank> |
| DEAL_II_ALWAYS_INLINE dealii::SymmetricTensor< 2, dim, typename FieldContainer< dim, degree, number >::ScalarValue > | get_symmetric_gradient (Types::Index field_index, DependencyType type) const |
| |
| template<TensorRank Rank, DependencyType type> |
| DEAL_II_ALWAYS_INLINE dealii::Tensor< 1,(dim==2 ? 1 :dim), typename FieldContainer< dim, degree, number >::ScalarValue > | get_curl (Types::Index field_index) const |
| |
| template<TensorRank Rank> |
| DEAL_II_ALWAYS_INLINE dealii::Tensor< 1,(dim==2 ? 1 :dim), typename FieldContainer< dim, degree, number >::ScalarValue > | get_curl (Types::Index field_index, DependencyType type) const |
| |
| template<typename ValType> |
| DEAL_II_ALWAYS_INLINE void | set_value_term (Types::Index field_index, const ValType &val) |
| |
| template<typename GradType> |
| DEAL_II_ALWAYS_INLINE void | set_gradient_term (Types::Index field_index, const GradType &val) |
| |
| template<typename ValType> |
| DEAL_II_ALWAYS_INLINE void | get_dof_value_to (ValType &destination, Types::Index field_index, unsigned int dof_index) |
| |
| template<typename ValType> |
| DEAL_II_ALWAYS_INLINE void | submit_dof_value (Types::Index field_index, const ValType &val, unsigned int dof_index) |
| |
| template<TensorRank Rank> |
| DEAL_II_ALWAYS_INLINE std::vector< typename FieldContainer< dim, degree, number >::template FEEValuationDeps< Rank > > & | get_relevant_feeval_vector () |
| |
| template<TensorRank Rank> |
| DEAL_II_ALWAYS_INLINE const std::vector< typename FieldContainer< dim, degree, number >::template FEEValuationDeps< Rank > > & | get_relevant_feeval_vector () const |
| |
template<unsigned int dim, unsigned int degree, typename number>
class FieldContainer< dim, degree, number >
This class permits the access of a subset of indexed fields and gives an error if any non-allowed fields are requested.
- Template Parameters
-
| dim | The number of dimensions in the problem. |
| degree | The polynomial degree of the shape functions. |
| number | Datatype to use for dealii::VectorizedArray<number>. Either double or float. |
Importantly, this class is mostly a wrapper for the dealii::FEEvaluation class, which allows for the evaluation of functions at quadrature points and cell integrations (basically the backbone of the FEM solver). As such, it is one of the most important classes when it comes to performance because these functions are called millions of times.