hub::Chain class

Static class for chain coordinates transformation.

Public types

struct Node
Node used to create chain index.

Public static variables

static bool bijective_transfer constexpr
Method flag. Indicates the transformation type;.

Public static functions

template<typename VectorArray, typename IdxArray>
static void calc_chain_index(VectorArray const& pos, IdxArray& index)
Calculate the chain index.
template<typename VectorArray, typename IdxArray>
static void update_chain(VectorArray& chain, VectorArray const& cartesian, IdxArray const& idx, IdxArray const& new_idx)
Update the chain coordinates from old index array to new index array.
template<typename ScalarArray, typename VectorArray, typename IdxArray>
static void calc_cartesian(ScalarArray const& mass, VectorArray const& chain, VectorArray& cartesian, IdxArray const& index)
Calculate the corresponding Cartesian coordinates of the chain coordinates.
template<typename VectorArray, typename IdxArray>
static void calc_chain(VectorArray const& cartesian, VectorArray& chain, IdxArray const& index)
Calculate the corresponding chain coordinates of the Cartesian coordinates.

Constructors, destructors, conversion operators

Chain() defaulted
Chain(Chain const&) defaulted
Chain(Chain&&) defaulted

Public functions

auto operator=(Chain const&) -> Chain& defaulted
auto operator=(Chain&&) -> Chain& defaulted

Function documentation

template<typename VectorArray, typename IdxArray>
static void hub::Chain::calc_chain_index(VectorArray const& pos, IdxArray& index)

Calculate the chain index.

Template parameters
VectorArray Type of the Structure of Array coordinates.
IdxArray Type of the index array.
Parameters
pos in Input position in Cartesian coordinates.
index out Output index array.

template<typename VectorArray, typename IdxArray>
static void hub::Chain::update_chain(VectorArray& chain, VectorArray const& cartesian, IdxArray const& idx, IdxArray const& new_idx)

Update the chain coordinates from old index array to new index array.

Template parameters
VectorArray Type of the Structure of Array coordinates.
IdxArray Type of the index array.
Parameters
chain in/out The chain coordinates.
cartesian
idx in Old chain index array.
new_idx in New chain index array.

template<typename ScalarArray, typename VectorArray, typename IdxArray>
static void hub::Chain::calc_cartesian(ScalarArray const& mass, VectorArray const& chain, VectorArray& cartesian, IdxArray const& index)

Calculate the corresponding Cartesian coordinates of the chain coordinates.

Template parameters
ScalarArray Type of the mass array.
VectorArray Type of the Structure of Array coordinates.
IdxArray Type of the index array.
Parameters
mass in The mass array(needed for centre of mass movement).
chain in The chain coordinates.
cartesian out The Cartesian coordinates.
index in The chain index array.

template<typename VectorArray, typename IdxArray>
static void hub::Chain::calc_chain(VectorArray const& cartesian, VectorArray& chain, IdxArray const& index)

Calculate the corresponding chain coordinates of the Cartesian coordinates.

Template parameters
VectorArray Type of the Structure of Array coordinates.
IdxArray Type of the index array.
Parameters
cartesian in The Cartesian coordinates.
chain out The chain coordinates.
index in The chain index array.

hub::Chain::Chain() defaulted

Default constructor.

hub::Chain::Chain(Chain const&) defaulted

Default copy constructor.

hub::Chain::Chain(Chain&&) defaulted

Default move constructor

Chain& hub::Chain::operator=(Chain const&) defaulted

Default copy assignment operator

Chain& hub::Chain::operator=(Chain&&) defaulted

Default move assignment operator

Variable documentation

static bool hub::Chain::bijective_transfer constexpr

Method flag. Indicates the transformation type;.

If this flag is true, the transformation between chain coordinates and Cartesian coordinates is bijective mapping, otherwise, a centre of mass movement will be performed after the transformation from chain coordinates to Cartesian coordinates.