9 std::vector<Index> permute;
11 std::map<std::string, std::vector<Index> > smap;
13 smap[
names[i]].push_back(i);
15 for (
auto const &
name : smap) {
16 permute.insert(permute.end(),
name.second.begin(),
name.second.end());
45 Eigen::Ref<const Eigen::Matrix3d>
const &_F) {
54 Eigen::Ref<const Eigen::Matrix3d>
const &_R) {
void deform_coords(Eigen::Ref< const Eigen::Matrix3d > const &_F)
Apply homogeneous deformation gradient tensor _F to lat_column_mat, mol_info, and atom_info.
void within(double tol=TOL)
Map all coordinates within the unit cell.
void rotate_coords(Eigen::Ref< const Eigen::Matrix3d > const &_R)
Apply homogeneous rotation matrix _R to lat_column_mat, mol_info, and atom_info.
Eigen::Matrix3d lat_column_mat
GenericDatumFormatter< std::string, DataObject > name()
INDEX_TYPE Index
For long integer indexing:
Eigen::MatrixXd coords
(3 x names.size()) matrix of coordinates. coords.col(i) is Cartesian coordinate of site 'i'
std::vector< std::string > names
names[i] is name of species that occupies sites 'i'
Index size() const
Number of sites is defined as names.size()
std::vector< Index > sort_by_name()
permutation that results in sites sorted alphabetically by species Guaranteed stable: will not change...