Gemmi C++ API
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
gemmi::UnitCell Struct Reference

Unit cell. More...

#include <unitcell.hpp>

Inheritance diagram for gemmi::UnitCell:
[legend]

Public Member Functions

 UnitCell ()=default
 
 UnitCell (double a_, double b_, double c_, double alpha_, double beta_, double gamma_)
 
 UnitCell (const std::array< double, 6 > &v)
 
bool is_crystal () const
 
bool is_similar (const UnitCell &o, double rel, double deg) const
 
void calculate_properties ()
 
double cos_alpha () const
 
Mat33 calculate_matrix_B () const
 B matrix following convention from Busing & Levy (1967), not from cctbx.
 
double calculate_u_eq (const SMat33< double > &ani) const
 The equivalent isotropic displacement factor.
 
void set_matrices_from_fract (const Transform &f)
 
void set (double a_, double b_, double c_, double alpha_, double beta_, double gamma_)
 
void set_from_parameters (const UnitCellParameters &p)
 
void set_from_array (const std::array< double, 6 > &v)
 
void set_from_vectors (const Vec3 &va, const Vec3 &vb, const Vec3 &vc)
 
UnitCell changed_basis_backward (const Op &op, bool set_images)
 
UnitCell changed_basis_forward (const Op &op, bool set_images)
 
bool is_compatible_with_groupops (const GroupOps &gops, double eps=1e-3) const
 
bool is_compatible_with_spacegroup (const SpaceGroup *sg, double eps=1e-3) const
 
void set_cell_images_from_groupops (const GroupOps &group_ops)
 
void set_cell_images_from_spacegroup (const SpaceGroup *sg)
 
void add_ncs_images_to_cs_images (const std::vector< NcsOp > &ncs)
 
std::vector< FTransformget_ncs_transforms () const
 
Position orthogonalize (const Fractional &f) const
 
Fractional fractionalize (const Position &o) const
 
Position orthogonalize_difference (const Fractional &delta) const
 orthogonalize_difference(a-b) == orthogonalize(a) - orthogonalize(b)
 
Fractional fractionalize_difference (const Position &delta) const
 the inverse of orthogonalize_difference
 
Box< Positionorthogonalize_box (const Box< Fractional > &f) const
 Returns box containing fractional box (a cuboid in fractional coordinates can be a parallelepiped in Cartesian coordinates).
 
Transform orthogonalize_transform (const FTransform &ftr) const
 
Transform op_as_transform (const Op &op) const
 
double distance_sq (const Fractional &pos1, const Fractional &pos2) const
 
double distance_sq (const Position &pos1, const Position &pos2) const
 
double volume_per_image () const
 
bool search_pbc_images (Fractional &&diff, NearestImage &image) const
 
NearestImage find_nearest_image (const Position &ref, const Position &pos, Asu asu) const
 
void apply_transform (Fractional &fpos, int image_idx, bool inverse) const
 
NearestImage find_nearest_pbc_image (const Fractional &fref, Fractional fpos, int image_idx=0) const
 
NearestImage find_nearest_pbc_image (const Position &ref, const Position &pos, int image_idx=0) const
 
std::vector< NearestImagefind_nearest_pbc_images (const Fractional &fref, double dist, const Fractional &fpos, int image_idx) const
 
Position orthogonalize_in_pbc (const Position &ref, const Fractional &fpos) const
 
Position find_nearest_pbc_position (const Position &ref, const Position &pos, int image_idx, bool inverse=false) const
 
Fractional fract_image (const NearestImage &im, Fractional fpos)
 
int is_special_position (const Fractional &fpos, double max_dist) const
 Counts nearby symmetry mates (0 = none, 3 = 4-fold axis, etc).
 
int is_special_position (const Position &pos, double max_dist=0.8) const
 
double calculate_1_d2_double (double h, double k, double l) const
 Calculate 1/d^2 for specified hkl reflection.
 
double calculate_1_d2 (const Miller &hkl) const
 
double calculate_d (const Miller &hkl) const
 Calculate d-spacing.
 
double calculate_stol_sq (const Miller &hkl) const
 Calculate (sin(theta)/lambda)^2 = d*^2/4.
 
SMat33< doublemetric_tensor () const
 https://dictionary.iucr.org/Metric_tensor
 
SMat33< doublereciprocal_metric_tensor () const
 
UnitCell reciprocal () const
 Returns reciprocal unit cell.
 
Miller get_hkl_limits (double dmin) const
 
Mat33 primitive_orth_matrix (char centring_type) const
 
