Gromacs  2022.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions
gmx::BasicVector< ValueType > Class Template Reference

#include <gromacs/math/vectypes.h>

Description

template<typename ValueType>
class gmx::BasicVector< ValueType >

C++ class for 3D vectors.

Template Parameters
ValueTypeType

This class provides a C++ version of rvec/dvec/ivec that can be put into STL containers etc. It is more or less a drop-in replacement for rvec and friends: it can be used in most contexts that accept the equivalent C type. However, there is one case where explicit conversion is necessary:

For the array conversion to work, the compiler should not add any extra alignment/padding in the layout of this class; that this actually works as intended is tested in the unit tests.

Public Types

using RawArray = ValueType[3]
 Underlying raw C array type (rvec/dvec/ivec).
 

Public Member Functions

 BasicVector ()
 Constructs default (uninitialized) vector.
 
 BasicVector (ValueType x, ValueType y, ValueType z)
 Constructs a vector from given values.
 
 BasicVector (const RawArray x)
 Constructs a vector from given values. More...
 
 BasicVector (const BasicVector &src)=default
 Default copy constructor.
 
BasicVectoroperator= (const BasicVector &v)=default
 Default copy assignment operator.
 
 BasicVector (BasicVector &&src) noexcept=default
 Default move constructor.
 
BasicVectoroperator= (BasicVector &&v) noexcept=default
 Default move assignment operator.
 
ValueType & operator[] (int i)
 Indexing operator to make the class work as the raw array.
 
ValueType operator[] (int i) const
 Indexing operator to make the class work as the raw array.
 
bool operator== (const BasicVector< ValueType > &right)
 Return whether all elements compare equal.
 
bool operator!= (const BasicVector< ValueType > &right)
 Return whether any elements compare unequal.
 
BasicVector< ValueType > & operator+= (const BasicVector< ValueType > &right)
 Allow inplace addition for BasicVector.
 
BasicVector< ValueType > & operator-= (const BasicVector< ValueType > &right)
 Allow inplace subtraction for BasicVector.
 
BasicVector< ValueType > operator+ (const BasicVector< ValueType > &right) const
 Allow vector addition.
 
BasicVector< ValueType > operator- (const BasicVector< ValueType > &right) const
 Allow vector subtraction.
 
BasicVector< ValueType > operator/ (const ValueType &right) const
 Allow vector scalar division.
 
BasicVector< ValueType > & operator*= (const ValueType &right)
 Scale vector by a scalar.
 
BasicVector< ValueType > & operator/= (const ValueType &right)
 Divide vector by a scalar.
 
ValueType dot (const BasicVector< ValueType > &right) const
 Return dot product.
 
BasicVector< ValueType > cross (const BasicVector< ValueType > &right) const
 Allow vector vector multiplication (cross product)
 
BasicVector< ValueType > unitVector () const
 Return normalized to unit vector.
 
ValueType norm2 () const
 Length^2 of vector.
 
ValueType norm () const
 Norm or length of vector.
 
BasicVector< realtoRVec () const
 cast to RVec
 
BasicVector< int > toIVec () const
 cast to IVec
 
BasicVector< double > toDVec () const
 cast to DVec
 
RawArrayas_vec ()
 Converts to a raw C array where implicit conversion does not work.
 
const RawArrayas_vec () const
 Converts to a raw C array where implicit conversion does not work.
 
 operator RawArray & ()
 Makes BasicVector usable in contexts where a raw C array is expected.
 
 operator const RawArray & () const
 Makes BasicVector usable in contexts where a raw C array is expected.
 

Constructor & Destructor Documentation

template<typename ValueType>
gmx::BasicVector< ValueType >::BasicVector ( const RawArray  x)
inline

Constructs a vector from given values.

This constructor is not explicit to support implicit conversions that allow, e.g., calling std::vector<RVec>::push_back() directly with an rvec parameter.


The documentation for this class was generated from the following files: