24 std::vector<BasisSet> result(_prim.
basis().size());
26 auto const &mag_spin_dof_specs =
27 get<MagSpinDoFSpecs>(
name(), _basis_function_specs);
29 for (
Index b = 0; b < _prim.
basis().size(); b++) {
30 if (!_prim.
basis()[b].has_dof(
name()))
continue;
38 result[b].construct_harmonic_polynomials(
39 tsubs, mag_spin_dof_specs.max_poly_order, 1,
false);
40 result[b].get_symmetry_representation(_prim.
factor_group());
42 result[b].set_name(
name() +
"_site_func");
51 fs::path dof_specs_path{
"dof_specs"};
52 fs::path subpath = dof_specs_path / this->
name();
54 if (subparser->value) {
55 parser.
value->dof_specs.push_back(std::move(subparser->value));
63 get<MagSpinDoFSpecs>(this->
name(), basis_function_specs);
76 Index max_poly_order = -1) {
77 return notstd::make_unique<DoF_impl::MagSpinDoFSpecs>(flavor_name,
87 std::string full_name = parser.
name();
88 std::string flavor_name = full_name.substr(0, full_name.find(
"magspin"));
92 parser.
value = notstd::make_unique<DoF_impl::MagSpinDoFSpecs>(
93 flavor_name, max_poly_order);
Basic std::vector like container (deprecated)
void set_variable_basis(const DoFSet &_dof_set)
Define the basis set to contain only variables (e.g., x,y,z)
void parse_dof_specs(InputParser< BasisFunctionSpecs > &parser, Structure const &prim) const override
std::vector< BasisSet > construct_site_bases(Structure const &_prim, std::vector< Orbit< PrimPeriodicSymCompare< IntegralCluster > > > &_asym_unit, BasisFunctionSpecs const &_basis_function_specs) const override
Construct the site basis (if DOF_MODE is LOCAL) for a DoF, given its site.
void dof_specs_to_json(BasisFunctionSpecs const &basis_function_specs, jsonParser &json, Structure const &prim) const override
Output DoF-specific basis function specs to json. Default does nothing.
std::string const & name() const
Structure specifies the lattice and atomic basis of a crystal.
std::vector< std::map< DoFKey, SymGroupRepID > > site_dof_symrep_IDs() const
const std::vector< xtal::Site > & basis() const
const MasterSymGroup & factor_group() const
jsonParser & put_obj()
Puts new empty JSON object.
DoF_impl::MagSpinDoFTraits magspin(std::string const &flavor_name)
std::unique_ptr< DoFSpecs > magspin_bfuncs(std::string const &flavor_name, Index max_poly_order=-1)
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
INDEX_TYPE Index
For long integer indexing:
void parse(InputParser< ConfigEnumOptions > &parser, std::string method_name, PrimClex const &primclex, DataFormatterDictionary< Configuration > const &dict)
Specify how to construct basis functions.
std::string name() const
Name of this->self, equivalent to this->path.filename().string()
bool valid() const
Return true if this and and all subparsers are valid.