MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
gmres.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/base/gmres.h,v 1.24 2017/01/12 14:46:09 masarati Exp $ */
2 /*
3  * MBDyn (C) is a multibody analysis code.
4  * http://www.mbdyn.org
5  *
6  * Copyright (C) 1996-2017
7  *
8  * Pierangelo Masarati <masarati@aero.polimi.it>
9  * Paolo Mantegazza <mantegazza@aero.polimi.it>
10  *
11  * Dipartimento di Ingegneria Aerospaziale - Politecnico di Milano
12  * via La Masa, 34 - 20156 Milano, Italy
13  * http://www.aero.polimi.it
14  *
15  * Changing this copyright notice is forbidden.
16  *
17  * This program is free software; you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation (version 2 of the License).
20  *
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */
31 
32  /*
33  *
34  * Copyright (C) 2003-2017
35  * Giuseppe Quaranta <quaranta@aero.polimi.it>
36  *
37  * classi che implementano la risoluzione del sistema nonlineare
38  */
39 
40 #ifndef GMRES_H
41 #define GMRES_H
42 
43 #include <fullmh.h>
44 #include <mfree.h>
45 
46 class Gmres : public MatrixFreeSolver
47 {
48 private:
52 
53 public:
55  const integer iPStep,
56  doublereal ITol,
57  integer MaxIt,
58  doublereal etaMx,
59  doublereal T,
61 
62  ~Gmres(void);
63 
64  virtual void Solve(const NonlinearProblem* NLP,
65  Solver* pS,
66  const integer iMaxIter,
67  const doublereal& Tol,
68  integer& iIterCnt,
69  doublereal& dErr,
70  const doublereal& SolTol,
71  doublereal& dSolErr);
72 
73 private:
74  void GeneratePlaneRotation(const doublereal &dx, const doublereal &dy,
75  doublereal &cs, doublereal &sn) const;
76 
78  const doublereal &cs, const doublereal &sn) const;
79 
80  /*
81  * FIXME: we could eliminate x, s and v,
82  * since they are now members of the class
83  */
84  void Backsolve(VectorHandler& x, integer sz,
86 };
87 
88 #endif /* GMRES_H */
89 
void GeneratePlaneRotation(const doublereal &dx, const doublereal &dy, doublereal &cs, doublereal &sn) const
Definition: gmres.cc:81
FullMatrixHandler H
Definition: gmres.h:51
Definition: gmres.h:46
MyVectorHandler sn
Definition: gmres.h:50
void ApplyPlaneRotation(doublereal &dx, doublereal &dy, const doublereal &cs, const doublereal &sn) const
Definition: gmres.cc:101
MyVectorHandler * v
Definition: gmres.h:49
virtual void Solve(const NonlinearProblem *NLP, Solver *pS, const integer iMaxIter, const doublereal &Tol, integer &iIterCnt, doublereal &dErr, const doublereal &SolTol, doublereal &dSolErr)
Definition: gmres.cc:126
~Gmres(void)
Definition: gmres.cc:71
Gmres(const Preconditioner::PrecondType PType, const integer iPStep, doublereal ITol, integer MaxIt, doublereal etaMx, doublereal T, const NonlinearSolverOptions &options)
Definition: gmres.cc:57
struct option options[]
Definition: ann_in.c:46
Definition: solver.h:78
MyVectorHandler dx
Definition: gmres.h:50
MyVectorHandler cs
Definition: gmres.h:50
MyVectorHandler vHat
Definition: gmres.h:50
MyVectorHandler s
Definition: gmres.h:50
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
void Backsolve(VectorHandler &x, integer sz, VectorHandler &s, MyVectorHandler *v)
Definition: gmres.cc:110
MyVectorHandler w
Definition: gmres.h:50