MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
ScalarFunctionsImpl.h
Go to the documentation of this file.
1 /* $Header: /var/cvs/mbdyn/mbdyn/mbdyn-1.0/mbdyn/base/ScalarFunctionsImpl.h,v 1.26 2017/01/12 14:46:08 masarati Exp $ */
2 /*
3  * HmFe (C) is a FEM analysis code.
4  *
5  * Copyright (C) 1996-2017
6  *
7  * Marco Morandini <morandini@aero.polimi.it>
8  *
9  * Dipartimento di Ingegneria Aerospaziale - Politecnico di Milano
10  * via La Masa, 34 - 20156 Milano, Italy
11  * http://www.aero.polimi.it
12  *
13  * Changing this copyright notice is forbidden.
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17  *
18  */
19 /*
20  * MBDyn (C) is a multibody analysis code.
21  * http://www.mbdyn.org
22  *
23  * Copyright (C) 1996-2017
24  *
25  * This code is a partial merge of HmFe and MBDyn.
26  *
27  * Pierangelo Masarati <masarati@aero.polimi.it>
28  * Paolo Mantegazza <mantegazza@aero.polimi.it>
29  *
30  * Dipartimento di Ingegneria Aerospaziale - Politecnico di Milano
31  * via La Masa, 34 - 20156 Milano, Italy
32  * http://www.aero.polimi.it
33  *
34  * Changing this copyright notice is forbidden.
35  *
36  * This program is free software; you can redistribute it and/or modify
37  * it under the terms of the GNU General Public License as published by
38  * the Free Software Foundation (version 2 of the License).
39  *
40  *
41  * This program is distributed in the hope that it will be useful,
42  * but WITHOUT ANY WARRANTY; without even the implied warranty of
43  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
44  * GNU General Public License for more details.
45  *
46  * You should have received a copy of the GNU General Public License
47  * along with this program; if not, write to the Free Software
48  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
49  */
50 #ifndef ScalarFunctionsImpl_hh
51 #define ScalarFunctionsImpl_hh
52 
53 #include <vector>
54 
55 #include "ScalarFunctions.h"
56 
58 private:
59  const doublereal y;
60 public:
62  virtual ~ConstScalarFunction(void);
63  virtual doublereal operator()(const doublereal x) const;
64  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
65 };
66 
68 private:
71 public:
73  const doublereal t_i,
74  const doublereal y_i,
75  const doublereal t_f,
76  const doublereal y_f);
77  virtual ~LinearScalarFunction(void);
78  virtual doublereal operator()(const doublereal x) const;
79  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
80 };
81 
83 private:
84  const doublereal pw;
85 public:
87  virtual ~PowScalarFunction(void);
88  virtual doublereal operator()(const doublereal x) const;
89  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
90 };
91 
93 private:
98 
99 public:
100  LogScalarFunction(const doublereal& ml, const doublereal& b, const doublereal& c);
101  virtual ~LogScalarFunction(void);
102  virtual doublereal operator()(const doublereal x) const;
103  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
104 };
105 
107 private:
112 
113 public:
114  ExpScalarFunction(const doublereal& ml, const doublereal& b, const doublereal& c);
115  virtual ~ExpScalarFunction(void);
116  virtual doublereal operator()(const doublereal x) const;
117  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
118 };
119 
121 private:
122  std::vector<doublereal> Y_i;
123  std::vector<doublereal> X_i;
124  std::vector<doublereal> b, c, d;
126 public:
128  const std::vector<doublereal>& y_i,
129  const std::vector<doublereal>& x_i,
130  bool doNotExtrapolate = false);
131  virtual ~CubicSplineScalarFunction(void);
132  virtual doublereal operator()(const doublereal x) const;
133  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
134 };
135 
137 private:
138  std::vector<doublereal> Y_i;
139  std::vector<doublereal> X_i;
141 public:
143  const std::vector<doublereal>& y_i,
144  const std::vector<doublereal>& x_i,
145  bool doNotExtrapolate = false);
146  virtual ~MultiLinearScalarFunction(void);
147  virtual doublereal operator()(const doublereal x) const;
148  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
149 };
150 
152 private:
153  std::vector<doublereal> vCoef;
156 public:
157  ChebychevScalarFunction(const std::vector<doublereal>& v,
158  const doublereal& a, const doublereal& b,
159  bool doNotExtrapolate = false);
160  virtual ~ChebychevScalarFunction(void);
161  virtual doublereal operator()(const doublereal x) const;
162  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
163 };
164 
166 private:
169 public:
171  const BasicScalarFunction *const b1,
172  const BasicScalarFunction *const b2
173  );
174  virtual ~SumScalarFunction(void);
175  virtual doublereal operator()(const doublereal x) const;
176  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
177 };
178 
180 private:
183 public:
185  const BasicScalarFunction *const b1,
186  const BasicScalarFunction *const b2
187  );
188  virtual ~SubScalarFunction(void);
189  virtual doublereal operator()(const doublereal x) const;
190  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
191 };
192 
194 private:
197 public:
199  const BasicScalarFunction *const b1,
200  const BasicScalarFunction *const b2
201  );
202  virtual ~MulScalarFunction(void);
203  virtual doublereal operator()(const doublereal x) const;
204  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
205 };
206 
208 private:
211 public:
213  const BasicScalarFunction *const b1,
214  const BasicScalarFunction *const b2
215  );
216  virtual ~DivScalarFunction(void);
217  virtual doublereal operator()(const doublereal x) const;
218  virtual doublereal ComputeDiff(const doublereal t, const integer order = 1) const;
219 };
220 
221 #endif /* ScalarFunctionsImpl_hh */
222 
virtual ~ChebychevScalarFunction(void)
virtual ~LinearScalarFunction(void)
virtual doublereal operator()(const doublereal x) const
const doublereal mul_input
const doublereal base
virtual doublereal operator()(const doublereal x) const
ConstScalarFunction(const doublereal v)
virtual ~SumScalarFunction(void)
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
virtual doublereal operator()(const doublereal x) const
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
DivScalarFunction(const BasicScalarFunction *const b1, const BasicScalarFunction *const b2)
virtual doublereal operator()(const doublereal x) const
virtual doublereal operator()(const doublereal x) const
const DifferentiableScalarFunction *const a1
virtual ~PowScalarFunction(void)
const DifferentiableScalarFunction *const a1
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
enum @55 order
PowScalarFunction(const doublereal p)
std::vector< doublereal > c
virtual ~ExpScalarFunction(void)
const DifferentiableScalarFunction *const a2
ExpScalarFunction(const doublereal &ml, const doublereal &b, const doublereal &c)
const DifferentiableScalarFunction *const a1
std::vector< doublereal > Y_i
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
virtual doublereal operator()(const doublereal x) const
virtual ~ConstScalarFunction(void)
MulScalarFunction(const BasicScalarFunction *const b1, const BasicScalarFunction *const b2)
const doublereal mul
LinearScalarFunction(const doublereal t_i, const doublereal y_i, const doublereal t_f, const doublereal y_f)
SubScalarFunction(const BasicScalarFunction *const b1, const BasicScalarFunction *const b2)
virtual doublereal operator()(const doublereal x) const
virtual ~DivScalarFunction(void)
virtual ~MulScalarFunction(void)
virtual doublereal operator()(const doublereal x) const
virtual doublereal operator()(const doublereal x) const
virtual doublereal operator()(const doublereal x) const
const doublereal base
virtual doublereal operator()(const doublereal x) const
std::vector< doublereal > X_i
const doublereal pw
std::vector< doublereal > vCoef
CubicSplineScalarFunction(const std::vector< doublereal > &y_i, const std::vector< doublereal > &x_i, bool doNotExtrapolate=false)
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
static std::stack< cleanup * > c
Definition: cleanup.cc:59
const DifferentiableScalarFunction *const a2
virtual doublereal operator()(const doublereal x) const
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
std::vector< doublereal > X_i
virtual ~LogScalarFunction(void)
std::vector< doublereal > b
const DifferentiableScalarFunction *const a1
static const doublereal a
Definition: hfluid_.h:289
const doublereal coef_input
SumScalarFunction(const BasicScalarFunction *const b1, const BasicScalarFunction *const b2)
double doublereal
Definition: colamd.c:52
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
long int integer
Definition: colamd.c:51
ChebychevScalarFunction(const std::vector< doublereal > &v, const doublereal &a, const doublereal &b, bool doNotExtrapolate=false)
virtual ~SubScalarFunction(void)
const DifferentiableScalarFunction *const a2
std::vector< doublereal > Y_i
LogScalarFunction(const doublereal &ml, const doublereal &b, const doublereal &c)
MultiLinearScalarFunction(const std::vector< doublereal > &y_i, const std::vector< doublereal > &x_i, bool doNotExtrapolate=false)
const DifferentiableScalarFunction *const a2
virtual doublereal ComputeDiff(const doublereal t, const integer order=1) const
std::vector< doublereal > d
const doublereal coef