![]() |
Reference documentation for deal.II version 9.0.0
|
#include <deal.II/fe/fe_series.h>
Public Member Functions | |
| Legendre (const unsigned int size_in_each_direction, const hp::FECollection< dim > &fe_collection, const hp::QCollection< dim > &q_collection) | |
| void | calculate (const ::Vector< double > &local_dof_values, const unsigned int cell_active_fe_index, Table< dim, double > &legendre_coefficients) |
Public Member Functions inherited from Subscriptor | |
| Subscriptor () | |
| Subscriptor (const Subscriptor &) | |
| Subscriptor (Subscriptor &&) noexcept | |
| virtual | ~Subscriptor () |
| Subscriptor & | operator= (const Subscriptor &) |
| Subscriptor & | operator= (Subscriptor &&) noexcept |
| void | subscribe (const char *identifier=nullptr) const |
| void | unsubscribe (const char *identifier=nullptr) const |
| unsigned int | n_subscriptions () const |
| void | list_subscribers () const |
| template<class Archive > | |
| void | serialize (Archive &ar, const unsigned int version) |
Private Member Functions | |
| void | ensure_existence (const unsigned int fe_index) |
Private Attributes | |
| const unsigned int | N |
| SmartPointer< const hp::FECollection< dim > > | fe_collection |
| SmartPointer< const hp::QCollection< dim > > | q_collection |
| std::vector< FullMatrix< double > > | legendre_transform_matrices |
| std::vector< double > | unrolled_coefficients |
Additional Inherited Members | |
Static Public Member Functions inherited from Subscriptor | |
| static ::ExceptionBase & | ExcInUse (int arg1, std::string arg2, std::string arg3) |
| static ::ExceptionBase & | ExcNoSubscriber (std::string arg1, std::string arg2) |
A class to calculate expansion of a scalar FE field into series of Legendre functions on a reference element.
Legendre functions are solutions to Legendre's differential equation
\[ \frac{d}{dx}\left([1-x^2] \frac{d}{dx} P_n(x)\right) + n[n+1] P_n(x) = 0 \]
and can be expressed using Rodrigues' formula
\[ P_n(x) = \frac{1}{2^n n!} \frac{d^n}{dx^n}[x^2-1]^n. \]
These polynomials are orthogonal with respect to the \( L^2 \) inner product on the interval \( [-1;1] \)
\[ \int_{-1}^1 P_m(x) P_n(x) = \frac{2}{2n + 1} \delta_{mn} \]
and are complete. A family of \( L^2 \)-orthogonal polynomials on \( [0;1] \) can be constructed via
\[ \widetilde P_m = \sqrt{2} P_m(2x-1). \]
An arbitrary scalar FE field on the reference element \( [0;1] \) can be expanded in the complete orthogonal basis as
\[ u(x) = \sum_{m} c_m \widetilde P_{m}(x). \]
From the orthogonality property of the basis, it follows that
\[ c_m = \frac{2m+1}{2} \int_0^1 u(x) \widetilde P_m(x) dx . \]
This class calculates coefficients \( c_{\bf k} \) using \( dim \)-dimensional Legendre polynomials constructed from \( \widetilde P_m(x) \) using tensor product rule.
Definition at line 188 of file fe_series.h.
| FESeries::Legendre< dim >::Legendre | ( | const unsigned int | size_in_each_direction, |
| const hp::FECollection< dim > & | fe_collection, | ||
| const hp::QCollection< dim > & | q_collection | ||
| ) |
A non-default constructor. The size_in_each_direction defines the number of coefficients in each direction, fe_collection is the hp::FECollection for which expansion will be used and q_collection is the hp::QCollection used to integrate the expansion for each FiniteElement in fe_collection.
Definition at line 245 of file fe_series.cc.
| void FESeries::Legendre< dim >::calculate | ( | const ::Vector< double > & | local_dof_values, |
| const unsigned int | cell_active_fe_index, | ||
| Table< dim, double > & | legendre_coefficients | ||
| ) |
Calculate legendre_coefficients of the cell vector field given by local_dof_values corresponding to FiniteElement with cell_active_fe_index .
Definition at line 259 of file fe_series.cc.
|
private |
Ensure that the transformation matrix for FiniteElement index fe_index is calculated. If not, calculate it.
|
private |
Number of coefficients in each direction
Definition at line 215 of file fe_series.h.
|
private |
hp::FECollection for which transformation matrices will be calculated.
Definition at line 220 of file fe_series.h.
|
private |
hp::QCollection used in calculation of transformation matrices.
Definition at line 225 of file fe_series.h.
|
private |
Transformation matrices for each FiniteElement.
Definition at line 236 of file fe_series.h.
|
private |
Auxiliary vector to store unrolled coefficients.
Definition at line 241 of file fe_series.h.
1.8.14