19 " min: int, >0 (optional, default=1, override with --min) "
21 " The minimum volume supercell to enumerate. The volume is measured "
23 " relative the unit cell being used to generate supercells. "
26 " max: int, >= min (optional, override with --max) "
28 " The maximum volume supercell to enumerate. The volume is measured "
30 " relative the unit cell being used to generate supercells. One of "
32 " \"max\" or \"all\" must be given. "
35 " dirs: string (optional, default=\"abc\")\n"
36 " This option may be used to restrict the supercell enumeration to 1, "
38 " 2 or 3 of the lattice vectors, to get 1-, 2-, or 3-dimensional "
40 " supercells. By specifying combinations of 'a', 'b', and 'c', you "
42 " determine which of the unit cell lattice vectors you want to "
44 " enumerate over. For example, to enumerate 1-dimensional supercells "
46 " along the 'c' use \"dirs\":\"c\". If you want 2-dimensional "
48 " supercells along the 'a' and 'c' lattice vectors, specify "
50 " \"dirs\":\"ac\". \n"
52 " unit_cell: 3x3 matrix of int, or string (default=identity matrix) "
54 " This option may be used to specify the unit cell. It may be "
56 " specified using a 3x3 matrix of int, representing the "
58 " matrix, T, such that U = P*T, where P are the primitive lattice "
60 " and U are the unit cell lattice vectors. For example, a unit cell "
62 " that whose lattice vectors are (2*a+b, b, c) (with respect to the "
64 " the primitive cell vectors) could be specified using:\n"
66 " \"unit_cell\" : [\n"
72 " Or it may be specified with the name of an existing supercell to "
74 " the unit cell, for example: \n"
76 " \"unit_cell\" : \"SCEL2_1_1_2_0_0_0\"\n"
78 " filter: string (optional, default=None, override with --filter)\n"
79 " A query command to use to filter which Configurations are kept. "
82 " dry_run: bool (optional, default=false, override with --dry-run)\n"
87 " To enumerate supercells up to and including size 4:\n"
88 " casm enum --method ScelEnum -i '{\"max\": 4}' \n"
90 " To enumerate 2d supercells up to and including size 4:\n"
91 " casm enum --method ScelEnum -i '{\"max\": 4, \"dirs\": \"ab\"}' \n"
93 " If the prim is primitive FCC, two dimensional supercells of the \n"
94 " conventional FCC unit cell up to and including 4x the unit cell "
96 " could be enumerated using:\n"
98 " casm enum --method ScelEnum -i \n"
102 " \"dirs\": \"ab\",\n"
103 " \"unit_cell\" : [\n"
115 jsonParser const &cli_options_as_json)
const {
122 std::runtime_error error_if_invalid{
"Error reading ScelEnum JSON input"};
131 auto scel_enum_props_parser_ptr =
134 *scel_enum_props_parser_ptr->value;
void set_verbosity(int _verbosity)
PrimClex is the top-level data structure for a CASM project.
static const std::string enumerator_name
void run(PrimClex &primclex, jsonParser const &json_options, jsonParser const &cli_options_as_json) const override
std::string desc() const override
std::string name() const override
Enumeration method name (i.e. "ConfigEnumAllOccupations")
Represents a supercell of the primitive parent crystal structure.
Data structure for holding supercell enumeration properties.
jsonParser combine_supercell_enum_json_options(jsonParser const &json_options, jsonParser const &cli_options_as_json)
void enumerate_supercells(EnumerateSupercellsOptions const &options, EnumeratorType &enumerator, DB::Database< Supercell > &supercell_db)
void report_and_throw_if_invalid(KwargsParser const &parser, Log &log, ErrorType error)
Options for the enumerate_supercells function.
int verbosity
Printing verbosity level.