SG++-Doxygen-Documentation
|
Defines a System that is used to solve parabolic partial differential equations. More...
#include <OperationParabolicPDESolverSystemDirichlet.hpp>
Public Member Functions | |
virtual sgpp::base::DataVector * | generateRHS () |
generates the right hand side of the system More... | |
virtual sgpp::base::DataVector * | getGridCoefficientsForCG () |
gets a pointer to the sparse grids coefficients used in the CG method to solve one timestep. More... | |
virtual void | mult (sgpp::base::DataVector &alpha, sgpp::base::DataVector &result) |
Multiplicates a vector with the matrix. More... | |
OperationParabolicPDESolverSystemDirichlet () | |
Constructor. More... | |
virtual | ~OperationParabolicPDESolverSystemDirichlet () |
Destructor. More... | |
Public Member Functions inherited from sgpp::solver::OperationParabolicPDESolverSystem | |
void | abortTimestep () |
aborts the current timestep execution More... | |
virtual void | coarsenAndRefine (bool isLastTimestep=false)=0 |
virtual void | finishTimestep ()=0 |
performs some action that might be needed after a timestep has be finished in the ODE Solver, e.g. More... | |
sgpp::base::Grid * | getGrid () |
get the pointer to the underlying grid object More... | |
sgpp::base::DataVector * | getGridCoefficients () |
gets a pointer to the sparse grids coefficients with evtl. More... | |
void | getGridCoefficientsForSC (sgpp::base::DataVector &Values) |
stores the values of the (dehierarchized) grid in the sgpp::base::DataVector Values used by time step size control methods More... | |
sgpp::base::GridStorage * | getGridStorage () |
std::string | getODESolver () |
Returns the specified ODE solver for this instance. More... | |
sgpp::base::GridStorage * | getOldGridStorage () |
sgpp::base::GridStorage * | getSecondGridStorage () |
size_t | getSumGridPointsComplete () |
Returns the number of average grid points for the complete grid. More... | |
size_t | getSumGridPointsInner () |
Returns the number of average grid points for the inner grid. More... | |
OperationParabolicPDESolverSystem () | |
Constructor. More... | |
void | saveAlpha () |
stores the current alpha_complete into alpha_complete_old to be available in the next timestep More... | |
void | setODESolver (std::string ode) |
defines the used ODE Solver for this instance, this is important because the implementation of mult and generateRHS depends on the used ODE solver More... | |
void | setTimestepSize (double newTimestepSize) |
set the size of the new timestep More... | |
virtual void | startTimestep ()=0 |
Implements some start jobs of every timestep, e.g.discounting boundaries. More... | |
virtual | ~OperationParabolicPDESolverSystem () |
Destructor. More... | |
Public Member Functions inherited from sgpp::base::OperationMatrix | |
OperationMatrix () | |
Constructor. More... | |
virtual | ~OperationMatrix () |
Destructor. More... | |
Protected Member Functions | |
virtual void | applyLOperatorComplete (sgpp::base::DataVector &alpha, sgpp::base::DataVector &result)=0 |
applies the PDE's system matrix, on complete grid - with boundaries More... | |
virtual void | applyLOperatorInner (sgpp::base::DataVector &alpha, sgpp::base::DataVector &result)=0 |
applies the PDE's system matrix, on inner grid only More... | |
virtual void | applyMassMatrixComplete (sgpp::base::DataVector &alpha, sgpp::base::DataVector &result)=0 |
applies the PDE's mass matrix, on complete grid - with boundaries More... | |
virtual void | applyMassMatrixInner (sgpp::base::DataVector &alpha, sgpp::base::DataVector &result)=0 |
applies the PDE's mass matrix, on inner grid only More... | |
Protected Attributes | |
sgpp::base::DataVector * | alpha_inner |
Pointer to the alphas (ansatzfunctions' coefficients; inner points only) More... | |
sgpp::base::DirichletUpdateVector * | BoundaryUpdate |
Routine to modify the boundaries/inner points of the grid. More... | |
sgpp::base::DirichletGridConverter * | GridConverter |
Class that allows a simple conversion between a grid with and a without boundary points. More... | |
sgpp::base::Grid * | InnerGrid |
Pointer to the inner grid object. More... | |
Protected Attributes inherited from sgpp::solver::OperationParabolicPDESolverSystem | |
sgpp::base::DataVector * | alpha_complete |
Pointer to the alphas (ansatzfunctions' coefficients) More... | |
sgpp::base::DataVector * | alpha_complete_old |
Pointer to the alphas from the last timestep, needed when using variable timestep sizes. More... | |
sgpp::base::DataVector * | alpha_complete_tmp |
Pointer to temporary alphas, needed when using variable timestep sizes. More... | |
bool | bnewODESolver |
checks whether a new ODE solver has been selected after creation More... | |
sgpp::base::Grid * | BoundGrid |
Pointer to the grid object. More... | |
size_t | numSumGridpointsComplete |
Stores number of average gridpoints, complete grid. More... | |
size_t | numSumGridpointsInner |
Stores number of average gridpoints, inner grid. More... | |
sgpp::base::GridStorage * | oldGridStorage |
Pointer to the grid from the last iteration. More... | |
sgpp::base::DataVector * | rhs |
sgpp::base::GridStorage * | secondGridStorage |
Pointer to the grid from the last aborted iteration. More... | |
double | TimestepSize |
the size of one timestep used in the ODE Solver More... | |
double | TimestepSize_old |
the size of the last timestep More... | |
std::string | tOperationMode |
specifies in which solver this matrix is used, valid values are: ExEul for explicit Euler ImEul for implicit Euler CrNic for Crank Nicolson solver More... | |
Defines a System that is used to solve parabolic partial differential equations.
So an instance of this class has to pass to any ODE Solver used in SGpp.
\(A \dot{u} = L \vec{u}\)
A: mass matrix L: space discretization (L-Operator)
This class defines an elliptic problem in every timestep which is solved using an iterative SLE solver, that solving step is integrated in the ODE Solver.
This class is a specialized version of OperationParabolicPDESolverSystem which exploit Dirichlet boundary conditions. Hence there are no degrees of freedom on on the boundaries the iterative solver (CG or BiCGSTAB) has only to take inner grid points into account.
sgpp::pde::OperationParabolicPDESolverSystemDirichlet::OperationParabolicPDESolverSystemDirichlet | ( | ) |
|
virtual |
Destructor.
|
protectedpure virtual |
applies the PDE's system matrix, on complete grid - with boundaries
alpha | the coefficients of the sparse grid's ansatzfunctions |
result | reference to the sgpp::base::DataVector into which the result is written |
Implemented in sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP.
Referenced by generateRHS().
|
protectedpure virtual |
applies the PDE's system matrix, on inner grid only
alpha | the coefficients of the sparse grid's ansatzfunctions |
result | reference to the sgpp::base::DataVector into which the result is written |
Implemented in sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP.
Referenced by mult().
|
protectedpure virtual |
applies the PDE's mass matrix, on complete grid - with boundaries
alpha | the coefficients of the sparse grid's ansatzfunctions |
result | reference to the sgpp::base::DataVector into which the result is written |
Implemented in sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP.
Referenced by generateRHS().
|
protectedpure virtual |
applies the PDE's mass matrix, on inner grid only
alpha | the coefficients of the sparse grid's ansatzfunctions |
result | reference to the sgpp::base::DataVector into which the result is written |
Implemented in sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP.
Referenced by mult().
|
virtual |
generates the right hand side of the system
Implements sgpp::solver::OperationParabolicPDESolverSystem.
Reimplemented in sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP.
References sgpp::solver::OperationParabolicPDESolverSystem::alpha_complete, sgpp::solver::OperationParabolicPDESolverSystem::alpha_complete_old, alpha_inner, applyLOperatorComplete(), applyMassMatrixComplete(), sgpp::base::HashGridStorage::begin(), BoundaryUpdate, sgpp::base::DirichletGridConverter::calcInnerCoefs(), sgpp::base::HashGridStorage::end(), sgpp::base::HashGridStorage::find(), sgpp::solver::OperationParabolicPDESolverSystem::getGridStorage(), sgpp::solver::OperationParabolicPDESolverSystem::getOldGridStorage(), sgpp::base::DataVector::getSize(), GridConverter, python.statsfileInfo::i, python.utils.statsfile2gnuplot::j, friedman::p, sgpp::solver::OperationParabolicPDESolverSystem::rhs, sgpp::base::DataVector::setAll(), sgpp::base::DirichletUpdateVector::setInnerPointsToZero(), sgpp::solver::OperationParabolicPDESolverSystem::startTimestep(), sgpp::solver::OperationParabolicPDESolverSystem::TimestepSize, sgpp::solver::OperationParabolicPDESolverSystem::TimestepSize_old, and sgpp::solver::OperationParabolicPDESolverSystem::tOperationMode.
Referenced by sgpp::pde::HeatEquationSolver::storeInnerRHS().
|
virtual |
gets a pointer to the sparse grids coefficients used in the CG method to solve one timestep.
This is useful because (direchlet) boundaries can be skipped when solving the system.
Implements sgpp::solver::OperationParabolicPDESolverSystem.
References sgpp::solver::OperationParabolicPDESolverSystem::alpha_complete, alpha_inner, sgpp::base::DirichletGridConverter::calcInnerCoefs(), and GridConverter.
Referenced by sgpp::pde::HeatEquationSolver::storeInnerSolution().
|
virtual |
Multiplicates a vector with the matrix.
alpha | sgpp::base::DataVector that contains the ansatzfunctions' coefficients |
result | sgpp::base::DataVector into which the result of the space discretization operation is stored |
Implements sgpp::solver::OperationParabolicPDESolverSystem.
Reimplemented in sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP.
References sgpp::base::DataVector::add(), applyLOperatorInner(), applyMassMatrixInner(), sgpp::base::DataVector::axpy(), sgpp::base::DataVector::getSize(), sgpp::base::DataVector::mult(), sgpp::base::DataVector::setAll(), sgpp::solver::OperationParabolicPDESolverSystem::TimestepSize, sgpp::solver::OperationParabolicPDESolverSystem::TimestepSize_old, and sgpp::solver::OperationParabolicPDESolverSystem::tOperationMode.
|
protected |
Pointer to the alphas (ansatzfunctions' coefficients; inner points only)
Referenced by sgpp::pde::HeatEquationParabolicPDESolverSystem::finishTimestep(), sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::finishTimestep(), sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::generateRHS(), generateRHS(), getGridCoefficientsForCG(), sgpp::pde::HeatEquationParabolicPDESolverSystem::HeatEquationParabolicPDESolverSystem(), sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::HeatEquationParabolicPDESolverSystemParallelOMP(), sgpp::pde::HeatEquationParabolicPDESolverSystem::~HeatEquationParabolicPDESolverSystem(), and sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::~HeatEquationParabolicPDESolverSystemParallelOMP().
|
protected |
Routine to modify the boundaries/inner points of the grid.
Referenced by sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::generateRHS(), generateRHS(), sgpp::pde::HeatEquationParabolicPDESolverSystem::HeatEquationParabolicPDESolverSystem(), sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::HeatEquationParabolicPDESolverSystemParallelOMP(), sgpp::pde::HeatEquationParabolicPDESolverSystem::~HeatEquationParabolicPDESolverSystem(), and sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::~HeatEquationParabolicPDESolverSystemParallelOMP().
|
protected |
Class that allows a simple conversion between a grid with and a without boundary points.
Referenced by sgpp::pde::HeatEquationParabolicPDESolverSystem::finishTimestep(), sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::finishTimestep(), sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::generateRHS(), generateRHS(), getGridCoefficientsForCG(), sgpp::pde::HeatEquationParabolicPDESolverSystem::HeatEquationParabolicPDESolverSystem(), sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::HeatEquationParabolicPDESolverSystemParallelOMP(), sgpp::pde::HeatEquationParabolicPDESolverSystem::~HeatEquationParabolicPDESolverSystem(), and sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::~HeatEquationParabolicPDESolverSystemParallelOMP().
|
protected |
Pointer to the inner grid object.
Referenced by sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::applyLOperatorComplete(), sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::applyLOperatorInner(), sgpp::pde::HeatEquationParabolicPDESolverSystem::HeatEquationParabolicPDESolverSystem(), sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::HeatEquationParabolicPDESolverSystemParallelOMP(), sgpp::pde::HeatEquationParabolicPDESolverSystem::~HeatEquationParabolicPDESolverSystem(), and sgpp::pde::HeatEquationParabolicPDESolverSystemParallelOMP::~HeatEquationParabolicPDESolverSystemParallelOMP().