Skip to main content
Ctrl+K
kdFlex 1.1.7 documentation - Home
  • Chatbot

Contents:

  • Chatbot
  • Installation
  • Examples
  • Key concepts
  • Usage Guide
  • Recipes
  • Program skeletons
  • API
    • kdFlex Python API
      • Karana
        • Karana.Collision
        • Karana.Core
        • Karana.Dynamics
        • Karana.Frame
        • Karana.Integrators
        • Karana.KUtils
        • Karana.Math
        • Karana.Models
        • Karana.Scene
        • Karana.WebUI
        • Karana.version
    • kdFlex C++ API
      • Namespace ceres
      • Namespace coal
      • Namespace Eigen
      • Namespace Karana
      • Namespace Karana::Collision
      • Namespace Karana::Core
      • Namespace Karana::Core::detail
      • Namespace Karana::Dynamics
      • Namespace Karana::Dynamics::Algorithms
      • Namespace Karana::Frame
      • Namespace Karana::Integrators
      • Namespace Karana::KUtils
      • Namespace Karana::Math
      • Namespace Karana::Models
      • Namespace Karana::Scene
      • Namespace Karana::WebUI
      • Namespace KaranaTest
      • Namespace KaranaTest::Dynamics
      • Namespace kf
      • Namespace kf::Frame
      • Namespace LockingBase
      • Namespace pybind11
      • Namespace pybind11::detail
      • Namespace RequirementsTest
      • Namespace spdlog
      • Namespace spdlog::sinks
      • Namespace std
      • Template Struct has_pybind11_caster
      • Struct FrameContact
      • Struct NonlinearContactForce::NonlinearContactForceParams
      • Struct NonlinearContactForce::NonlinearContactForceScratch
      • Struct Base::DumpOptions
      • Struct BaseWithVars::DumpOptions
      • Struct BasicDAGImpl::Node
      • Struct BasicTreeImpl::Node
      • Struct EdgeHash
      • Struct LockingBase::DumpOptions
      • Struct NestedVars
      • Struct ModalAnalysis
      • Struct CompoundBody::ATBIDataCaches
      • Struct CompoundBody::DumpOptions
      • Struct CompoundBody::InvDynVectors
      • Struct CompoundSubhinge::ATBIFilterVectors
      • Struct CompoundSubhinge::ATBIMatrices
      • Struct CoordBase::ATBIFilterVectors
      • Struct CoordBase::ATBIMatrices
      • Struct CoordData::CoordOffset
      • Struct DynamicFunctor
      • Struct DynamicFunctorNoJac
      • Template Struct Functor
      • Struct HingeBase::HingeParams
      • Struct HingeNode::DumpOptions
      • Struct HingeOnodeATBIDataCaches
      • Struct HingeOnodeATBIFilterVectors
      • Struct HingeOnodeATBIMatrices
      • Struct HingeOnodeATBISmootherVectors
      • Struct HingeOnodeInvDynVectors
      • Struct HingeOnodeUpsilonMatrices
      • Struct HingePnode::ATBIDataCaches
      • Struct HingePnode::ATBIFilterVectors
      • Struct HingePnode::ATBIMatrices
      • Struct HingePnode::ATBISmootherVectors
      • Struct HingePnode::InvDynVectors
      • Struct HingePnode::UpsilonMatrices
      • Struct IODataPool
      • Struct Linear3SubhingeParams
      • Struct LinearSubhingeParams
      • Struct LockedOffsetSubhingeParams
      • Struct LoopConstraintBase::QMats
      • Struct ModalNodeDeformationProvider::DeformationParams
      • Struct ModelManager::MMFunctions
      • Struct NodeDeformationProvider::DeformationParams
      • Struct PhysicalBody::DumpOptions
      • Struct PhysicalBody::GatherSweepFlags
      • Struct PhysicalBody::InvDynVectors
      • Struct PhysicalBodyParams
      • Struct PhysicalHingeParams
      • Struct PhysicalModalBody::ATBIFilterVectors
      • Struct PhysicalModalBody::ATBIMatrices
      • Struct PhysicalModalBody::ATBISmootherVectors
      • Struct PhysicalModalBody::ModalUpsilonMatrices
      • Struct PhysicalModalBody::SZNodeMatrices
      • Struct PhysicalModalBodyParams
      • Struct PhysicalSubhinge::PhysicalSubhingeParamsAndState
      • Struct PhysicalSubhinge_T::ATBIFilterVectors
      • Struct PhysicalSubhinge_T::ATBIMatrices
      • Struct PhysicalSubhingeParams
      • Struct PinSubhingeParams
      • Struct ScrewSubhingeParams
      • Struct SphericalQuatSubhingeParams
      • Struct SphericalSubhinge::PhysicalSubhingeParamsAndState
      • Struct SphericalSubhingeParams
      • Struct StatePropagator::Counters
      • Struct StickPartsConfig
      • Struct SubTree::DumpTreeOptions
      • Struct SubTree::LayoutBodyData
      • Struct Frame::DumpFrameTreeOptions
      • Struct FrameContainer::DumpOptions
      • Struct FrameToFrame::DumpOptions
      • Struct OrientedChainedFrameToFrame::DumpOptions
      • Struct ArkImplicitIntegrator::IntegratorOptions
      • Template Struct CachedCounter
      • Struct CVodeIntegrator::IntegratorOptions
      • Struct IdaIntegrator::IntegratorOptions
      • Struct Integrator::IntegratorOptions
      • Template Struct StaleCachedCounter
      • Struct StallDetector::StallDiagnostics
      • Struct SundialsImplicitIntegrator::IntegratorOptions
      • Struct SundialsIntegrator::IntegratorOptions
      • Template Struct extract_matrix_dimensions
      • Template Struct extract_matrix_dimensions< Eigen::Matrix< double, _rows, 1 > >
      • Template Struct extract_matrix_dimensions< Eigen::Matrix< double, _rows, _cols, Eigen::RowMajor > >
      • Template Struct extract_rows
      • Template Struct extract_rows< Eigen::Matrix< double, rows, 1 > >
      • Template Struct is_eigen_int_type
      • Template Struct is_eigen_int_type< Eigen::Matrix< int, Rows, 1 > >
      • Template Struct is_eigen_type
      • Template Struct is_eigen_type< Eigen::Matrix< double, Rows, 1 > >
      • Template Struct is_eigen_type< Eigen::Matrix< double, Rows, Cols, Eigen::RowMajor > >
      • Template Struct is_eigen_vector
      • Template Struct is_eigen_vector< Eigen::Matrix< double, Rows, 1 > >
      • Struct PacketTableSlot
      • Struct SinglePlotData
      • Struct AccelerationTag
      • Struct AngleTag
      • Struct AngularAccelerationTag
      • Struct AngularMomentumTag
      • Struct AngularVelocityTag
      • Struct ForceTag
      • Struct GravitationalParameterTag
      • Struct InertiaTag
      • Struct LengthTag
      • Struct LinearDampingConstantTag
      • Struct LinearSpringConstantTag
      • Struct MassTag
      • Struct ModalAccelerationTag
      • Struct ModalCoordinateTag
      • Struct ModalDampingTag
      • Struct ModalForceTag
      • Struct ModalStiffnessTag
      • Struct ModalVelocityTag
      • Struct MomentumTag
      • Template Struct NumDiffBaseFunctor
      • Struct NumDiffFunctor
      • Struct QuantityOrValueTag
      • Template Struct QuantityTag
      • Template Struct QuantityTag< Quantity::acceleration >
      • Template Struct QuantityTag< Quantity::angle >
      • Template Struct QuantityTag< Quantity::angular_acceleration >
      • Template Struct QuantityTag< Quantity::angular_momentum >
      • Template Struct QuantityTag< Quantity::angular_velocity >
      • Template Struct QuantityTag< Quantity::force >
      • Template Struct QuantityTag< Quantity::gravitational_parameter >
      • Template Struct QuantityTag< Quantity::inertia >
      • Template Struct QuantityTag< Quantity::length >
      • Template Struct QuantityTag< Quantity::linear_damping_constant >
      • Template Struct QuantityTag< Quantity::linear_spring_constant >
      • Template Struct QuantityTag< Quantity::mass >
      • Template Struct QuantityTag< Quantity::modal_acceleration >
      • Template Struct QuantityTag< Quantity::modal_coordinate >
      • Template Struct QuantityTag< Quantity::modal_damping >
      • Template Struct QuantityTag< Quantity::modal_force >
      • Template Struct QuantityTag< Quantity::modal_stiffness >
      • Template Struct QuantityTag< Quantity::modal_velocity >
      • Template Struct QuantityTag< Quantity::momentum >
      • Template Struct QuantityTag< Quantity::rotational_nodal_matrix >
      • Template Struct QuantityTag< Quantity::torque >
      • Template Struct QuantityTag< Quantity::translational_nodal_matrix >
      • Template Struct QuantityTag< Quantity::velocity >
      • Template Struct QuantityValue
      • Template Struct QuantityValueTyping
      • Template Struct QuantityValueTyping< double >
      • Template Struct QuantityValueTyping< Mat33 >
      • Template Struct QuantityValueTyping< Mat3n >
      • Template Struct QuantityValueTyping< Vec >
      • Template Struct QuantityValueTyping< Vec3 >
      • Struct RankInfo
      • Struct RotationalNodalMatrixTag
      • Struct StateSpace::SS
      • Struct TorqueTag
      • Struct TranslationalNodalMatrixTag
      • Struct VelocityTag
      • Struct GravityOutput
      • Struct MultibodyObjs
      • Struct ClientSceneData
      • Struct CollisionInfo
      • Struct Contact
      • Struct DistanceInfo
      • Struct ImportResult
      • Struct OrthographicProjection
      • Struct PerspectiveProjection
      • Struct PhongMaterialInfo
      • Struct PhysicalMaterialInfo
      • Struct RGBABuffer
      • Struct SceneFileObjectSpec
      • Struct ScenePartSpec
      • Struct Shadow
      • Struct TextParameters
      • Struct WireframeMaterialInfo
      • Struct LocalClientOptions
      • Struct Selection::Item
      • Struct SliderOptions
      • Struct TreeView::Edge
      • Struct TreeView::Node
      • Template Struct ConcreteSubhingeParamsCaster
      • Template Struct SubhingeParamsDSName
      • Template Struct SubhingeParamsDSName< kd::Linear3SubhingeParams >
      • Template Struct SubhingeParamsDSName< kd::LinearSubhingeParams >
      • Template Struct SubhingeParamsDSName< kd::PinSubhingeParams >
      • Template Struct SubhingeParamsDSName< kd::ScrewSubhingeParams >
      • Template Struct SubhingeParamsDSName< kd::SphericalQuatSubhingeParams >
      • Template Struct SubhingeParamsDSName< kd::SphericalSubhingeParams >
      • Template Struct type_caster< Karana::Core::ks_ptr< Karana::Core::NumericVar< T > > >
      • Template Struct type_caster< Karana::Core::ks_ptr< Karana::Core::Var< T, quantity > > >
      • Template Struct type_caster< Karana::Core::NumericVar< T > >
      • Template Struct type_caster< Karana::Core::Var< T, quantity > >
      • Template Struct type_caster< Karana::Math::QuantityOrValue< Value > >
      • Template Struct type_caster< Karana::Math::QuantityValue< Value, Tag > >
      • Template Struct type_caster< kc::ks_ptr< kd::Linear3SubhingeParams > >
      • Template Struct type_caster< kc::ks_ptr< kd::LinearSubhingeParams > >
      • Template Struct type_caster< kc::ks_ptr< kd::PhysicalSubhingeParams > >
      • Template Struct type_caster< kc::ks_ptr< kd::PinSubhingeParams > >
      • Template Struct type_caster< kc::ks_ptr< kd::ScrewSubhingeParams > >
      • Template Struct type_caster< kc::ks_ptr< kd::SphericalQuatSubhingeParams > >
      • Template Struct type_caster< kc::ks_ptr< kd::SphericalSubhingeParams > >
      • Template Struct type_caster< kd::PhysicalBodyParams >
      • Template Struct type_caster< kd::PhysicalHingeParams >
      • Template Struct PyStateTypeWrapper
      • Template Struct PyTypeWrapper
      • Struct Requirement
      • Struct RequirementsLogger::RequirementRecord
      • Template Class duration_caster
      • Class ContactForceBase
      • Class ContactForceManager
      • Class DampedContactForce
      • Class DampedContactForce::DampedContactForceParams
      • Class DampedContactForce::DampedContactForceScratch
      • Class FrameCollider
      • Class HuntCrossleyContactForce
      • Class HuntCrossleyContactForce::HuntCrossleyContactForceParams
      • Class HuntCrossleyContactForce::HuntCrossleyContactForceScratch
      • Class NonlinearContactForce
      • Class Base
      • Class BaseContainer
      • Class BaseVars
      • Class BaseWithVars
      • Template Class BasicDAGImpl
      • Template Class BasicTreeImpl
      • Template Class CallbackRegistry
      • Template Class DAG
      • Template Class DataCache
      • Class DebugManager
      • Class DelFns
      • Class DisableBaseContainerWrites
      • Class IdGenerator
      • Class IdHashStruct
      • Class JsonLogger
      • Class LockingBase
      • Class LockingBaseVars
      • Class MsgLogger
      • Class my_formatter_flag
      • Template Class NumericVar
      • Template Class RegistryList
      • Class ResourceFinder
      • Class SideEffect
      • Class StderrLog
      • Class StdoutLog
      • Class ThreadPool
      • Template Class Tree
      • Template Class UsageTrackingMap
      • Template Class Var
      • Class VarBase
      • Class AlgorithmsPrivate
      • Class BilateralConstraintBase
      • Class BilateralConstraintBaseVars
      • Class BodyBase
      • Class CECompoundBody
      • Class CECompoundBodyVars
      • Class CECompoundSubhinge
      • Class CELoopKinematicsBase
      • Class CELoopKinematicsBaseVars
      • Class CELoopKinematicsNumeric
      • Class CELoopKinematicsNumericVars
      • Class CELoopKinematicsPlanar4Bar
      • Class CeresNonlinearSolver
      • Class CeresNonlinearSolver::AnalyticCost
      • Class CompoundBody
      • Class CompoundBodyVars
      • Class CompoundHinge
      • Class CompoundSubhinge
      • Class CompoundSubhingeVars
      • Class ConstraintKinematicsSolver
      • Class ConstraintKinematicsSolverVars
      • Class ConstraintNode
      • Class CoordBase
      • Template Class CoordBase_T
      • Class CoordData
      • Class CoordDataVars
      • Class CoordinateConstraint
      • Class CoordinateConstraintVars
      • Class EigenNonlinearSolver
      • Class FramePairHinge
      • Class FramePairHingeVars
      • Class FrameToFrameJacobianGenerator
      • Class HingeBase
      • Class HingeNode
      • Class HingeOnode
      • Class HingePnode
      • Class Linear3Subhinge
      • Class LinearSubhinge
      • Class LockedOffsetSubhinge
      • Class LockedSubhinge
      • Class LoopConstraintBase
      • Class LoopConstraintBaseVars
      • Class LoopConstraintConVel
      • Class LoopConstraintConVelVars
      • Class LoopConstraintCutJoint
      • Class LoopConstraintCutJointVars
      • Class ModalNodeDeformationProvider
      • Class ModalNodeDeformationProviderVars
      • Class ModelManager
      • Class ModelManager::MMOptions
      • Class ModelManagerVars
      • Class Multibody
      • Class MultiJacobianGenerator
      • Class Node
      • Class NodeDeformationProvider
      • Class NodeVars
      • Class NonlinearSolver
      • Class ParentBodyAttachmentParams
      • Class ParentPhysicalBodyAttachmentParams
      • Class ParentPhysicalModalBodyAttachmentParams
      • Class Physical1DofSubhinge
      • Class Physical1DofSubhingeVars
      • Class PhysicalBody
      • Class PhysicalBodyVars
      • Class PhysicalHinge
      • Class PhysicalModalBody
      • Class PhysicalModalBodyVars
      • Class PhysicalSubhinge
      • Template Class PhysicalSubhinge_T
      • Class PhysicalSubhingeVars
      • Class PinSubhinge
      • Class Scheduler
      • Class ScrewSubhinge
      • Class SphericalQuatSubhinge
      • Class SphericalSubhinge
      • Class StatePropagator
      • Class StatePropagator::SpOptions
      • Class StatePropagatorVars
      • Class SubGraph
      • Class SubGraphVars
      • Class SubhingeBase
      • Class SubTree
      • Class SubTreeVars
      • Class TimedEvent
      • Class ChainedFrameToFrame
      • Class ChainedFrameToFrameVars
      • Class EdgeFrameToFrame
      • Class FollowerFrameToFrame
      • Class Frame
      • Class FrameContainer
      • Class FrameToFrame
      • Class FrameToFrameVars
      • Class FrameVars
      • Class OrientedChainedFrameToFrame
      • Class OrientedChainedFrameToFrameVars
      • Class PrescribedFrameToFrame
      • Class SpiceFrame
      • Class SpiceFrameToFrame
      • Class TimeKeeper
      • Class TimeKeeperVars
      • Class ArkExplicitIntegrator
      • Class ArkExplicitIntegratorVars
      • Class ArkImplicitIntegrator
      • Class ArkImplicitIntegratorVars
      • Class CVodeIntegrator
      • Class CVodeIntegratorVars
      • Class EulerIntegrator
      • Class ExplicitVerletIntegrator
      • Class IdaIntegrator
      • Class Integrator
      • Class NoopIntegrator
      • Class PartitionedIntegrator
      • Class RK4Integrator
      • Class StallDetector
      • Class SundialsImplicitIntegrator
      • Class SundialsImplicitIntegratorVars
      • Class SundialsIntegrator
      • Class SundialsIntegratorVars
      • Class SundialsSolverBundle
      • Class ContactForceVisualizer
      • Class FrameToFrameVectorVisualizer
      • Class FSM
      • Class FSMState
      • Class FSMTransition
      • Class FSMVars
      • Class H5Writer
      • Class PacketTableConfig
      • Class PlotData
      • Class ScaledVectorVisualizer
      • Class TcpClient
      • Class VectorVisualizer
      • Class AABB
      • Class AkimaSplineInterpolator
      • Class BaseInterpolator
      • Class ConstantInterpolator
      • Class CubicHermiteInterpolator
      • Class HomTran
      • Class Jacobian
      • Class LinearInterpolator
      • Class NearestNeighborInterpolator
      • Class Ray
      • Class RotationMatrix
      • Class RotationVector
      • Class SimTran
      • Class SpatialAcceleration
      • Class SpatialForce
      • Class SpatialInertia
      • Class SpatialMomentum
      • Class SpatialVector
      • Class SpatialVelocity
      • Class StateSpace
      • Class UnitQuaternion
      • Class BaseKModel
      • Class ComputedTorque
      • Template Class ConstantProfileGenerator
      • Template Class CubicSplineProfileGenerator
      • Class DataLogger
      • Class DataLoggerParams
      • Class DataPlotter
      • Class DataPlotterParams
      • Class GilRelease
      • Class GraphicalSceneMovie
      • Class GraphicalSceneMovieParams
      • Class Gravity
      • Class GravityInterface
      • Class GravityVars
      • Template Class KModel
      • Class KModelContinuousStates
      • Class KModelDiscreteStates
      • Class KModelParams
      • Class KModelScratch
      • Template Class KModelVars
      • Template Class LinearProfileGenerator
      • Class NoContinuousStates
      • Class NoDiscreteStates
      • Class NoParams
      • Class NoScratch
      • Class ParallelVehicles
      • Class PenaltyContact
      • Class PID
      • Class PIDParams
      • Class PIDParamsVars
      • Class PinJointLimits
      • Class PinJointLimitsParams
      • Class PinVelControl
      • Class PinVelControlParams
      • Class PinVelControlParamsVars
      • Class PointMassGravity
      • Template Class ProfileGenerator
      • Template Class ProfileGeneratorVars
      • Class ProjectConstraintError
      • Class ProjectConstraintErrorParams
      • Template Class QuinticSplineProfileGenerator
      • Class SetMaskedCoordinates
      • Class SpringDamper
      • Class SpringDamperParams
      • Class SpringDamperParamsVars
      • Class SpringDamperScratch
      • Class SpringDamperScratchVars
      • Class SubhingeForceLimits
      • Class SubhingeForceLimitsParams
      • Class SubhingeSpringDamper
      • Class SubhingeSpringDamperParams
      • Class SyncRealTime
      • Class TimeDisplay
      • Class TimeDisplayParams
      • Class TimeDisplayParamsVars
      • Class UniformGravity
      • Class UpdateProxyScene
      • Class AbstractExporter
      • Class AbstractImporter
      • Class AbstractStaticGeometry
      • Class AssimpExporter
      • Class AssimpImporter
      • Class BoxGeometry
      • Class CapsuleGeometry
      • Class ClientRegistry
      • Class CoalGeometryCache
      • Class CoalScene
      • Class CoalSceneFileObject
      • Class CoalSceneNode
      • Class CoalScenePart
      • Class CollisionScene
      • Class CollisionSceneNode
      • Class CollisionScenePart
      • Class Color
      • Class ConeGeometry
      • Class CylinderGeometry
      • Class ExtMime
      • Class GraphicalScene
      • Class GraphicalSceneCamera
      • Class GraphicalSceneNode
      • Class GraphicalScenePart
      • Class GrayscaleTexture
      • Class HeightFieldGeometry
      • Class ImplDatabase
      • Class PhongMaterial
      • Class PhysicalMaterial
      • Class ProxyScene
      • Class ProxySceneFileObject
      • Class ProxySceneFileObjectVars
      • Class ProxySceneNode
      • Class ProxyScenePart
      • Class ProxyScenePartVars
      • Class ProxySceneVars
      • Class RoundFrustumGeometry
      • Class Scene
      • Class SceneFileObject
      • Class SceneFileObjectVars
      • Class SceneManager
      • Class SceneNode
      • Class SceneNodeVars
      • Class ScenePart
      • Class ScenePartSpecVars
      • Class ScenePartVars
      • Class SceneVars
      • Class SphereGeometry
      • Class StaticMeshGeometry
      • Class Texture
      • Class TransformUpdateScope
      • Class WebResourceManager
      • Class WebScene
      • Class WebSceneAmbientLight
      • Class WebSceneBetweenLine
      • Class WebSceneCamera
      • Class WebSceneDirectionalLight
      • Class WebSceneFileObject
      • Class WebSceneNode
      • Class WebSceneOverlayText
      • Class WebScenePart
      • Class WebScenePointLight
      • Class WebSceneSpotLight
      • Class WireframeMaterial
      • Class Accordion
      • Class Button
      • Class Channel
      • Class ClientApp
      • Class Connection
      • Class ContentSource
      • Class DataTree
      • Class Dock
      • Class Dropdown
      • Class HttpWsServer
      • Class IFrame
      • Class InputGroup
      • Class Layout
      • Class Markdown
      • Template Class NumericTypedInput
      • Class QuantityInput
      • Class Router
      • Class Selection
      • Class SelectionTable
      • Class Server
      • Class Slider
      • Class State
      • Class Toggle
      • Class TreeView
      • Template Class TypedInput
      • Class Widget
      • Class RequirementsLogger
      • Class SafeGILRelease
      • Template Class type_caster< std::chrono::duration< Rep, Period > >
      • Template Class type_caster< std::chrono::time_point< Clock, Duration > >
      • Enum VarType
      • Enum BilateralConstraintType
      • Enum CKFrozenCoordType
      • Enum HingeType
      • Enum MMSolverType
      • Enum NeedsStateReset
      • Enum SpStatusEnum
      • Enum SubhingeMask
      • Enum SubhingeType
      • Enum TimeType
      • Enum IntegratorType
      • Enum FrameToFrameRateType
      • Enum PacketTableWriteMode
      • Enum DumpFormatType
      • Enum Quantity
      • Enum OutputUpdateType
      • Enum Alignment
      • Enum SizeClass
      • Enum Status
      • Function ADD_TO_DS_METHOD_CASTER(SubhingeSpringDamper, Karana.Models., SubhingeSpringDamperDS)
      • Function ADD_TO_DS_METHOD_CASTER(ProfileGenerator<double>, Karana.Models., ProfileGeneratorDS)
      • Function cast
      • Function Karana::Core::__attribute__
      • Function Karana::Core::_dummy
      • Function Karana::Core::_ensureRegisteredPy
      • Function Karana::Core::_numTraceCheck
      • Function Karana::Core::_numTraceInt(std::string_view)
      • Function Karana::Core::_numTraceInt(msg_f)
      • Template Function Karana::Core::_numTraceInt(spdlog::format_string_t<Args…>, Args&&…)
      • Template Function Karana::Core::addToDSMethod
      • Template Function Karana::Core::addToStateDSMethod
      • Template Function Karana::Core::addVarsToStruct
      • Function Karana::Core::allDestroyed
      • Function Karana::Core::allHealthy
      • Function Karana::Core::allReady
      • Template Function Karana::Core::CallbackRegistryPybind11
      • Template Function Karana::Core::const_pointer_cast
      • Template Function Karana::Core::createSharedPtrDiscard
      • Function Karana::Core::debug(std::string_view)
      • Function Karana::Core::debug(msg_f)
      • Template Function Karana::Core::debug(spdlog::format_string_t<Args…>, Args&&…)
      • Function Karana::Core::debugJson(const nlohmann::ordered_json&, OrderedJsonToString)
      • Function Karana::Core::debugJson(const nlohmann::json&, JsonToString)
      • Function Karana::Core::defaultJsonToString
      • Function Karana::Core::defaultOrderedJsonToString
      • Function Karana::Core::deprecated
      • Template Function Karana::Core::deprecatedWrapper
      • Function Karana::Core::detail::normalizeVarUnits
      • Template Function Karana::Core::discard
      • Template Function Karana::Core::dynamic_pointer_cast
      • Function Karana::Core::error(std::string_view)
      • Function Karana::Core::error(msg_f)
      • Template Function Karana::Core::error(spdlog::format_string_t<Args…>, Args&&…)
      • Function Karana::Core::findPythonReferences
      • Function Karana::Core::findResource
      • Function Karana::Core::findShareDir
      • Function Karana::Core::findVariablesInFrame
      • Function Karana::Core::findVariablesInGc
      • Function Karana::Core::getVarType
      • Function Karana::Core::info(std::string_view)
      • Function Karana::Core::info(msg_f)
      • Template Function Karana::Core::info(spdlog::format_string_t<Args…>, Args&&…)
      • Function Karana::Core::pythonRefErrString
      • Function Karana::Core::sharedPtrClearPyVariable
      • Function Karana::Core::sharedPtrDiscard
      • Template Function Karana::Core::static_pointer_cast
      • Function Karana::Core::trace(std::string_view)
      • Function Karana::Core::trace(msg_f)
      • Template Function Karana::Core::trace(spdlog::format_string_t<Args…>, Args&&…)
      • Function Karana::Core::traceJson(const nlohmann::ordered_json&, OrderedJsonToString)
      • Function Karana::Core::traceJson(const nlohmann::json&, JsonToString)
      • Function Karana::Core::warn(std::string_view)
      • Function Karana::Core::warn(msg_f)
      • Template Function Karana::Core::warn(spdlog::format_string_t<Args…>, Args&&…)
      • Function Karana::Dynamics::_getCleanupSource
      • Function Karana::Dynamics::_setCleanupSource
      • Function Karana::Dynamics::Algorithms::constraintKinematicsSolver
      • Function Karana::Dynamics::Algorithms::evalCentroidalMomentum
      • Function Karana::Dynamics::Algorithms::evalCentroidalMomentumMatrix
      • Function Karana::Dynamics::Algorithms::evalCmLocation
      • Function Karana::Dynamics::Algorithms::evalComputedTorque
      • Function Karana::Dynamics::Algorithms::evalConstraintPoseGradientMatrix
      • Function Karana::Dynamics::Algorithms::evalDependentVelCoordinatesMatrix
      • Function Karana::Dynamics::Algorithms::evalExternalSpatialForce
      • Function Karana::Dynamics::Algorithms::evalForwardDynamics
      • Function Karana::Dynamics::Algorithms::evalFramesOSCM
      • Function Karana::Dynamics::Algorithms::evalGravitationalPotentialEnergy
      • Function Karana::Dynamics::Algorithms::evalGravityCompensation
      • Function Karana::Dynamics::Algorithms::evalIndepPoseConstraintIndices
      • Function Karana::Dynamics::Algorithms::evalIndepPoseCoordIndices
      • Function Karana::Dynamics::Algorithms::evalIndepVelConstraintCoordIndices
      • Function Karana::Dynamics::Algorithms::evalInverseDynamics
      • Function Karana::Dynamics::Algorithms::evalKineticEnergy
      • Function Karana::Dynamics::Algorithms::evalSerialChainMassMatrixInverse
      • Function Karana::Dynamics::Algorithms::evalSpatialInertia
      • Function Karana::Dynamics::Algorithms::evalSpatialMomentum
      • Function Karana::Dynamics::Algorithms::evalSqueezeMatrix
      • Function Karana::Dynamics::Algorithms::evalTreeMassMatrixCRB
      • Function Karana::Dynamics::Algorithms::evalTreeMassMatrixInvDyn
      • Function Karana::Dynamics::Algorithms::evalTreeMassMatrixInverse
      • Function Karana::Dynamics::Algorithms::evalTreeMassMatrixInvFwdDyn
      • Function Karana::Dynamics::Algorithms::evalVelCoordinatePartitioning
      • Function Karana::Dynamics::Algorithms::evalVelocityConstraintMatrix
      • Function Karana::Dynamics::Algorithms::jacobianGenerator
      • Function Karana::Dynamics::Algorithms::modalAnalysis(ModelManager&, double, std::optional<double>)
      • Function Karana::Dynamics::Algorithms::modalAnalysis(const kc::ks_ptr<PhysicalModalBody>&, double, std::optional<double>)
      • Function Karana::Dynamics::Algorithms::modalAnalysis(const kc::ks_ptr<SubTree>&, double, std::optional<double>)
      • Function Karana::Dynamics::Algorithms::stateSpaceGenerator
      • Function Karana::Dynamics::createIODataPool
      • Function Karana::Dynamics::createModelPool
      • Function Karana::Dynamics::physicalBodyParamsDSClass
      • Function Karana::Dynamics::subhingeDSClass
      • Function Karana::Dynamics::subhingeParamsFromDS
      • Function Karana::Dynamics::subhingeParamsToDS
      • Function Karana::Dynamics::treeForwardDynamicsPool
      • Function Karana::Frame::coriolisAccelOopUtil
      • Function Karana::Frame::coriolisAccelTppUtil
      • Function Karana::Frame::pframeObservedRelSpAccelUtil
      • Function Karana::Frame::pframeObservedRelSpVelUtil
      • Function Karana::Frame::propagateAccelOopUtil
      • Function Karana::Frame::propagateVelocityOopUtil
      • Function Karana::Frame::rigidlyPropagateAccelerationOoUtil
      • Function Karana::Frame::rigidlyPropagateAccelerationTpUtil
      • Function Karana::Frame::rigidlyPropagateVelocityOoUtil
      • Function Karana::Frame::rigidlyPropagateVelocityTpUtil
      • Function Karana::Integrators::createIntegrator(const IntegratorType&, size_t, size_t, DerivativeFunction, const Integrator::IntegratorOptions *)
      • Function Karana::Integrators::createIntegrator(const IntegratorType&, size_t, size_t, size_t, ResidualsFunction, const Integrator::IntegratorOptions *)
      • Function Karana::Integrators::strToIntegratorType
      • Function Karana::KUtils::visualizeFrameToFrameRates
      • Function Karana::KUtils::visualizeInterBodyForce
      • Function Karana::KUtils::visualizeInterBodyTorque
      • Function Karana::KUtils::visualizeNodeForce
      • Function Karana::KUtils::visualizeNodeTorque
      • Template Function Karana::Math::analyzeRank
      • Function Karana::Math::buildNaNWithPayload
      • Template Function Karana::Math::dump
      • Template Function Karana::Math::dumpString
      • Template Function Karana::Math::getIndepColIndices
      • Template Function Karana::Math::getIndepRowColIndices
      • Template Function Karana::Math::getRank
      • Template Function Karana::Math::getSingularValues
      • Function Karana::Math::isNaNWithPayload
      • Function Karana::Math::isNotReadyNaN
      • Function Karana::Math::isReady(const Ktime&)
      • Template Function Karana::Math::isReady(const Eigen::MatrixBase<Derived>&)
      • Template Function Karana::Math::isReady(const Eigen::ArrayBase<Derived>&)
      • Function Karana::Math::ktimeToSeconds
      • Function Karana::Math::linSolveCOD
      • Function Karana::Math::linSolveQR
      • Function Karana::Math::linSolveSVD
      • Function Karana::Math::linSolveSVDRegularized
      • Function Karana::Math::linSolveSVDRobust
      • Function Karana::Math::makeNotReady(Ktime&)
      • Template Function Karana::Math::makeNotReady(Eigen::DenseBase<Derived>&)
      • Function Karana::Math::secondsToKtime
      • Function Karana::Math::solveLcpPgs
      • Function Karana::Math::solveLcpPsor
      • Function Karana::Math::tilde
      • Template Function Karana::Models::KModelPybind11
      • Function Karana::Scene::defaultGeometry
      • Function Karana::Scene::defaultMaterial
      • Function Karana::WebUI::uuidv4
      • Function load
      • Function localtime_thread_safe
      • Function operator<<
      • Function pybind11::detail::resolveQuantityVar
      • Template Function pybind11::detail::varValueTypeName
      • Function PYBIND11_DECLARE_HOLDER_TYPE
      • Function PYBIND11_TYPE_CASTER
      • Function RequirementsTest::getReturnCode
      • Function RequirementsTest::getStatusString
      • Function RequirementsTest::logRequirement(const Requirement&, Status)
      • Function RequirementsTest::logRequirement(const Requirement&, bool)
      • Variable GeneralKModels_types
      • Variable has_pybind11_caster_v
      • Variable Karana::Dynamics::subhingeDSModule
      • Variable Karana::KUtils::extract_cols_v
      • Variable Karana::KUtils::extract_rows_v
      • Variable Karana::KUtils::extract_vector_rows_v
      • Variable Karana::KUtils::is_eigen_int_type_v
      • Variable Karana::KUtils::is_eigen_type_v
      • Variable Karana::KUtils::is_eigen_vector_v
      • Variable Karana::Math::notReadyNaN
      • Variable Karana::Math::notReadyPayload
      • Variable Karana::Scene::LAYER_ALL
      • Variable Karana::Scene::LAYER_COLLISION
      • Variable Karana::Scene::LAYER_CUSTOM0
      • Variable Karana::Scene::LAYER_CUSTOM1
      • Variable Karana::Scene::LAYER_CUSTOM10
      • Variable Karana::Scene::LAYER_CUSTOM11
      • Variable Karana::Scene::LAYER_CUSTOM12
      • Variable Karana::Scene::LAYER_CUSTOM13
      • Variable Karana::Scene::LAYER_CUSTOM14
      • Variable Karana::Scene::LAYER_CUSTOM15
      • Variable Karana::Scene::LAYER_CUSTOM16
      • Variable Karana::Scene::LAYER_CUSTOM17
      • Variable Karana::Scene::LAYER_CUSTOM18
      • Variable Karana::Scene::LAYER_CUSTOM19
      • Variable Karana::Scene::LAYER_CUSTOM2
      • Variable Karana::Scene::LAYER_CUSTOM20
      • Variable Karana::Scene::LAYER_CUSTOM21
      • Variable Karana::Scene::LAYER_CUSTOM22
      • Variable Karana::Scene::LAYER_CUSTOM23
      • Variable Karana::Scene::LAYER_CUSTOM3
      • Variable Karana::Scene::LAYER_CUSTOM4
      • Variable Karana::Scene::LAYER_CUSTOM5
      • Variable Karana::Scene::LAYER_CUSTOM6
      • Variable Karana::Scene::LAYER_CUSTOM7
      • Variable Karana::Scene::LAYER_CUSTOM8
      • Variable Karana::Scene::LAYER_CUSTOM9
      • Variable Karana::Scene::LAYER_FLUIDS
      • Variable Karana::Scene::LAYER_GRAPHICS
      • Variable Karana::Scene::LAYER_NONE
      • Variable Karana::Scene::LAYER_ORNAMENTAL
      • Variable Karana::Scene::LAYER_PHYSICAL
      • Variable Karana::Scene::LAYER_PHYSICAL_GRAPHICS
      • Variable Karana::Scene::LAYER_RESERVED0
      • Variable Karana::Scene::LAYER_RESERVED1
      • Variable Karana::Scene::LAYER_RESERVED2
      • Variable Karana::Scene::LAYER_RESERVED3
      • Variable Karana::Scene::LAYER_RESERVED4
      • Variable Karana::Scene::LAYER_RESERVED5
      • Variable Karana::Scene::LAYER_RESERVED6
      • Variable Karana::Scene::LAYER_RESERVED7
      • Variable Karana::Scene::LAYER_STICK_FIGURE
      • Variable Karana::Scene::MASK_LAYERS_ALL
      • Variable Karana::Scene::MASK_LAYERS_ALL_GRAPHICS
      • Variable Karana::Scene::MASK_LAYERS_NONE
      • Variable Karana::Scene::PART_LAYERS_PHYSICAL
      • Define ADD_TO_DS_METHOD_CASTER
      • Define ADD_TO_STATE_DS_METHOD_CASTER
      • Define KARANA_DECLARE_VAR_TEMPLATE
      • Define KARANA_FOR_EACH_VAR_QUANTITY
      • Define KARANA_FOR_EACH_VAR_TEMPLATE
      • Define KARANA_MODIFIED
      • Define KARANA_VERSION_MAJOR
      • Define KARANA_VERSION_MINOR
      • Define KARANA_VERSION_PATCH
      • Define KARANA_VERSION_STRING
      • Define MATH_EPSILON
      • Define MAX_DOFS
      • Define MAX_NODES
      • Define numTrace
      • Typedef Karana::Core::Allocator
      • Typedef Karana::Core::id_t
      • Typedef Karana::Core::JsonToString
      • Typedef Karana::Core::ks_ptr
      • Typedef Karana::Core::msg_f
      • Typedef Karana::Core::OrderedJsonToString
      • Typedef Karana::Dynamics::Coordinate
      • Typedef Karana::Dynamics::cost_fn
      • Typedef Karana::Dynamics::DynamicFunctorNumJac
      • Typedef Karana::Dynamics::f
      • Typedef Karana::Dynamics::functor_type
      • Typedef Karana::Dynamics::jac_fn
      • Typedef Karana::Integrators::DerivativeFunction
      • Typedef Karana::Integrators::ResidualsFunction
      • Typedef Karana::KUtils::PlotDataFnType
      • Typedef Karana::KUtils::PlotDataType
      • Typedef Karana::KUtils::XDataFnType
      • Typedef Karana::Math::Acceleration
      • Typedef Karana::Math::Angle
      • Typedef Karana::Math::AngularAcceleration
      • Typedef Karana::Math::AngularMomentum
      • Typedef Karana::Math::AngularVelocity
      • Typedef Karana::Math::Array
      • Typedef Karana::Math::ArrayVec
      • Typedef Karana::Math::ConstMatSlice
      • Typedef Karana::Math::ConstVec3Slice
      • Typedef Karana::Math::ConstVecSlice
      • Typedef Karana::Math::fn
      • Typedef Karana::Math::Force
      • Typedef Karana::Math::GravitationalParameter
      • Typedef Karana::Math::Inertia
      • Typedef Karana::Math::Ktime
      • Typedef Karana::Math::Length
      • Typedef Karana::Math::lin_fn
      • Typedef Karana::Math::LinearDampingConstant
      • Typedef Karana::Math::LinearSpringConstant
      • Typedef Karana::Math::Mass
      • Typedef Karana::Math::Mat
      • Typedef Karana::Math::Mat33
      • Typedef Karana::Math::Mat3n
      • Typedef Karana::Math::Mat44
      • Typedef Karana::Math::Mat66
      • Typedef Karana::Math::Mat6n
      • Typedef Karana::Math::MatSlice
      • Typedef Karana::Math::ModalAcceleration
      • Typedef Karana::Math::ModalCoordinate
      • Typedef Karana::Math::ModalDamping
      • Typedef Karana::Math::ModalForce
      • Typedef Karana::Math::ModalStiffness
      • Typedef Karana::Math::ModalVelocity
      • Typedef Karana::Math::Momentum
      • Typedef Karana::Math::num_diff_functor_type
      • Typedef Karana::Math::QuantityOrValue
      • Typedef Karana::Math::RotationalNodalMatrix
      • Typedef Karana::Math::Torque
      • Typedef Karana::Math::TranslationalNodalMatrix
      • Typedef Karana::Math::Vec
      • Typedef Karana::Math::Vec3
      • Typedef Karana::Math::Vec3Slice
      • Typedef Karana::Math::Vec4
      • Typedef Karana::Math::Vec6
      • Typedef Karana::Math::VecInt
      • Typedef Karana::Math::VecSlice
      • Typedef Karana::Math::Velocity
      • Typedef Karana::Scene::layer_t
      • Typedef Karana::Scene::TextureCache
      • Typedef Karana::Scene::TextureData
      • Typedef Karana::Scene::VarMaterial
      • Typedef Karana::Scene::VarProjection
      • Typedef Karana::Scene::VarStaticGeometry
      • Typedef Karana::WebUI::DoubleInput
      • Typedef Karana::WebUI::HeaderList
      • Typedef Karana::WebUI::IntInput
      • Typedef Karana::WebUI::StateMap
      • Typedef Karana::WebUI::StringInput
      • Typedef Karana::WebUI::StyleMap
      • Typedef SUNComm
      • Typedef sunrealtype
      • Typedef type
  • Conventions
  • Glossary
  • Advanced Guide
  • .ipynb

Flexible Two-Link Pendulum from FEMBridge H5 File

Contents

  • Create the Simulation
  • Read the FEMBridge Beam
  • Create the First Link
  • Attach the Second Link
  • Add Gravity
  • Set the Initial State
  • Configure the Integrator
  • Open the kdFlex Viewer
  • Run the Simulation
  • Clean Up the Simulation
  • Further Reading

Flexible Two-Link Pendulum from FEMBridge H5 File#

This notebook walks you through creating a simple two-link pendulum, where both links in the pendulum are flexible bodies.

Complete the basic two-link pendulum before working through this example. We use the same simulation setup, but replace both rigid links with flexible beams imported from a FEMBridge H5 file.

import atexit
from pathlib import Path

import numpy as np
import Karana.Dynamics as kd
import Karana.Dynamics.SOAFlexDyn_types as kdft
import Karana.Integrators as ki
import Karana.Models as kmdl
from Karana.KUtils.Sim import Sim
from Karana.Math.Kquantities import ureg

beam_file = Path("..") / "resources" / "2_link_pendulum" / "flexible_beam.h5"

Create the Simulation#

As in the basic example, use Karana.KUtils.Sim.Sim to manage the multibody, state propagator, and frame container.

sim: Sim = Sim()

Read the FEMBridge Beam#

