Open Babel  3.0
Public Types | Public Member Functions | Protected Attributes | List of all members
OBUnitCell Class Reference

#include <openbabel/generic.h>

Inheritance diagram for OBUnitCell:
OBGenericData

Public Types

enum  LatticeType {
  Undefined, Triclinic, Monoclinic, Orthorhombic,
  Tetragonal, Rhombohedral, Hexagonal, Cubic
}
 

Public Member Functions

 OBUnitCell ()
 
 OBUnitCell (const OBUnitCell &)
 
virtual OBGenericDataClone (OBBase *) const
 
 ~OBUnitCell ()
 
OBUnitCelloperator= (const OBUnitCell &)
 
void SetData (const double a, const double b, const double c, const double alpha, const double beta, const double gamma)
 
void SetData (const vector3 v1, const vector3 v2, const vector3 v3)
 
void SetData (const matrix3x3 m)
 
void SetOffset (const vector3 v1)
 
void SetSpaceGroup (const SpaceGroup *sg)
 
void SetSpaceGroup (const std::string sg)
 
void SetSpaceGroup (const int sg)
 
void SetLatticeType (const LatticeType lt)
 
void FillUnitCell (OBMol *)
 
double GetA ()
 
double GetA () const
 
double GetB ()
 
double GetB () const
 
double GetC ()
 
double GetC () const
 
double GetAlpha ()
 
double GetAlpha () const
 
double GetBeta ()
 
double GetBeta () const
 
double GetGamma ()
 
double GetGamma () const
 
vector3 GetOffset ()
 
vector3 GetOffset () const
 
const SpaceGroupGetSpaceGroup ()
 
const SpaceGroupGetSpaceGroup () const
 
const std::string GetSpaceGroupName ()
 
const std::string GetSpaceGroupName () const
 
LatticeType GetLatticeType (int spacegroup)
 
LatticeType GetLatticeType (int spacegroup) const
 
LatticeType GetLatticeType ()
 
LatticeType GetLatticeType () const
 
std::vector< vector3GetCellVectors ()
 
std::vector< vector3GetCellVectors () const
 
matrix3x3 GetCellMatrix ()
 
matrix3x3 GetCellMatrix () const
 
matrix3x3 GetOrthoMatrix ()
 
matrix3x3 GetOrthoMatrix () const
 
matrix3x3 GetOrientationMatrix ()
 
matrix3x3 GetOrientationMatrix () const
 
matrix3x3 GetFractionalMatrix ()
 
matrix3x3 GetFractionalMatrix () const
 
vector3 FractionalToCartesian (vector3 frac)
 
vector3 FractionalToCartesian (vector3 frac) const
 
vector3 CartesianToFractional (vector3 cart)
 
vector3 CartesianToFractional (vector3 cart) const
 
vector3 WrapCartesianCoordinate (vector3 cart)
 
vector3 WrapCartesianCoordinate (vector3 cart) const
 
vector3 WrapFractionalCoordinate (vector3 frac)
 
vector3 WrapFractionalCoordinate (vector3 frac) const
 
int GetSpaceGroupNumber (std::string name="")
 
int GetSpaceGroupNumber (std::string name="") const
 
double GetCellVolume ()
 
double GetCellVolume () const
 
void SetAttribute (const std::string &v)
 
void SetOrigin (const DataOrigin s)
 
virtual const std::string & GetAttribute () const
 
unsigned int GetDataType () const
 
virtual const std::string & GetValue () const
 
virtual DataOrigin GetOrigin () const
 

Protected Attributes

matrix3x3 _mOrtho
 
matrix3x3 _mOrient
 
vector3 _offset
 
std::string _spaceGroupName
 
const SpaceGroup_spaceGroup
 
LatticeType _lattice
 
std::string _attr
 
unsigned int _type
 
DataOrigin _source
 

Detailed Description

Used for storing information about periodic boundary conditions with conversion to/from translation vectors and (a, b, c, alpha, beta, gamma)

Member Enumeration Documentation

◆ LatticeType

Enumerator
Undefined 
Triclinic 
Monoclinic 
Orthorhombic 
Tetragonal 
Rhombohedral 

also called trigonal

Hexagonal 
Cubic 

