KASKADE 7 development version
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
Kaskade::SimpleAdaptiveRefinement Class Reference

Adaptive refinement algorithm. More...

#include <adaptive_refinement.hh>

Detailed Description

Adaptive refinement algorithm.

Implementation uses the strategy pattern, and should be flexible to use. In order to make it work one has to provide implementations of the following interfaces:

Definition at line 67 of file adaptive_refinement.hh.

Inheritance diagram for Kaskade::SimpleAdaptiveRefinement:
Kaskade::Algorithm Kaskade::AbstractNewtonDirection Kaskade::FinalAdaptiveRefinement Kaskade::FixedSolverWithErrorEstimate

Public Member Functions

 SimpleAdaptiveRefinement (AbstractNewtonDirection &als, AbstractErrorEstimator &aee, AbstractAdaptiveGrid &ag, AbstractNorm &an, AdaptiveParameters &p_)
 Construction. More...
 
virtual int runAlgorithm ()
 To be used as an algorithm. More...
 
virtual ~SimpleAdaptiveRefinement ()
 
virtual void setRelativeAccuracy (double accuracy)
 set relative accuracy More...
 
virtual void setAbsoluteAccuracy (double accuracy)
 set absolute accuracy More...
 
double getRelativeAccuracy ()
 get achieved relative accuracy More...
 
double getAbsoluteAccuracy ()
 get achieved absolute accuracy More...
 
bool improvementPossible ()
 
virtual void doSolve (AbstractFunctionSpaceElement &corr, AbstractLinearization &lin)
 solve problem More...
 
virtual void doResolve (AbstractFunctionSpaceElement &correction, AbstractLinearization const &lin, AbstractLinearization const &olin) const
 Solve simplified Newton system: scorrection = +F'(iterate)^{-1}F(trialIterate) More...
 
virtual void doResolve (AbstractFunctionSpaceElement &correction, AbstractLinearization const &lin) const
 Solve simplified Newton system: scorrection = +F'(iterate)^{-1}F(trialIterate) More...
 
virtual bool changedGrid ()
 
void performTiming (bool doit)
 
void reportOnIteration (int level)
 
void ordinary (AbstractFunctionSpaceElement &correction, AbstractLinearization &linearization)
 
void simplified (AbstractFunctionSpaceElement &correction, AbstractLinearization const &linearization, AbstractLinearization const &oldlinearization) const
 
void simplified (AbstractFunctionSpaceElement &correction, AbstractLinearization const &linearization) const
 

Public Attributes

AdaptiveParametersp
 
bool alwaysestimate
 
boost::signals2::signal< void()> changed
 

Protected Member Functions

virtual bool convergenceTest (AbstractErrorEstimate const &estimate, AbstractAdaptiveGrid const &)
 
virtual double getBulk (int step) const
 
virtual void initialize ()
 
virtual void finalize (int flag)
 
virtual void terminationMessage (int flag)
 
int algorithmWrapper ()
 Run algorithm, completely with initialization and finalization. More...
 
int oneStepWrapper ()
 Run one step of algorithm. More...
 

Protected Attributes

std::shared_ptr< AbstractErrorEstimateestimate
 
AbstractNewtonDirectionfixedSolver
 
AbstractErrorEstimatorerrorEstimator
 
AbstractNormnorm
 
AbstractAdaptiveGridgrid
 
AbstractLinearizationlinearization
 
AbstractFunctionSpaceElementcorrection
 
std::unique_ptr< AbstractFunctionSpaceElementoldcorrection
 
double noldold
 
int report
 

Constructor & Destructor Documentation

◆ SimpleAdaptiveRefinement()

Kaskade::SimpleAdaptiveRefinement::SimpleAdaptiveRefinement ( AbstractNewtonDirection als,
AbstractErrorEstimator aee,
AbstractAdaptiveGrid ag,
AbstractNorm an,
AdaptiveParameters p_ 
)
inline

Construction.

Definition at line 72 of file adaptive_refinement.hh.

◆ ~SimpleAdaptiveRefinement()

virtual Kaskade::SimpleAdaptiveRefinement::~SimpleAdaptiveRefinement ( )
inlinevirtual

Definition at line 82 of file adaptive_refinement.hh.

Member Function Documentation

◆ algorithmWrapper()

