Amandus: Simulations based on multilevel Schwarz methods
Public Member Functions | Private Attributes | List of all members
ExactResidual< dim > Class Template Reference

#include <tests.h>

Inheritance diagram for ExactResidual< dim >:
Inheritance graph
[legend]
Collaboration diagram for ExactResidual< dim >:
Collaboration graph
[legend]

Public Member Functions

 ExactResidual (const AmandusApplicationSparse< dim > &application, AmandusIntegrator< dim > &integrator, const dealii::Function< dim > &exact_solution, unsigned int n_qpoints)
 
virtual void operator() (dealii::AnyData &out, const dealii::AnyData &in)
 
- Public Member Functions inherited from AmandusResidual< dim >
 AmandusResidual (const AmandusApplicationSparse< dim > &application, AmandusIntegrator< dim > &integrator)
 

Private Attributes

const dealii::Function< dim > * exact_solution
 
const dealii::QGauss< dim > quadrature
 
dealii::Vector< double > projection
 

Additional Inherited Members

- Protected Attributes inherited from AmandusResidual< dim >
dealii::SmartPointer< const AmandusApplicationSparse< dim >, AmandusResidual< dim > > application
 Pointer to the application computing the residual. More...
 
dealii::SmartPointer< AmandusIntegrator< dim >, AmandusResidual< dim > > integrator
 Pointer to the local integrator defining the model. More...
 

Detailed Description

template<int dim>
class ExactResidual< dim >

A residual operator which represents a given residual operator minus this residual operator applied to the exact solution. I.e. if an AmandusResidual represents the action

\[ u \mapsto F(u) \]

for the given integrator, then ExactResidual represents the action

\[ u \mapsto F(u) - F(u_0) \]

where \(u_0\) is the exact_solution.

This is useful for verifying that we can recover a given function from a combination of system integrator, residual integrator and linear solver with Newton's method (notice that the derivative of the new objective does not change, thus it is sufficient to adjust the residual operator used in Newton's method without changing the inverse_derivative operator).

Constructor & Destructor Documentation

template<int dim>
ExactResidual< dim >::ExactResidual ( const AmandusApplicationSparse< dim > &  application,
AmandusIntegrator< dim > &  integrator,
const dealii::Function< dim > &  exact_solution,
unsigned int  n_qpoints 
)
inline

Member Function Documentation

template<int dim>
virtual void ExactResidual< dim >::operator() ( dealii::AnyData &  out,
const dealii::AnyData &  in 
)
inlinevirtual

Apply the residual operator to the objects in in. Do this, by first calling AmandusIntegrator::extract_data() and then AmandusApplication::assemble_right_hand_side().

After assembling, the function checks for the element "Previous time" in in, which indicates a simple one-step method. If found, the vector of this element is subtracted from the result of the assembling.

Reimplemented from AmandusResidual< dim >.

Here is the call graph for this function:

Member Data Documentation

template<int dim>
const dealii::Function<dim>* ExactResidual< dim >::exact_solution
private
template<int dim>
dealii::Vector<double> ExactResidual< dim >::projection
private
template<int dim>
const dealii::QGauss<dim> ExactResidual< dim >::quadrature
private

The documentation for this class was generated from the following file: