Adaptive< T > Class Template Reference

#include <adaptive.h>

List of all members.

Public Member Functions

 Adaptive (EquationSystems &es)
 Adaptive (EquationSystems &es, const std::string &name, const unsigned int number)
 ~Adaptive ()
virtual void solve ()
unsigned int refinement_step () const
unsigned int n_refinement_steps () const
unsigned int & n_refinement_steps ()
unsigned int max_refinement_level () const
unsigned int & max_refinement_level ()

Protected Member Functions

unsigned int & refinement_step ()

Private Attributes

unsigned int _refinement_step
unsigned int _n_refinement_steps
unsigned int _max_refinement_level


Detailed Description

template<class T = Linear<>>
class Adaptive< T >

This is a generic class that defines a adaptive to be used in a simulation. A user can define a adaptive by deriving from this class and implementing certain functions.

Author:
Benjamin S. Kirk, 2003-2004.

Definition at line 47 of file adaptive.h.


Constructor & Destructor Documentation

template<class T >
Adaptive< T >::Adaptive ( EquationSystems es  )  [inline]

Constructor. Requires a reference to a system to be solved.

Definition at line 133 of file adaptive.h.

00133                                           :
00134   T                    (es), // Call the base class constructor
00135   _refinement_step     (0),  // Solver parameters
00136   _n_refinement_steps  (1),
00137   _max_refinement_level(100)
00138 {
00139 libmesh_deprecated();
00140 }

template<class T >
Adaptive< T >::Adaptive ( EquationSystems es,
const std::string &  name,
const unsigned int  number 
) [inline]

Constructor. Requires a referece to the EquationSystems object.

Definition at line 145 of file adaptive.h.

00147                                                   :
00148   Adaptive (es),
00149   T        (es, name, number)
00150 {
00151 libmesh_deprecated();
00152 }

template<class T >
Adaptive< T >::~Adaptive (  )  [inline]

Destructor.

Definition at line 157 of file adaptive.h.

00158 {
00159 }


Member Function Documentation

template<class T = Linear<>>
unsigned int& Adaptive< T >::max_refinement_level (  )  [inline]

Sets the maximum level for mesh refinement.

Definition at line 97 of file adaptive.h.

References Adaptive< T >::_max_refinement_level.

00097 { return _max_refinement_level; }

template<class T = Linear<>>
unsigned int Adaptive< T >::max_refinement_level (  )  const [inline]

Returns:
the maximum level for mesh refinement.

Definition at line 92 of file adaptive.h.

References Adaptive< T >::_max_refinement_level.

Referenced by Adaptive< T >::solve().

00092 { return _max_refinement_level; }

template<class T = Linear<>>
unsigned int& Adaptive< T >::n_refinement_steps (  )  [inline]

Sets the number of refinement steps to take.

Definition at line 87 of file adaptive.h.

References Adaptive< T >::_n_refinement_steps.

00087 { return _n_refinement_steps; }  

template<class T = Linear<>>
unsigned int Adaptive< T >::n_refinement_steps (  )  const [inline]

Returns:
the number of refinement steps to take.

Definition at line 82 of file adaptive.h.

References Adaptive< T >::_n_refinement_steps.

Referenced by Adaptive< T >::solve().

00082 { return _n_refinement_steps; }

template<class T = Linear<>>
unsigned int& Adaptive< T >::refinement_step (  )  [inline, protected]

Sets the current refinement step.

Definition at line 106 of file adaptive.h.

References Adaptive< T >::_refinement_step.

00106 { return _refinement_step; }

template<class T = Linear<>>
unsigned int Adaptive< T >::refinement_step (  )  const [inline]

Returns:
the current refinement step.

Definition at line 77 of file adaptive.h.

References Adaptive< T >::_refinement_step.

Referenced by Adaptive< T >::solve().

00077 { return _refinement_step; }

template<class T >
void Adaptive< T >::solve (  )  [inline, virtual]

Re-implement the solve member to do a fixed number of linear solves

Definition at line 164 of file adaptive.h.

References JumpErrorEstimator::estimate_error(), MeshRefinement::flag_elements_by_error_fraction(), Adaptive< T >::max_refinement_level(), mesh, Adaptive< T >::n_refinement_steps(), MeshRefinement::refine_and_coarsen_elements(), and Adaptive< T >::refinement_step().

00165 {
00166   // First solve the base system
00167   T::solve ();
00168       
00169   for (this->refinement_step()=0;
00170        this->refinement_step() < this->n_refinement_steps();
00171        this->refinement_step()++)
00172     {  
00173       // Then estimate the error in the base system
00174       // and refine the mesh
00175       {
00176         ErrorVector error;
00177         
00178         KellyErrorEstimator error_estimator;
00179         
00180         error_estimator.estimate_error (this->system(), "incomp_ns", error);
00181         
00182         MeshRefinement mesh_refinement (this->mesh());
00183         
00184         mesh_refinement.flag_elements_by_error_fraction (error,
00185                                                          0.40,
00186                                                          0.40,
00187                                                          this->max_refinement_level());
00188         
00189         mesh_refinement.refine_and_coarsen_elements ();
00190 
00191         this->system().reinit ();
00192       }
00193   
00194       // Then re-solve the base system
00195       T::solve ();
00196     }
00197 }


Member Data Documentation

template<class T = Linear<>>
unsigned int Adaptive< T >::_max_refinement_level [private]

The maximum allowable levels of refinement.

Definition at line 125 of file adaptive.h.

Referenced by Adaptive< T >::max_refinement_level().

template<class T = Linear<>>
unsigned int Adaptive< T >::_n_refinement_steps [private]

The number of refinement steps to take.

Definition at line 120 of file adaptive.h.

Referenced by Adaptive< T >::n_refinement_steps().

template<class T = Linear<>>
unsigned int Adaptive< T >::_refinement_step [private]

The current refinement step.

Definition at line 115 of file adaptive.h.

Referenced by Adaptive< T >::refinement_step().


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

Site Created By: libMesh Developers
Last modified: November 25 2009 03:43:53.

Hosted By:
SourceForge.net Logo