mbsim  4.0.0
MBSim Kernel
MBSim::Element Class Reference

basic class of MBSim mainly for plotting More...

#include <element.h>

Inheritance diagram for MBSim::Element:
[legend]

Public Types

enum  InitStage {
  resolveStringRef =0 , preInit , plotting , unknownStage ,
  LASTINITSTAGE
}
 The stages of the initialization. More...
 

Public Member Functions

 Element (const std::string &name)
 constructor
 
 ~Element () override=default
 destructor
 
void throwError (const std::string &msg) 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...
 
const std::string & getName () const
 
void setName (const std::string &str)
 
void setPath (const std::string &str)
 
DynamicSystemSolvergetDynamicSystemSolver ()
 
virtual void init (InitStage stage, const InitConfigSet &config=InitConfigSet())
 plots time series header More...
 
virtual void createPlotGroup ()
 creates the plotGroup for H5-output More...
 
H5::GroupBasegetPlotGroup ()
 
virtual H5::GroupBasegetFramesPlotGroup ()
 
virtual H5::GroupBasegetContoursPlotGroup ()
 
virtual H5::GroupBasegetGroupsPlotGroup ()
 
virtual H5::GroupBasegetObjectsPlotGroup ()
 
virtual H5::GroupBasegetLinksPlotGroup ()
 
virtual H5::GroupBasegetConstraintsPlotGroup ()
 
virtual H5::GroupBasegetObserversPlotGroup ()
 
bool getPlotFeature (const PlotFeatureEnum &pf)
 
virtual void setPlotFeature (const PlotFeatureEnum &pf, bool value)
 Set a plot feature. More...
 
void setPlotFeatureForChildren (const PlotFeatureEnum &pf, bool value)
 Set a plot feature for the children of this object. More...
 
void setPlotFeatureRecursive (const PlotFeatureEnum &pf, bool value)
 Set a plot feature for this object and the children of this object. More...
 
template<class T >
void setPlotAttribute (const std::string &name, const T &value)
 Set a plot attribute: static data attached as key/value pairs to the plot datasets/groups.
 
void setPlotAttribute (const std::string &name)
 
virtual void initializeUsingXML (xercesc::DOMElement *element)
 
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=nullptr, 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. More...
 
virtual std::shared_ptr< OpenMBV::GroupgetOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetFramesOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetContoursOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetGroupsOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetObjectsOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetLinksOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetConstraintsOpenMBVGrp ()
 
virtual std::shared_ptr< OpenMBV::GroupgetObserversOpenMBVGrp ()
 
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
 
const MBXMLUtils::DOMEvalExceptiongetDOMEvalError () const
 

Protected Member Functions

void updatePlotFeatures ()
 
void addToPlot (const std::string &name)
 
void addToPlot (const std::string &name, int size)
 
void addToPlot (const std::string &name, const std::vector< std::string > &iname)
 
template<class AT >
void plot (const AT &x)
 
template<class Type , class AT >
void plot (const fmatvec::Vector< Type, AT > &x)
 

Protected Attributes

Elementparent { nullptr }
 
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.
 
MBXMLUtils::DOMEvalException domEvalError
 Special XML helper variable.
 
DynamicSystemSolverds { nullptr }
 dynamic system
 
H5::VectorSerie< double > * plotVectorSerie { nullptr }
 time series
 
std::vector< double > plotVector
 one entry of time series
 
std::vector< std::string > plotColumns
 columns of time series
 
H5::GroupBaseplotGroup { nullptr }
 associated plot group
 
std::vector< Element * > dependency
 vector containing all dependencies.
 
PlotFeatureMap plotFeature
 plot feature
 
PlotFeatureMap plotFeatureForChildren
 
std::map< std::string, std::variant< std::monostate, int, double, std::string, std::vector< int >, std::vector< double >, std::vector< std::vector< double > > > > plotAttribute
 

Private Member Functions

ElementgetByPathElement (const std::string &path, bool initialCaller=true) const
 

Detailed Description

basic class of MBSim mainly for plotting

Author
Martin Foerg
Date
2009-03-24 plot feature energy (Thorsten Schindler)
2009-07-28 splitted interfaces (Thorsten Schindler)

Member Enumeration Documentation

◆ InitStage

The stages of the initialization.

see also DynamicSystemSolver::init()

Enumerator
resolveStringRef 

resolve references given by a string path to the corrosponding pointer

preInit 

Make some early initialization. TODO This should be split into detailed stages.

plotting 

Build/initialize the plot structure

unknownStage 

Init all the rest. TODO This should be split into detailed stages.

Member Function Documentation

◆ computeLevel()

int MBSim::Element::computeLevel ( )

computes the length of the pathes in the graph that represents the dependencies between all elements.

Returns
the length of the longest path in the graph.

◆ createPlotGroup()

void MBSim::Element::createPlotGroup ( )
virtual

creates the plotGroup for H5-output

Reimplemented in MBSim::Constraint, MBSim::Contour, MBSim::Frame, MBSim::Link, MBSim::Body, MBSim::Object, and MBSim::Observer.

◆ getChildByContainerAndName()

virtual Element * MBSim::Element::getChildByContainerAndName ( const std::string &  container,
const std::string &  name 
) const
inlinevirtual

Get the Element named name in the container named container.

Reimplemented in MBSim::DynamicSystem, and MBSim::Body.

◆ getDependencies()

std::vector< Element * > MBSim::Element::getDependencies ( ) const
inline

checks dependency on other elements.

Returns
a vector of elements the calling element depends on.

◆ getDynamicSystemSolver()

DynamicSystemSolver * MBSim::Element::getDynamicSystemSolver ( )
inline
Returns
dynamic system solver

◆ getName()

const std::string & MBSim::Element::getName ( ) const
inline
Returns
element name

◆ getPlotFeature()

bool MBSim::Element::getPlotFeature ( const PlotFeatureEnum pf)
inline

Get the state of the plot feature pf. Returns false if the plot feature pf is not set till now.

◆ getPlotGroup()

H5::GroupBase * MBSim::Element::getPlotGroup ( )
inline
Returns
associated plot group

◆ init()

void MBSim::Element::init ( InitStage  stage,
const InitConfigSet &  config = InitConfigSet() 
)
virtual

plots time series header

Parameters
invocingparent class

Reimplemented in MBSim::PolarContourFunction, MBSim::TwoDimensionalPiecewisePolynomFunction< Ret(Arg, Arg)>, MBSim::PlanarStribeckFriction, MBSim::PlanarStribeckImpact, MBSim::RegularizedConstraint, MBSim::RegularizedFriction, MBSim::SpatialStribeckFriction, MBSim::SpatialStribeckImpact, MBSim::GeneralizedConnectionConstraint, MBSim::GeneralizedPositionConstraint, MBSim::BidirectionalFunction< Ret(Arg)>, MBSim::CompositeFunction< Ret(Argo(Argi))>, MBSim::ContinuedFunction< Ret(Arg)>, MBSim::FourierFunction< Ret(Arg)>, MBSim::LinearRegularizedStribeckFriction, MBSim::NonlinearSpringDamperForce, MBSim::PiecewiseDefinedFunction< Ret(Arg)>, MBSim::PolynomFunction< Ret(Arg)>, MBSim::StateDependentFunction< Ret >, MBSim::SymbolicFunction< Ret(Arg)>, MBSim::SymbolicFunction< Ret(Arg1, Arg2)>, MBSim::TabularFunction< Ret(Arg)>, MBSim::TimeDependentFunction< Ret >, MBSim::TwoDimensionalTabularFunction< Ret(Arg1, Arg2)>, MBSim::VectorValuedFunction< Ret(Arg)>, MBSim::PiecewisePolynomFunction< Ret(Arg)>, MBSim::IsotropicRotationalSpringDamper, MBSim::SpringDamper, MBSim::FrameObserver, MBSim::RigidBodyObserver, MBSim::MagicFormula62, MBSim::GeneralizedAccelerationConstraint, MBSim::GeneralizedConstraint, MBSim::GeneralizedDualConstraint, MBSim::GeneralizedGearConstraint, MBSim::GeneralizedVelocityConstraint, MBSim::InverseKinematicsConstraint, MBSim::JointConstraint, MBSim::BevelGear, MBSim::Circle, MBSim::CompoundContour, MBSim::ContourQuad, MBSim::Cuboid, MBSim::Cylinder, MBSim::CylindricalGear, MBSim::Disk, MBSim::Extrusion, MBSim::Frustum, MBSim::LineSegment, MBSim::PlanarContour, MBSim::PlanarFrustum, MBSim::PlanarGear, MBSim::PlanarNurbsContour, MBSim::Plate, MBSim::Point, MBSim::PolynomialFrustum, MBSim::Rack, MBSim::Revolution, MBSim::RigidContour, MBSim::Room, MBSim::SpatialContour, MBSim::SpatialNurbsContour, MBSim::Sphere, MBSim::Tyre, MBSim::DynamicSystem, MBSim::DynamicSystemSolver, MBSim::FixedRelativeFrame, MBSim::FloatingRelativeFrame, MBSim::Frame, MBSim::LinearElasticFunction, MBSim::Contact, MBSim::ContourLink, MBSim::DirectionalSpringDamper, MBSim::DiskContact, MBSim::DualRigidBodyLink, MBSim::ElasticJoint, MBSim::FixedFrameLink, MBSim::FloatingFrameLink, MBSim::FrameLink, MBSim::GeneralizedAccelerationExcitation, MBSim::GeneralizedClutch, MBSim::GeneralizedConnection, MBSim::GeneralizedElasticConnection, MBSim::GeneralizedElasticStructure, MBSim::GeneralizedFriction, MBSim::GeneralizedGear, MBSim::GeneralizedInitialPosition, MBSim::GeneralizedInitialVelocity, MBSim::GeneralizedKinematicExcitation, MBSim::GeneralizedPositionExcitation, MBSim::GeneralizedSpringDamper, MBSim::GeneralizedVelocityExcitation, MBSim::InitialCondition, MBSim::Joint, MBSim::InverseKineticsJoint, MBSim::KineticExcitation, MBSim::Link, MBSim::MaxwellContact, MBSim::MechanicalLink, MBSim::RigidBodyLink, MBSim::SingleContact, MBSim::TyreContact, MBSim::Body, MBSim::Object, MBSim::RigidBody, MBSim::ContactObserver, MBSim::InverseKinematicsConstraintObserver, MBSim::MaxwellContactObserver, MBSim::MechanicalConstraintObserver, MBSim::MechanicalLinkObserver, MBSim::Observer, MBSim::SingleContactObserver, and MBSim::TyreContactObserver.

◆ initializeUsingXML()

void MBSim::Element::initializeUsingXML ( xercesc::DOMElement *  element)
virtual

◆ plot()

◆ plotAtSpecialEvent()

virtual void MBSim::Element::plotAtSpecialEvent ( )
inlinevirtual

plots time dependent data at special events

Parameters
simulationtime
simulationtime step size for derivative calculation

Reimplemented in MBSim::DynamicSystem.

◆ setDynamicSystemSolver()

virtual void MBSim::Element::setDynamicSystemSolver ( DynamicSystemSolver sys)
inlinevirtual

sets the used dynamics system solver to the element

Parameters
pointerto the dynamic system solver of which the element is part of

Reimplemented in MBSim::TimeDependentFunction< Ret >, MBSim::DynamicSystem, MBSim::StateDependentFunction< Ret >, MBSim::Contact, MBSim::MaxwellContact, MBSim::Body, MBSim::RigidBody, MBSim::ContactObserver, and MBSim::MaxwellContactObserver.

◆ setName()

void MBSim::Element::setName ( const std::string &  str)
inline
Parameters
elementname

◆ setPlotFeature()

void MBSim::Element::setPlotFeature ( const PlotFeatureEnum pf,
bool  value 
)
virtual

Set a plot feature.

Set the plot feature pf of this object.

◆ setPlotFeatureForChildren()

void MBSim::Element::setPlotFeatureForChildren ( const PlotFeatureEnum pf,
bool  value 
)

Set a plot feature for the children of this object.

Set the plot feature pf of all children for set plot features.

◆ setPlotFeatureRecursive()

void MBSim::Element::setPlotFeatureRecursive ( const PlotFeatureEnum pf,
bool  value 
)
inline

Set a plot feature for this object and the children of this object.

This is a convenience function. It simply calls setPlotFeature and setPlotFeatureForChildren.


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