13 namespace SharedPrim_dataformatter_impl {
18 template <
typename ValueType>
37 "lattice_point_group",
"Lattice point group, in JSON format.",
49 "lattice_point_group_name",
"Lattice point group name.",
59 "lattice_point_group_size",
"Lattice point group size.",
63 return lattice_pg.size();
71 "factor_group",
"Factor group, in JSON format.",
81 "factor_group_name",
"Factor group name.",
98 "crystal_point_group",
"Crystal point group, in JSON format.",
108 "crystal_point_group_name",
"Crystal point group name.",
116 "Crystal point group size",
125 "Describes how integral site coordinates transform under application of "
126 "symmetry. The element `basis_rep[i]` contains `matrix`, "
127 "`sublattice_permute`, and `sublattice_shift`, which describe how the "
128 "`i`th factor group operation transforms a basis site (b, r_frac) -> "
129 "(b', r_frac') according to: `b' = sublattice_permute[b]` and `r_frac' = "
130 "matrix * r_frac + sublattice_shift[b]`, where `b` is the basis "
131 "index and `r_frac` is the integer unit cell coordinate of a site.",
142 "occ_permutation_rep",
143 "The permutation occ_permutation_rep[b][i] describes how the `i`th "
144 "factor group operation transforms anisotropic occupant values on "
145 "sublattice `b`. The convention when applying symmetry operations to "
146 "transform occupation values is to first transform the occupant value "
147 "on site `l` (which is on sublattice `b`) according to `occ(l) = "
148 "occ_permutation_rep[b][i][occ(l)]`, then to permute occupant values "
166 "is_primitive",
"Returns true if structure is the primitive structure",
174 "primitive",
"Returns the primitive structure, in prim JSON format.",
180 bool include_va =
false;
181 return to_json(primitive_struc, json,
FRAC, include_va);
187 "volume",
"Prim cell volume (length^3)",
195 "lattice",
"Lattice vectors, unrolled: (a0, a1, a2, b0, ...)",
197 Eigen::Matrix<double, 3, 3, Eigen::ColMajor> L =
199 return Eigen::Map<Eigen::VectorXd>(L.data(), L.size());
205 "lattice_column_matrix",
"Lattice vectors, as column vector matrix",
213 "lattice_params",
"Lattice parameters, as: (a, b, c, alpha, beta, gamma)",
225 "asymmetric_unit",
"Sets of indices of equivalent basis sites",
228 auto symop_vector = adapter(
shared_prim->factor_group().begin(),
241 DataFormatterDictionary<std::shared_ptr<const Structure>>
242 make_attribute_dictionary<std::shared_ptr<const Structure>>() {
243 using namespace SharedPrim_dataformatter_impl;
244 DataFormatterDictionary<SharedPrim> dict;
std::shared_ptr< Structure const > shared_prim
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
const std::string & get_name() const
static SymGroup lattice_point_group(Lattice const &_lat)
BasicStructure specifies the lattice and atomic basis of a crystal.
std::set< std::set< Index > > make_asymmetric_unit(const xtal::BasicStructure &struc, const std::vector< SymOp > &factor_group)
Return indices of equivalent basis sites.
BasicStructure make_primitive(const BasicStructure &non_primitive_struc, double tol=TOL)
Returns the smallest possible tiling unit of the given structure.
bool is_primitive(const BasicStructure &struc, double tol=TOL)
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
void write_symgroup(SymGroup const &grp, jsonParser &json)
void write_occ_permutation_rep(SymGroup const &grp, jsonParser &json, std::vector< SymGroupRepID > occupant_symrep_IDs)
void write_basis_permutation_rep(SymGroup const &grp, jsonParser &json, SymGroupRepID symgrouprep_id)
Describes how integral site coordinates transform under application of symmetry.
INDEX_TYPE Index
For long integer indexing: