All notable changes to libcasm-configuration
will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed tests in
test_config_space_analysis.py
which were overly strict and failed unnecessarily.
- Added
libcasm.clusterography.make_custom_cluster_specs
, which takes a custom site filter function to generate a ClusterSpecs with custom_generators generated with the custom site filter. This approach allows creating a ClusterSpecs that is customized, as with a custom site filter, but still works to save/load without to_dict/from_dict needing the custom filter. - Added
make_canonical_local_configuration
,make_distinct_local_cluster_sites
, andmake_distinct_local_perturbations
tolibcasm.enumerate
. - Added
local_symgroup_rep
tolibcasm.configuration.Supercell
. - Added
distances
andphenomenal_distances
tolibcasm.clusterography.Cluster
- Added
libcasm.local_configuration
for local configuration enumeration and comparison. - Added
libcasm.enumerate.ConfigEnumLocalOccupations
for local configuration enumeration. - Added
make_supercells_for_point_defects
,find_optimal_point_defect_supercells
,make_required_sites
,plot_point_defect_supercell_scores
, andprint_point_defect_supercell_info
tolibcasm.enumerate
to help find optimal supercells for calculations.
- Changed
libcasm.clusterography.make_cluster_group
documentation to state how the head group of the cluster group is set. - Changed
libcasm.occ_events.make_occevent_group
to set the head group of the occ_event group to the head group of the group used to generate the occ_event group. In typical use this means the head group of the occ_event group is the prim factor group rather than a subgroup, even if a subgroup was used to generate the occ_event group. - Changed the sorting order of
libcasm.occ_events.OccEvent
to sort by (cluster size, site distances, reverse molecule count), instead of by (cluster size, molecule count, site distances).
- Fixed
libcasm.occ_events.OccEvent.copy_reverse
, which was doingcopy_sort
instead.
- Fixed
libcasm.clusterography.equivalents_info_from_dict
, which was trying to read clusters from the wrong position. This method was not used to read equivalents_info.json for KMC simulations. - Fixed
libcasm.occ_events.get_occevent_coordinate
, which was using the reverse of the appropriate translation to get the unitcell_index. - Fixed
to_json(to_json(config::Configuration)
andread_dof_values
to properly support writing and reading DoF values in both the prim and standard basis.
- Changed the
by_supercell
andby_supercell_list
methods oflibcasm.enumerate.ConfigEnumAllOccupations
to only do default continuous DoF. - Changed the
skip_non_canonical
parameter of theby_linear_site_indices
,by_integral_site_coordinate
,by_sublattice
,by_cluster
, andby_cluster_list
methods oflibcasm.enumerate.ConfigEnumAllOccupations
toskip_equivalents
. - Changed
ConfigEnumAllOccupations
methods that take abackground
configuration to maintain the orientation of continuous DoF. - Changed
ClusterSpecs.from_dict
to allow reading CASM v1 cluster specs JSON by checking for a "params" attribute and parsing that if it exists. - Changed
ClusterSpecs.from_dict
to warn if the prim has local DoF but no"orbit_branch_specs"
attribute is present. - Changed occ_events
to_json
methods forocc_events::OccPosition
,occ_events::OccTrajectory
, andocc_events::OccEvent
to optionally accept occ_events::OccSystem.
- Added option to include phenomenal site to local-cluster site distances by passing the phenomenal cluster to
libcasm.clusterography.Cluster.to_dict
. - Added
libcasm.configuration.Supercell.symgroup_rep
. - Added copy methods for
libcasm.configuration.SupercellSymOp
. - Added
Configuration.copy
,ConfigurationWithProperties.copy
,SupercellRecord.copy
,ConfigurationRecord.copy
,Cluster.copy
, andOccEvent.copy
methods. - Added
libcasm.configuration.copy_local_dof_values
andlibcasm.configuration.copy_global_dof_values
- Added
which_dofs
parameter tolibcasm.configuration.make_invariant_subgroup
- Added
libcasm.enumerate.SuperConfigEnum
- Added
libcasm.ConfigEnumAllOccupations.by_supercell_with_continuous_dof
- Added
__repr__
forCluster
,ClusterOrbitGenerator
, andClusterSpecs
. - Added
to_json
methods forconfig::ConfigSpaceAnalysisResults
andconfig::DoFSpaceAnalysisResults
. - Added
Prim.__repr__
,Supercell.__repr__
,SupercellRecord.__repr__
,Configuration.__repr__
,ConfigurationRecord.__repr__
,ConfigurationWithProperties.__repr__
,DoFSpaceAnalysisResults.__repr__
. - Added
ConfigSpaceAnalysisResults.to_dict
andDoFSpaceAnalysisResults.to_dict
methods. - Added
OccSystem.__repr__
,OccPosition.copy
,OccPosition.__copy__
,OccPosition.__deepcopy__
,OccPosition.__repr__
,OccEventRep.__repr__
,OccEventRep.copy
,OccEventRep.__copy__
,OccEventRep.__deepcopy__
,OccEvent.__repr__
.
- Added libcasm.sym_info.make_lattice_point_group
- Added libcasm.configuration.Prim.lattice_point_group
- Added libcasm.configuration.io.tools to get properties from CASM objects
- Added libcasm.configuration.io.spglib to interface with spglib
- Added libcasm.io.symgroup_to_dict_with_group_classification to add group classification from spglib to SymGroup.to_dict data.
- Added libcasm.clusterography.make_local_cluster_group
- Changed libcasm.clusterography.make_cluster_group, CASM::clust::make_cluster_group, and CASM::clust::make_cluster_groups so that the head group of the cluster group is set to the head group of the group used to generate the cluster group. In typical use this means the head group of the cluster group is the prim factor group rather than a subgroup, even if a subgroup was used to generate the cluster group.
- Fixed spelling of reservoir (#16)
- Wheels compiled with numpy>=2.0.0
- Fixed occ_symgroup_rep and atom_position_symgroup_rep in CASM::config::PrimSymInfo and libcasm.configuration.Prim, which were giving the inverse of the documented permutation.
- Fixed CASM::config::make_distinct_cluster_sites
- Fixed CASM::config::dof_space_analysis for global DoF with non-primitive unit cell configuration
- Fixed bug in
Configuration.from_structure
that caused error in resulting occupation
- Changed libcasm.configuration.Prim.is_atomic, which was returning has_anisotropic_occupants
- Changed libcasm.configuration.is_canonical_configuration arguments for providing a subgroup
- Changed most methods with no arguments that return a value without doing additional work to readonly attributes
- Added prototype and include_subclusters attributes to libcasm.clusterography.IntegralClusterOrbitGenerator
- Added ConfigEnumAllOccupations, ConfigEnumInfo, ConfigEnumMeshGrid, ScelEnum, make_all_distinct_periodic_perturbations, and make_distinct_cluster_sites to libcasm.enumerate
- Added make_all_super_configurations_by_subsets and make_distinct_super_configurations to libcasm.configuration
- Added
excluded_species
option toConfiguration.to_structure
andConfigurationWithProperties.to_structure
- Added
with_prim_basis
option toConfiguration.to_dict
andConfigurationSet.to_dict
to allow output of DoF values in the prim basis, along with "basis" tag which is respected on reading from JSON/dict. - Added set_order_parameters, make_dof_space, order_parameters, order_parameters_contribution, dof_values_vector, and dof_values_vector_contribution methods to libcasm.configuration.Configuration
- Added CASM::config::cluster_from_index_vector and CASM::config::cluster_from_index_set
- Added
libcasm.irreps.IrrepDecomposition
andlibcasm.irreps.MatrixRepGroup
for generic irreducible space decompositions
- Removed
to_canonical_supercell
andfrom_canonical_supercell
which can be too easily misinterpreted.
- Fix bug in irrep decomposition
- Fix comparison of Configuration with equivalent but distinct supercell
- Added more irrep decomposition, DoF space analysis, and config space analysis tests
- Added options to config_space_analysis and dof_space_analysis methods to specify default occupation mode on a site or sublattice basis
- Added CASM::config::make_dof_space_rep and libcasm.configuration.make_dof_space_rep
- Added libcasm.configuration.ConfigurationWithProperties, and methods for libcasm.configuration.SupercellSymOp to act on ConfigurationWithProperties
- Added site_index_converter and unitcell_index_converter accessors to libcasm.Supercell.
- Added to_structure and from_structure to libcasm.configuration.Configuration and libcasm.configuration.ConfigurationWithProperties for conversions between atomic structures and configuration
- Added more access to matrix reps from PrimSymInfo in libcasm.configuration.Prim
- Added to_index_list, to_index_set, sort, sorted, is_sorted, rmul to libcasm.clusterography.Cluster
- Added make_periodic_equivalence_map, make_periodic_equivalence_map_indices, make_local_equivalence_map, and make_local_equivalence_map_indices to libcasm.clusterography
- Added to_dict and from_dict methods to libcasm.configuration.Prim
- Changed libcasm.clusterography.make_prim_periodic_orbits to make_periodic_orbits
- Deprecated to_json and from_json methods of libcasm.configuration.Prim
This release creates the libcasm-configuration comparison and enumeration module. It includes:
- Classes for representing supercells, configurations, clusters, and occupation events
- Methods for comparing and enumerating unique configurations, clusters, occupation events, and local environments
- Methods for generating orbits of symmetrically equivalent configurations, clusters, and occupation events
- Methods for copying configurations to make sub- or super-configurations
- Methods for generating symmetry groups, and constructing and applying symmetry representations
- Methods for performing irreducible space decompositions and finding symmetry adapted order parameters
This distribution package libcasm-configuration contains several Python packages of use for configuration comparison and enumeration:
- libcasm.sym_info
- libcasm.irreps
- libcasm.clusterography
- libcasm.configuration
- libcasm.occ_events
- libcasm.enumerate
This package may be installed via pip install, using scikit-build, CMake, and pybind11. This release also includes usage examples and API documentation, built using Sphinx.