-
Notifications
You must be signed in to change notification settings - Fork 298
/
IEulerSettings.h
77 lines (65 loc) · 2.31 KB
/
IEulerSettings.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#pragma once
/** @addtogroup solverEuler
*
* @{
*/
/*****************************************************************************/
/**
Encapsulation of settings for euler solver
\date October, 1st, 2008
\author
*/
/*****************************************************************************
Copyright (c) 2008, OSMC
*****************************************************************************/
class IEulerSettings
{
public:
/// Enum to choose the integration method
enum EULERMETHOD
{
EULERFORWARD = 0, ///< Explicit Euler
EULERBACKWARD = 1, ///< Implicit Euler
MIDPOINT = 2, ///< Midpoint rule
};
/// Enum to choose the method for zero search
enum ZEROSEARCHMETHOD
{
NO_ZERO_SEARCH = 0, ///< Ignore zero functions
BISECTION = 1, ///< Bisection method
LINEAR_INTERPOLATION = 2, ///< Linear interpolation
};
virtual ~IEulerSettings() {};
/**
Choise of solution method according to EULERMETHOD ([0,1,2,3,4,5]; default: 0)
**/
virtual unsigned int getEulerMethod() =0;
virtual void setEulerMetoh(unsigned int) =0;
/**
Choise of method for zero search according to ZEROSEARCHMETHOD ([0,1]; default: 0)
*/
virtual unsigned int getZeroSearchMethod() =0;
virtual void setZeroSearchMethod(unsigned int ) =0;
/**
Determination of number of zeros in one intervall (used only for methods [2,3]) ([true,false]; default: false)
*/
virtual bool getUseSturmSequence() =0;
virtual void setUseSturmSequence(bool) =0;
/**
For implicit methods only. Choise between fixpoint and newton-iteration kann eine Newtoniteration gewählt werden. ([false,true]; default: false = Fixpunktiteration)
*/
virtual bool getUseNewtonIteration() =0;
virtual void setUseNewtonIteration(bool) =0;
/**
Equidistant output(by interpolation polynominal) ([true,false]; default: false)
*/
virtual bool getDenseOutput() =0;
virtual void setDenseOutput(bool) =0;
/**
Tolerance for newton iteration (used when _useNewtonIteration=true) (default: 1e-8)
*/
virtual double getIterTol()=0;
virtual void setIterTol(double)=0;
virtual void load(std::string xml_file)=0;
};
/** @} */ // end of solverEuler