Compile-time shape property calculations. More...
#include "Molassembler/Shapes/Data.h"#include "Molassembler/Shapes/constexpr/Data.h"#include "Molassembler/Temple/constexpr/Bitset.h"#include "Molassembler/Temple/constexpr/DynamicSet.h"#include "Molassembler/Temple/constexpr/FloatingPointComparison.h"#include "Molassembler/Temple/constexpr/Numeric.h"#include "Molassembler/Temple/Cache.h"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... | |
Compile-time shape property calculations.