All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Attributes | List of all members
MBSim::PiecewisePolynomFunction< Ret(Arg)> Class Template Reference

class for piecewise-polynomials and cubic spline interpolation More...

#include <piecewise_polynom_function.h>

Inheritance diagram for MBSim::PiecewisePolynomFunction< Ret(Arg)>:
MBSim::Function< Ret(Arg)> fmatvec::Function< class > MBSim::FunctionBase MBSim::Element fmatvec::Atom

Classes

class  FirstDerivative
 
class  SecondDerivative
 
class  ZerothDerivative
 

Public Types

enum  InterpolationMethod { cSplinePeriodic, cSplineNatural, piecewiseLinear }
 
- Public Types inherited from MBSim::Element
enum  PlotFeatureStatus { enabled, disabled, unset }
 Plot feature status. More...
 
enum  PlotFeature {
  plotRecursive =0, separateFilePerGroup, state, stateDerivative,
  notMinimalState, rightHandSide, globalPosition, globalVelocity,
  globalAcceleration, energy, openMBV, generalizedLinkForce,
  linkKinematics, stopVector, debug, LASTPLOTFEATURE
}
 Plot Features. More...
 
enum  InitStage {
  modelBuildup =0, resolveXMLPath, preInit, resize,
  plotting, reorganizeHierarchy, unknownStage, LASTINITSTAGE
}
 The stages of the initialization. More...
 
- Public Types inherited from fmatvec::Atom
enum  MsgType
 

Public Member Functions

int getArgSize () const
 
void init (Element::InitStage stage)
 plots time series header More...
 
void calculateSpline ()
 
void reset ()
 
Ret operator() (const Arg &x)
 
B::DRetDArg parDer (const Arg &x)
 
Ret parDerParDer (const double &x)
 
B::DRetDArg parDerDirDer (const Arg &argDir, const Arg &arg)
 
std::vector< fmatvec::MatV > getCoefficients ()
 
fmatvec::VecV getBreaks ()
 
void setInterpolationMethod (InterpolationMethod method_)
 set interpolation More...
 
void setx (const fmatvec::VecV &x_)
 
void sety (const fmatvec::MatV &y_)
 
void setxy (const fmatvec::MatV &xy)
 
void setCoefficients (const std::vector< fmatvec::MatV > &coefs_u)
 set polynomial coefficients More...
 
void setBreaks (const std::vector< fmatvec::MatV > &coefs_u, const fmatvec::VecV &breaks_u)
 set interval boundaries More...
 
virtual void initializeUsingXML (xercesc::DOMElement *element)
 initialize function with XML code More...
 
- Public Member Functions inherited from MBSim::Function< Ret(Arg)>
 Function ()
 
void initializeUsingXML (xercesc::DOMElement *element)
 
- Public Member Functions inherited from MBSim::FunctionBase
 FunctionBase ()
 
virtual ElementgetDependency () const
 
- Public Member Functions inherited from MBSim::Element
 Element (const std::string &name)
 constructor
 
virtual ~Element ()
 destructor
 
virtual void initDataInterfaceBase (DynamicSystemSolver *parentds)
 TODO.
 
virtual std::string getType () const
 
virtual void setDynamicSystemSolver (DynamicSystemSolver *sys)
 sets the used dynamics system solver to the element More...
 
virtual void plot ()
 plots time dependent data More...
 
virtual void plotAtSpecialEvent ()
 plots time dependent data at special events More...
 
virtual void closePlot ()
 closes plot file
 
const std::string & getName () const
 
void setName (const std::string &str)
 
void setPath (const std::string &str)
 
DynamicSystemSolvergetDynamicSystemSolver ()
 
virtual void createPlotGroup ()
 creates the plotGroup for H5-output
 
H5::GroupBasegetPlotGroup ()
 
virtual void setPlotFeature (PlotFeature pf, PlotFeatureStatus value)
 Set a plot feature. More...
 
void setPlotFeatureForChildren (PlotFeature pf, PlotFeatureStatus value)
 Set a plot feature for the children of this object. More...
 
void setPlotFeatureRecursive (PlotFeature pf, PlotFeatureStatus value)
 Set a plot feature for this object and the children of this object. More...
 
PlotFeatureStatus getPlotFeature (PlotFeature pf)
 
PlotFeatureStatus getPlotFeatureForChildren (PlotFeature pf)
 
PlotFeatureStatus initializePlotFeatureStatusUsingXML (xercesc::DOMElement *e)
 
PlotFeature initializePlotFeatureUsingXML (xercesc::DOMElement *e)
 
const std::vector
< MBXMLUtils::EmbedDOMLocator > & 
getLocationStack () const
 
template<class T >
T * getByPath (const std::string &path, bool initialCaller=true) const
 Get the object of type T represented by the path path. Do not set any argurment other than path!
 
std::string getPath (const Element *relTo=NULL, std::string sep="/") const
 Return the path of this object. If relativeTo is not NULL return a relative path to relativeTo. Do not set any argurment other than relTo and sep!
 
virtual ElementgetChildByContainerAndName (const std::string &container, const std::string &name) const
 Get the Element named name in the container named container.
 
virtual std::shared_ptr
< OpenMBV::Group
getOpenMBVGrp ()
 
virtual ElementgetParent ()
 
virtual const ElementgetParent () const
 
virtual void setParent (Element *parent_)
 
std::vector< Element * > getDependencies () const
 checks dependency on other elements. More...
 
void addDependency (Element *ele)
 
int computeLevel ()
 computes the length of the pathes in the graph that represents the dependencies between all elements. More...
 
virtual void updatePositions (Frame *frame)
 
virtual void updateVelocities (Frame *frame)
 
virtual void updateAccelerations (Frame *frame)
 
virtual void updateJacobians (Frame *frame, int j=0)
 
virtual void updateGyroscopicAccelerations (Frame *frame)
 
virtual void resetUpToDate ()
 
const double & getTime () const
 
double getStepSize () const
 
- Public Member Functions inherited from fmatvec::Atom
Atomoperator= (const Atom &)
 
void setMessageStreamActive (MsgType type, bool active)
 
void getMessageStream (MsgType type, std::shared_ptr< bool > &a, std::shared_ptr< std::ostream > &s)
 
void adoptMessageStreams (const Atom *src=NULL)
 
std::ostream & msg (MsgType type)
 
bool msgAct (MsgType type)
 

Protected Member Functions

void calculateSplinePeriodic ()
 calculation of periodic spline by interpolation More...
 
void calculateSplineNatural ()
 calculation of natural spline by interpolation More...
 
void calculatePLinear ()
 
- Protected Member Functions inherited from MBSim::Element
void updatePlotFeatures ()
 
- Protected Member Functions inherited from fmatvec::Atom
 Atom (const Atom &src)
 

Protected Attributes

std::vector< fmatvec::MatV > coefs
 vector of polynomial coefficents
 
fmatvec::VecV breaks
 vector of breaks (interval boundaries)
 
int nPoly
 number of defined piecewise polynomials
 
int order
 order of polynomial (3 for cubic polynomials)
 
int index
 for internal use in ppeval functions
 
fmatvec::VecV x
 
fmatvec::MatV y
 
InterpolationMethod method
 interpolation method
 
- Protected Attributes inherited from MBSim::Element
Elementparent
 
std::string name
 name of element
 
std::string path
 The path of this object. Is set during the init stage reorganizeHierarchy. Before this the path is calculated dynamically using getPath() after this stage getPath just returns this value.
 
std::vector
< MBXMLUtils::EmbedDOMLocator
locationStack
 
DynamicSystemSolverds
 dynamic system
 
H5::VectorSerie< double > * plotVectorSerie
 time series
 
std::vector< double > plotVector
 one entry of time series
 
std::vector< std::string > plotColumns
 columns of time series
 
H5::GroupBaseplotGroup
 associated plot group
 
std::vector< Element * > dependency
 vector containing all dependencies.
 

Private Types

using B = fmatvec::Function< Ret(Arg)>
 

Private Attributes

ZerothDerivative f
 
FirstDerivative fd
 
SecondDerivative fdd
 

Additional Inherited Members

- Static Public Member Functions inherited from MBSim::Element
static double getDouble (xercesc::DOMElement *e)
 
static int getInt (xercesc::DOMElement *e)
 
static bool getBool (xercesc::DOMElement *e)
 
static fmatvec::Vec3 getVec3 (xercesc::DOMElement *e)
 
static fmatvec::Vec getVec (xercesc::DOMElement *e, int rows=0)
 
static fmatvec::Mat3xV getMat3xV (xercesc::DOMElement *e, int cols=0)
 
static fmatvec::Mat getMat (xercesc::DOMElement *e, int rows=0, int cols=0)
 
static fmatvec::SqrMat3 getSqrMat3 (xercesc::DOMElement *e)
 
static fmatvec::SqrMat getSqrMat (xercesc::DOMElement *e, int size=0)
 
static fmatvec::SymMat3 getSymMat3 (xercesc::DOMElement *e)
 
static fmatvec::SymMat getSymMat (xercesc::DOMElement *e, int size=0)
 
- Static Public Member Functions inherited from fmatvec::Atom
static void setCurrentMessageStream (MsgType type, const std::shared_ptr< bool > &a=std::make_shared< bool >(true), const std::shared_ptr< std::ostream > &s=std::make_shared< std::ostream >(std::cout.rdbuf()))
 
static std::ostream & msgStatic (MsgType type)
 
static bool msgActStatic (MsgType type)
 

Detailed Description

template<typename Ret, typename Arg>
class MBSim::PiecewisePolynomFunction< Ret(Arg)>

class for piecewise-polynomials and cubic spline interpolation

Author
Robert Huber
Date
2006-08-31 initial commit
2006-09-05 verified with matlab /octave (Robert Huber)
2008-05-21 C++ beauty treatment, PLinear (Thorsten Schindler)
2009-08-11 kernel_dev (Thorsten Schindler)
Todo:
add deletes TODO

Spline / PP-Form info Piecewise polynomial: $ c0 xloc^n + c1 xloc^{n-1} + c2 xloc^{n-2} + \dots + cn $ with [c0 c1 c2 ... cn] ith row vector of coefs-matrix breaks(i) << x << breaks(i+1) defines i and xloc = x-breaks(i)

Ex. cubic spline with breaks= [0; 0.3; 0.5] coefs= [d1 c1 b1 a1; d2 c2 b2 a2]

\[ S(x) = a1 + b1 xloc + c1 xloc^2 + d1 xloc^3 for x\in[0;0.3] \text{and} x_loc = x \]

\[ S(x) = a2 + b2 xloc + c2 xloc^2 + d2 xloc^3 for x\in[0.3;0.5] \text{and} xloc = x - 0.3 \]

Cubic spline (xi,fi) i=1..N is being interpolated by N-1 piecewise polynomials Si of degree 3 yielding a global $ C^2 $ curve for uniqueness TWO additional boundary conditions are necessary (periodic / natural)

Piecewise linear polynomial (xi,fi) i=1..N is being interpolated by N-1 piecewise polynomials Si of degree 1 yielding a globally weak differentiable curve in the context of this class the second derivative is defined to be zero everywhere (which is mathematically wrong)

Member Function Documentation

template<typename Ret , typename Arg >
void MBSim::PiecewisePolynomFunction< Ret(Arg)>::calculateSplineNatural ( )
protected

calculation of natural spline by interpolation

Parameters
interpolatedarguments
interpolatedfunction values
template<typename Ret , typename Arg >
void MBSim::PiecewisePolynomFunction< Ret(Arg)>::calculateSplinePeriodic ( )
protected

calculation of periodic spline by interpolation

Parameters
interpolatedarguments
interpolatedfunction values
template<typename Ret , typename Arg >
fmatvec::VecV MBSim::PiecewisePolynomFunction< Ret(Arg)>::getBreaks ( )
inline
Returns
interval boundaries
template<typename Ret , typename Arg >
std::vector<fmatvec::MatV> MBSim::PiecewisePolynomFunction< Ret(Arg)>::getCoefficients ( )
inline
Returns
polynomial coefficients
template<typename Ret , typename Arg >
void MBSim::PiecewisePolynomFunction< Ret(Arg)>::init ( Element::InitStage  stage)
inlinevirtual

plots time series header

Parameters
invocingparent class

Reimplemented from MBSim::Element.

template<typename Ret , typename Arg >
void MBSim::PiecewisePolynomFunction< Ret(Arg)>::initializeUsingXML ( xercesc::DOMElement *  element)
virtual

initialize function with XML code

Parameters
XMLelement

Reimplemented from MBSim::Element.

template<typename Ret , typename Arg >
void MBSim::PiecewisePolynomFunction< Ret(Arg)>::setBreaks ( const std::vector< fmatvec::MatV > &  coefs_u,
const fmatvec::VecV &  breaks_u 
)
inline

set interval boundaries

Parameters
intervalboundaries
template<typename Ret , typename Arg >
void MBSim::PiecewisePolynomFunction< Ret(Arg)>::setCoefficients ( const std::vector< fmatvec::MatV > &  coefs_u)
inline

set polynomial coefficients

Parameters
polynomialcoefficients
template<typename Ret , typename Arg >
void MBSim::PiecewisePolynomFunction< Ret(Arg)>::setInterpolationMethod ( InterpolationMethod  method_)
inline

set interpolation

Parameters
InterpolationMethod'cSplinePeriodic' -> cubic Spline with periodic end conditions (two-times continuously differentiable) S(x1) = S(xN) -> f(0)=f(end) S'(x1) = S'(xN) S''(x1) = S''(xN) 'cSplineNatural' -> cubic Spline with natural end conditions (two-times continuously differentiable) S''(x1) = S''(xN) = 0 'piecewiseLinear' -> piecewise linear function (weak differentiable)

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

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML