diff --git a/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py b/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py index c39489b23..f8e42bb56 100644 --- a/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py +++ b/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py @@ -10,7 +10,6 @@ SlabStrainedSupercellConfiguration, ) from ......analyze.interface import CommensurateLatticeInterfaceAnalyzer -from ......analyze.lattice import get_material_with_conventional_lattice from mat3ra.made.tools.build.pristine_structures.two_dimensional.slab.configuration import SlabConfiguration from ......build_components.metadata import MaterialWithBuildMetadata @@ -53,9 +52,6 @@ def get_commensurate_strained_configurations( Raises: ValueError: If no commensurate lattice matches are found. """ - if use_conventional_cell: - material = get_material_with_conventional_lattice(material) - slab_config = SlabConfiguration.from_parameters( material_or_dict=material, miller_indices=miller_indices, diff --git a/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py b/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py index 7d067de4c..1e990ec8f 100644 --- a/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py +++ b/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py @@ -4,7 +4,6 @@ from mat3ra.made.material import Material from ......analyze.interface import ZSLInterfaceAnalyzer -from ......analyze.lattice import get_material_with_conventional_lattice from ......analyze.slab import SlabMaterialAnalyzer from ......build.compound_pristine_structures.two_dimensional.interface import ( InterfaceBuilderParameters, @@ -37,10 +36,6 @@ def create_interface_zsl( reduce_result_cell: bool = True, reduce_result_cell_to_primitive: bool = False, ) -> MaterialWithBuildMetadata: - if use_conventional_cell: - substrate_crystal = get_material_with_conventional_lattice(substrate_crystal) - film_crystal = get_material_with_conventional_lattice(film_crystal) - substrate_slab = create_slab( crystal=substrate_crystal, miller_indices=substrate_miller_indices, diff --git a/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py b/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py index ef493d4e4..04e6d072f 100644 --- a/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +++ b/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py @@ -7,7 +7,6 @@ from .builder import GrainBoundaryLinearBuilder from .configuration import GrainBoundaryLinearConfiguration from ....compound_pristine_structures.two_dimensional.interface import get_commensurate_strained_configurations -from .....analyze.lattice import get_material_with_conventional_lattice from .....build_components import MaterialWithBuildMetadata @@ -53,9 +52,6 @@ def create_grain_boundary_linear( Raises: ValueError: If no commensurate lattice matches are found. """ - if use_conventional_cell: - material = get_material_with_conventional_lattice(material) - strained_configs, actual_angle = get_commensurate_strained_configurations( material=material, target_angle=target_angle, diff --git a/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py b/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py index 49e51356f..5b652de84 100644 --- a/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +++ b/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py @@ -4,7 +4,6 @@ from .builder import GrainBoundaryPlanarBuilder from .configuration import GrainBoundaryPlanarConfiguration from .....analyze.interface import GrainBoundaryPlanarAnalyzer -from .....analyze.lattice import get_material_with_conventional_lattice from .....build_components import MaterialWithBuildMetadata @@ -45,10 +44,6 @@ def create_grain_boundary_planar( Material: The grain boundary material """ phase_2_material = phase_2_material or phase_1_material - if use_conventional_cell: - phase_1_material = get_material_with_conventional_lattice(phase_1_material) - phase_2_material = get_material_with_conventional_lattice(phase_2_material) - analyzer = GrainBoundaryPlanarAnalyzer( phase_1_material=phase_1_material, phase_2_material=phase_2_material, diff --git a/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py b/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py index 9604e28c0..8965fd832 100644 --- a/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py +++ b/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py @@ -81,11 +81,10 @@ def from_parameters( termination_top = select_slab_termination(terminations, termination_top_formula) termination_bottom = select_slab_termination(terminations, termination_bottom_formula) - if use_conventional_cell: - material = crystal_lattice_planes_analyzer.material_with_conventional_lattice atomic_layers_repeated_configuration = AtomicLayersUniqueRepeatedConfiguration( crystal=material, miller_indices=miller_indices, + use_conventional_cell=use_conventional_cell, termination_top=termination_top, termination_bottom=termination_bottom, number_of_repetitions=number_of_layers, diff --git a/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py b/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py index 27d7300aa..48ef22a43 100644 --- a/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +++ b/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py @@ -32,6 +32,7 @@ def create_atomic_layers( atomic_layers_config = AtomicLayersUniqueRepeatedConfiguration( crystal=material, miller_indices=miller_indices, + use_conventional_cell=False, termination_top=termination, number_of_repetitions=number_of_layers, ) diff --git a/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py b/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py index 2e4718088..f6745cb9f 100644 --- a/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py +++ b/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py @@ -21,7 +21,10 @@ def get_analyzer(self, configuration: CrystalLatticePlanesConfiguration) -> Crys def _generate(self, configuration: CrystalLatticePlanesConfiguration) -> MaterialWithBuildMetadata: crystal_lattice_planes_analyzer = self.get_analyzer(configuration) miller_supercell_matrix = crystal_lattice_planes_analyzer.miller_supercell_matrix - miller_supercell_material = supercell(configuration.crystal, miller_supercell_matrix) + crystal = configuration.crystal + if configuration.use_conventional_cell: + crystal = crystal_lattice_planes_analyzer.material_with_conventional_lattice + miller_supercell_material = supercell(crystal, miller_supercell_matrix) return miller_supercell_material def _enforce_convention(self, material: MaterialWithBuildMetadata) -> MaterialWithBuildMetadata: diff --git a/tests/py/unit/test_tools_build_interface.py b/tests/py/unit/test_tools_build_interface.py index 8c8095e66..2d7242ede 100644 --- a/tests/py/unit/test_tools_build_interface.py +++ b/tests/py/unit/test_tools_build_interface.py @@ -5,7 +5,6 @@ from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum from mat3ra.made.material import Material from mat3ra.made.tools.analyze.interface.simple import InterfaceAnalyzer -from mat3ra.made.tools.analyze.lattice_planes import CrystalLatticePlanesMaterialAnalyzer from mat3ra.made.tools.build import MaterialWithBuildMetadata from mat3ra.made.tools.build.compound_pristine_structures.two_dimensional.interface.base.build_parameters import ( InterfaceBuilderParameters, @@ -259,9 +258,6 @@ def test_commensurate_interface_creation(material_config, analyzer_params, direc def test_create_slab_with_conventional_cell_stores_crystal_hashes_in_metadata(): miller_indices = (0, 0, 1) material = Material.create(BULK_Ni_PRIMITIVE) - expected_crystal = CrystalLatticePlanesMaterialAnalyzer( - material=material, miller_indices=miller_indices - ).material_with_conventional_lattice slab = create_slab( crystal=material, @@ -274,8 +270,8 @@ def test_create_slab_with_conventional_cell_stores_crystal_hashes_in_metadata(): serialized_slab = slab.model_dump() crystal = serialized_slab["metadata"]["build"][-1]["configuration"]["stack_components"][0]["crystal"] - assert crystal[HASH_KEY] == expected_crystal.hash - assert crystal[SCALED_HASH_KEY] == expected_crystal.scaled_hash + assert crystal[HASH_KEY] == material.hash + assert crystal[SCALED_HASH_KEY] == material.scaled_hash assert "bulkId" not in serialized_slab["metadata"] diff --git a/tests/py/unit/test_tools_build_slab.py b/tests/py/unit/test_tools_build_slab.py index c491f17c9..4a59ee4c3 100644 --- a/tests/py/unit/test_tools_build_slab.py +++ b/tests/py/unit/test_tools_build_slab.py @@ -144,6 +144,7 @@ def get_slab_with_builder( atomic_layers_repeated_configuration = AtomicLayersUniqueRepeatedConfiguration( crystal=material, miller_indices=miller_indices, + use_conventional_cell=False, termination_top=termination_top, termination_bottom=termination_bottom, number_of_repetitions=number_of_layers,