13 params.max_val, params.inc_val, params.min_nonzero,
14 params.max_nonzero) {}
19 Eigen::Ref<const Eigen::MatrixXd>
const &_axes,
20 Eigen::Ref<const Eigen::VectorXd>
const &min_val,
21 Eigen::Ref<const Eigen::VectorXd>
const &max_val,
22 Eigen::Ref<const Eigen::VectorXd>
const &inc_val,
Index _min_nonzero,
28 m_min_nonzero(_min_nonzero),
29 m_max_nonzero(_max_nonzero),
34 m_unit_length(DoF::
BasicTraits(_dof).unit_length()),
35 m_sites(_init.sites().begin(), _init.sites().end()),
114 vals(j,
m_sites[i]) = pert_vals(l);
118 double tnorm = vals.col(
m_sites[i]).norm();
129 bool is_valid_config =
false;
141 if (is_valid_config) {
notstd::cloneable_ptr< Configuration > m_current
static const std::string enumerator_name
void increment() override
Implements increment over all strain states.
ConfigEnumSiteDoFs(ConfigEnumInput const &_in_config, ConfigEnumSiteDoFsParams const ¶ms)
See ConfigEnumSiteDoFsParams for method and parameter details.
std::vector< Index > m_dof_dims
std::vector< Index > m_sites
LocalContinuousConfigDoFValues * m_dof_vals
std::string name() const override
Derived enumerators must implement name, via ENUM_MEMBERS.
EigenCounter< Eigen::VectorXd > m_counter
bool _check_sparsity() const
std::vector< Index > m_combo
bool _check_current() const
Returns true if current() is primitive and canonical.
Index size() const
Returns number of sites, NOT the number of primitives that fit in here.
A Counter allows looping over many incrementing variables in one loop.
std::vector< DoFSetInfo > const & info() const
DoFSetInfo provides the basis and symmetry representations for values
virtual jsonParser source(step_type step) const
void _invalidate()
Call if enumeration complete.
void _increment_step()
Increment current step value.
step_type step() const
Increments with each enumerated object.
std::set< Index > const & sites() const
Configuration const & configuration() const
AnisoValTraits BasicTraits
IntType nchoosek(IntType n, IntType k)
void reset_properties(ConfigType &config)
bool almost_zero(const T &val, double tol=TOL)
If T is not integral, use std::abs(val) < tol;.
INDEX_TYPE Index
For long integer indexing:
std::vector< IntType > index_to_kcombination(IntType ind, IntType k)