Karana.Dynamics.SOAFlexDyn_types.ReadFEMBridgePhysicalModalBody imports flexible-body data from a FEMBridge H5 file. The original FEM analysis supplies the beam’s mass properties, modal frequencies, and mode shapes. We reuse this model for both links.

The beam used in this simulation is extremely flexible. This is to help make the deformation easily visible.

The Karana.Dynamics.SOAFlexDyn_types.FEMBridgePhysicalModalBodyDS configuration specifies the file’s mass and length units, pnode grid point, damping, and sensor nodes. p_node_grid=1 selects FEM grid node 1 for the pnode; this is the node on link_1 used for the hinge that attaches it to its parent body. The imported definition places this joint node at location of grid point 1 in the original FEM file and uses the corresponding translational and rotational nodal matrices, which gives the joint the coupling needed to produce the correct flexible dynamics.

damping=0.05 specifies a 5% modal damping ratio. The sensor-node mapping creates nodes along the beam that can be used to visualize its flexible deformation.

beam_reader = kdft.ReadFEMBridgePhysicalModalBody(
    kdft.FEMBridgePhysicalModalBodyDS(
        filename=beam_file,
        mass_unit=ureg.kg,
        length_unit=ureg.m,
        p_node_grid=1,
        damping=0.05,
        sensor_nodes={node: f"sn_{node}" for node in range(1, 52, 3)},
    )
)

Create the First Link#

Create a revolute hinge about y-axis, as in the basic example. getModalBodyDS() combines the PhysicalHingeParams with the imported beam model to create a ModalBodyDS: this now contains a complete flexible-body definition, including all the information need to connect it to its parent body. The toBody() method creates the actual flexible-body and attaches it to its parent (the virtual root in this case).

link_1_ds = beam_reader.getModalBodyDS(
    "link_1",
    kd.PhysicalHingeParams(
        hinge_type=kd.HingeType.REVOLUTE,
        subhinge_params=[kd.PinSubhingeParams(unit_axis=np.array([0.0, 1.0, 0.0]))],
    ),
)
link_1: kd.PhysicalModalBody = link_1_ds.toBody(sim.mb.virtualRoot())

Attach the Second Link#

Deep-copy the first link’s definition to reuse its data. Here, we change the name, and modify the coupling to the parent body, since the second link is connected to the first link, which itself is a flexible body. Whenever one is attaching a body of any type (rigid or flex) to a a flexible body, meaning the flexible body is the parent, they need to specify the translational and rotational nodal matrix of the onode. The onode is the node on the parent body in a hinge that connects a parent body to a child body. In this case, the hinge will connect that pnode on link_2 to an onode on link_1 at the beam’s far end, FEM grid node 51.

In general, the ParentPhysicalModalBodyAttachmentParams can be used to specify the onode attachment information for a flexible body. Here, addInbNodeToDS() provides a convenient helper method to add this information.

link_2_ds = link_1_ds.model_copy(deep=True)
link_2_ds.name = "link_2"
beam_reader.addInbNodeToDS(link_2_ds, 51)
link_2 = link_2_ds.toBody(link_1)
del link_1_ds, link_2_ds

Add Gravity#

Add gravity just as was done in the basic example.

ug = kmdl.Gravity("grav_model", sim.sp, kmdl.UniformGravity("uniform_gravity"), sim.mb)
ug.getGravityInterface().setGravity(np.array([0, 0, -9.81]), 0.0, kmdl.OutputUpdateType.PRE_HOP)
del ug

Set the Initial State#

Initialize the multibody as in the basic example, then set the hinge angles to 110° and 15°. Both links start at rest with zero modal coordinates, so the release produces swinging motion and flexible-body deformation.

sim.mb.ensureHealthy()
sim.mb.resetData()
link_1.parentHinge().subhinge(0).setQ(110.0 * ureg.deg)
link_2.parentHinge().subhinge(0).setQ(15.0 * ureg.deg)
True

Configure the Integrator#

Here, we configure the integrator. The performance of flexible-body problems in particular is sensitive to the integrator chosen. kdFlex offers a large variety of integrators and options to meet simulations’ needs. Here, SUNDIALS’s ARKODE’s implicit ESDIRK45 method does well.

integrator_options = ki.ArkImplicitIntegratorOptions()
integrator_options.rtol = 1e-5
integrator_options.atol = 3e-8
integrator_options.max_nl_iters = 5
sim.sp.setIntegrator(ki.IntegratorType.ARKIMPLICIT_ESDIRK45, integrator_options)

sim.sp.ensureHealthy()
sim.sp.hardReset()
sim.sp.setState(sim.sp.assembleState())

# Here, a maximum hop size is added so we get visualization updates every 1/60 seconds
sim.sp.setMaxHopSize(1.0 / 60.0)

Open the kdFlex Viewer#

Open up the GUI to view the model, and set the camera position.

# Set the stick parts to be a bit larger so they are easier to see
sim.mb.createStickParts()
sim.mb.scaleStickParts(5.0)

# Create the GUI and set the camera location
sim.setupGui(port=0)
target = sim.mb.virtualRoot().frameToFrame(link_2).relTransform().getTranslation().m
sim.mb.getScene().viewAroundFrame(
    sim.mb.virtualRoot(),
    target + np.array([0.0, 6.0, 0.0]),
    target,
    np.array([0.0, 0.0, 1.0]),
)
[WebUI] Karana Viewer is running on port 32891
Open this URL to connect:
	http://newton:32891
Click to open Karana Viewer in a new tab

Run the Simulation#

Advance to 10 seconds.

sim.sp.advanceTo(10.0)
<SpStatusEnum.REACHED_END_TIME: 1>

Clean Up the Simulation#

Below, we cleanup our simulation.

def cleanup() -> None:
    """Cleanup the simulation."""
    global link_1, link_2, sim
    del link_1, link_2, sim


atexit.register(cleanup)
<function __main__.cleanup() -> None>

Further Reading#

Next, work through the Flexible Two-Link Pendulum from Explicit Modal Data notebook. It builds the same pendulum using explicit modal data, without an external file, so you can see how to supply the flexible-body parameters directly.

Contents
  • Create the Simulation
  • Read the FEMBridge Beam
  • Create the First Link
  • Attach the Second Link
  • Add Gravity
  • Set the Initial State
  • Configure the Integrator
  • Open the kdFlex Viewer
  • Run the Simulation
  • Clean Up the Simulation
  • Further Reading

By Karana Dynamics Inc.

© Copyright 2025, Karana Dynamics Inc. Generated on 28 October 2026 14:09 UTC.