Amandus: Simulations based on multilevel Schwarz methods
|
#include <polynomial.h>
Public Member Functions | |
PolynomialError (const Polynomials::Polynomial< double > curl_potential_1d, const Polynomials::Polynomial< double > grad_potential_1d) | |
virtual void | cell (DoFInfo< dim > &dinfo, IntegrationInfo< dim > &info) const |
virtual void | boundary (DoFInfo< dim > &dinfo, IntegrationInfo< dim > &info) const |
virtual void | face (DoFInfo< dim > &dinfo1, DoFInfo< dim > &dinfo2, IntegrationInfo< dim > &info1, IntegrationInfo< dim > &info2) const |
Public Member Functions inherited from AmandusIntegrator< dim > | |
AmandusIntegrator () | |
virtual void | extract_data (const dealii::AnyData &data) |
Extract data independent of the cell. More... | |
unsigned int | n_errors () const |
unsigned int | error_type (unsigned int i) const |
std::string | error_name (unsigned int i) const |
dealii::UpdateFlags | update_flags () const |
Returns the update flags to be used. More... | |
dealii::UpdateFlags | update_flags_face () const |
Returns the update flags to be used on boundary and interior faces. More... | |
void | add_flags (const dealii::UpdateFlags flags) |
Add update flags on all objects. More... | |
void | add_flags_face (const dealii::UpdateFlags flags) |
Add update flags on boundary and internal faces. More... | |
Private Attributes | |
Polynomials::Polynomial< double > | curl_potential_1d |
Polynomials::Polynomial< double > | grad_potential_1d |
Additional Inherited Members | |
Public Attributes inherited from AmandusIntegrator< dim > | |
double | timestep |
Current timestep if applicable. More... | |
dealii::SmartPointer< dealii::Quadrature< dim > > | cell_quadrature |
Quadrature rule used on cells. More... | |
dealii::SmartPointer< dealii::Quadrature< dim-1 > > | boundary_quadrature |
Quadrature rule used on boundary faces. More... | |
dealii::SmartPointer< dealii::Quadrature< dim-1 > > | face_quadrature |
Quadrature rule used on faces. More... | |
Protected Attributes inherited from AmandusIntegrator< dim > | |
std::vector< unsigned int > | error_types |
std::vector< std::string > | error_names |
Computes the error between a numerical solution and a known exact polynomial solution of a Stokes problem.
For two dimensions, the two constructor arguments are two one-dimensional polynomials \(\psi(t)\) and \(\phi(t)\). The solution to such the Stokes problem is then determined as
\begin{alignat*}{2} \mathbf u &= \nabla\times \Psi \qquad\qquad & \Psi((x_1,\ldots,x_d) &= \prod \psi(x_i) \\ p &= \Phi & \Phi((x_1,\ldots,x_d) &= \prod \phi(x_i) \end{alignat*}
The according right hand sides of the Stokes equations and the residuals are integrated by the functions of the classes PolynomialRHS and PolynomialResidual.
If computing on a square, say \([-1,1]^2\), the boundary conditions of the Stokes problem are determined as follows: if \(\psi(-1)=\psi(1)=0\), the velocity has the boundary condition \(\mathbf u\cdot \mathbf n=0\) (slip). If in addition \(\psi'(-1)=\psi'(1)=0\), then there holds on the boundary \(\mathbf u=0\) (no-slip).
StokesIntegrators::PolynomialError< dim >::PolynomialError | ( | const Polynomials::Polynomial< double > | curl_potential_1d, |
const Polynomials::Polynomial< double > | grad_potential_1d | ||
) |
|
virtual |
|
virtual |
|
virtual |
|
private |
|
private |