int Kaskade::Algorithm::algorithmWrapper ( )
protectedinherited

Run algorithm, completely with initialization and finalization.

◆ changedGrid()

virtual bool Kaskade::SimpleAdaptiveRefinement::changedGrid ( )
inlinevirtual

Reimplemented from Kaskade::AbstractNewtonDirection.

Definition at line 115 of file adaptive_refinement.hh.

◆ convergenceTest()

virtual bool Kaskade::SimpleAdaptiveRefinement::convergenceTest ( AbstractErrorEstimate const &  estimate,
AbstractAdaptiveGrid const &   
)
protectedvirtual

◆ doResolve() [1/2]

virtual void Kaskade::SimpleAdaptiveRefinement::doResolve ( AbstractFunctionSpaceElement correction,
AbstractLinearization const &  lin 
) const
inlinevirtual

Solve simplified Newton system: scorrection = +F'(iterate)^{-1}F(trialIterate)

Implements Kaskade::AbstractNewtonDirection.

Definition at line 110 of file adaptive_refinement.hh.

◆ doResolve() [2/2]

virtual void Kaskade::SimpleAdaptiveRefinement::doResolve ( AbstractFunctionSpaceElement correction,
AbstractLinearization const &  lin,
AbstractLinearization const &  olin 
) const
inlinevirtual

Solve simplified Newton system: scorrection = +F'(iterate)^{-1}F(trialIterate)

Implements Kaskade::AbstractNewtonDirection.

Definition at line 105 of file adaptive_refinement.hh.

◆ doSolve()

virtual void Kaskade::SimpleAdaptiveRefinement::doSolve ( AbstractFunctionSpaceElement corr,
AbstractLinearization lin 
)
virtual

solve problem

Implements Kaskade::AbstractNewtonDirection.

◆ finalize()

virtual void Kaskade::SimpleAdaptiveRefinement::finalize ( int  flag)
protectedvirtual

Reimplemented from Kaskade::Algorithm.

◆ getAbsoluteAccuracy()

double Kaskade::SimpleAdaptiveRefinement::getAbsoluteAccuracy ( )
inlinevirtual

get achieved absolute accuracy

Implements Kaskade::AbstractNewtonDirection.

Definition at line 98 of file adaptive_refinement.hh.

◆ getBulk()

virtual double Kaskade::SimpleAdaptiveRefinement::getBulk ( int  step) const
protectedvirtual

◆ getRelativeAccuracy()

double Kaskade::SimpleAdaptiveRefinement::getRelativeAccuracy ( )
inlinevirtual

get achieved relative accuracy

Implements Kaskade::AbstractNewtonDirection.

Definition at line 96 of file adaptive_refinement.hh.

◆ improvementPossible()

bool Kaskade::SimpleAdaptiveRefinement::improvementPossible ( )
inlinevirtual

Implements Kaskade::AbstractNewtonDirection.

Definition at line 100 of file adaptive_refinement.hh.

◆ initialize()

virtual void Kaskade::SimpleAdaptiveRefinement::initialize ( )
protectedvirtual

Reimplemented from Kaskade::Algorithm.

◆ oneStepWrapper()

int Kaskade::Algorithm::oneStepWrapper ( )
protectedinherited

Run one step of algorithm.

◆ ordinary()

void Kaskade::AbstractNewtonDirection::ordinary ( AbstractFunctionSpaceElement correction,
AbstractLinearization linearization 
)
inlineinherited

