opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
Classes | Namespaces | Concepts | Functions
open_sim_helpers.h File Reference
#include <liboscar/concepts/dereferences_to.h>
#include <liboscar/graphics/color.h>
#include <liboscar/maths/ray.h>
#include <liboscar/maths/vector.h>
#include <liboscar/shims/cpp23/generator.h>
#include <liboscar/utilities/c_string_view.h>
#include <liboscar/utilities/string_name.h>
#include <OpenSim/Common/ComponentPath.h>
#include <SimTKcommon/internal/Transform.h>
#include <algorithm>
#include <concepts>
#include <cstddef>
#include <filesystem>
#include <functional>
#include <iosfwd>
#include <iterator>
#include <memory>
#include <optional>
#include <span>
#include <stdexcept>
#include <string_view>
#include <string>
#include <type_traits>
#include <unordered_map>
#include <utility>
#include <vector>
Include dependency graph for open_sim_helpers.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  opyn::ComponentConnectionView
 
struct  opyn::LinesOfAction
 
struct  opyn::ForcePoint
 
struct  opyn::PointInfo
 
struct  opyn::ComponentSpatialRepresentation
 
struct  opyn::StorageLoadingParameters
 
struct  opyn::StorageIndexToModelStateVarMappingResult
 

Namespaces

namespace  OpenSim
 
namespace  SimTK
 
namespace  opyn
 

Concepts

concept  opyn::ClonesToRawPointer
 

Functions

template<std::derived_from< OpenSim::Object > T, std::derived_from< OpenSim::Object > C = OpenSim::Object>
size_t opyn::size (const OpenSim::Set< T, C > &s)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< OpenSim::Object > C = OpenSim::Object>
ptrdiff_t opyn::ssize (const OpenSim::Set< T, C > &s)
 
template<typename T >
size_t opyn::size (const OpenSim::ArrayPtrs< T > &ary)
 
template<typename T >
size_t opyn::size (const OpenSim::Array< T > &ary)
 
template<typename T >
size_t opyn::size (const OpenSim::Property< T > &p)
 
template<typename T >
const T * opyn::begin (const OpenSim::Array< T > &ary)
 
template<typename T >
T * opyn::begin (OpenSim::Array< T > &ary)
 
template<typename T >
const T * opyn::end (const OpenSim::Array< T > &ary)
 
template<typename T >
T * opyn::end (OpenSim::Array< T > &ary)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< OpenSim::Object > C = OpenSim::Object>
bool opyn::empty (const OpenSim::Set< T, C > &s)
 
template<typename T >
T & opyn::At (OpenSim::ArrayPtrs< T > &ary, size_t pos)
 
template<typename T >
const T & opyn::At (const OpenSim::Array< T > &ary, size_t pos)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< OpenSim::Object > C = OpenSim::Object>
const T & opyn::At (const OpenSim::Set< T, C > &s, size_t pos)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< OpenSim::Object > C = OpenSim::Object>
T & opyn::At (OpenSim::Set< T, C > &s, size_t pos)
 
template<typename T >
const T & opyn::At (const OpenSim::Property< T > &p, size_t pos)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< OpenSim::Object > C = OpenSim::Object>
bool opyn::EraseAt (OpenSim::Set< T, C > &s, size_t i)
 
template<typename T >
requires (std::strict_weak_order<std::ranges::less, T, T> and std::equality_comparable<T>)
bool opyn::IsAllElementsUnique (const OpenSim::Array< T > &v)
 
bool opyn::IsConcreteClassNameLexicographicallyLowerThan (const OpenSim::Component &, const OpenSim::Component &)
 
template<osc::DereferencesTo< const OpenSim::Component & > ComponentPtrLike>
bool opyn::IsConcreteClassNameLexicographicallyLowerThan (const ComponentPtrLike &a, const ComponentPtrLike &b)
 
bool opyn::IsNameLexographicallyLowerThan (const OpenSim::Component &, const OpenSim::Component &)
 
