Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

AdaptiveIterationLevel3.h

Go to the documentation of this file.
00001 // Copyright (C) 2004 Johan Hoffman and Anders Logg.
00002 // Licensed under the GNU GPL Version 2.
00003 
00004 #ifndef __ADAPTIVE_ITERATION_LEVEL_3_H
00005 #define __ADAPTIVE_ITERATION_LEVEL_3_H
00006 
00007 #include <dolfin/Iteration.h>
00008 
00009 namespace dolfin
00010 {
00011   
00014 
00015   class AdaptiveIterationLevel3 : public Iteration
00016   {
00017   public:
00018     
00019     AdaptiveIterationLevel3(Solution& u, RHS& f, FixedPointIteration& fixpoint,
00020                             unsigned int maxiter, real maxdiv, real maxconv, real tol,
00021                             unsigned int depth);
00022     
00023     ~AdaptiveIterationLevel3();
00024     
00025     State state() const;
00026 
00027     void start(ElementGroupList& list);
00028     void start(ElementGroup& group);
00029     void start(Element& element);
00030 
00031     void update(ElementGroupList& list, Increments& d);
00032     void update(ElementGroup& group, Increments& d);
00033     void update(Element& element, Increments& d);
00034     
00035     void stabilize(ElementGroupList& list, const Increments& d, unsigned int n);
00036     void stabilize(ElementGroup& group, const Increments& d, unsigned int n);
00037     void stabilize(Element& element, const Increments& d, unsigned int n);
00038     
00039     bool converged(ElementGroupList& list, const Increments& d, unsigned int n);
00040     bool converged(ElementGroup& group, const Increments& d, unsigned int n);
00041     bool converged(Element& element, const Increments& d, unsigned int n);
00042     
00043     bool diverged(ElementGroupList& list, const Increments& d,unsigned int n, State& newstate);
00044     bool diverged(ElementGroup& group, const Increments& d,unsigned int n, State& newstate);
00045     bool diverged(Element& element, const Increments& d,unsigned int n, State& newstate);
00046     
00047     void report() const;
00048 
00049   private:
00050 
00051     // Simple Gauss-Jacobi update of element group
00052     void updateGaussJacobi(ElementGroupList& list, Increments& d);
00053 
00054     // Update group with propagation of initial values (Gauss-Seidel in time)
00055     void updateGaussSeidel(ElementGroupList& list, Increments& d);
00056 
00057   };
00058 
00059 }
00060 
00061 #endif


Documentation automatically generated with Doxygen on 10 Sep 2004.