Molassembler  1.0.0
Molecule graph and conformer library
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Properties.h File Reference

Compile-time shape property calculations. More...

Include dependency graph for Properties.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  Scine::Molassembler::Shapes::ConstexprProperties::AngleBoundsFunctor< ShapeClass >
 Metafunction calculating the smallest and largest angle that exist in a shape. More...
 
struct  Scine::Molassembler::Shapes::ConstexprProperties::minAngleFunctor< ShapeClass >
 Functor to find out the minimum angle among all shape class types passed as template arguments. More...
 
struct  Scine::Molassembler::Shapes::ConstexprProperties::allRotationPeriodicities< ShapeClass >
 Calculate the multiplicities of all rotations of a shape. More...
 
struct  Scine::Molassembler::Shapes::ConstexprProperties::maxShapeSizeFunctor< ShapeClasses >
 Finds the largest size value of a set of symmetries. More...
 
struct  Scine::Molassembler::Shapes::ConstexprProperties::MappingsReturnType
 Data struct to collect the results of calculating the ideal index mappings between pairs of indices. More...
 

Namespaces

 Scine
 
 Scine::Molassembler
 Central library namespace.
 
 Scine::Molassembler::Shapes
 Symmetry definitions and properties.
 
 Scine::Molassembler::Shapes::ConstexprProperties
 Compile-time calculation of shape classes' properties.
 

Typedefs

template<typename T , size_t size>
using Scine::Molassembler::Shapes::ConstexprProperties::ArrayType = Temple::Array< T, size >
 
using Scine::Molassembler::Shapes::ConstexprProperties::AngleFunctionPtr = double(*)(const unsigned, const unsigned)
 
template<typename ShapeClass >
using Scine::Molassembler::Shapes::ConstexprProperties::IndicesList = ArrayType< unsigned, ShapeClass::size >
 
using Scine::Molassembler::Shapes::ConstexprProperties::IndexListStorageType = unsigned
 
template<typename ShapeClass >
using Scine::Molassembler::Shapes::ConstexprProperties::RotationsSetType = Temple::DynamicSet< IndicesList< ShapeClass >, maxRotations< ShapeClass >()*2 >
 
template<typename ShapeClass >
using Scine::Molassembler::Shapes::ConstexprProperties::ChainStructuresArrayType = Temple::DynamicArray< IndicesList< ShapeClass >, maxRotations< ShapeClass >()*2 >
 
template<typename ShapeClass >
using Scine::Molassembler::Shapes::ConstexprProperties::ChainArrayType = Temple::DynamicArray< unsigned, maxRotations< ShapeClass >()*2 >
 

Functions

template<typename ShapeClass >
constexpr double Scine::Molassembler::Shapes::ConstexprProperties::calculateSmallestAngle ()
 Calculates the minimum angle returned in a shape class. More...
 
template<typename ShapeClass >
constexpr auto Scine::Molassembler::Shapes::ConstexprProperties::startingIndexSequence ()
 Generate an integer sequence to use with stereopermutations.
 
template<typename ShapeClass , size_t... Indices>
constexpr ArrayType< unsigned,
ShapeClass::size > 
Scine::Molassembler::Shapes::ConstexprProperties::applyRotationImpl (const ArrayType< unsigned, ShapeClass::size > &indices, const unsigned rotationFunctionIndex, std::index_sequence< Indices...>)
 Helper to perform applyRotation in constexpr fashion.
 
template<typename ShapeClass >
constexpr ArrayType< unsigned,
ShapeClass::size > 
Scine::Molassembler::Shapes::ConstexprProperties::applyRotation (const ArrayType< unsigned, ShapeClass::size > &indices, const unsigned rotationFunctionIndex)
 Applies a shape group rotation to an array of indices. More...
 
template<typename ShapeClass , unsigned rotationFunctionIndex>
constexpr unsigned Scine::Molassembler::Shapes::ConstexprProperties::rotationPeriodicityImpl (const ArrayType< unsigned, ShapeClass::size > &runningIndices, const unsigned count)
 Helper to perform rotationPeriodicity in constexpr fashion.
 
template<typename ShapeClass , unsigned rotationFunctionIndex>
constexpr unsigned Scine::Molassembler::Shapes::ConstexprProperties::rotationPeriodicity ()
 Determines the multiplicity of a shape group rotation. More...
 
template<typename ShapeClass , size_t... Inds>
constexpr ArrayType< unsigned,
ShapeClass::rotations.size()> 
Scine::Molassembler::Shapes::ConstexprProperties::rotationPeriodicitiesImpl (std::index_sequence< Inds...>)
 Helper function to calculate all rotation periodicities.
 
template<typename ShapeClass >
constexpr ArrayType< unsigned,
ShapeClass::rotations.size()> 
Scine::Molassembler::Shapes::ConstexprProperties::rotationPeriodicities ()
 Calculates all multiplicities of a shape group's rotations.
 
template<typename ShapeClass >
constexpr Temple::Vector Scine::Molassembler::Shapes::ConstexprProperties::getCoordinates (const unsigned indexInSymmetry)
 Fetches the coordinates of an index in a shape. More...
 
constexpr double Scine::Molassembler::Shapes::ConstexprProperties::getTetrahedronVolume (const Temple::Vector &i, const Temple::Vector &j, const Temple::Vector &k, const Temple::Vector &l)
 Calculates the volume of a tetrahedron spanned by four positions. More...
 
template<size_t size>
constexpr double Scine::Molassembler::Shapes::ConstexprProperties::calculateAngularDistortion (const ArrayType< unsigned, size > &indexMapping, const size_t sourceSymmetrySize, const AngleFunctionPtr sourceAngleFunction, const AngleFunctionPtr targetAngleFunction)
 Calculates angular distortion caused by a shape transition mapping. More...
 
template<size_t size>
constexpr unsigned Scine::Molassembler::Shapes::ConstexprProperties::propagateSymmetryPosition (const unsigned symmetryPosition, const ArrayType< unsigned, size > &indexMapping)
 Propagates shape positions trhough an index mapping. More...
 
template<typename ShapeClassFrom , typename ShapeClassTo >
constexpr double Scine::Molassembler::Shapes::ConstexprProperties::calculateChiralDistortion (const ArrayType< unsigned, Temple::Math::max(ShapeClassFrom::size, ShapeClassTo::size) > &indexMapping)
 Calculates the chiral distortion caused by a shape transition. More...
 
template<size_t size>
constexpr ArrayType< unsigned,
size > 
Scine::Molassembler::Shapes::ConstexprProperties::symPosMapping (const ArrayType< unsigned, size > &mapping)
 Transform shape positions through a mapping. More...
 
template<typename ShapeClass >
constexpr unsigned Scine::Molassembler::Shapes::ConstexprProperties::maxRotations ()
 
template<typename ShapeClass >
constexpr auto Scine::Molassembler::Shapes::ConstexprProperties::generateAllRotations (const IndicesList< ShapeClass > &indices)
 Generates all rotations of a sequence of indices within a shape group. More...
 
template<class ShapeClassFrom , class ShapeClassTo >
constexpr auto Scine::Molassembler::Shapes::ConstexprProperties::symmetryTransitionMappings ()
 Calculates ideal index mappings for +1, 0 size transitions. More...
 
template<class ShapeClassFrom , class ShapeClassTo >
constexpr auto Scine::Molassembler::Shapes::ConstexprProperties::ligandLossMappings (const unsigned deletedSymmetryPosition)
 Find index mappings for ligand loss situations. More...
 
template<typename SymmetrySource , typename SymmetryTarget >
constexpr std::enable_if_t
< (SymmetryTarget::size
<=7 &&(SymmetrySource::size==SymmetryTarget::size||SymmetrySource::size+1==SymmetryTarget::size)),
Temple::Optional
< MappingsReturnType >> 
Scine::Molassembler::Shapes::ConstexprProperties::calculateMapping ()
 If symmetries are adjacent, calculate their shape transition mapping.
 
template<typename SymmetrySource , typename SymmetryTarget >
constexpr std::enable_if_t
< !(SymmetryTarget::size
<=7 &&(SymmetrySource::size==SymmetryTarget::size||SymmetrySource::size+1==SymmetryTarget::size)),
Temple::Optional
< MappingsReturnType >> 
Scine::Molassembler::Shapes::ConstexprProperties::calculateMapping ()
 If symmetries are not adjacent, return a None.
 
template<typename ShapeClass >
constexpr unsigned Scine::Molassembler::Shapes::ConstexprProperties::numUnlinkedStereopermutations (const unsigned nIdenticalLigands)
 Calculate stereopermutations for an unlinked shape. More...
 
template<typename ShapeClass >
constexpr bool Scine::Molassembler::Shapes::ConstexprProperties::hasMultipleUnlinkedStereopermutations (const unsigned nIdenticalLigands)
 Calculates whether a shape has multiple stereopermutations. More...
 

Variables

constexpr double Scine::Molassembler::Shapes::ConstexprProperties::floatingPointEqualityTolerance = 1e-4
 
constexpr unsigned Scine::Molassembler::Shapes::ConstexprProperties::maxShapeSize
 The largest shape size defined in the library. More...
 

Detailed Description

Compile-time shape property calculations.