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

#include <ScalarFunctionsImpl.h>

Inheritance diagram for DivScalarFunction:
Collaboration diagram for DivScalarFunction:

Public Member Functions

 DivScalarFunction (const BasicScalarFunction *const b1, const BasicScalarFunction *const b2)
 
virtual ~DivScalarFunction (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
DifferentiableScalarFunction
*const 
a1
 
const
DifferentiableScalarFunction
*const 
a2
 

Detailed Description

Definition at line 207 of file ScalarFunctionsImpl.h.

Constructor & Destructor Documentation

DivScalarFunction::DivScalarFunction ( const BasicScalarFunction *const  b1,
const BasicScalarFunction *const  b2 
)

Definition at line 936 of file ScalarFunctionsImpl.cc.

References NO_OP.

939 : a1(ptr_cast<const DifferentiableScalarFunction*const>(b1)),
940 a2(ptr_cast<const DifferentiableScalarFunction*const>(b2))
941 {
942  NO_OP;
943 }
#define NO_OP
Definition: myassert.h:74
const DifferentiableScalarFunction *const a1
const DifferentiableScalarFunction *const a2
DivScalarFunction::~DivScalarFunction ( void  )
virtual

Definition at line 945 of file ScalarFunctionsImpl.cc.

References NO_OP.

946 {
947  NO_OP;
948 }
#define NO_OP
Definition: myassert.h:74

Member Function Documentation

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

Implements DifferentiableScalarFunction.

Definition at line 965 of file ScalarFunctionsImpl.cc.

References a1, a2, ASSERTMSGBREAK, DifferentiableScalarFunction::ComputeDiff(), MBDYN_EXCEPT_ARGS, and operator()().

966 {
967  doublereal d;
968  ASSERTMSGBREAK(order >= 0, "Error in DivScalarFunction::ComputeDiff, order<0");
969  switch (order) {
970  case 0:
971  return this->operator()(x);
972 
973  default:
974  d = a2->operator()(x);
975  if (d == 0.) {
976  /* TODO: cleanup exception handling */
977  silent_cerr("DivScalarFunction: division by zero" << std::endl);
979  }
980 
981  return a1->ComputeDiff(x, order)/d
982  - a1->operator()(x)/(d*d)*a2->ComputeDiff(x, order);
983  }
984 }
#define ASSERTMSGBREAK(expr, msg)
Definition: myassert.h:222
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
virtual doublereal operator()(const doublereal x) const
const DifferentiableScalarFunction *const a1
enum @55 order
virtual doublereal ComputeDiff(const doublereal x, const integer order=1) const =0
double doublereal
Definition: colamd.c:52
const DifferentiableScalarFunction *const a2

Here is the call graph for this function:

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

Implements DifferentiableScalarFunction.

Definition at line 951 of file ScalarFunctionsImpl.cc.

References a1, a2, and MBDYN_EXCEPT_ARGS.

Referenced by ComputeDiff().

952 {
953  doublereal n, d;
954  d = a2->operator()(x);
955  if (d == 0) {
956  /* TODO: cleanup exception handling */
957  silent_cerr("DivScalarFunction: division by zero" << std::endl);
959  }
960  n = a1->operator()(x);
961  return n/d;
962 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
const DifferentiableScalarFunction *const a1
double doublereal
Definition: colamd.c:52
const DifferentiableScalarFunction *const a2

Member Data Documentation

const DifferentiableScalarFunction* const DivScalarFunction::a1
private

Definition at line 209 of file ScalarFunctionsImpl.h.

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

const DifferentiableScalarFunction* const DivScalarFunction::a2
private

Definition at line 210 of file ScalarFunctionsImpl.h.

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


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