SG++-Doxygen-Documentation
|
This class provides a simple-to-use solver of the multi dimensional Poisson Equation on Sparse Grids. More...
#include <PoissonEquationSolver.hpp>
Public Member Functions | |
void | constructGrid (sgpp::base::BoundingBox &myBoundingBox, size_t level) |
Use this routine the construct a regular grid to solve a PDE. More... | |
void | initGridWithExpHeat (sgpp::base::DataVector &alpha, double factor=1.0) |
Inits the grid with a heat distribution based on the e-function. More... | |
void | initGridWithExpHeatFullDomain (sgpp::base::DataVector &alpha, double factor=1.0) |
Inits the grid with a heat distribution based on the e-function. More... | |
void | initGridWithSmoothHeat (sgpp::base::DataVector &alpha, double mu, double sigma, double factor) |
Inits the grid with a smooth heat distribution (based on a std-normal distribution) on its boundaries. More... | |
void | initGridWithSmoothHeatFullDomain (sgpp::base::DataVector &alpha, double mu, double sigma, double factor) |
Inits the grid with a smooth heat distribution (based on a std-normal distribution) on its boundaries. More... | |
void | initScreen () |
Inits the screen object. More... | |
PoissonEquationSolver () | |
Std-Constructor of the solver. More... | |
void | solvePDE (sgpp::base::DataVector &alpha, sgpp::base::DataVector &rhs, size_t maxCGIterations, double epsilonCG, bool verbose=false) |
abstract method to solve an elliptic PDE. More... | |
void | storeInnerRHS (sgpp::base::DataVector &alpha, std::string tFilename) |
Routine to export the RHS of the inner system which has to be solved in order to solve the Poisson equation. More... | |
void | storeInnerSolution (sgpp::base::DataVector &alpha, size_t maxCGIterations, double epsilonCG, std::string tFilename) |
Routine to export the solution of the inner system which has been calculated by Up/Down scheme. More... | |
virtual | ~PoissonEquationSolver () |
Std-Destructor of the solver. More... | |
Public Member Functions inherited from sgpp::pde::EllipticPDESolver | |
EllipticPDESolver () | |
Std-Constructor of the solver. More... | |
virtual | ~EllipticPDESolver () |
Std-Destructor of the solver. More... | |
Public Member Functions inherited from sgpp::pde::PDESolver | |
void | coarsenInitialGridSurplus (sgpp::base::DataVector &alpha, double dThreshold) |
Coarsens a grid by taking the grid's coefficients into account. More... | |
void | deleteGrid () |
deletes the grid created within that solver More... | |
void | evaluateCuboid (sgpp::base::DataVector &alpha, sgpp::base::DataVector &FunctionValues, sgpp::base::DataMatrix &EvaluationPoints) |
Evaluates the sparse grid's function given by the stored grid and the alpha coefficients. More... | |
double | evaluatePoint (sgpp::base::DataVector &evalPoint, sgpp::base::DataVector &alpha) |
Determines the value of the function in the d-dimensional space. More... | |
std::string | getGrid () const |
gets the a string the describes the grid which is currently used to solve More... | |
size_t | getNumberDimensions () const |
use this the determine the number of dimensions that are currently used in the solver. More... | |
size_t | getNumberGridPoints () const |
use this to determine the number of grid points, used to solve the current problem More... | |
size_t | getNumberInnerGridPoints () const |
use this to determine the number of inner grid points, used to solve the current problem More... | |
PDESolver () | |
Std-Constructor of the solver. More... | |
virtual void | printGrid (sgpp::base::DataVector &alpha, size_t PointesPerDimension, std::string tfilename) const |
This is some kind of debug functionality. More... | |
virtual void | printGridDomain (sgpp::base::DataVector &alpha, size_t PointesPerDimension, sgpp::base::BoundingBox &GridArea, std::string tfilename) const |
This is some kind of debug functionality. More... | |
virtual void | printLevelIndexGrid (std::string tfilename) const |
Prints the level,index pairs of the grid for each Gridpoint to a file. More... | |
virtual void | printSparseGrid (sgpp::base::DataVector &alpha, std::string tfilename, bool bSurplus) const |
Prints the sgpp::base::Grid Points of the Sparse sgpp::base::Grid either with their node basis value or their hierarchical surplus. More... | |
virtual void | printSparseGridExpTransform (sgpp::base::DataVector &alpha, std::string tfilename, bool bSurplus) const |
Prints the sgpp::base::Grid Points of the Sparse sgpp::base::Grid either with their node basis value or their hierarchical surplus. More... | |
void | refineInitialGridSurplus (sgpp::base::DataVector &alpha, int numRefinePoints, double dThreshold) |
Refines a grid by taking the grid's coefficients into account. More... | |
void | refineInitialGridSurplusSubDomain (sgpp::base::DataVector &alpha, int numRefinePoints, double dThreshold, std::vector< double > &norm_mu, std::vector< double > &norm_sigma) |
Refines a grid by taking the grid's coefficients into account. More... | |
void | refineInitialGridSurplusToMaxLevel (sgpp::base::DataVector &alpha, double dThreshold, sgpp::base::level_t maxLevel) |
Refines a grid by taking the grid's coefficients into account. More... | |
void | refineInitialGridSurplusToMaxLevelSubDomain (sgpp::base::DataVector &alpha, double dThreshold, sgpp::base::level_t maxLevel, std::vector< double > &norm_mu, std::vector< double > &norm_sigma) |
Refines a grid by taking the grid's coefficients into account. More... | |
void | setGrid (const std::string &serializedGrid) |
Sets the grid used in this BlackScholes Solver by an given serialized string of the grid. More... | |
virtual | ~PDESolver () |
Std-Destructor of the solver. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from sgpp::pde::PDESolver | |
virtual void | getGridNormalDistribution (sgpp::base::DataVector &alpha, std::vector< double > &norm_mu, std::vector< double > &norm_sigma) |
This function calculates for every grid point the value of a normal distribution given by norm_mu and norm_sigma. More... | |
Protected Attributes inherited from sgpp::pde::PDESolver | |
bool | bGridConstructed |
stores if the grid was created inside the solver More... | |
size_t | dim |
the dimension of the grid More... | |
int | levels |
the number of levels used for an regular grid More... | |
sgpp::base::BoundingBox * | myBoundingBox |
Stores Pointer to the sgpp::base::Grid's Bounding Box. More... | |
sgpp::base::Grid * | myGrid |
The Sparse sgpp::base::Grid needed in this classificator. More... | |
sgpp::base::GridStorage * | myGridStorage |
Stores Pointer to the Girs's Storage. More... | |
This class provides a simple-to-use solver of the multi dimensional Poisson Equation on Sparse Grids.
The class's aim is, to hide all complex details of solving the Poisson Equation on Sparse Grids!
sgpp::pde::PoissonEquationSolver::PoissonEquationSolver | ( | ) |
Std-Constructor of the solver.
References sgpp::pde::PDESolver::bGridConstructed.
|
virtual |
Std-Destructor of the solver.
|
virtual |
Use this routine the construct a regular grid to solve a PDE.
myBoundingBox | reference to a bounding box that describes the grid |
level | number of the regular's grid levels |
Implements sgpp::pde::PDESolver.
References sgpp::pde::PDESolver::bGridConstructed, sgpp::pde::PDESolver::dim, sgpp::base::Grid::getBoundingBox(), sgpp::base::BoundingBox::getDimension(), sgpp::base::Grid::getGenerator(), sgpp::base::Grid::getStorage(), level, sgpp::pde::PDESolver::levels, sgpp::pde::PDESolver::myBoundingBox, sgpp::pde::PDESolver::myGrid, sgpp::pde::PDESolver::myGridStorage, and sgpp::base::GridGenerator::regular().
void sgpp::pde::PoissonEquationSolver::initGridWithExpHeat | ( | sgpp::base::DataVector & | alpha, |
double | factor = 1.0 |
||
) |
Inits the grid with a heat distribution based on the e-function.
The e-function is shifted in that way the right boundary values becomes 1 (in case of factor = 1)
alpha | reference to the coefficient's vector |
factor | a constant factor used to enlarge the exp-functions input parameter |
References sgpp::pde::PDESolver::bGridConstructed, sgpp::op_factory::createOperationHierarchisation(), sgpp::pde::PDESolver::dim, sgpp::base::OperationHierarchisation::doHierarchisation(), sgpp::base::BoundingBox::getBoundary(), sgpp::base::Grid::getBoundingBox(), sgpp::base::HashGridStorage::getCoordinates(), sgpp::base::HashGridStorage::getPoint(), sgpp::base::Grid::getSize(), python.statsfileInfo::i, python.utils.statsfile2gnuplot::j, sgpp::base::BoundingBox1D::leftBoundary, sgpp::pde::PDESolver::myBoundingBox, sgpp::pde::PDESolver::myGrid, sgpp::pde::PDESolver::myGridStorage, sgpp::base::BoundingBox1D::rightBoundary, and analyse_erg::tmp.
void sgpp::pde::PoissonEquationSolver::initGridWithExpHeatFullDomain | ( | sgpp::base::DataVector & | alpha, |
double | factor = 1.0 |
||
) |
Inits the grid with a heat distribution based on the e-function.
The e-function is shifted in that way the right boundary values becomes 1 (in case of factor = 1)
alpha | reference to the coefficient's vector |
factor | a constant factor used to enlarge the exp-functions input parameter |
References sgpp::pde::PDESolver::bGridConstructed, sgpp::op_factory::createOperationHierarchisation(), sgpp::pde::PDESolver::dim, sgpp::base::OperationHierarchisation::doHierarchisation(), sgpp::base::BoundingBox::getBoundary(), sgpp::base::Grid::getBoundingBox(), sgpp::base::HashGridStorage::getCoordinates(), sgpp::base::HashGridStorage::getPoint(), sgpp::base::Grid::getSize(), python.statsfileInfo::i, python.utils.statsfile2gnuplot::j, sgpp::pde::PDESolver::myGrid, sgpp::pde::PDESolver::myGridStorage, and analyse_erg::tmp.
void sgpp::pde::PoissonEquationSolver::initGridWithSmoothHeat | ( | sgpp::base::DataVector & | alpha, |
double | mu, | ||
double | sigma, | ||
double | factor | ||
) |
Inits the grid with a smooth heat distribution (based on a std-normal distribution) on its boundaries.
Coefficients of inner grid points are set to zero since an elliptical PDE is solved
alpha | reference to the coefficients vector |
mu | the exspected value of the normal distribution |
sigma | the sigma of the normal distribution |
factor | a factor that is used to stretch the function values |
References sgpp::pde::PDESolver::bGridConstructed, sgpp::op_factory::createOperationHierarchisation(), sgpp::pde::PDESolver::dim, sgpp::base::OperationHierarchisation::doHierarchisation(), sgpp::base::BoundingBox::getBoundary(), sgpp::base::HashGridStorage::getCoordinates(), sgpp::base::HashGridStorage::getPoint(), sgpp::base::Grid::getSize(), python.statsfileInfo::i, python.utils.statsfile2gnuplot::j, sgpp::base::BoundingBox1D::leftBoundary, mu, sgpp::pde::PDESolver::myBoundingBox, sgpp::pde::PDESolver::myGrid, sgpp::pde::PDESolver::myGridStorage, sgpp::base::BoundingBox1D::rightBoundary, and analyse_erg::tmp.
void sgpp::pde::PoissonEquationSolver::initGridWithSmoothHeatFullDomain | ( | sgpp::base::DataVector & | alpha, |
double | mu, | ||
double | sigma, | ||
double | factor | ||
) |
Inits the grid with a smooth heat distribution (based on a std-normal distribution) on its boundaries.
Coefficients of inner grid points aren't set to zero since they are used to hint an adaptive refinement of the grid BEFORE solving the PDE.
alpha | reference to the coefficients vector |
mu | the exspected value of the normal distribution |
sigma | the sigma of the normal distribution |
factor | a factor that is used to stretch the function values |
References sgpp::pde::PDESolver::bGridConstructed, sgpp::op_factory::createOperationHierarchisation(), sgpp::pde::PDESolver::dim, sgpp::base::OperationHierarchisation::doHierarchisation(), sgpp::base::HashGridStorage::getCoordinates(), sgpp::base::HashGridStorage::getPoint(), sgpp::base::Grid::getSize(), python.statsfileInfo::i, python.utils.statsfile2gnuplot::j, mu, sgpp::pde::PDESolver::myGrid, sgpp::pde::PDESolver::myGridStorage, and analyse_erg::tmp.
void sgpp::pde::PoissonEquationSolver::initScreen | ( | ) |
Inits the screen object.
References sgpp::base::ScreenOutput::writeTitle().
|
virtual |
abstract method to solve an elliptic PDE.
All solver of elliptic PDEs have to implement this method.
alpha | the coefficients of the Sparse Gird's basis functions will be in this vector after solving |
rhs | the right hand side of the SLE |
maxCGIterations | the maximum of interation in the CG solver |
epsilonCG | the epsilon used in the CG |
verbose | enables verbose output during solving |
Implements sgpp::pde::EllipticPDESolver.
References sgpp::pde::OperationEllipticPDESolverSystemDirichlet::generateRHS(), sgpp::pde::OperationEllipticPDESolverSystemDirichlet::getGridCoefficientsForCG(), sgpp::pde::OperationEllipticPDESolverSystem::getNumGridPointsComplete(), sgpp::pde::OperationEllipticPDESolverSystem::getNumGridPointsInner(), sgpp::pde::OperationEllipticPDESolverSystemDirichlet::getSolutionBoundGrid(), sgpp::pde::PDESolver::myGrid, sgpp::solver::ConjugateGradients::solve(), sgpp::base::SGppStopwatch::start(), and sgpp::base::SGppStopwatch::stop().
void sgpp::pde::PoissonEquationSolver::storeInnerRHS | ( | sgpp::base::DataVector & | alpha, |
std::string | tFilename | ||
) |
Routine to export the RHS of the inner system which has to be solved in order to solve the Poisson equation.
alpha | the start solution |
tFilename | file into which the rhs is written |
References sgpp::pde::OperationEllipticPDESolverSystemDirichlet::generateRHS(), sgpp::base::DataVector::get(), sgpp::base::DataVector::getSize(), python.statsfileInfo::i, sgpp::pde::PDESolver::myGrid, sgpp::base::SGppStopwatch::start(), and sgpp::base::SGppStopwatch::stop().
void sgpp::pde::PoissonEquationSolver::storeInnerSolution | ( | sgpp::base::DataVector & | alpha, |
size_t | maxCGIterations, | ||
double | epsilonCG, | ||
std::string | tFilename | ||
) |
Routine to export the solution of the inner system which has been calculated by Up/Down scheme.
alpha | the start solution |
maxCGIterations | the maximum of interation in the CG solver |
epsilonCG | the epsilon used in the C |
tFilename | file into which the rhs is written |
References sgpp::pde::OperationEllipticPDESolverSystemDirichlet::generateRHS(), sgpp::base::DataVector::get(), sgpp::pde::OperationEllipticPDESolverSystemDirichlet::getGridCoefficientsForCG(), sgpp::base::DataVector::getSize(), python.statsfileInfo::i, sgpp::pde::PDESolver::myGrid, and sgpp::solver::ConjugateGradients::solve().