continuation_system.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 #ifndef LIBMESH_CONTINUATION_SYSTEM_H
21 #define LIBMESH_CONTINUATION_SYSTEM_H
22 
23 // Local Includes
24 #include "libmesh/fem_system.h"
25 
26 // C++ includes
27 
28 namespace libMesh
29 {
30 
31 // Forward Declarations
32 template <typename T> class LinearSolver;
33 class NewtonSolver;
34 
35 
36 
37 
38 
58 {
59 public:
65  const std::string& name,
66  const unsigned int number);
67 
71  virtual ~ContinuationSystem ();
72 
77 
81  typedef FEMSystem Parent;
82 
87  virtual void clear ();
88 
92  virtual void solve();
93 
100  void continuation_solve();
101 
106  void advance_arcstep();
107 
118 
123  bool quiet;
124 
130  void set_max_arclength_stepsize(Real maxds) { ds=maxds; ds_current=maxds; }
131 
137 
143 
150 
158  void save_current_solution();
159 
164 
170 
177 
184 
191 
197  //Real tau;
198 
204  unsigned int n_backtrack_steps;
205 
212 
217 
223  enum Predictor {
228 
233 
238  };
239 
241 
250 
259 
260 protected:
265  virtual void init_data ();
266 
290 
292 
293 
294 
295 private:
302  void initialize_tangent();
303 
307  void solve_tangent();
308 
314  void update_solution();
315 
319  void set_Theta();
320 
325  void set_Theta_LOCA();
326 
331  void apply_predictor();
332 
341 
346 
351 
356 
362 
367 
373 
380 
385 
392 
399 
406 
412 
417 
422 
426  unsigned int newton_step;
427 };
428 
429 } // namespace libMesh
430 
431 #endif // LIBMESH_CONTINUATION_SYSTEM_H

Site Created By: libMesh Developers
Last modified: February 07 2014 16:57:04 UTC

Hosted By:
SourceForge.net Logo