1 #ifndef CASM_enumerator_io_json_dof_space_analysis
2 #define CASM_enumerator_io_json_dof_space_analysis
4 #include <boost/filesystem/path.hpp>
13 class ConfigEnumInput;
14 class DirectoryStructure;
17 class make_symmetry_adapted_dof_space_error;
19 namespace SymRepTools_v2 {
20 struct VectorSpaceSymReport;
23 namespace DoFSpaceIO {
42 std::vector<PermuteIterator>
const &group);
71 std::string
const &identifier,
ConfigEnumInput const &config_enum_input,
72 std::optional<SymRepTools_v2::VectorSpaceSymReport>
const
78 DoFSpace const &dof_space, std::string
const &identifier,
80 std::optional<SymRepTools_v2::VectorSpaceSymReport>
const &sym_report);
112 std::string
const &identifier,
114 std::optional<SymRepTools_v2::VectorSpaceSymReport>
const
115 &sym_report)
override;
189 std::string
const &identifier,
191 std::optional<SymRepTools_v2::VectorSpaceSymReport>
const
192 &sym_report)
override;
216 std::vector<std::pair<std::string, ConfigEnumInput>>
const &named_inputs,
Specification of CASM project directory structure.
jsonParser m_combined_json
jsonParser & _output_json(Index state_index)
CombinedJsonOutput(fs::path output_dir)
void write_symmetry(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input, std::vector< PermuteIterator > const &group)
void write_structure(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input) override
Write input state structure.
void write_dof_space(Index state_index, DoFSpace const &dof_space, std::string const &identifier, ConfigEnumInput const &config_enum_input, std::optional< SymRepTools_v2::VectorSpaceSymReport > const &sym_report) override
Write dof space analysis.
virtual fs::path _output_dir(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input)=0
void write_symmetry(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input, std::vector< PermuteIterator > const &group)
virtual void _check_config(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input)=0
void write_dof_space(Index state_index, DoFSpace const &dof_space, std::string const &identifier, ConfigEnumInput const &config_enum_input, std::optional< SymRepTools_v2::VectorSpaceSymReport > const &sym_report) override
Write dof space analysis.
void write_structure(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input) override
Write input state structure.
std::vector< Error > const & errors() const
std::vector< Error > m_errors
void write_dof_space_error(make_symmetry_adapted_dof_space_error const &e, Index state_index, DoFSpace const &dof_space, std::string const &identifier, ConfigEnumInput const &config_enum_input, std::optional< SymRepTools_v2::VectorSpaceSymReport > const &sym_report)
Write dof space analysis error information.
void write_symmetry(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input, std::vector< PermuteIterator > const &group)
virtual void write_dof_space(Index state_index, DoFSpace const &dof_space, std::string const &identifier, ConfigEnumInput const &config_enum_input, std::optional< SymRepTools_v2::VectorSpaceSymReport > const &sym_report)=0
Write dof space analysis.
virtual void write_symmetry(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input, SymGroup const &lattice_point_group, SymGroup const &factor_group, SymGroup const &crystal_point_group)=0
virtual void write_structure(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input)=0
Write input state structure.
std::vector< Error > & errors()
void write_errors() const
Implementation that outputs to <output_dir>/dof_space/state.<index>
fs::path _output_dir(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input) override
For SequentialDirectoryOutput return output directory path.
void _check_config(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input) override
For SequentialDirectoryOutput, any input state is allowed.
SequentialDirectoryOutput(fs::path output_dir)
Implementation that outputs to <casm_project>/symmetry/analysis/<configname>
fs::path _output_dir(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input) override
For SymmetryDirectoryOutput return output directory path in symmetry dir.
DirectoryStructure const & m_dir
void _check_config(Index state_index, std::string const &identifier, ConfigEnumInput const &config_enum_input) override
SymmetryDirectoryOutput(DirectoryStructure const &dir)
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
void output_dof_space(Index state_index, std::string const &identifier, ConfigEnumInput const &input_state, DoFSpaceAnalysisOptions const &options, OutputImpl &output)
void dof_space_analysis(std::vector< std::pair< std::string, ConfigEnumInput >> const &named_inputs, DoFSpaceAnalysisOptions const &options, OutputImpl &output)
INDEX_TYPE Index
For long integer indexing:
DirectoryStructure const & dir
std::vector< std::string > dofs
Provide state_index, indentifier, and dof_key for any errors.
Error(Index _state_index, std::string _identifier, DoFKey _dof_key, std::string _what, jsonParser _data)