This method is not const, since the internal state of the solver may be modified Computes an undamped ordinary Newton step, i.e., \(correction=-F'(x)^{-1}F(x)\)

Definition at line 275 of file abstract_interface.hh.

Referenced by Kaskade::NewtonsMethod::getSearchDirection().

◆ performTiming()

void Kaskade::Algorithm::performTiming ( bool  doit)
inlineinherited

Definition at line 181 of file algorithm_base.hh.

◆ reportOnIteration()

void Kaskade::Algorithm::reportOnIteration ( int  level)
inlineinherited

Definition at line 182 of file algorithm_base.hh.

◆ runAlgorithm()

virtual int Kaskade::SimpleAdaptiveRefinement::runAlgorithm ( )
virtual

To be used as an algorithm.

Implements Kaskade::Algorithm.

Reimplemented in Kaskade::FixedSolverWithErrorEstimate.

◆ setAbsoluteAccuracy()

virtual void Kaskade::SimpleAdaptiveRefinement::setAbsoluteAccuracy ( double  accuracy)
inlinevirtual

set absolute accuracy

Reimplemented from Kaskade::AbstractNewtonDirection.

Reimplemented in Kaskade::FinalAdaptiveRefinement.

Definition at line 94 of file adaptive_refinement.hh.

◆ setRelativeAccuracy()

virtual void Kaskade::SimpleAdaptiveRefinement::setRelativeAccuracy ( double  accuracy)
inlinevirtual

set relative accuracy

Implements Kaskade::AbstractNewtonDirection.

Reimplemented in Kaskade::FinalAdaptiveRefinement.

Definition at line 92 of file adaptive_refinement.hh.

◆ simplified() [1/2]

void Kaskade::AbstractNewtonDirection::simplified ( AbstractFunctionSpaceElement correction,
AbstractLinearization const &  linearization 
) const
inlineinherited

Computes an undamped simplified Newton step, i.e., correction=-F'(xold)^{-1}F(x) where F'(xold)^{-1} has been kept from an earlier ordinary() call

Definition at line 287 of file abstract_interface.hh.

◆ simplified() [2/2]

void Kaskade::AbstractNewtonDirection::simplified ( AbstractFunctionSpaceElement correction,
AbstractLinearization const &  linearization,
AbstractLinearization const &  oldlinearization 
) const
inlineinherited

Computes an undamped simplified Newton step, i.e., correction=-F'(xold)^{-1}F(x)

Definition at line 280 of file abstract_interface.hh.

Referenced by Kaskade::NewtonsMethod::resolve().

◆ terminationMessage()

virtual void Kaskade::SimpleAdaptiveRefinement::terminationMessage ( int  flag)
protectedvirtual

Reimplemented from Kaskade::Algorithm.

Member Data Documentation

◆ alwaysestimate

bool Kaskade::SimpleAdaptiveRefinement::alwaysestimate

Definition at line 133 of file adaptive_refinement.hh.

◆ changed

boost::signals2::signal<void()> Kaskade::AbstractNewtonDirection::changed
mutableinherited

Definition at line 319 of file abstract_interface.hh.

◆ correction

AbstractFunctionSpaceElement* Kaskade::SimpleAdaptiveRefinement::correction
protected

Definition at line 125 of file adaptive_refinement.hh.

Referenced by doResolve().

◆ errorEstimator

AbstractErrorEstimator& Kaskade::SimpleAdaptiveRefinement::errorEstimator
protected

Definition at line 121 of file adaptive_refinement.hh.

◆ estimate

std::shared_ptr<AbstractErrorEstimate> Kaskade::SimpleAdaptiveRefinement::estimate
protected

Definition at line 119 of file adaptive_refinement.hh.

◆ fixedSolver

AbstractNewtonDirection& Kaskade::SimpleAdaptiveRefinement::fixedSolver
protected

Definition at line 120 of file adaptive_refinement.hh.

Referenced by doResolve().

◆ grid

AbstractAdaptiveGrid& Kaskade::SimpleAdaptiveRefinement::grid
protected

Definition at line 123 of file adaptive_refinement.hh.

◆ linearization

AbstractLinearization* Kaskade::SimpleAdaptiveRefinement::linearization
protected

Definition at line 124 of file adaptive_refinement.hh.

◆ noldold

double Kaskade::SimpleAdaptiveRefinement::noldold
protected

Definition at line 127 of file adaptive_refinement.hh.

◆ norm

AbstractNorm& Kaskade::SimpleAdaptiveRefinement::norm
protected

Definition at line 122 of file adaptive_refinement.hh.

◆ oldcorrection

std::unique_ptr<AbstractFunctionSpaceElement> Kaskade::SimpleAdaptiveRefinement::oldcorrection
protected

Definition at line 126 of file adaptive_refinement.hh.

◆ p

AdaptiveParameters& Kaskade::SimpleAdaptiveRefinement::p

◆ report

int Kaskade::Algorithm::report
protectedinherited

Definition at line 193 of file algorithm_base.hh.

Referenced by Kaskade::Algorithm::reportOnIteration().


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