Constructor & Destructor Documentation

◆ OBUnitCell() [1/2]

public constructor

◆ OBUnitCell() [2/2]

OBUnitCell ( const OBUnitCell src)

◆ ~OBUnitCell()

~OBUnitCell ( )
inline

Member Function Documentation

◆ Clone()

virtual OBGenericData* Clone ( OBBase ) const
inlinevirtual

Reimplemented from OBGenericData.

◆ operator=()

OBUnitCell & operator= ( const OBUnitCell src)

◆ SetData() [1/3]

void SetData ( const double  a,
const double  b,
const double  c,
const double  alpha,
const double  beta,
const double  gamma 
)

Constructs the cell matrix in lower triangular form from the values supplied.

Implements blue-obelisk:calculateOrthogonalisationMatrix

Parameters
aThe length a
bThe length b
cThe length c
alphaThe angle alpha
betaThe angle beta
gammaThe angle gamma

Referenced by OBUnitCell::SetData().

◆ SetData() [2/3]

void SetData ( const vector3  v1,
const vector3  v2,
const vector3  v3 
)

Constructs the cell matrix using the supplied row vectors.

Implements blue-obelisk:calculateOrthogonalisationMatrix

Parameters
v1The x-vector
v2The y-vector
v3The z-vector
See also
OBUnitCell::GetCellVectors

◆ SetData() [3/3]

void SetData ( const matrix3x3  m)

Sets the unit cell matrix.

Implements blue-obelisk:calculateOrthogonalisationMatrix

Parameters
mThe unit cell matrix (row vectors)
See also
OBUnitCell::GetCellMatrix

◆ SetOffset()

void SetOffset ( const vector3  v1)

Set the offset to the origin to v1.

◆ SetSpaceGroup() [1/3]

void SetSpaceGroup ( const SpaceGroup sg)
inline

Set the space group for this unit cell. Does not create an OBSymmetryData entry

Referenced by OBUnitCell::FillUnitCell().

◆ SetSpaceGroup() [2/3]

void SetSpaceGroup ( const std::string  sg)
inline

Set the space group symbol for this unit cell. Does not create an OBSymmetryData entry or attempt to convert between different symbol notations

◆ SetSpaceGroup() [3/3]

void SetSpaceGroup ( const int  sg)
inline

Set the space group for this unit cell. Each spacegroup-symbol has a numeric equivalent which is easier to use to convert between notations. Does not create an OBSymmetryData entry or attempt to convert between different symbol notations

◆ SetLatticeType()

void SetLatticeType ( const LatticeType  lt)
inline

Set the Bravais lattice type for this unit cell.

◆ FillUnitCell()

void FillUnitCell ( OBMol mol)

Duplicate symmetry-unique atoms to fill out the unit cell of the molecule, based on the known space group

◆ GetA() [1/2]

double GetA ( )
Todo:
Remove nonconst overloads in OBUnitCell on next version bump
Returns
vector a

Referenced by OBUnitCell::GetLatticeType().

◆ GetA() [2/2]

double GetA ( ) const

◆ GetB() [1/2]

double GetB ( )
Returns
vector b

Referenced by OBUnitCell::GetLatticeType().

◆ GetB() [2/2]

double GetB ( ) const

◆ GetC() [1/2]

double GetC ( )
Returns
vector c

Referenced by OBUnitCell::GetLatticeType().

◆ GetC() [2/2]

double GetC ( ) const

◆ GetAlpha() [1/2]

double GetAlpha ( )
Returns
angle alpha

Referenced by OBUnitCell::GetLatticeType().

◆ GetAlpha() [2/2]

double GetAlpha ( ) const

◆ GetBeta() [1/2]

double GetBeta ( )
Returns
angle beta

Referenced by OBUnitCell::GetLatticeType().

◆ GetBeta() [2/2]

double GetBeta ( ) const

◆ GetGamma() [1/2]

double GetGamma ( )
Returns
angle gamma

Referenced by OBUnitCell::GetLatticeType().

◆ GetGamma() [2/2]

double GetGamma ( ) const

◆ GetOffset() [1/2]

vector3 GetOffset ( )
Returns
any offset in the origin of the periodic boundaries

◆ GetOffset() [2/2]

