Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType > Class Template Reference

A hookean spring between two points with a max length and spring constant.

#include <FeneSpring.hpp>

Public Types

Type aliases
using value_type = Scalar
 Our scalar type.
using line_segment_t = LineSegmentType
 Our line segment type.

Public Member Functions

Constructors and destructor
 FeneSpring ()
 Default constructor for owning FeneSprings. Default initialize the line segment and set the spring constant and max length to -1.
 FeneSpring ()=delete
 No default constructor for viewing FeneSpringss.
 FeneSpring (const line_segment_t &line_segment, const value_type &max_length, const value_type &spring_constant)
 Constructor to initialize the line segment, max length, and spring constant.
template<mundy::ValidLineSegmentType OtherLineSegmentType>
 FeneSpring (const OtherLineSegmentType &line_segment, const value_type &max_length, const value_type &spring_constant)
 Constructor to initialize the start and end points.
 ~FeneSpring ()=default
 Destructor.
 FeneSpring (const FeneSpring< value_type, line_segment_t, ownership_t > &other)
 Deep copy constructor.
template<typename OtherFeneSpringType>
 FeneSpring (const OtherFeneSpringType &other)
 Deep copy constructor.
 FeneSpring (FeneSpring< value_type, line_segment_t, ownership_t > &&other)
 Deep move constructor.
template<typename OtherFeneSpringType>
 FeneSpring (OtherFeneSpringType &&other)
 Deep move constructor.
Operators
FeneSpring< value_type, line_segment_t, ownership_t > & operator= (const FeneSpring< value_type, line_segment_t, ownership_t > &other)
 Copy assignment operator.
template<typename OtherFeneSpringType>
FeneSpring< value_type, line_segment_t, ownership_t > & operator= (const OtherFeneSpringType &other)
 Copy assignment operator.
FeneSpring< value_type, line_segment_t, ownership_t > & operator= (FeneSpring< value_type, line_segment_t, ownership_t > &&other)
 Move assignment operator.
template<typename OtherFeneSpringType>
FeneSpring< value_type, line_segment_t, ownership_t > & operator= (OtherFeneSpringType &&other)
 Move assignment operator.
Accessors
const line_segment_tline_segment () const
 Accessor for the line segment.
line_segment_tline_segment ()
 Accessor for the line segment.
const value_typemax_length () const
 Accessor for the max length.
value_typemax_length ()
 Accessor for the max length.
const value_typespring_constant () const
 Accessor for the spring constant.
value_typespring_constant ()
 Accessor for the spring constant.

Setters

template<mundy::ValidLineSegmentType OtherLineSegmentType>
void set_line_segment (const OtherLineSegmentType &line_segment)
 Set the line segment.
void set_max_length (const value_type &max_length)
 Set the max length.
void set_spring_constant (const value_type &spring_constant)
 Set the spring constant.

Member Typedef Documentation

◆ value_type

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
using mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::value_type = Scalar

◆ line_segment_t

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
using mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::line_segment_t = LineSegmentType

Constructor & Destructor Documentation

◆ FeneSpring() [1/8]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::FeneSpring ( )
inline

◆ FeneSpring() [2/8]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::FeneSpring ( )
delete

◆ FeneSpring() [3/8]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::FeneSpring ( const line_segment_t & line_segment,
const value_type & max_length,
const value_type & spring_constant )
inline

◆ FeneSpring() [4/8]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
template<mundy::ValidLineSegmentType OtherLineSegmentType>
mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::FeneSpring ( const OtherLineSegmentType & line_segment,
const value_type & max_length,
const value_type & spring_constant )
inline
Parameters
[in]startThe start of the FeneSpring.
[in]endThe end of the FeneSpring.

◆ ~FeneSpring()

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::~FeneSpring ( )
default

◆ FeneSpring() [5/8]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::FeneSpring ( const FeneSpring< value_type, line_segment_t, ownership_t > & other)
inline

◆ FeneSpring() [6/8]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
template<typename OtherFeneSpringType>
mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::FeneSpring ( const OtherFeneSpringType & other)
inline

◆ FeneSpring() [7/8]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::FeneSpring ( FeneSpring< value_type, line_segment_t, ownership_t > && other)
inline

◆ FeneSpring() [8/8]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
template<typename OtherFeneSpringType>
mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::FeneSpring ( OtherFeneSpringType && other)
inline

Member Function Documentation

◆ operator=() [1/4]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
FeneSpring< value_type, line_segment_t, ownership_t > & mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::operator= ( const FeneSpring< value_type, line_segment_t, ownership_t > & other)
inline

◆ operator=() [2/4]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
template<typename OtherFeneSpringType>
FeneSpring< value_type, line_segment_t, ownership_t > & mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::operator= ( const OtherFeneSpringType & other)
inline

◆ operator=() [3/4]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
FeneSpring< value_type, line_segment_t, ownership_t > & mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::operator= ( FeneSpring< value_type, line_segment_t, ownership_t > && other)
inline

◆ operator=() [4/4]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
template<typename OtherFeneSpringType>
FeneSpring< value_type, line_segment_t, ownership_t > & mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::operator= ( OtherFeneSpringType && other)
inline

◆ line_segment() [1/2]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
const line_segment_t & mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::line_segment ( ) const
inline

◆ line_segment() [2/2]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
line_segment_t & mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::line_segment ( )
inline

◆ max_length() [1/2]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
const value_type & mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::max_length ( ) const
inline

◆ max_length() [2/2]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
value_type & mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::max_length ( )
inline

◆ spring_constant() [1/2]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
const value_type & mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::spring_constant ( ) const
inline

◆ spring_constant() [2/2]

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
value_type & mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::spring_constant ( )
inline

◆ set_line_segment()

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
template<mundy::ValidLineSegmentType OtherLineSegmentType>
void mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::set_line_segment ( const OtherLineSegmentType & line_segment)
inline
Parameters
[in]line_segmentThe new line segment.

◆ set_max_length()

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
void mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::set_max_length ( const value_type & max_length)
inline
Parameters
[in]max_lengthThe new max length.

◆ set_spring_constant()

template<typename Scalar, mundy::ValidLineSegmentType LineSegmentType = mundy::LineSegment<Scalar>, typename OwnershipType = mundy::Ownership::Owns>
void mundy::FeneSpring< Scalar, LineSegmentType, OwnershipType >::set_spring_constant ( const value_type & spring_constant)
inline
Parameters
[in]spring_constantThe new spring constant.