MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
LogScalarFunction Class Reference

#include <ScalarFunctionsImpl.h>

Inheritance diagram for LogScalarFunction:
Collaboration diagram for LogScalarFunction:

Public Member Functions

 LogScalarFunction (const doublereal &ml, const doublereal &b, const doublereal &c)
 
virtual ~LogScalarFunction (void)
 
virtual doublereal operator() (const doublereal x) const
 
virtual doublereal ComputeDiff (const doublereal t, const integer order=1) const
 
- Public Member Functions inherited from DifferentiableScalarFunction
virtual ~DifferentiableScalarFunction ()
 
- Public Member Functions inherited from BasicScalarFunction
virtual ~BasicScalarFunction ()
 

Private Attributes

const doublereal mul_input
 
doublereal mul_const
 
const doublereal base
 
const doublereal coef
 

Detailed Description

Definition at line 92 of file ScalarFunctionsImpl.h.

Constructor & Destructor Documentation

LogScalarFunction::LogScalarFunction ( const doublereal ml,
const doublereal b,
const doublereal c 
)

Definition at line 281 of file ScalarFunctionsImpl.cc.

References grad::log(), and mul_const.

285 : mul_input(ml), mul_const(ml), base(b), coef(c)
286 {
287  if (b != 1.) {
288  mul_const /= log(b);
289  }
290 }
const doublereal mul_input
const doublereal base
GradientExpression< UnaryExpr< FuncLog, Expr > > log(const GradientExpression< Expr > &u)
Definition: gradient.h:2976
static std::stack< cleanup * > c
Definition: cleanup.cc:59
const doublereal coef

Here is the call graph for this function:

LogScalarFunction::~LogScalarFunction ( void  )
virtual

Definition at line 292 of file ScalarFunctionsImpl.cc.

References NO_OP.

293 {
294  NO_OP;
295 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

doublereal LogScalarFunction::ComputeDiff ( const doublereal  t,
const integer  order = 1 
) const
virtual

Implements DifferentiableScalarFunction.

Definition at line 310 of file ScalarFunctionsImpl.cc.

References ASSERTMSGBREAK, MBDYN_EXCEPT_ARGS, mul_const, operator()(), and order.

311 {
312  ASSERTMSGBREAK(order >= 0, "Error in LogScalarFunction::ComputeDiff, order<0");
313  if (order == 0) {
314  return this->operator()(x);
315  }
316 
317  if (x <= 0.) {
318  silent_cerr("LogScalarFunction: argument must be positive" << std::endl);
320  }
321 
322  /*
323  *
324 
325  d^i mul_const
326  --- ( mul_const * log( coef * x ) ) = - ( -1 ) ^ i * ( i - 1 )! * ---------
327  dx^i x^i
328 
329  *
330  */
331 
332  doublereal d = mul_const/x;
333  for (int i = 1; i < order; i++) {
334  d *= -i/x;
335  }
336 
337  return d;
338 }
#define ASSERTMSGBREAK(expr, msg)
Definition: myassert.h:222
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
enum @55 order
virtual doublereal operator()(const doublereal x) const
double doublereal
Definition: colamd.c:52

Here is the call graph for this function:

doublereal LogScalarFunction::operator() ( const doublereal  x) const
virtual

Implements DifferentiableScalarFunction.

Definition at line 298 of file ScalarFunctionsImpl.cc.

References coef, grad::log(), MBDYN_EXCEPT_ARGS, and mul_const.

Referenced by ComputeDiff().

299 {
300  doublereal xx = coef*x;
301  if (xx <= 0.) {
302  silent_cerr("LogScalarFunction: argument must be positive" << std::endl);
304  }
305 
306  return log(xx)*mul_const;
307 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
GradientExpression< UnaryExpr< FuncLog, Expr > > log(const GradientExpression< Expr > &u)
Definition: gradient.h:2976
double doublereal
Definition: colamd.c:52
const doublereal coef

Here is the call graph for this function:

Member Data Documentation

const doublereal LogScalarFunction::base
private

Definition at line 96 of file ScalarFunctionsImpl.h.

const doublereal LogScalarFunction::coef
private

Definition at line 97 of file ScalarFunctionsImpl.h.

Referenced by operator()().

doublereal LogScalarFunction::mul_const
private

Definition at line 95 of file ScalarFunctionsImpl.h.

Referenced by ComputeDiff(), LogScalarFunction(), and operator()().

const doublereal LogScalarFunction::mul_input
private

Definition at line 94 of file ScalarFunctionsImpl.h.


The documentation for this class was generated from the following files: