[P]arallel [Hi]gh-order [Li]brary for [P]DEs
Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
|
Isotropic element class. More...
#include <field.h>
Public Member Functions | |
real & | scale () override |
Reference for element size. More... | |
void | set_scale (const real val) override |
Set the scale for the element. | |
real | get_scale () const override |
Get the scale for the element. | |
void | set_anisotropic_ratio (const std::array< real, dim > &ratio) override |
Set the anisotropic ratio for each reference axis. More... | |
std::array< real, dim > | get_anisotropic_ratio () override |
Get the anisotropic ratio of each reference axis as an array. More... | |
real | get_anisotropic_ratio (const unsigned int j) override |
Get the anisotropic ratio corresponding to the \(j^{th}\) reference axis. More... | |
void | set_unit_axis (const std::array< dealii::Tensor< 1, dim, real >, dim > &unit_axis) override |
Set the unit axes of the element. More... | |
std::array< dealii::Tensor< 1, dim, real >, dim > | get_unit_axis () override |
Get unit axis directions as an array. | |
dealii::Tensor< 1, dim, real > | get_unit_axis (const unsigned int j) override |
Get the \(j^{th}\) reference axis. | |
void | set_axis (const std::array< dealii::Tensor< 1, dim, real >, dim > &axis) override |
Set the scaled local frame axes based on vector set (length and direction) More... | |
std::array< dealii::Tensor< 1, dim, real >, dim > | get_axis () override |
Get the array of axes of the local frame field \((v_1,v_2,v_3)\). | |
dealii::Tensor< 1, dim, real > | get_axis (const unsigned int j) override |
Get the vector corresponding to the \(j^{th}\) frame axis \(v_j\). | |
dealii::Tensor< 2, dim, real > | get_metric () override |
Get metric matrix at point describing mapping from reference element. More... | |
dealii::Tensor< 2, dim, real > | get_inverse_metric () override |
Get inverse metric matrix for the reference element. More... | |
void | set_anisotropy (const std::array< real, dim > &derivative_value, const std::array< dealii::Tensor< 1, dim, real >, dim > &derivative_direction, const unsigned int order) override |
Set anisotropy from reconstructed directional derivatives. More... | |
void | apply_anisotropic_limit (const real anisotropic_ratio_min, const real anisotropic_ratio_max) |
Limits the anisotropic ratios to a given bandwidth. More... | |
![]() | |
virtual | ~Element ()=default |
Destructor. | |
template<typename DoFCellAccessorType > | |
void | set_cell (const DoFCellAccessorType &cell) |
Set the Element based on the input cell (from current mesh) More... | |
Protected Member Functions | |
void | set_cell_internal (const typename Element< dim, real >::VertexList &vertices) override |
Set element to match geometry of input vertex set. More... | |
![]() | |
ChordList | get_chord_list (const VertexList &vertices) |
Get the chord list from an input set of vertices. | |
virtual void | set_cell_internal (const VertexList &vertices)=0 |
Set element to match geometry of input vertex set. More... | |
Private Attributes | |
real | m_scale |
element size | |
Friends | |
std::ostream & | operator<< (std::ostream &os, const ElementIsotropic< dim, real > &element) |
Write properties of element to ostream. More... | |
Additional Inherited Members | |
![]() | |
using | VertexList = std::array< dealii::Tensor< 1, dim, real >, dealii::GeometryInfo< dim >::vertices_per_cell > |
Type alias for array of vertex coordinates for element. | |
using | ChordList = std::array< dealii::Tensor< 1, dim, real >, dim > |
Type alias for array of chord veectors (face center to face center) in Deal.II ordering. | |
Isotropic element class.
Specialization of the element type for the isotropic remeshing case. Contains only the scale of local element (size field) . A collection of elements is contained in the corresponding Field class. Note: virtual functions controlling axes or anisotropic ratio do nothing, assert(0).
|
virtual |
Limits the anisotropic ratios to a given bandwidth.
First finds ratio above max, redistributes length change to maintain constant volume and scale. Then the process is repeated with a lower bound. Note: does nothing in the isotropic case.
Implements PHiLiP::GridRefinement::Element< dim, real >.
|
overridevirtual |
Get the anisotropic ratio of each reference axis as an array.
Note: equals 1 for each axis in isotropic case.
Implements PHiLiP::GridRefinement::Element< dim, real >.
|
overridevirtual |
Get the anisotropic ratio corresponding to the \(j^{th}\) reference axis.
Note: equals 1 for each axis in isotropic case.
Implements PHiLiP::GridRefinement::Element< dim, real >.
|
overridevirtual |
Get inverse metric matrix for the reference element.
In 2D orthogonal case, \(V = 1/h * \mathrm{diag}{\rho,1/\rho} * R(-\theta)\).
Implements PHiLiP::GridRefinement::Element< dim, real >.
|
overridevirtual |
Get metric matrix at point describing mapping from reference element.
In 2D orthorgonal case, \(V = [v,w] = h * R(\theta) * \mathrm{diag}{\rho,1/\rho}\). Under transformation, order of axes is maintained with \((i,j,k)\) vectors mapping to \((v_1,v_2,v_3)\)
Implements PHiLiP::GridRefinement::Element< dim, real >.
|
overridevirtual |
Reference for element size.
Allows direct read/write of scale of mean element axis. Measure of element (length, area, volume) will be \(scale^{dim}\)
Implements PHiLiP::GridRefinement::Element< dim, real >.
|
overridevirtual |
Set the anisotropic ratio for each reference axis.
Requires array of order matching axis definition. Each reference axis will have length \(l = \alpha * scale\). Note: does nothing in the isotropic case.
Implements PHiLiP::GridRefinement::Element< dim, real >.
|
overridevirtual |
Set anisotropy from reconstructed directional derivatives.
Based on Dolejsi's method for simplices, uses values obtained from reconstructed polynomial on neighbouring cell patch.
Implements PHiLiP::GridRefinement::Element< dim, real >.
|
overridevirtual |
Set the scaled local frame axes based on vector set (length and direction)
Describe the axes of reference parrelogram or parrelopiped at point. Note: does nothing in the isotropic case.
Implements PHiLiP::GridRefinement::Element< dim, real >.
|
overrideprotected |
Set element to match geometry of input vertex set.
Vertices describe the tensor product element in Deal.II ordering. Internal function used in handling of set_cell().
|
overridevirtual |
Set the unit axes of the element.
Requires an ordered array of dealii::Tensor with vector axes. If none unit values are provided, will be rescaled and factored in to anisotropic ratios. Note: does nothing in the isotropic case.
Implements PHiLiP::GridRefinement::Element< dim, real >.
|
friend |