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>

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 operator== (const UnitCell &o) const
 
bool operator!= (const UnitCell &o) const
 
bool approx (const UnitCell &o, double epsilon) 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_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)
 
bool is_compatible_with_spacegroup (const SpaceGroup *sg, double eps=1e-3)
 
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 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) const
 
NearestImage find_nearest_pbc_image (const Position &ref, const Position &pos, 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
 
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 Attributes

double a = 1.0
 
double b = 1.0
 
double c = 1.0
 
double alpha = 90.0
 
double beta = 90.0
 
double gamma = 90.0
 
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
 

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 139 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 141 of file unitcell.hpp.

◆ UnitCell() [3/3]

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

Definition at line 145 of file unitcell.hpp.

Member Function Documentation

◆ is_crystal()

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

Definition at line 164 of file unitcell.hpp.

◆ operator==()

bool gemmi::UnitCell::operator== ( const UnitCell o) const
inline

Definition at line 166 of file unitcell.hpp.

◆ operator!=()

bool gemmi::UnitCell::operator!= ( const UnitCell o) const
inline

Definition at line 170 of file unitcell.hpp.

◆ approx()

bool gemmi::UnitCell::approx ( const UnitCell o,
double  epsilon 
) const
inline

Definition at line 172 of file unitcell.hpp.

◆ is_similar()

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

Definition at line 179 of file unitcell.hpp.

◆ calculate_properties()

void gemmi::UnitCell::calculate_properties ( )
inline

Definition at line 186 of file unitcell.hpp.

◆ cos_alpha()

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

Definition at line 236 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 240 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 252 of file unitcell.hpp.

◆ set_matrices_from_fract()

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

Definition at line 265 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 280 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 293 of file unitcell.hpp.

◆ changed_basis_backward()

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

Definition at line 298 of file unitcell.hpp.

◆ changed_basis_forward()

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

Definition at line 314 of file unitcell.hpp.

◆ is_compatible_with_groupops()

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

Definition at line 318 of file unitcell.hpp.

◆ is_compatible_with_spacegroup()

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

Definition at line 333 of file unitcell.hpp.

◆ set_cell_images_from_spacegroup()

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

Definition at line 337 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 352 of file unitcell.hpp.

◆ get_ncs_transforms()

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

Definition at line 364 of file unitcell.hpp.

◆ orthogonalize()

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

Definition at line 371 of file unitcell.hpp.

◆ fractionalize()

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

Definition at line 374 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 381 of file unitcell.hpp.

◆ fractionalize_difference()

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

the inverse of orthogonalize_difference

Definition at line 385 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 391 of file unitcell.hpp.

◆ op_as_transform()

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

Definition at line 406 of file unitcell.hpp.

◆ distance_sq() [1/2]

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

Definition at line 411 of file unitcell.hpp.

◆ distance_sq() [2/2]

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

Definition at line 415 of file unitcell.hpp.

◆ volume_per_image()

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

Definition at line 419 of file unitcell.hpp.

◆ search_pbc_images()

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

Definition at line 424 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 444 of file unitcell.hpp.

◆ apply_transform()

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

Definition at line 464 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 
) const
inline

Definition at line 474 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 
) const
inline

Definition at line 483 of file unitcell.hpp.

◆ orthogonalize_in_pbc()

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

Definition at line 488 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 494 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 503 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 513 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 521 of file unitcell.hpp.

◆ calculate_1_d2()

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

Definition at line 529 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 535 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 540 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 550 of file unitcell.hpp.

◆ reciprocal()

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

Returns reciprocal unit cell.

Definition at line 555 of file unitcell.hpp.

◆ get_hkl_limits()

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

Definition at line 561 of file unitcell.hpp.

◆ primitive_orth_matrix()

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

Definition at line 565 of file unitcell.hpp.

Member Data Documentation

◆ a

double gemmi::UnitCell::a = 1.0

Definition at line 148 of file unitcell.hpp.

◆ b

double gemmi::UnitCell::b = 1.0

Definition at line 148 of file unitcell.hpp.

◆ c

double gemmi::UnitCell::c = 1.0

Definition at line 148 of file unitcell.hpp.

◆ alpha

double gemmi::UnitCell::alpha = 90.0

Definition at line 149 of file unitcell.hpp.

◆ beta

double gemmi::UnitCell::beta = 90.0

Definition at line 149 of file unitcell.hpp.

◆ gamma

double gemmi::UnitCell::gamma = 90.0

Definition at line 149 of file unitcell.hpp.

◆ orth

Transform gemmi::UnitCell::orth

Definition at line 150 of file unitcell.hpp.

◆ frac

Transform gemmi::UnitCell::frac

Definition at line 151 of file unitcell.hpp.

◆ volume

double gemmi::UnitCell::volume = 1.0

Definition at line 152 of file unitcell.hpp.

◆ ar

double gemmi::UnitCell::ar = 1.0

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

Definition at line 154 of file unitcell.hpp.

◆ br

double gemmi::UnitCell::br = 1.0

Definition at line 154 of file unitcell.hpp.

◆ cr

double gemmi::UnitCell::cr = 1.0

Definition at line 154 of file unitcell.hpp.

◆ cos_alphar

double gemmi::UnitCell::cos_alphar = 0.0

Definition at line 155 of file unitcell.hpp.

◆ cos_betar

double gemmi::UnitCell::cos_betar = 0.0

Definition at line 155 of file unitcell.hpp.

◆ cos_gammar

double gemmi::UnitCell::cos_gammar = 0.0

Definition at line 155 of file unitcell.hpp.

◆ explicit_matrices

bool gemmi::UnitCell::explicit_matrices = false

Definition at line 156 of file unitcell.hpp.

◆ cs_count

short gemmi::UnitCell::cs_count = 0

Definition at line 157 of file unitcell.hpp.

◆ images

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

Definition at line 158 of file unitcell.hpp.


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