MBDyn-1.7.3
Main Page
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
linesearch.h
Go to the documentation of this file.
1
/* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/base/linesearch.h,v 1.11 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
* Portions Copyright (C) 2003-2017
34
* Giuseppe Quaranta <quaranta@aero.polimi.it>
35
*
36
* classi che implementano la risoluzione del sistema nonlineare
37
*/
38
39
/*
40
AUTHOR: Reinhard Resch <r.resch@secop.com>
41
Copyright (C) 2011(-2017) all rights reserved.
42
43
The copyright of this code is transferred
44
to Pierangelo Masarati and Paolo Mantegazza
45
for use in the software MBDyn as described
46
in the GNU Public License version 2.1
47
*/
48
49
#ifndef LINE_SEARCH_H
50
#define LINE_SEARCH_H
51
52
#include "
nonlin.h
"
53
#include "
vh.h
"
54
55
struct
LineSearchParameters
56
{
57
doublereal
dTolX
;
58
doublereal
dTolMin
;
59
integer
iMaxIterations
;
60
doublereal
dMaxStep
;
61
doublereal
dAlpha
;
62
doublereal
dLambdaMin
;
63
doublereal
dLambdaFactMin
;
64
doublereal
dDivergenceCheck
;
65
doublereal
dMinStepScale
;
66
enum
{
ZERO_GRADIENT_CONTINUE
= 0x001,
67
DIVERGENCE_CHECK
= 0x002,
68
ALGORITHM_CUBIC
= 0x004,
69
ALGORITHM_FACTOR
= 0x008,
70
PRINT_CONVERGENCE_INFO
= 0x010,
71
SCALE_NEWTON_STEP
= 0x020,
72
RELATIVE_LAMBDA_MIN
= 0x040,
73
ABORT_AT_LAMBDA_MIN
= 0x080,
74
VERBOSE_MODE
= 0x100,
75
NON_NEGATIVE_SLOPE_CONTINUE
= 0x200,
76
ALGORITHM
=
ALGORITHM_CUBIC
|
ALGORITHM_FACTOR
};
77
unsigned
uFlags
;
78
LineSearchParameters
();
79
};
80
81
class
LineSearchSolver
:
public
NonlinearSolver
,
private
LineSearchParameters
82
{
83
VectorHandler
*
pRes
;
84
VectorHandler
*
pSol
;
85
MyVectorHandler
p
;
86
MyVectorHandler
g
;
87
MyVectorHandler
dXneg
;
88
const
NonlinearProblem
*
pNLP
;
89
Solver
*
pS
;
90
const
DataManager
*
const
pDM
;
91
92
public
:
93
class
SlopeNotNegative
:
public
NoConvergence
94
{
95
public
:
96
SlopeNotNegative
(
MBDYN_EXCEPT_ARGS_DECL
)
97
:
NoConvergence
(
MBDYN_EXCEPT_ARGS_PASSTHRU
)
98
{
99
100
}
101
};
102
103
class
ZeroGradient
:
public
NoConvergence
104
{
105
public
:
106
ZeroGradient
(
MBDYN_EXCEPT_ARGS_DECL
)
107
:
NoConvergence
(
MBDYN_EXCEPT_ARGS_PASSTHRU
)
108
{
109
110
}
111
};
112
113
class
MaxIterations
:
public
NoConvergence
114
{
115
public
:
116
MaxIterations
(
MBDYN_EXCEPT_ARGS_DECL
)
117
:
NoConvergence
(
MBDYN_EXCEPT_ARGS_PASSTHRU
)
118
{
119
120
}
121
};
122
123
class
ResidualNotDecreased
:
public
ErrSimulationDiverged
124
{
125
public
:
126
ResidualNotDecreased
(
MBDYN_EXCEPT_ARGS_DECL
)
127
:
ErrSimulationDiverged
(
MBDYN_EXCEPT_ARGS_PASSTHRU
)
128
{
129
130
}
131
};
132
133
LineSearchSolver
(
DataManager
*
pDM
,
134
const
NonlinearSolverOptions
&
options
,
135
const
struct
LineSearchParameters
& param);
136
~LineSearchSolver
(
void
);
137
138
void
Solve
(
const
NonlinearProblem
*
pNLP
,
139
Solver
*
pS
,
140
const
integer
iMaxIter,
141
const
doublereal
& Tol,
142
integer
& iIterCnt,
143
doublereal
& dErr,
144
const
doublereal
& SolTol,
145
doublereal
& dSolErr);
146
147
private
:
148
void
LineSearch
(
doublereal
stpmax,
doublereal
fold,
doublereal
& f,
bool
& check,
const
integer
& iIterCnt);
149
void
Residual
(
doublereal
& f,
integer
iIterCnt);
150
void
Jacobian
();
151
};
152
153
#endif
/* LINE_SEARCH_H */
154
LineSearchSolver::Solve
void Solve(const NonlinearProblem *pNLP, Solver *pS, const integer iMaxIter, const doublereal &Tol, integer &iIterCnt, doublereal &dErr, const doublereal &SolTol, doublereal &dSolErr)
Definition:
linesearch.cc:400
LineSearchParameters
Definition:
linesearch.h:55
LineSearchSolver::p
MyVectorHandler p
Definition:
linesearch.h:85
LineSearchSolver::pRes
VectorHandler * pRes
Definition:
linesearch.h:83
vh.h
MBDYN_EXCEPT_ARGS_PASSTHRU
#define MBDYN_EXCEPT_ARGS_PASSTHRU
Definition:
except.h:55
LineSearchParameters::VERBOSE_MODE
Definition:
linesearch.h:74
LineSearchParameters::ALGORITHM
Definition:
linesearch.h:76
NonlinearProblem
Definition:
nonlinpb.h:47
LineSearchParameters::dMaxStep
doublereal dMaxStep
Definition:
linesearch.h:60
LineSearchParameters::SCALE_NEWTON_STEP
Definition:
linesearch.h:71
LineSearchSolver::SlopeNotNegative
Definition:
linesearch.h:93
LineSearchSolver::g
MyVectorHandler g
Definition:
linesearch.h:86
MBDYN_EXCEPT_ARGS_DECL
#define MBDYN_EXCEPT_ARGS_DECL
Definition:
except.h:43
LineSearchParameters::dTolMin
doublereal dTolMin
Definition:
linesearch.h:58
LineSearchSolver::~LineSearchSolver
~LineSearchSolver(void)
Definition:
linesearch.cc:134
LineSearchSolver::LineSearch
void LineSearch(doublereal stpmax, doublereal fold, doublereal &f, bool &check, const integer &iIterCnt)
Definition:
linesearch.cc:210
LineSearchSolver::MaxIterations
Definition:
linesearch.h:113
LineSearchSolver::pSol
VectorHandler * pSol
Definition:
linesearch.h:84
LineSearchParameters::ZERO_GRADIENT_CONTINUE
Definition:
linesearch.h:66
nonlin.h
NonlinearSolver::ErrSimulationDiverged
Definition:
nonlin.h:214
LineSearchParameters::DIVERGENCE_CHECK
Definition:
linesearch.h:67
DataManager
Definition:
dataman.h:85
LineSearchSolver::pNLP
const NonlinearProblem * pNLP
Definition:
linesearch.h:88
LineSearchSolver::pDM
const DataManager *const pDM
Definition:
linesearch.h:90
LineSearchParameters::PRINT_CONVERGENCE_INFO
Definition:
linesearch.h:70
LineSearchParameters::dLambdaMin
doublereal dLambdaMin
Definition:
linesearch.h:62
LineSearchParameters::dTolX
doublereal dTolX
Definition:
linesearch.h:57
LineSearchParameters::dDivergenceCheck
doublereal dDivergenceCheck
Definition:
linesearch.h:64
LineSearchParameters::ALGORITHM_CUBIC
Definition:
linesearch.h:68
MyVectorHandler
Definition:
vh.h:149
LineSearchParameters::uFlags
unsigned uFlags
Definition:
linesearch.h:77
LineSearchSolver::Residual
void Residual(doublereal &f, integer iIterCnt)
Definition:
linesearch.cc:140
LineSearchSolver::MaxIterations::MaxIterations
MaxIterations(MBDYN_EXCEPT_ARGS_DECL)
Definition:
linesearch.h:116
VectorHandler
Definition:
vh.h:63
LineSearchParameters::RELATIVE_LAMBDA_MIN
Definition:
linesearch.h:72
LineSearchSolver::dXneg
MyVectorHandler dXneg
Definition:
linesearch.h:87
LineSearchSolver::ZeroGradient::ZeroGradient
ZeroGradient(MBDYN_EXCEPT_ARGS_DECL)
Definition:
linesearch.h:106
NonlinearSolver
Definition:
nonlin.h:211
LineSearchParameters::dMinStepScale
doublereal dMinStepScale
Definition:
linesearch.h:65
LineSearchParameters::dAlpha
doublereal dAlpha
Definition:
linesearch.h:61
options
struct option options[]
Definition:
ann_in.c:46
Solver
Definition:
solver.h:78
LineSearchSolver::ResidualNotDecreased
Definition:
linesearch.h:123
LineSearchSolver::LineSearchSolver
LineSearchSolver(DataManager *pDM, const NonlinearSolverOptions &options, const struct LineSearchParameters ¶m)
Definition:
linesearch.cc:102
LineSearchParameters::iMaxIterations
integer iMaxIterations
Definition:
linesearch.h:59
LineSearchSolver::pS
Solver * pS
Definition:
linesearch.h:89
LineSearchSolver::Jacobian
void Jacobian()
Definition:
linesearch.cc:163
LineSearchParameters::NON_NEGATIVE_SLOPE_CONTINUE
Definition:
linesearch.h:75
LineSearchSolver
Definition:
linesearch.h:81
LineSearchSolver::SlopeNotNegative::SlopeNotNegative
SlopeNotNegative(MBDYN_EXCEPT_ARGS_DECL)
Definition:
linesearch.h:96
NonlinearSolverOptions
Definition:
nonlin.h:195
LineSearchParameters::dLambdaFactMin
doublereal dLambdaFactMin
Definition:
linesearch.h:63
LineSearchParameters::LineSearchParameters
LineSearchParameters()
Definition:
linesearch.cc:83
doublereal
double doublereal
Definition:
colamd.c:52
integer
long int integer
Definition:
colamd.c:51
LineSearchParameters::ABORT_AT_LAMBDA_MIN
Definition:
linesearch.h:73
LineSearchSolver::ResidualNotDecreased::ResidualNotDecreased
ResidualNotDecreased(MBDYN_EXCEPT_ARGS_DECL)
Definition:
linesearch.h:126
LineSearchParameters::ALGORITHM_FACTOR
Definition:
linesearch.h:69
NonlinearSolver::NoConvergence
Definition:
nonlin.h:218
LineSearchSolver::ZeroGradient
Definition:
linesearch.h:103
mbdyn
base
linesearch.h
Generated on Fri Apr 13 2018 10:19:34 for MBDyn-1.7.3 by
1.8.7