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

#include <ScalarFunctionsImpl.h>

Inheritance diagram for ExpScalarFunction:
Collaboration diagram for ExpScalarFunction:

Public Member Functions

 ExpScalarFunction (const doublereal &ml, const doublereal &b, const doublereal &c)
 
virtual ~ExpScalarFunction (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
 
const doublereal base
 
const doublereal coef_input
 
doublereal coef_const
 

Detailed Description

Definition at line 106 of file ScalarFunctionsImpl.h.

Constructor & Destructor Documentation

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

Definition at line 377 of file ScalarFunctionsImpl.cc.

References base, coef_const, and grad::log().

381 : mul(ml), base(b), coef_input(c), coef_const(c)
382 {
383  if (base != 1.) {
384  coef_const *= log(b);
385  }
386 }
GradientExpression< UnaryExpr< FuncLog, Expr > > log(const GradientExpression< Expr > &u)
Definition: gradient.h:2976
const doublereal mul
const doublereal base
static std::stack< cleanup * > c
Definition: cleanup.cc:59
const doublereal coef_input

Here is the call graph for this function:

ExpScalarFunction::~ExpScalarFunction ( void  )
virtual

Definition at line 388 of file ScalarFunctionsImpl.cc.

References NO_OP.

389 {
390  NO_OP;
391 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Implements DifferentiableScalarFunction.

Definition at line 400 of file ScalarFunctionsImpl.cc.

References ASSERTMSGBREAK, coef_input, operator()(), and order.

401 {
402  ASSERTMSGBREAK(order >= 0, "Error in ExpScalarFunction::ComputeDiff, order<0");
403 
404  /*
405  *
406 
407  d^i mul_const
408  --- ( mul * log( coef * x ) ) = - ( -1 ) ^ i * ( i - 1 )! * ---------
409  dx^i x^i
410 
411  *
412  */
413 
414  doublereal d = 1.;
415  for (int i = 0; i < order; i++) {
416  d *= coef_input;
417  }
418 
419  return d * this->operator()(x);
420 }
#define ASSERTMSGBREAK(expr, msg)
Definition: myassert.h:222
enum @55 order
virtual doublereal operator()(const doublereal x) const
const doublereal coef_input
double doublereal
Definition: colamd.c:52

Here is the call graph for this function:

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

Implements DifferentiableScalarFunction.

Definition at line 394 of file ScalarFunctionsImpl.cc.

References coef_const, grad::exp(), and mul.

Referenced by ComputeDiff().

395 {
396  return exp(coef_const*x)*mul;
397 }
GradientExpression< UnaryExpr< FuncExp, Expr > > exp(const GradientExpression< Expr > &u)
Definition: gradient.h:2975
const doublereal mul

Here is the call graph for this function:

Member Data Documentation

const doublereal ExpScalarFunction::base
private

Definition at line 109 of file ScalarFunctionsImpl.h.

Referenced by ExpScalarFunction().

doublereal ExpScalarFunction::coef_const
private

Definition at line 111 of file ScalarFunctionsImpl.h.

Referenced by ExpScalarFunction(), and operator()().

const doublereal ExpScalarFunction::coef_input
private

Definition at line 110 of file ScalarFunctionsImpl.h.

Referenced by ComputeDiff().

const doublereal ExpScalarFunction::mul
private

Definition at line 108 of file ScalarFunctionsImpl.h.

Referenced by operator()().


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