13 json[
"is_direct_sum_of_complex_irreps"]
14 [
"symop_characters_imag_component"]);
16 json[
"is_direct_sum_of_complex_irreps"]
17 [
"symop_characters_real_component"]);
47 json[
"full_wedge_axes"] = wedge.
trans_mat().transpose();
50 std::string irrep_name =
52 json[
"irrep_wedge_axes"][irrep_name] =
63 std::vector<Index> mults;
64 for (
auto const &irrep : obj.
irreps) {
65 if (irrep.index == 0) mults.push_back(0);
70 Index i(0), l(0), q(1);
71 for (
Index mult : mults) {
73 for (
Index m = 0; m < mult; ++m) {
74 std::string irrep_name =
"irrep_" +
77 auto const &irrep = obj.
irreps[l];
78 if (irrep.pseudo_irrep) {
79 json[
"irreducible_representations"][
"pseudo_irrep"][irrep_name] = irrep;
83 json[
"irreducible_representations"][
"irreducible_wedge"][irrep_name] =
88 json[
"irreducible_representations"][
"irrep_axes"][irrep_name].
put_array();
89 for (
Index a = 0; a < irrep.irrep_dim(); ++a, ++q) {
91 json[
"irreducible_representations"][
"irrep_axes"][irrep_name].
push_back(
96 json[
"irreducible_representations"][
"symop_matrices"]
100 std::string op_name =
102 irrep_matrices[op_name] =
103 (irrep.trans_mat * op * irrep.trans_mat.transpose()).real();
107 jsonParser &djson = json[
"irreducible_representations"]
108 [
"subgroup_invariant_directions"];
109 if (irrep.directions.empty()) {
110 djson[irrep_name] =
"none";
112 for (
Index d = 0; d < irrep.directions.size(); ++d) {
113 std::string orbit_name =
116 djson[irrep_name][orbit_name].
put_array(irrep.directions[d].size());
117 for (
Index j = 0; j < irrep.directions[d].size(); ++j) {
119 irrep.directions[d][j]),
120 djson[irrep_name][orbit_name][j]);
134 json[
"irreducible_representations"][
"adapted_axes"][axis_name]);
138 std::string subwedge_name =
141 json[
"irreducible_wedge"][subwedge_name] =
161 json[
"is_direct_sum_of_complex_irreps"]
162 [
"symop_characters_imag_component"]);
164 json[
"is_direct_sum_of_complex_irreps"]
165 [
"symop_characters_real_component"]);
195 json[
"full_wedge_axes"] = wedge.
trans_mat().transpose();
198 std::string irrep_name =
200 json[
"irrep_wedge_axes"][irrep_name] =
212 std::vector<Index> mults;
213 for (
auto const &irrep : obj.
irreps) {
214 if (irrep.index == 0) mults.push_back(0);
219 Index i(0), l(0), q(1);
220 for (
Index mult : mults) {
222 for (
Index m = 0; m < mult; ++m) {
223 std::string irrep_name =
"irrep_" +
226 auto const &irrep = obj.
irreps[l];
227 if (irrep.pseudo_irrep) {
228 json[
"irreducible_representations"][
"pseudo_irrep"][irrep_name] = irrep;
232 json[
"irreducible_representations"][
"irreducible_wedge"][irrep_name] =
237 json[
"irreducible_representations"][
"irrep_axes"][irrep_name].
put_array();
238 for (
Index a = 0; a < irrep.irrep_dim(); ++a, ++q) {
240 json[
"irreducible_representations"][
"irrep_axes"][irrep_name].
push_back(
245 json[
"irreducible_representations"][
"symop_matrices"]
249 std::string op_name =
251 irrep_matrices[op_name] =
252 (irrep.trans_mat * op * irrep.trans_mat.transpose()).real();
256 jsonParser &djson = json[
"irreducible_representations"]
257 [
"subgroup_invariant_directions"];
258 if (irrep.directions.empty()) {
259 djson[irrep_name] =
"none";
261 for (
Index d = 0; d < irrep.directions.size(); ++d) {
262 std::string orbit_name =
265 djson[irrep_name][orbit_name].
put_array(irrep.directions[d].size());
266 for (
Index j = 0; j < irrep.directions[d].size(); ++j) {
268 irrep.directions[d][j]),
269 djson[irrep_name][orbit_name][j]);
283 json[
"irreducible_representations"][
"adapted_axes"][axis_name]);
287 std::string subwedge_name =
290 json[
"irreducible_wedge"][subwedge_name] =
jsonParser & put_array()
Puts new empty JSON array.
CASM::jsonParser & to_json_array(const Eigen::MatrixBase< Derived > &value, CASM::jsonParser &json)
Write Eigen Matrix with 1 row or 1 column to JSON array.
jsonParser & push_back(const T &value, Args &&... args)
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
std::string to_sequential_string(Index i, Index max_i, char prepend_char='0')
INDEX_TYPE Index
For long integer indexing:
Summary of data associated with the action of a symmetry group on a vector space.
std::vector< Eigen::MatrixXd > symgroup_rep
Matrix representation for each operation in the group – defines action of group on vector space.
std::vector< std::string > axis_glossary
Names given to individual axes in initial (un-adapted) vector space, corresponding to rows of symmetr...
Eigen::MatrixXd symmetry_adapted_dof_subspace
Symmetry-oriented subspace of the vector space (columns are the basis vectors)
std::vector< SymRepTools::SubWedge > irreducible_wedge
Irreducible wedge in the vector space encoded as a vector of symmetrically distinct SubWedges.
std::vector< SymRepTools::IrrepInfo > irreps
A list of all irreducible representation that make up the full representation.