vector3 GetOffset ( ) const

◆ GetSpaceGroup() [1/2]

const SpaceGroup* GetSpaceGroup ( )
inline
Returns
the text representation of the space group for this unit cell

Referenced by OBUnitCell::FillUnitCell().

◆ GetSpaceGroup() [2/2]

const SpaceGroup* GetSpaceGroup ( ) const
inline

◆ GetSpaceGroupName() [1/2]

const std::string GetSpaceGroupName ( )
inline
Returns
the text representation of the space group for this unit cell

◆ GetSpaceGroupName() [2/2]

const std::string GetSpaceGroupName ( ) const
inline

◆ GetLatticeType() [1/4]

LatticeType GetLatticeType ( int  spacegroup)
Returns
lattice type (based on the spacegroup)

◆ GetLatticeType() [2/4]

OBUnitCell::LatticeType GetLatticeType ( int  spacegroup) const

◆ GetLatticeType() [3/4]

LatticeType GetLatticeType ( )
Returns
lattice type (based on angles and distances)

Referenced by OBUnitCell::GetLatticeType().

◆ GetLatticeType() [4/4]

OBUnitCell::LatticeType GetLatticeType ( ) const

◆ GetCellVectors() [1/2]

std::vector<vector3> GetCellVectors ( )
Returns
v1, v2, v3 cell vectors

◆ GetCellVectors() [2/2]

vector< vector3 > GetCellVectors ( ) const

◆ GetCellMatrix() [1/2]

matrix3x3 GetCellMatrix ( )

Access to the cell matrix as row vectors, useful for writing input files. Equivalent to the transpose of GetOrientationMatrix() * GetOrthoMatrix()

Returns
The cell matrix with row vectors.
See also
OBUnitCell::GetOrthoMatrix
OBUnitCell::GetFractionalMatrix
OBUnitCell::GetOrientationMatrix
OBUnitCell::FractionalToCartesian
OBUnitCell::CartesianToFractional

Referenced by OBUnitCell::GetCellVectors(), and OBUnitCell::GetCellVolume().

◆ GetCellMatrix() [2/2]

matrix3x3 GetCellMatrix ( ) const

◆ GetOrthoMatrix() [1/2]

matrix3x3 GetOrthoMatrix ( )
Returns
The orthogonalization matrix, used for converting from fractional to Cartesian coords.
See also
OBUnitCell::GetCellMatrix
OBUnitCell::GetFractionalMatrix
OBUnitCell::GetOrientationMatrix
OBUnitCell::FractionalToCartesian
OBUnitCell::CartesianToFractional

◆ GetOrthoMatrix() [2/2]

matrix3x3 GetOrthoMatrix ( ) const

◆ GetOrientationMatrix() [1/2]

matrix3x3 GetOrientationMatrix ( )

Used to convert fractional and cartesian coordinates if the cell is not oriented in standard form (a parallel to x axis, b in xy plane)

Returns
The orientation matrix
See also
OBUnitCell::GetOrthoMatrix
OBUnitCell::GetCellMatrix
OBUnitCell::GetFractionalMatrix
OBUnitCell::FractionalToCartesian
OBUnitCell::CartesianToFractional

◆ GetOrientationMatrix() [2/2]

matrix3x3 GetOrientationMatrix ( ) const

◆ GetFractionalMatrix() [1/2]

matrix3x3 GetFractionalMatrix ( )
Returns
The fractionalization matrix, used for converting from Cartesian to fractional coords.
See also
OBUnitCell::GetOrthoMatrix
OBUnitCell::GetCellMatrix
OBUnitCell::GetOrientationMatrix
OBUnitCell::FractionalToCartesian
OBUnitCell::CartesianToFractional

◆ GetFractionalMatrix() [2/2]

matrix3x3 GetFractionalMatrix ( ) const

◆ FractionalToCartesian() [1/2]

vector3 FractionalToCartesian ( vector3  frac)

Convenience function to convert fractional coordinates to cartesian coordinates. Returns

GetOrientationMatrix() * GetOrthoMatrix() * frac + GetOffset()

Parameters
fracVector of fractional coordinates
Returns
Cartesian coordinates

Referenced by OBUnitCell::FillUnitCell(), and OBUnitCell::WrapCartesianCoordinate().

◆ FractionalToCartesian() [2/2]

vector3 FractionalToCartesian ( vector3  frac) const

◆ CartesianToFractional() [1/2]

vector3 CartesianToFractional ( vector3  cart)

Convenience function to convert cartesian coordinates to fractional coordinates. Returns

GetFractionalMatrix() * GetOrientationMatrix().inverse() * (cart - GetOffset())

Parameters
cartVector of cartesian coordinates
Returns
Fractional coordinates

Referenced by OBUnitCell::FillUnitCell(), and OBUnitCell::WrapCartesianCoordinate().

◆ CartesianToFractional() [2/2]

vector3 CartesianToFractional ( vector3  cart) const

◆ WrapCartesianCoordinate() [1/2]

vector3 WrapCartesianCoordinate ( vector3  cart)

Wraps cartesian coordinate to fall within the unit cell.

Parameters
cartVector of cartesian coordinates
Returns
Cartesian coordinates within cell boundaries.

◆ WrapCartesianCoordinate() [2/2]

vector3 WrapCartesianCoordinate ( vector3  cart) const

◆ WrapFractionalCoordinate() [1/2]

vector3 WrapFractionalCoordinate ( vector3  frac)

Wraps fractional coordinate to fall within the unit cell.

Parameters
fracVector of fractional coordinates
Returns
Fractional coordinates within cell boundaries (between 0 and 1).
Todo:
Make OBUnitCell::WrapFractionalCoordinate static in the next ABI break

Referenced by OBUnitCell::FillUnitCell(), and OBUnitCell::WrapCartesianCoordinate().

◆ WrapFractionalCoordinate() [2/2]

vector3 WrapFractionalCoordinate ( vector3  frac) const

◆ GetSpaceGroupNumber() [1/2]

int GetSpaceGroupNumber ( std::string  name = "")
Returns
The numeric value of the given spacegroup

◆ GetSpaceGroupNumber() [2/2]

int GetSpaceGroupNumber ( std::string  name = "") const

◆ GetCellVolume() [1/2]

double GetCellVolume ( )
Returns
The cell volume (in Angstroms^3)

◆ GetCellVolume() [2/2]

double GetCellVolume ( ) const

◆ SetAttribute()

void SetAttribute ( const std::string &  v)
inlineinherited

◆ SetOrigin()

void SetOrigin ( const DataOrigin  s)
inlineinherited

◆ GetAttribute()

virtual const std::string& GetAttribute ( ) const
inlinevirtualinherited
Returns
The attribute (key), which can be used to retrieve this data

Referenced by OpenBabel::extract_thermochemistry(), and OBMoleculeFormat::MakeCombinedMolecule().

◆ GetDataType()

unsigned int GetDataType ( ) const
inlineinherited
Returns
the data type for this object as defined in OBGenericDataType

◆ GetValue()

virtual const std::string& GetValue ( ) const
inlinevirtualinherited

Base class returns a default value (the attribute type) but should never be called.

Reimplemented in OBPairData, and OBCommentData.

Referenced by OBDepict::AddAtomLabels(), OBDepict::DrawMolecule(), OBDescriptor::FilterCompare(), and OBDescriptor::GetValues().

◆ GetOrigin()

virtual DataOrigin GetOrigin ( ) const
inlinevirtualinherited

Member Data Documentation

◆ _mOrtho

matrix3x3 _mOrtho
protected

◆ _mOrient

matrix3x3 _mOrient
protected

◆ _offset

vector3 _offset
protected

◆ _spaceGroupName

std::string _spaceGroupName
protected

◆ _spaceGroup

const SpaceGroup* _spaceGroup
protected

◆ _lattice

LatticeType _lattice
protected

◆ _attr

std::string _attr
protectedinherited

attribute tag (e.g., "UnitCell", "Comment" or "Author")

Referenced by OBRotamerList::Clone(), and OBNasaThermoData::OBNasaThermoData().

◆ _type

unsigned int _type
protectedinherited

attribute type – declared for each subclass

Referenced by OBRotamerList::Clone(), and OBNasaThermoData::OBNasaThermoData().

◆ _source

DataOrigin _source
protectedinherited

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