template<osc::DereferencesTo< const OpenSim::Component & > Ptr>
bool opyn::IsNameLexographicallyLowerThan (const Ptr &a, const Ptr &b)
 
template<osc::DereferencesTo< const OpenSim::Component & > Ptr>
bool opyn::IsNameLexographicallyGreaterThan (const Ptr &a, const Ptr &b)
 
OpenSim::Component * opyn::UpdOwner (OpenSim::Component &root, const OpenSim::Component &)
 
OpenSim::Component & opyn::UpdOwnerOrThrow (OpenSim::Component &root, const OpenSim::Component &)
 
template<std::derived_from< OpenSim::Component > T>
T & opyn::UpdOwnerOrThrow (OpenSim::Component &root, const OpenSim::Component &c)
 
template<std::derived_from< OpenSim::Component > T>
T * opyn::UpdOwner (OpenSim::Component &root, const OpenSim::Component &c)
 
const OpenSim::Component & opyn::GetOwnerOrThrow (const OpenSim::AbstractOutput &)
 
const OpenSim::Component & opyn::GetOwnerOrThrow (const OpenSim::Component &)
 
const OpenSim::Component & opyn::GetOwnerOr (const OpenSim::Component &, const OpenSim::Component &fallback)
 
const OpenSim::Component * opyn::GetOwner (const OpenSim::Component &)
 
template<std::derived_from< OpenSim::Component > T>
const T * opyn::GetOwner (const OpenSim::Component &c)
 
template<std::derived_from< OpenSim::Component > T>
bool opyn::OwnerIs (const OpenSim::Component &c)
 
std::optional< std::string > opyn::TryGetOwnerName (const OpenSim::Component &)
 
size_t opyn::DistanceFromRoot (const OpenSim::Component &)
 
OpenSim::ComponentPath opyn::GetRootComponentPath ()
 
bool opyn::IsEmpty (const OpenSim::ComponentPath &)
 
void opyn::Clear (OpenSim::ComponentPath &)
 
std::vector< const OpenSim::Component * > opyn::GetPathElements (const OpenSim::Component &)
 
void opyn::ForEachComponent (const OpenSim::Component &, const std::function< void(const OpenSim::Component &)> &)
 
void opyn::ForEachComponentInclusive (const OpenSim::Component &, const std::function< void(const OpenSim::Component &)> &)
 
template<std::derived_from< OpenSim::Component > T>
size_t opyn::GetNumChildren (const OpenSim::Component &c)
 
size_t opyn::GetNumChildren (const OpenSim::Component &)
 
bool opyn::IsInclusiveChildOf (const OpenSim::Component *parent, const OpenSim::Component *c)
 
const OpenSim::Component * opyn::IsInclusiveChildOf (std::span< const OpenSim::Component * > parents, const OpenSim::Component *c)
 
const OpenSim::Component * opyn::FindFirstAncestorInclusive (const OpenSim::Component *, bool(*pred)(const OpenSim::Component *))
 
template<std::derived_from< OpenSim::Component > T>
const T * opyn::FindAncestorWithType (const OpenSim::Component *c)
 
template<std::derived_from< OpenSim::Component > T>
bool opyn::IsChildOfA (const OpenSim::Component &c)
 
const OpenSim::Component * opyn::FindFirstDescendentInclusive (const OpenSim::Component &component, bool(*predicate)(const OpenSim::Component &))
 
const OpenSim::Component * opyn::FindFirstDescendent (const OpenSim::Component &component, bool(*predicate)(const OpenSim::Component &))
 
OpenSim::Component * opyn::FindFirstDescendentMut (OpenSim::Component &component, bool(*predicate)(const OpenSim::Component &))
 
template<std::derived_from< OpenSim::Component > T>
const T * opyn::FindFirstDescendentOfType (const OpenSim::Component &c)
 
template<std::derived_from< OpenSim::Component > T>
T * opyn::FindFirstDescendentOfTypeMut (OpenSim::Component &c)
 
