![]() |
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.