- Public Member Functions inherited from gemmi::UnitCellParameters
 UnitCellParameters ()=default
 
 UnitCellParameters (const double(&par)[6])
 
 UnitCellParameters (const std::array< double, 6 > &par)
 
bool operator== (const UnitCellParameters &o) const
 
bool operator!= (const UnitCellParameters &o) const
 
bool approx (const UnitCellParameters &o, double epsilon) const
 

Public Attributes

Transform orth
 
Transform frac
 
double volume = 1.0
 
double ar = 1.0
 reciprocal parameters a*, b*, c*, alpha*, beta*, gamma*
 
double br = 1.0
 
double cr = 1.0
 
double cos_alphar = 0.0
 
double cos_betar = 0.0
 
double cos_gammar = 0.0
 
bool explicit_matrices = false
 
short cs_count = 0
 
std::vector< FTransformimages
 
- Public Attributes inherited from gemmi::UnitCellParameters
double a = 1.0
 
double b = 1.0
 
double c = 1.0
 
double alpha = 90.0
 
double beta = 90.0
 
double gamma = 90.0
 

Detailed Description

Unit cell.

Contains cell parameters as well as pre-calculated orthogonalization and fractionalization matrices, volume, and more. Contains symmetry operations (incl. NCS) if they were set from outside.

Definition at line 165 of file unitcell.hpp.

Constructor & Destructor Documentation

◆ UnitCell() [1/3]

gemmi::UnitCell::UnitCell ( )
default

◆ UnitCell() [2/3]

gemmi::UnitCell::UnitCell ( double  a_,
double  b_,
double  c_,
double  alpha_,
double  beta_,
double  gamma_ 
)
inline

Definition at line 167 of file unitcell.hpp.

◆ UnitCell() [3/3]

gemmi::UnitCell::UnitCell ( const std::array< double, 6 > &  v)
inline

Definition at line 171 of file unitcell.hpp.

Member Function Documentation

◆ is_crystal()

bool gemmi::UnitCell::is_crystal ( ) const
inline

Definition at line 187 of file unitcell.hpp.

◆ is_similar()

bool gemmi::UnitCell::is_similar ( const UnitCell o,
double  rel,
double  deg 
) const
inline

Definition at line 190 of file unitcell.hpp.

◆ calculate_properties()

void gemmi::UnitCell::calculate_properties ( )
inline

Definition at line 197 of file unitcell.hpp.

◆ cos_alpha()

double gemmi::UnitCell::cos_alpha ( ) const
inline

Definition at line 247 of file unitcell.hpp.

◆ calculate_matrix_B()

Mat33 gemmi::UnitCell::calculate_matrix_B ( ) const
inline

B matrix following convention from Busing & Levy (1967), not from cctbx.

Cf. https://dials.github.io/documentation/conventions.html

Definition at line 251 of file unitcell.hpp.

◆ calculate_u_eq()

double gemmi::UnitCell::calculate_u_eq ( const SMat33< double > &  ani) const
inline

The equivalent isotropic displacement factor.

Based on Fischer & Tillmanns (1988). Acta Cryst. C44, 775-776. The argument is a non-orthogonalized tensor U, i.e. the one from SmallStructure::Site, but not from Atom.

Definition at line 263 of file unitcell.hpp.

◆ set_matrices_from_fract()

void gemmi::UnitCell::set_matrices_from_fract ( const Transform f)
inline

Definition at line 276 of file unitcell.hpp.

◆ set()

void gemmi::UnitCell::set ( double  a_,
double  b_,
double  c_,
double  alpha_,
double  beta_,
double  gamma_ 
)
inline

Definition at line 291 of file unitcell.hpp.

◆ set_from_parameters()

void gemmi::UnitCell::set_from_parameters ( const UnitCellParameters p)
inline

Definition at line 304 of file unitcell.hpp.

◆ set_from_array()

void gemmi::UnitCell::set_from_array ( const std::array< double, 6 > &  v)
inline

Definition at line 308 of file unitcell.hpp.

◆ set_from_vectors()

void gemmi::UnitCell::set_from_vectors ( const Vec3 va,
const Vec3 vb,
const Vec3 vc 
)
inline

Definition at line 310 of file unitcell.hpp.

◆ changed_basis_backward()

UnitCell gemmi::UnitCell::changed_basis_backward ( const Op op,
bool  set_images 
)
inline

Definition at line 315 of file unitcell.hpp.

◆ changed_basis_forward()

UnitCell gemmi::UnitCell::changed_basis_forward ( const Op op,
bool  set_images 
)
inline

Definition at line 331 of file unitcell.hpp.

◆ is_compatible_with_groupops()

