16 ClexBasis::generate<std::vector<AperiodicIntegralClusterOrbit>::iterator>(
17 std::vector<AperiodicIntegralClusterOrbit>::iterator,
18 std::vector<AperiodicIntegralClusterOrbit>::iterator);
21 std::vector<PrimPeriodicIntegralClusterOrbit>::iterator>(
22 std::vector<PrimPeriodicIntegralClusterOrbit>::iterator,
23 std::vector<PrimPeriodicIntegralClusterOrbit>::iterator);
26 ClexBasis::_construct_prototype_basis<AperiodicIntegralClusterOrbit>(
28 std::vector<DoFKey>
const &local_keys,
29 std::vector<DoFKey>
const &global_keys,
Index max_poly_order)
const;
34 : m_prim_ptr(_prim_ptr),
35 m_basis_set_specs(_basis_set_specs),
36 m_dof_dict(_dof_dict),
46 int space,
char delim) {
47 for (
Index np = 0; np < _prototype.
size(); np++) {
48 stream << std::string(space,
' ');
50 stream.setf(std::ios::showpoint, std::ios_base::fixed);
54 if (delim) stream << delim;
57 <<
" Basis Functions:\n";
62 for (i = 0; i < _clust_basis.
size(); i++) {
63 stream <<
" \\Phi_{" << func_ind + i
64 <<
"} = " << _clust_basis[i]->tex_formula() << std::endl;
66 return _clust_basis.
size();
84 std::string
const &key)
const {
86 return this->
dof_dict()->lookup(key);
100 if (bo.size()) nf += bo[0].size();
108 std::vector<Orbit<PrimPeriodicSymCompare<IntegralCluster> > > asym_unit;
109 std::ostream nullstream(0);
112 std::back_inserter(asym_unit), nullstream);
120 std::vector<BasisSet> tbasis =
123 if (tbasis.empty()) {
124 throw std::runtime_error(
125 "In ClexBasis::_populate_site_bases(), unable to lookup global DoF "
135 namespace ClexBasis_impl {}
void set_dof_IDs(const std::vector< Index > &new_IDs)
bool accept(const FunctionVisitor &visitor)
std::map< DoFKey, std::vector< BasisSet > > m_global_bases
Dictionary of all global BasisSets, initialized.
std::shared_ptr< const Structure > PrimType_ptr
std::map< DoFKey, std::vector< BasisSet > > m_site_bases
Dictionary of all site BasisSets, initialized on construction m_site_basis[DOF][b] gives site basis f...
Index n_orbits() const
Total number of BasisSet orbits.
void generate(OrbitIterType _begin, OrbitIterType _end)
generate clust_basis for all equivalent clusters in
PrimType_ptr shared_prim() const
ClexBasis(PrimType_ptr _prim_ptr, ClexBasisSpecs const &_basis_set_specs, ParsingDictionary< DoFType::Traits > const *_dof_dict)
ParsingDictionary< DoFType::Traits > const * dof_dict() const
ParsingDictionary< DoFType::Traits > const * m_dof_dict
Index n_sublat() const
Total number of basis sites in primitive cell.
std::vector< BSetOrbit > m_bset_tree
Collection of all cluster orbits (are we keeping this?)
void _populate_site_bases()
Performs heavy lifting for populating site bases in m_site_bases.
PrimType const & prim() const
Index n_functions() const
Total number of basis functions.
ClexBasisSpecs const & basis_set_specs() const
DoFType::Traits const & lookup_dof_type_traits(std::string const &key) const
ClexBasisSpecs m_basis_set_specs
Collection of all the traits specific to a DoF type.
virtual std::vector< BasisSet > construct_site_bases(Structure const &_prim, std::vector< Orbit< PrimPeriodicSymCompare< IntegralCluster > > > &_asym_unit, BasisFunctionSpecs const &_basis_function_specs) const =0
Construct the site basis (if DOF_MODE is LOCAL) for a DoF, given its site.
size_type size() const
Number of elements in the cluster.
xtal::Coordinate coordinate(size_type i) const
Return the coordinate corresponding to element(i)
Parsing dictionary for obtaining the correct MoleculeAttribute given a name.
Structure specifies the lattice and atomic basis of a crystal.
const std::vector< xtal::Site > & basis() const
void print(std::ostream &stream, COORD_TYPE mode, char term=0, Eigen::IOFormat format=Eigen::IOFormat(7, 12)) const
std::vector< DoFKey > all_local_dof_types(BasicStructure const &_struc)
std::vector< DoFKey > global_dof_types(BasicStructure const &_struc)
Index print_clust_basis(std::ostream &stream, BasisSet _clust_basis, IntegralCluster const &_prototype, Index func_ind=0, int space=18, char delim='\n')
AperiodicOrbit< IntegralCluster > AperiodicIntegralClusterOrbit
INDEX_TYPE Index
For long integer indexing:
N-nary function that behaves as a constant (i.e. transform(arg1,arg2,...) == constant is true)
Provides parameters for constructing a cluster expansion basis (ClexBasis)