std::vector< const OpenSim::Coordinate * > opyn::GetCoordinatesInModel (const OpenSim::Model &)
 
void opyn::GetCoordinatesInModel (const OpenSim::Model &, std::vector< const OpenSim::Coordinate * > &)
 
std::vector< OpenSim::Coordinate * > opyn::UpdDefaultLockedCoordinatesInModel (OpenSim::Model &)
 
float opyn::ConvertCoordValueToDisplayValue (const OpenSim::Coordinate &, double v)
 
double opyn::ConvertCoordDisplayValueToStorageValue (const OpenSim::Coordinate &, float v)
 
osc::CStringView opyn::GetCoordDisplayValueUnitsString (const OpenSim::Coordinate &)
 
std::vector< std::string > opyn::GetSocketNames (const OpenSim::Component &)
 
std::vector< const OpenSim::AbstractSocket * > opyn::GetAllSockets (const OpenSim::Component &)
 
std::vector< OpenSim::AbstractSocket * > opyn::UpdAllSockets (OpenSim::Component &)
 
void opyn::WriteComponentTopologyGraphAsDotViz (const OpenSim::Component &, std::ostream &)
 
void opyn::WriteModelMultibodySystemGraphAsDotViz (const OpenSim::Model &, std::ostream &)
 
const OpenSim::Component * opyn::FindComponent (const OpenSim::Component &root, const OpenSim::ComponentPath &)
 
const OpenSim::Component * opyn::FindComponent (const OpenSim::Model &, const std::string &absPath)
 
const OpenSim::Component * opyn::FindComponent (const OpenSim::Model &, const osc::StringName &absPath)
 
template<std::derived_from< OpenSim::Component > T>
const T * opyn::FindComponent (const OpenSim::Component &root, const OpenSim::ComponentPath &cp)
 
template<std::derived_from< OpenSim::Component > T>
const T * opyn::FindComponent (const OpenSim::Model &root, const std::string &cp)
 
template<std::derived_from< OpenSim::Component > T>
const T * opyn::FindComponent (const OpenSim::Model &root, const osc::StringName &cp)
 
OpenSim::Component * opyn::FindComponentMut (OpenSim::Component &root, const OpenSim::ComponentPath &)
 
template<std::derived_from< OpenSim::Component > T>
T * opyn::FindComponentMut (OpenSim::Component &root, const OpenSim::ComponentPath &cp)
 
bool opyn::ContainsComponent (const OpenSim::Component &root, const OpenSim::ComponentPath &)
 
const OpenSim::AbstractSocket * opyn::FindSocket (const OpenSim::Component &, const std::string &socketName)
 
OpenSim::AbstractSocket * opyn::FindSocketMut (OpenSim::Component &, const std::string &socketName)
 
bool opyn::IsConnectedTo (const OpenSim::AbstractSocket &, const OpenSim::Component &)
 
bool opyn::IsAbleToConnectTo (const OpenSim::AbstractSocket &, const OpenSim::Component &)
 
void opyn::RecursivelyReassignAllSockets (OpenSim::Component &root, const OpenSim::Component &from, const OpenSim::Component &to)
 
std::ostream & opyn::operator<< (std::ostream &, const ComponentConnectionView &)
 
osc::cpp23::generator< ComponentConnectionViewopyn::ForEachInboundConnection (const OpenSim::Component *root, const OpenSim::Component *c, std::function< bool(const OpenSim::Component &)> filter=[](const OpenSim::Component &){ return true;})
 
OpenSim::AbstractProperty * opyn::FindPropertyMut (OpenSim::Component &, const std::string &)
 
template<typename T >
OpenSim::SimpleProperty< T > * opyn::FindSimplePropertyMut (OpenSim::Component &c, const std::string &name)
 
const OpenSim::AbstractOutput * opyn::FindOutput (const OpenSim::Component &, const std::string &outputName)
 
const OpenSim::AbstractOutput * opyn::FindOutput (const OpenSim::Component &root, const OpenSim::ComponentPath &, const std::string &outputName)
 
bool opyn::HasInputFileName (const OpenSim::Model &)
 
std::optional< std::filesystem::path > opyn::TryFindInputFile (const OpenSim::Model &)
 
std::string opyn::RecommendedDocumentName (const OpenSim::Model &)
 
std::optional< std::filesystem::path > opyn::FindGeometryFileAbsPath (const OpenSim::Model &, const OpenSim::Mesh &)
 
std::string opyn::GetMeshFileName (const OpenSim::Mesh &)
 
bool opyn::ShouldShowInUI (const OpenSim::Component &)
 
bool opyn::TryDeleteComponentFromModel (OpenSim::Model &, OpenSim::Component &)
 
void opyn::CopyCommonJointProperties (const OpenSim::Joint &src, OpenSim::Joint &dest)
 
bool opyn::DeactivateAllWrapObjectsIn (OpenSim::Model &)
 
bool opyn::ActivateAllWrapObjectsIn (OpenSim::Model &)
 
std::vector< const OpenSim::WrapObject * > opyn::GetAllWrapObjectsReferencedBy (const OpenSim::GeometryPath &)
 
bool opyn::HasModelFileExtension (const std::filesystem::path &path)
 
std::unique_ptr< OpenSim::Model > opyn::LoadModel (const std::filesystem::path &)
 
void opyn::InitializeModel (OpenSim::Model &)
 
void opyn::TryEquilibrateMusclesOrLogWarning (OpenSim::Model &, SimTK::State &)
 
SimTK::State & opyn::InitializeState (OpenSim::Model &)
 
void opyn::FinalizeFromProperties (OpenSim::Model &)
 
void opyn::FinalizeConnections (OpenSim::Model &)
 
std::optional< size_t > opyn::FindJointInParentJointSet (const OpenSim::Joint &)
 
std::string opyn::GetDisplayName (const OpenSim::Geometry &)
 
osc::CStringView opyn::GetMotionTypeDisplayName (const OpenSim::Coordinate &)
 
const OpenSim::Appearance * opyn::TryGetAppearance (const OpenSim::Component &)
 
OpenSim::Appearance * opyn::TryUpdAppearance (OpenSim::Component &)
 
bool opyn::TrySetAppearancePropertyIsVisibleTo (OpenSim::Component &, bool)
 
osc::Color opyn::to_color (const OpenSim::Appearance &)
 
osc::Color opyn::GetSuggestedBoneColor ()
 
bool opyn::IsShowingFrames (const OpenSim::Model &)
 
bool opyn::ToggleShowingFrames (OpenSim::Model &)
 
bool opyn::IsShowingMarkers (const OpenSim::Model &)
 
bool opyn::ToggleShowingMarkers (OpenSim::Model &)
 
bool opyn::IsShowingWrapGeometry (const OpenSim::Model &)
 
bool opyn::ToggleShowingWrapGeometry (OpenSim::Model &)
 
bool opyn::IsShowingContactGeometry (const OpenSim::Model &)
 
bool opyn::IsShowingForces (const OpenSim::Model &)
 
bool opyn::ToggleShowingContactGeometry (OpenSim::Model &)
 
bool opyn::ToggleShowingForces (OpenSim::Model &)
 
void opyn::GetAbsolutePathString (const OpenSim::Component &, std::string &)
 
std::string opyn::GetAbsolutePathString (const OpenSim::Component &)
 
osc::StringName opyn::GetAbsolutePathStringName (const OpenSim::Component &)
 
OpenSim::ComponentPath opyn::GetAbsolutePath (const OpenSim::Component &)
 
OpenSim::ComponentPath opyn::GetAbsolutePathOrEmpty (const OpenSim::Component *)
 
std::optional< LinesOfActionopyn::GetEffectiveLinesOfActionInGround (const OpenSim::Muscle &, const SimTK::State &)
 
std::optional< LinesOfActionopyn::GetAnatomicalLinesOfActionInGround (const OpenSim::Muscle &, const SimTK::State &)
 
std::optional< ForcePointopyn::TryGetContactForceInGround (const OpenSim::Model &, const SimTK::State &, const OpenSim::HuntCrossleyForce &)
 
const OpenSim::PhysicalFrame & opyn::GetFrameUsingExternalForceLookupHeuristic (const OpenSim::Model &, const std::string &bodyNameOrPath)
 
bool opyn::CanExtractPointInfoFrom (const OpenSim::Component &, const SimTK::State &)
 
std::optional< PointInfoopyn::TryExtractPointInfo (const OpenSim::Component &, const SimTK::State &)
 
OpenSim::Component & opyn::AddComponentToAppropriateSet (OpenSim::Model &, std::unique_ptr< OpenSim::Component >)
 
OpenSim::ModelComponent & opyn::AddModelComponent (OpenSim::Model &, std::unique_ptr< OpenSim::ModelComponent > &&)
 
template<std::derived_from< OpenSim::ModelComponent > T>
T & opyn::AddModelComponent (OpenSim::Model &model, std::unique_ptr< T > p)
 
template<std::derived_from< OpenSim::ModelComponent > T, typename... Args>
requires std::constructible_from<T, Args&&...>
T & opyn::AddModelComponent (OpenSim::Model &model, Args &&... args)
 
OpenSim::Component & opyn::AddComponent (OpenSim::Component &, std::unique_ptr< OpenSim::Component > &&)
 
template<std::derived_from< OpenSim::Component > T>
T & opyn::AddComponent (OpenSim::Component &c, std::unique_ptr< T > p)
 
template<std::derived_from< OpenSim::Component > T>
T & opyn::AddComponent (OpenSim::Component &host)
 
template<std::derived_from< OpenSim::Component > T, typename... Args>
requires std::constructible_from<T, Args&&...>
T & opyn::AddComponent (OpenSim::Component &host, Args &&...args)
 
OpenSim::Body & opyn::AddBody (OpenSim::Model &, std::unique_ptr< OpenSim::Body >)
 
template<typename... Args>
requires std::constructible_from<OpenSim::Body, Args&&...>
OpenSim::Body & opyn::AddBody (OpenSim::Model &model, Args &&... args)
 
OpenSim::Joint & opyn::AddJoint (OpenSim::Model &, std::unique_ptr< OpenSim::Joint >)
 
template<std::derived_from< OpenSim::Joint > T, typename... Args>
requires std::constructible_from<T, Args&&...>
T & opyn::AddJoint (OpenSim::Model &model, Args &&... args)
 
OpenSim::Constraint & opyn::AddConstraint (OpenSim::Model &, std::unique_ptr< OpenSim::Constraint >)
 
template<std::derived_from< OpenSim::Constraint > T, typename... Args>
requires std::constructible_from<T, Args&&...>
T & opyn::AddConstraint (OpenSim::Model &model, Args &&... args)
 
OpenSim::Marker & opyn::AddMarker (OpenSim::Model &, std::unique_ptr< OpenSim::Marker >)
 
template<typename... Args>
requires std::constructible_from<OpenSim::Marker, Args&&...>
OpenSim::Marker & opyn::AddMarker (OpenSim::Model &model, Args &&... args)
 
OpenSim::Geometry & opyn::AttachGeometry (OpenSim::Frame &, std::unique_ptr< OpenSim::Geometry >)
 
template<std::derived_from< OpenSim::Geometry > T, typename... Args>
requires std::constructible_from<T, Args&&...>
T & opyn::AttachGeometry (OpenSim::Frame &frame, Args &&... args)
 
void opyn::OverwriteGeometry (OpenSim::Model &, OpenSim::Geometry &oldGeometry, std::unique_ptr< OpenSim::Geometry > newGeometry)
 
OpenSim::PhysicalOffsetFrame & opyn::AddFrame (OpenSim::Joint &, std::unique_ptr< OpenSim::PhysicalOffsetFrame >)
 
OpenSim::WrapObject & opyn::AddWrapObject (OpenSim::PhysicalFrame &, std::unique_ptr< OpenSim::WrapObject >)
 
template<std::derived_from< OpenSim::WrapObject > T, typename... Args>
requires std::constructible_from<T, Args&&...>
T & opyn::AddWrapObject (OpenSim::PhysicalFrame &physFrame, Args &&... args)
 
template<ClonesToRawPointer T>
std::unique_ptr< T > opyn::Clone (const T &obj)
 
template<std::derived_from< OpenSim::Component > T>
void opyn::Append (OpenSim::ObjectProperty< T > &prop, const T &c)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< OpenSim::Object > C = OpenSim::Object>
std::optional< size_t > opyn::IndexOf (const OpenSim::Set< T, C > &set, const T &el)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< T > U, std::derived_from< OpenSim::Object > C = OpenSim::Object>
void opyn::Append (OpenSim::Set< T, C > &set, std::unique_ptr< U > el)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< T > U, std::derived_from< OpenSim::Object > C = OpenSim::Object>
U & opyn::Assign (OpenSim::Set< T, C > &set, size_t index, std::unique_ptr< U > el)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< T > U, std::derived_from< OpenSim::Object > C = OpenSim::Object>
U & opyn::Assign (OpenSim::Set< T, C > &set, T &oldElement, std::unique_ptr< U > newElement)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< T > U, std::derived_from< OpenSim::Object > C = OpenSim::Object>
U & opyn::Assign (OpenSim::Set< T, C > &set, size_t index, const U &el)
 
template<std::derived_from< OpenSim::Object > T, std::derived_from< T > U, std::derived_from< OpenSim::Object > C>
bool opyn::TryDeleteItemFromSet (OpenSim::Set< T, C > &set, const U *item)
 
const OpenSim::PhysicalFrame * opyn::TryGetParentToGroundFrame (const OpenSim::Component &)
 
std::optional< SimTK::Transform > opyn::TryGetParentToGroundTransform (const OpenSim::Component &, const SimTK::State &)
 
std::optional< std::string > opyn::TryGetPositionalPropertyName (const OpenSim::Component &)
 
std::optional< std::string > opyn::TryGetOrientationalPropertyName (const OpenSim::Component &)
 
const OpenSim::Frame * opyn::TryGetParentFrame (const OpenSim::Frame &)
 
std::optional< ComponentSpatialRepresentationopyn::TryGetSpatialRepresentation (const OpenSim::Component &, const SimTK::State &)
 
bool opyn::IsValidOpenSimComponentNameCharacter (char)
 
std::string opyn::SanitizeToOpenSimComponentName (std::string_view)
 
std::unique_ptr< OpenSim::Storage > opyn::LoadStorage (const OpenSim::Model &, const std::filesystem::path &, const StorageLoadingParameters &={})
 
StorageIndexToModelStateVarMappingResult opyn::CreateStorageIndexToModelStatevarMapping (const OpenSim::Model &, const OpenSim::Storage &)
 
std::unordered_map< int, int > opyn::CreateStorageIndexToModelStatevarMappingWithWarnings (const OpenSim::Model &, const OpenSim::Storage &)
 
void opyn::UpdateStateVariablesFromStorageRow (OpenSim::Model &, SimTK::State &, const std::unordered_map< int, int > &columnIndexToModelStateVarIndex, const OpenSim::Storage &, int row)
 
void opyn::UpdateStateFromStorageTime (OpenSim::Model &, SimTK::State &, const std::unordered_map< int, int > &columnIndexToModelStateVarIndex, const OpenSim::Storage &, double time)
 
std::string opyn::WriteObjectXMLToString (const OpenSim::Object &)
 
void opyn::ScaleModelMassPreserveMassDistribution (OpenSim::Model &model, const SimTK::State &state, double newMass)