bool gemmi::UnitCell::is_compatible_with_groupops ( const GroupOps gops,
double  eps = 1e-3 
) const
inline

Definition at line 335 of file unitcell.hpp.

◆ is_compatible_with_spacegroup()

bool gemmi::UnitCell::is_compatible_with_spacegroup ( const SpaceGroup sg,
double  eps = 1e-3 
) const
inline

Definition at line 350 of file unitcell.hpp.

◆ set_cell_images_from_groupops()

void gemmi::UnitCell::set_cell_images_from_groupops ( const GroupOps group_ops)
inline

Definition at line 354 of file unitcell.hpp.

◆ set_cell_images_from_spacegroup()

void gemmi::UnitCell::set_cell_images_from_spacegroup ( const SpaceGroup sg)
inline

Definition at line 363 of file unitcell.hpp.

◆ add_ncs_images_to_cs_images()

void gemmi::UnitCell::add_ncs_images_to_cs_images ( const std::vector< NcsOp > &  ncs)
inline

Definition at line 372 of file unitcell.hpp.

◆ get_ncs_transforms()

std::vector< FTransform > gemmi::UnitCell::get_ncs_transforms ( ) const
inline

Definition at line 384 of file unitcell.hpp.

◆ orthogonalize()

Position gemmi::UnitCell::orthogonalize ( const Fractional f) const
inline

Definition at line 391 of file unitcell.hpp.

◆ fractionalize()

Fractional gemmi::UnitCell::fractionalize ( const Position o) const
inline

Definition at line 394 of file unitcell.hpp.

◆ orthogonalize_difference()

Position gemmi::UnitCell::orthogonalize_difference ( const Fractional delta) const
inline

orthogonalize_difference(a-b) == orthogonalize(a) - orthogonalize(b)

Definition at line 401 of file unitcell.hpp.

◆ fractionalize_difference()

Fractional gemmi::UnitCell::fractionalize_difference ( const Position delta) const
inline

the inverse of orthogonalize_difference

Definition at line 405 of file unitcell.hpp.

◆ orthogonalize_box()

Box< Position > gemmi::UnitCell::orthogonalize_box ( const Box< Fractional > &  f) const
inline

Returns box containing fractional box (a cuboid in fractional coordinates can be a parallelepiped in Cartesian coordinates).

Definition at line 411 of file unitcell.hpp.

◆ orthogonalize_transform()

Transform gemmi::UnitCell::orthogonalize_transform ( const FTransform ftr) const
inline

Definition at line 426 of file unitcell.hpp.

◆ op_as_transform()

Transform gemmi::UnitCell::op_as_transform ( const Op op) const
inline

Definition at line 429 of file unitcell.hpp.

◆ distance_sq() [1/2]

double gemmi::UnitCell::distance_sq ( const Fractional pos1,
const Fractional pos2 
) const
inline

Definition at line 433 of file unitcell.hpp.

◆ distance_sq() [2/2]

double gemmi::UnitCell::distance_sq ( const Position pos1,
const Position pos2 
) const
inline

Definition at line 437 of file unitcell.hpp.

◆ volume_per_image()

double gemmi::UnitCell::volume_per_image ( ) const
inline

Definition at line 441 of file unitcell.hpp.

◆ search_pbc_images()

bool gemmi::UnitCell::search_pbc_images ( Fractional &&  diff,
NearestImage image 
) const
inline

Definition at line 446 of file unitcell.hpp.

◆ find_nearest_image()

NearestImage gemmi::UnitCell::find_nearest_image ( const Position ref,
const Position pos,
Asu  asu 
) const
inline

Definition at line 466 of file unitcell.hpp.

◆ apply_transform()

void gemmi::UnitCell::apply_transform ( Fractional fpos,
int  image_idx,
bool  inverse 
) const
inline

Definition at line 486 of file unitcell.hpp.

◆ find_nearest_pbc_image() [1/2]

NearestImage gemmi::UnitCell::find_nearest_pbc_image ( const Fractional fref,
Fractional  fpos,
int  image_idx = 0 
) const
inline

Definition at line 496 of file unitcell.hpp.

◆ find_nearest_pbc_image() [2/2]

NearestImage gemmi::UnitCell::find_nearest_pbc_image ( const Position ref,
const Position pos,
int  image_idx = 0 
) const
inline

Definition at line 505 of file unitcell.hpp.

◆ find_nearest_pbc_images()

std::vector< NearestImage > gemmi::UnitCell::find_nearest_pbc_images ( const Fractional fref,
double  dist,
const Fractional fpos,
int  image_idx 
) const
inline

Definition at line 510 of file unitcell.hpp.

◆ orthogonalize_in_pbc()

Position gemmi::UnitCell::orthogonalize_in_pbc ( const Position ref,
const Fractional fpos 
) const
inline

Definition at line 526 of file unitcell.hpp.

◆ find_nearest_pbc_position()

Position gemmi::UnitCell::find_nearest_pbc_position ( const Position ref,
const Position pos,
int  image_idx,
bool  inverse = false 
) const
inline

Definition at line 532 of file unitcell.hpp.

◆ fract_image()

Fractional gemmi::UnitCell::fract_image ( const NearestImage im,
Fractional  fpos 
)
inline

Definition at line 540 of file unitcell.hpp.

◆ is_special_position() [1/2]

int gemmi::UnitCell::is_special_position ( const Fractional fpos,
double  max_dist 
) const
inline

Counts nearby symmetry mates (0 = none, 3 = 4-fold axis, etc).

Precondition
is_crystal()

Definition at line 547 of file unitcell.hpp.

◆ is_special_position() [2/2]

int gemmi::UnitCell::is_special_position ( const Position pos,
double  max_dist = 0.8 
) const
inline

Definition at line 557 of file unitcell.hpp.

◆ calculate_1_d2_double()

double gemmi::UnitCell::calculate_1_d2_double ( double  h,
double  k,
double  l 
) const
inline

Calculate 1/d^2 for specified hkl reflection.

1/d^2 = (2*sin(theta)/lambda)^2

Definition at line 565 of file unitcell.hpp.

◆ calculate_1_d2()

double gemmi::UnitCell::calculate_1_d2 ( const Miller hkl) const
inline

Definition at line 573 of file unitcell.hpp.

◆ calculate_d()

double gemmi::UnitCell::calculate_d ( const Miller hkl) const
inline

Calculate d-spacing.

d = lambda/(2*sin(theta))

Definition at line 579 of file unitcell.hpp.

◆ calculate_stol_sq()

double gemmi::UnitCell::calculate_stol_sq ( const Miller hkl) const
inline

Calculate (sin(theta)/lambda)^2 = d*^2/4.

Definition at line 584 of file unitcell.hpp.

◆ metric_tensor()

SMat33< double > gemmi::UnitCell::metric_tensor ( ) const
inline

◆ reciprocal_metric_tensor()

SMat33< double > gemmi::UnitCell::reciprocal_metric_tensor ( ) const
inline

Definition at line 594 of file unitcell.hpp.

◆ reciprocal()

UnitCell gemmi::UnitCell::reciprocal ( ) const
inline

Returns reciprocal unit cell.

Definition at line 599 of file unitcell.hpp.

◆ get_hkl_limits()

Miller gemmi::UnitCell::get_hkl_limits ( double  dmin) const
inline

Definition at line 605 of file unitcell.hpp.

◆ primitive_orth_matrix()

Mat33 gemmi::UnitCell::primitive_orth_matrix ( char  centring_type) const
inline

Definition at line 609 of file unitcell.hpp.

Member Data Documentation

◆ orth

Transform gemmi::UnitCell::orth

Definition at line 173 of file unitcell.hpp.

◆ frac

Transform gemmi::UnitCell::frac

Definition at line 174 of file unitcell.hpp.

◆ volume

double gemmi::UnitCell::volume = 1.0

Definition at line 175 of file unitcell.hpp.

◆ ar

double gemmi::UnitCell::ar = 1.0

reciprocal parameters a*, b*, c*, alpha*, beta*, gamma*

Definition at line 177 of file unitcell.hpp.

◆ br

double gemmi::UnitCell::br = 1.0

Definition at line 177 of file unitcell.hpp.

◆ cr

double gemmi::UnitCell::cr = 1.0

Definition at line 177 of file unitcell.hpp.

◆ cos_alphar

double gemmi::UnitCell::cos_alphar = 0.0

Definition at line 178 of file unitcell.hpp.

◆ cos_betar

double gemmi::UnitCell::cos_betar = 0.0

Definition at line 178 of file unitcell.hpp.

◆ cos_gammar

double gemmi::UnitCell::cos_gammar = 0.0

Definition at line 178 of file unitcell.hpp.

◆ explicit_matrices

bool gemmi::UnitCell::explicit_matrices = false

Definition at line 179 of file unitcell.hpp.

◆ cs_count

short gemmi::UnitCell::cs_count = 0

Definition at line 180 of file unitcell.hpp.

◆ images

std::vector<FTransform> gemmi::UnitCell::images

Definition at line 181 of file unitcell.hpp.


The documentation for this struct was generated from the following file: