46 #ifndef CLIPPER_SPACEGROUP
47 #define CLIPPER_SPACEGROUP
51 #include "spacegroup_data.h"
76 enum TYPE { Hall, HM, XHM, Symops, Number, Unknown };
125 unsigned int hash()
const;
149 bool matches(
const Key& spgr_cachekey )
const;
153 int nsym, nsymn, nsymi, nsymc,
nsymp;
176 enum TYPE { Null, P1 };
208 {
return symops[sym_no]; }
211 {
return symops[sym_no]; }
214 {
return symops[nsymn*sym_no]; }
217 {
return symops[nsymp*sym_no]; }
227 int product_op(
const int& s1,
int& s2 )
const;
258 int nsym, nsymn, nsymi, nsymc, nsymp;
Symop_codes generator_ops() const
return minimal list of generator ops
Definition: spacegroup.cpp:374
int spacegroup_number() const
return the spacegroup number
Definition: spacegroup.cpp:591
std::vector< Symop > symops
symmetry operators
Definition: spacegroup.h:155
Vector of symop codes and associated methods.
Definition: spacegroup.h:98
Symop_codes inversion_ops() const
return inversion ops (by computation)
Definition: spacegroup.cpp:306
const int & num_symops() const
get number of symops
Definition: spacegroup.h:195
bool is_null() const
test if object has been initialised
Definition: spacegroup.cpp:885
const int & num_centering_symops() const
get number of centering symops (inc identity)
Definition: spacegroup.h:201
int nsymp
number of syms: total, primitive
Definition: spacegroup.h:153
std::vector< Isymop > isymops
symmetry operators
Definition: spacegroup.h:156
bool recip_asu(const HKL &hkl) const
test if hkl is in default reciprocal ASU
Definition: spacegroup.cpp:919
Integerised symmetry matrix.
Definition: symop.h:109
fractional (cell) coordinates
Definition: coords.h:343
void init_hall(const String &symb)
initialise from Hall symbol
Definition: spacegroup.cpp:93
void init(const Spgr_descr &spgr_descr)
initialiser: from spacegroup description
Definition: spacegroup.cpp:867
Spacegroup object.
Definition: spacegroup.h:173
HKL_class hkl_class(const HKL &hkl) const
get 'class' of reflection: multiplicity, allowed phase, absence
Definition: spacegroup.cpp:913
reflection class
Definition: coords.h:87
const int & num_primitive_noninversion_symops() const
get number of primitive non-inversion symops (inc identity)
Definition: spacegroup.h:205
Symop_codes laue_ops() const
return Laue ops
Definition: spacegroup.cpp:342
const Symop & centering_symop(const int &sym_no) const
get n'th centering symop (0...3 max)
Definition: spacegroup.h:216
Symop_codes pgrp_ops() const
return point group ops
Definition: spacegroup.cpp:352
static char pref_hr
preferred origin and hex/romb symbols
Definition: spacegroup.h:139
String symbol_hall() const
return the Hall symbol
Definition: spacegroup.cpp:601
Symop_codes product(const Symop_codes &ops2) const
return product of this (expanded) list by another (expanded) list
Definition: spacegroup.cpp:417
Spgr_cacheobj(const Key &spgr_cachekey)
construct entry
Definition: spacegroup.cpp:777
reflection 'Miller' index
Definition: coords.h:146
static void set_preferred(const char &c)
set preferred default spacegroup choice
Definition: spacegroup.cpp:658
const unsigned int & hash() const
return the hash code for the spacegroup
Definition: spacegroup.h:133
Coord_frac asu_min() const
get map ASU, lower bound
Definition: spacegroup.cpp:948
Spacegroup()
null constructor
Definition: spacegroup.h:180
Vec3 asu_max_
real space ASU
Definition: spacegroup.h:157
int lgrp
Laue group number.
Definition: spacegroup.h:154
void init_symops(const String &symb)
initialise from symops
Definition: spacegroup.cpp:260
int inverse_op(const int &s) const
get symop number corresponding to the inverse of a symop
Definition: spacegroup.cpp:930
static Mutex mutex
thread safety
Definition: spacegroup.h:158
spacegroup description
Definition: spacegroup.h:74
String extension with simple parsing methods.
Definition: clipper_types.h:65
String symbol_xhm() const
return the extended H-M symbol
Definition: spacegroup.cpp:621
ObjectCache reference class.
Definition: clipper_memory.h:155
unsigned int hash() const
return hash code of symop list
Definition: spacegroup.cpp:430
String format() const
string description
Definition: spacegroup.cpp:835
const Symop & inversion_symop(const int &sym_no) const
get n'th inversion symop (0...1 max)
Definition: spacegroup.h:213
const int & num_inversion_symops() const
get number of inversion symops (inc identity)
Definition: spacegroup.h:203
Mutex class: used for locking and unlocking shared resources.
Definition: clipper_thread.h:64
Key spgr_cachekey_
spacegroup cachekey
Definition: spacegroup.h:152
unsigned int hash_
hash code of spacegroup
Definition: spacegroup.h:136
Definition: spacegroup.h:145
const Symop_codes & generator_ops() const
return the generators for the spacegroup
Definition: spacegroup.h:131
String symbol_hm_ext() const
return the extension H-M symbol
Definition: spacegroup.cpp:636
int product_op(const int &s1, int &s2) const
get symop number corresponding to the product of two symops
Definition: spacegroup.cpp:922
static Spacegroup p1()
Return P1 spacegroup.
Definition: spacegroup.h:247
Symop_codes centering_ops() const
return lattice centering ops (by computation)
Definition: spacegroup.cpp:332
const Symop & symop(const int &sym_no) const
get n'th symop
Definition: spacegroup.h:207
Symop_codes generators_
codes for symop generators
Definition: spacegroup.h:137
String symbol_laue() const
return the Laue group symbol
Definition: spacegroup.cpp:965
Symop_codes primitive_noninversion_ops() const
return primitive non-inversion ops (by computation)
Definition: spacegroup.cpp:293
const Symop & primitive_symop(const int &sym_no) const
get n'th primitive symop (identical to symop(sym_no))
Definition: spacegroup.h:210
Symop_codes patterson_ops() const
return Patterson ops
Definition: spacegroup.cpp:361
Crystallographic symmetry operator.
Definition: symop.h:93
Symop_codes expand() const
expand (incomplete) list of symops
Definition: spacegroup.cpp:268
Symop_codes primitive_ops() const
return primitive incl inversion ops (by computation)
Definition: spacegroup.cpp:318
AXIS
enumeration for cell axes
Definition: spacegroup.h:178
Spgr_descr()
null constructor
Definition: spacegroup.cpp:459
const int & num_primitive_symops() const
get number of primitive symops (inc identity and inversion)
Definition: spacegroup.h:199
bool invariant_under_change_of_hand() const
test if change of hand preserves spacegroup
Definition: spacegroup.cpp:953
bool matches(const Key &spgr_cachekey) const
compare entry
Definition: spacegroup.cpp:832
const int & num_primops() const
get number of primitive symops (identical to num_primitive_symops())
Definition: spacegroup.h:197
TYPE
enumeration for fast construction of Null or P1 spacegroup
Definition: spacegroup.h:176
Coord_frac asu_max() const
get map ASU, upper bound
Definition: spacegroup.cpp:941
String symbol_hm() const
return the H-M symbol
Definition: spacegroup.cpp:611
int order_of_symmetry_about_axis(const AXIS axis) const
get the order of rotational symmetry about a given axis
Definition: spacegroup.cpp:892
const Spgr_descr & descr() const
get spacegroup description
Definition: spacegroup.h:193