9 struct VectorSpaceSymReport;
11 namespace SymRepTools_v2 {
12 struct VectorSpaceSymReport;
56 DoFSpace(std::shared_ptr<Structure const>
const &_shared_prim,
58 std::optional<Eigen::Matrix3l>
const
59 &_transformation_matrix_to_super = std::nullopt,
60 std::optional<std::set<Index>>
const &_sites = std::nullopt,
61 std::optional<Eigen::MatrixXd>
const &_basis = std::nullopt);
64 std::shared_ptr<Structure const>
const &
shared_prim()
const;
74 std::optional<std::set<Index>>
const &
sites()
const;
186 std::optional<std::set<Index>>
const &sites = std::nullopt);
193 std::optional<std::set<Index>>
const &sites = std::nullopt);
199 std::optional<std::set<Index>>
const &sites,
200 std::vector<std::string> &axis_glossary,
201 std::optional<std::vector<Index>> &axis_site_index,
202 std::optional<std::vector<Index>> &axis_dof_component);
208 std::optional<Eigen::MatrixXd>
const &basis = std::nullopt);
213 std::vector<PermuteIterator>
const &group,
219 std::vector<PermuteIterator>
const &group,
bool calc_wedges =
false);
224 std::vector<PermuteIterator>
const &group,
bool calc_wedges =
false);
229 std::vector<PermuteIterator>
const &group,
bool calc_wedges,
230 std::optional<VectorSpaceSymReport> &symmetry_report);
235 std::vector<PermuteIterator>
const &group,
bool calc_wedges,
236 std::optional<SymRepTools_v2::VectorSpaceSymReport> &symmetry_report);
std::vector< std::string > m_axis_glossary
Names the DoF corresponding to each dimension (row) of the basis.
Eigen::MatrixXd const & basis() const
std::optional< std::vector< Index > > const & axis_site_index() const
Index subspace_dim() const
The DoF subspace dimension (equal to number of columns in basis).
bool includes_all_sites() const
True, if local DoF space with all sites in the supercell included.
std::optional< Eigen::Matrix3l > const & transformation_matrix_to_super() const
Specifies the supercell for a local DoF space. Has value for local DoF.
std::optional< std::vector< Index > > const & axis_dof_component() const
DoFSpace(std::shared_ptr< Structure const > const &_shared_prim, DoFKey const &_dof_key, std::optional< Eigen::Matrix3l > const &_transformation_matrix_to_super=std::nullopt, std::optional< std::set< Index >> const &_sites=std::nullopt, std::optional< Eigen::MatrixXd > const &_basis=std::nullopt)
std::optional< std::set< Index > > const & sites() const
The sites included in a local DoF space. Has value for local DoF.
std::shared_ptr< Structure const > const & shared_prim() const
Shared prim structure.
std::vector< std::string > const & axis_glossary() const
Names the DoF corresponding to each dimension (row) of the basis.
std::shared_ptr< Structure const > m_shared_prim
Shared prim structure.
std::optional< std::vector< Index > > m_axis_dof_component
std::optional< Eigen::Matrix3l > m_transformation_matrix_to_super
Specifies the supercell for a local DoF space. Required for local DoF.
std::optional< std::set< Index > > m_sites
The sites included in a local DoF space. Required for local DoF.
Index dim() const
The DoF space dimension (equal to number of rows in basis).
DoFKey const & dof_key() const
std::optional< std::vector< Index > > m_axis_site_index
A class that collects all symmetry information for for performing symmetry transformations on the sit...
SymGroupRep is an alternative representation of a SymGroup for something other than real space....
Type-safe ID object for communicating and accessing Symmetry representation info.
make_symmetry_adapted_dof_space_error(std::string _what)
virtual ~make_symmetry_adapted_dof_space_error()
BasicStructure specifies the lattice and atomic basis of a crystal.
Generic1DDatumFormatter< Eigen::VectorXd, ConfigEnumDataType > normal_coordinate()
ConfigIO::GenericConfigFormatter< jsonParser > config()
void set_dof_value(Configuration &config, DoFSpace const &dof_space, Eigen::VectorXd const &normal_coordinate)
Set config DoF value from a coordinate in the DoFSpace basis.
VectorSpaceSymReport vector_space_sym_report(DoFSpace const &dof_space, SupercellSymInfo const &sym_info, std::vector< PermuteIterator > const &group, bool calc_wedges=false)
Make VectorSpaceSymReport.
Eigen::VectorXd get_normal_coordinate(Configuration const &config, DoFSpace const &dof_space)
Return config DoF value as a coordinate in the DoFSpace basis.
DoFSpace exclude_homogeneous_mode_space(DoFSpace const &dof_space)
Removes the homogeneous mode space from the DoFSpace basis.
DoFSpace make_dof_space(DoFKey dof_key, ConfigEnumInput const &input_state, std::optional< Eigen::MatrixXd > const &basis=std::nullopt)
Index get_dof_space_dimension(DoFKey dof_key, xtal::BasicStructure const &prim, std::optional< Eigen::Matrix3l > const &transformation_matrix_to_super=std::nullopt, std::optional< std::set< Index >> const &sites=std::nullopt)
Return dimension of DoFSpace.
std::vector< std::string > make_dof_space_axis_glossary(DoFKey dof_key, xtal::BasicStructure const &prim, std::optional< Eigen::Matrix3l > const &transformation_matrix_to_super=std::nullopt, std::optional< std::set< Index >> const &sites=std::nullopt)
Make DoFSpace axis glossary.
void make_dof_space_axis_info(DoFKey dof_key, xtal::BasicStructure const &prim, std::optional< Eigen::Matrix3l > const &transformation_matrix_to_super, std::optional< std::set< Index >> const &sites, std::vector< std::string > &axis_glossary, std::optional< std::vector< Index >> &axis_site_index, std::optional< std::vector< Index >> &axis_dof_component)
Make DoFSpace axis glossary, axis site index, and axis dof component.
SymGroupRep const & make_dof_space_symrep(DoFSpace const &dof_space, SupercellSymInfo const &sym_info, std::vector< PermuteIterator > const &group, MasterSymGroup &symrep_master_group, SymGroupRepID &id)
Make a SymGroupRep for a DoFSpace.
SymRepTools_v2::VectorSpaceSymReport vector_space_sym_report_v2(DoFSpace const &dof_space, SupercellSymInfo const &sym_info, std::vector< PermuteIterator > const &group, bool calc_wedges=false)
Make VectorSpaceSymReport.
void throw_if_invalid_dof_space(Configuration const &config, DoFSpace const &dof_space)
Throw if !is_valid_dof_space(config, dof_space)
bool is_valid_dof_space(Configuration const &config, DoFSpace const &dof_space)
Eigen::MatrixXd make_homogeneous_mode_space(DoFSpace const &dof_space)
Make the homogeneous mode space of a local DoFSpace.
DoFSpace make_symmetry_adapted_dof_space(DoFSpace const &dof_space, SupercellSymInfo const &sym_info, std::vector< PermuteIterator > const &group, bool calc_wedges, std::optional< VectorSpaceSymReport > &symmetry_report)
Make DoFSpace with symmetry adapated basis.
INDEX_TYPE Index
For long integer indexing:
DoFSpace make_symmetry_adapted_dof_space_v2(DoFSpace const &dof_space, SupercellSymInfo const &sym_info, std::vector< PermuteIterator > const &group, bool calc_wedges, std::optional< SymRepTools_v2::VectorSpaceSymReport > &symmetry_report)
Make DoFSpace with symmetry adapated basis.
A struct which gives out the mixing information of given column_vector_space and a subspace.
std::vector< Index > axes_not_in_subspace
bool are_axes_mixed_with_subspace
std::vector< Index > axes_in_subspace
VectorSpaceMixingInfo(Eigen::MatrixXd const &column_vector_space, Eigen::MatrixXd const &subspace, double tol)
std::vector< Index > axes_mixed_with_subspace
Summary of data associated with the action of a symmetry group on a vector space.