![]() |
Reference documentation for deal.II version 9.5.1
|
#include <deal.II/non_matching/fe_values.h>
Public Types | |
using | AdditionalData = typename QuadratureGenerator<dim>::AdditionalData |
Public Member Functions | |
template<class VectorType > | |
FEValues (const hp::FECollection< dim > &fe_collection, const Quadrature< 1 > &quadrature, const RegionUpdateFlags region_update_flags, const MeshClassifier< dim > &mesh_classifier, const DoFHandler< dim > &dof_handler, const VectorType &level_set, const AdditionalData &additional_data=AdditionalData()) | |
template<class VectorType > | |
FEValues (const hp::MappingCollection< dim > &mapping_collection, const hp::FECollection< dim > &fe_collection, const hp::QCollection< dim > &q_collection, const hp::QCollection< 1 > &q_collection_1d, const RegionUpdateFlags region_update_flags, const MeshClassifier< dim > &mesh_classifier, const DoFHandler< dim > &dof_handler, const VectorType &level_set, const AdditionalData &additional_data=AdditionalData()) | |
template<bool level_dof_access> | |
void | reinit (const TriaIterator< DoFCellAccessor< dim, dim, level_dof_access > > &cell) |
const std_cxx17::optional<::FEValues< dim > > & | get_inside_fe_values () const |
const std_cxx17::optional<::FEValues< dim > > & | get_outside_fe_values () const |
const std_cxx17::optional< FEImmersedSurfaceValues< dim > > & | get_surface_fe_values () const |
Private Member Functions | |
void | initialize (const hp::QCollection< dim > &q_collection) |
Private Attributes | |
const SmartPointer< const hp::MappingCollection< dim > > | mapping_collection |
const SmartPointer< const hp::FECollection< dim > > | fe_collection |
const hp::QCollection< 1 > | q_collection_1D |
LocationToLevelSet | current_cell_location |
unsigned int | active_fe_index |
const RegionUpdateFlags | region_update_flags |
const SmartPointer< const MeshClassifier< dim > > | mesh_classifier |
std::deque< std_cxx17::optional<::FEValues< dim > > > | fe_values_inside_full_quadrature |
std::deque< std_cxx17::optional<::FEValues< dim > > > | fe_values_outside_full_quadrature |
std_cxx17::optional<::FEValues< dim > > | fe_values_inside |
std_cxx17::optional<::FEValues< dim > > | fe_values_outside |
std_cxx17::optional< NonMatching::FEImmersedSurfaceValues< dim > > | fe_values_surface |
DiscreteQuadratureGenerator< dim > | quadrature_generator |
This class is intended to facilitate assembling in immersed (in the sense of cut) finite element methods when the domain is described by a level set function,
Thus we need quadrature rules for these 3 regions:
As in the QuadratureGenerator class, we refer to
Of course, it is somewhat expensive to generate the immersed quadrature rules and create FEValues objects with the generated quadratures. To reduce the amount of work, the reinit() function of this class uses the MeshClassifier passed to the constructor to check how the incoming cell relates to the level set function. It only generates the immersed quadrature rules if the cell is intersected. If the cell is completely inside or outside, it returns a cached FEValues object created with a quadrature over the reference cell:
Definition at line 144 of file fe_values.h.
using NonMatching::FEValues< dim >::AdditionalData = typename QuadratureGenerator<dim>::AdditionalData |
Definition at line 147 of file fe_values.h.
FEValues< dim >::FEValues | ( | const hp::FECollection< dim > & | fe_collection, |
const Quadrature< 1 > & | quadrature, | ||
const RegionUpdateFlags | region_update_flags, | ||
const MeshClassifier< dim > & | mesh_classifier, | ||
const DoFHandler< dim > & | dof_handler, | ||
const VectorType & | level_set, | ||
const AdditionalData & | additional_data = AdditionalData() ) |
Constructor.
fe_collection | Collection of FiniteElements to be used. |
quadrature | 1-dimensional quadrature rule used to generate the immersed quadrature rules. See the QuadratureGenerator class. On the non intersected elements a tensor product of this quadrature will be used. |
mesh_classifier | Object used to determine when the immersed quadrature rules need to be generated. |
region_update_flags | Struct storing UpdateFlags for the inside/outside/surface region of the cell. |
dof_handler | The DoFHandler associated with the discrete level set function. |
level_set | The degrees of freedom of the discrete level set function. |
additional_data | Additional data passed to the QuadratureGenerator class. |
fe_collection
, mesh_classifier
, dof_handler
, and level_set
are stored internally, so these need to have a longer life span than the instance of this class. Definition at line 49 of file fe_values.cc.
FEValues< dim >::FEValues | ( | const hp::MappingCollection< dim > & | mapping_collection, |
const hp::FECollection< dim > & | fe_collection, | ||
const hp::QCollection< dim > & | q_collection, | ||
const hp::QCollection< 1 > & | q_collection_1d, | ||
const RegionUpdateFlags | region_update_flags, | ||
const MeshClassifier< dim > & | mesh_classifier, | ||
const DoFHandler< dim > & | dof_handler, | ||
const VectorType & | level_set, | ||
const AdditionalData & | additional_data = AdditionalData() ) |
Constructor.
mapping_collection | Collection of Mappings to be used. |
fe_collection | Collection of FiniteElements to be used. |
q_collection | Collection of Quadrature rules over ![]() |
q_collection_1d | Collection of 1-dimensional quadrature rules used to generate the immersed quadrature rules. See the QuadratureGenerator class. |
mesh_classifier | Object used to determine when the immersed quadrature rules need to be generated. |
region_update_flags | Struct storing UpdateFlags for the inside/outside/surface region of the cell. |
dof_handler | The DoFHandler associated with the discrete level set function. |
level_set | The degrees of freedom of the discrete level set function. |
additional_data | Additional data passed to the QuadratureGenerator class. |
mapping_collection
, fe_collection
, mesh_classifier
, dof_handler
, and level_set
are stored internally, so these need to have a longer life span than the instance of this class. Definition at line 79 of file fe_values.cc.
void FEValues< dim >::reinit | ( | const TriaIterator< DoFCellAccessor< dim, dim, level_dof_access > > & | cell | ) |
Reinitialize the various FEValues-like objects for the 3 different regions of the cell. After calling this function an FEValues-like object can be retrieved for each region using the functions get_inside_fe_values(), get_outside_fe_values(), or get_surface_fe_values().
Definition at line 154 of file fe_values.cc.
const std_cxx17::optional<::FEValues< dim > > & FEValues< dim >::get_inside_fe_values | ( | ) | const |
Return an FEValues object reinitialized with a quadrature for the inside region of the cell:
Definition at line 241 of file fe_values.cc.
const std_cxx17::optional<::FEValues< dim > > & FEValues< dim >::get_outside_fe_values | ( | ) | const |
Return an FEValues object reinitialized with a quadrature for the outside region of the cell:
Definition at line 253 of file fe_values.cc.
const std_cxx17::optional< FEImmersedSurfaceValues< dim > > & FEValues< dim >::get_surface_fe_values | ( | ) | const |
Return an FEValues object reinitialized with a quadrature for the surface region of the cell:
Definition at line 265 of file fe_values.cc.
|
private |
Do work common to the constructors. The incoming QCollection should be quadratures integrating over
Definition at line 105 of file fe_values.cc.
|
private |
A pointer to the collection of mappings to be used.
Definition at line 273 of file fe_values.h.
|
private |
A pointer to the collection of finite elements to be used.
Definition at line 278 of file fe_values.h.
|
private |
Collection of 1-dimensional quadrature rules that are used by QuadratureGenerator as base for generating the immersed quadrature rules.
Definition at line 284 of file fe_values.h.
|
private |
Location of the last cell that reinit was called with.
Definition at line 289 of file fe_values.h.
|
private |
Active fe index of the last cell that reinit was called with.
Definition at line 294 of file fe_values.h.
|
private |
The update flags passed to the constructor.
Definition at line 299 of file fe_values.h.
|
private |
Pointer to the MeshClassifier passed to the constructor.
Definition at line 304 of file fe_values.h.
|
private |
For each element in the FECollection passed to the constructor, this object contains an FEValues object created with a quadrature rule over the full reference cell:
When LocationToLevelSet of the cell is INSIDE (and we do not need to generate an immersed quadrature), we return the FEValues object in this container corresponding to the cell's active_fe_index.
This container is a std::deque, which is compatible with the FEValues
class that does not have a copy-constructor.
Definition at line 320 of file fe_values.h.
|
private |
For each element in the FECollection passed to the constructor, this object contains an FEValues object created with a quadrature rule over the full reference cell:
When LocationToLevelSet of the cell is OUTSIDE (and we do not need to generate an immersed quadrature), we return the FEValues object in this container corresponding to the cell's active_fe_index.
This container is a std::deque, which is compatible with the FEValues
class that does not have a copy-constructor.
Definition at line 336 of file fe_values.h.
|
private |
FEValues object created with a quadrature rule integrating over the inside region,
Definition at line 345 of file fe_values.h.
|
private |
FEValues object created with a quadrature rule integrating over the outside region,
Definition at line 354 of file fe_values.h.
|
private |
FEImmersedSurfaceValues object created with a quadrature rule integrating over the surface region,
Definition at line 364 of file fe_values.h.
|
private |
Object that generates the immersed quadrature rules.
Definition at line 369 of file fe_values.h.