@mat3ra/made 2026.8.7-0 → 2026.8.18-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/js/Material.d.ts +219 -0
- package/dist/js/Material.js +457 -0
- package/dist/js/basis/basis.d.ts +14 -9
- package/dist/js/basis/basis.js +15 -13
- package/dist/js/basis/constrained_basis.d.ts +9 -7
- package/dist/js/basis/constrained_basis.js +4 -4
- package/dist/js/generated/MaterialSchemaMixin.d.ts +5 -0
- package/dist/js/generated/MaterialSchemaMixin.js +69 -0
- package/dist/js/lattice/lattice.d.ts +4 -3
- package/dist/js/lattice/lattice.js +1 -2
- package/dist/js/made.d.ts +12 -12
- package/dist/js/made.js +38 -5
- package/dist/js/parsers/espresso.d.ts +2 -3
- package/dist/js/parsers/espresso.js +0 -1
- package/dist/js/parsers/native_format_parsers.d.ts +9 -8
- package/dist/js/parsers/native_format_parsers.js +6 -6
- package/dist/js/parsers/parsers.d.ts +6 -6
- package/dist/js/parsers/poscar.d.ts +5 -4
- package/dist/js/parsers/poscar.js +3 -2
- package/dist/js/parsers/xyz.d.ts +3 -5
- package/dist/js/parsers/xyz.js +3 -4
- package/dist/js/parsers/xyz_combinatorial_basis.js +3 -1
- package/dist/js/tools/basis.d.ts +1 -1
- package/dist/js/tools/index.d.ts +7 -7
- package/dist/js/tools/material.d.ts +1 -1
- package/dist/js/tools/material.js +8 -7
- package/dist/js/tools/supercell.d.ts +4 -5
- package/dist/js/tools/supercell.js +2 -4
- package/dist/js/tools/surface.d.ts +4 -4
- package/dist/js/tools/surface.js +2 -7
- package/package.json +12 -8
- package/.babelrc +0 -10
- package/.eslintrc.json +0 -11
- package/.gitattributes +0 -1
- package/.husky/post-checkout +0 -3
- package/.husky/post-commit +0 -3
- package/.husky/post-merge +0 -3
- package/.husky/pre-commit +0 -6
- package/.husky/pre-push +0 -3
- package/.mocharc.json +0 -5
- package/.pre-commit-config.yaml +0 -26
- package/.prettierignore +0 -2
- package/.prettierrc +0 -6
- package/AGENTS.md +0 -133
- package/MANIFEST.in +0 -1
- package/data/constants.json +0 -13
- package/data/reciprocal_paths.json +0 -111
- package/dist/js/material.d.ts +0 -169
- package/dist/js/material.js +0 -362
- package/images/made/tools/tools_diagram_general.png +0 -3
- package/images/made/tools/tools_diagram_interface.png +0 -3
- package/pyproject.toml +0 -123
- package/src/__init__.py +0 -0
- package/src/js/basis/basis.ts +0 -621
- package/src/js/basis/constrained_basis.ts +0 -114
- package/src/js/basis/coordinates.ts +0 -93
- package/src/js/basis/elements.ts +0 -24
- package/src/js/basis/helpers.ts +0 -20
- package/src/js/basis/labels.ts +0 -6
- package/src/js/cell/cell.ts +0 -150
- package/src/js/cell/conventional_cell.ts +0 -86
- package/src/js/cell/primitive_cell.ts +0 -166
- package/src/js/constants/molecule.ts +0 -18
- package/src/js/constants.ts +0 -4
- package/src/js/constraints/constraints.ts +0 -45
- package/src/js/lattice/lattice.ts +0 -306
- package/src/js/lattice/lattice_types.ts +0 -134
- package/src/js/lattice/reciprocal/lattice_reciprocal.ts +0 -193
- package/src/js/lattice/reciprocal/paths.ts +0 -39
- package/src/js/lattice/reciprocal/symmetry_points.ts +0 -886
- package/src/js/lattice/unit_cell.ts +0 -66
- package/src/js/made.ts +0 -62
- package/src/js/material.ts +0 -458
- package/src/js/parsers/cif.ts +0 -25
- package/src/js/parsers/errors.ts +0 -6
- package/src/js/parsers/espresso.ts +0 -30
- package/src/js/parsers/native_format_parsers.ts +0 -51
- package/src/js/parsers/parsers.ts +0 -13
- package/src/js/parsers/poscar.ts +0 -212
- package/src/js/parsers/xyz.ts +0 -187
- package/src/js/parsers/xyz_combinatorial_basis.ts +0 -265
- package/src/js/tools/basis.ts +0 -132
- package/src/js/tools/cell.ts +0 -41
- package/src/js/tools/index.ts +0 -11
- package/src/js/tools/material.ts +0 -62
- package/src/js/tools/supercell.ts +0 -88
- package/src/js/tools/surface.ts +0 -223
- package/src/py/__init__.py +0 -0
- package/src/py/mat3ra/__init__.py +0 -1
- package/src/py/mat3ra/made/__init__.py +0 -7
- package/src/py/mat3ra/made/basis/__init__.py +0 -255
- package/src/py/mat3ra/made/basis/coordinates.py +0 -43
- package/src/py/mat3ra/made/cell/__init__.py +0 -55
- package/src/py/mat3ra/made/cell/primitive_cell.py +0 -156
- package/src/py/mat3ra/made/data_helper.py +0 -5
- package/src/py/mat3ra/made/lattice.py +0 -195
- package/src/py/mat3ra/made/material.py +0 -134
- package/src/py/mat3ra/made/metadata.py +0 -45
- package/src/py/mat3ra/made/reciprocal/__init__.py +0 -5
- package/src/py/mat3ra/made/reciprocal/lattice_reciprocal.py +0 -147
- package/src/py/mat3ra/made/reciprocal/paths.py +0 -30
- package/src/py/mat3ra/made/reciprocal/symmetry_points.py +0 -385
- package/src/py/mat3ra/made/tools/README.md +0 -173
- package/src/py/mat3ra/made/tools/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/__init__.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/basis/__init__.py +0 -3
- package/src/py/mat3ra/made/tools/analyze/basis/analyzer.py +0 -50
- package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer.py +0 -32
- package/src/py/mat3ra/made/tools/analyze/build_metadata_analyzer_factory.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/coordination.py +0 -56
- package/src/py/mat3ra/made/tools/analyze/crystal_site/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_crystal_site_material_analyzer.py +0 -35
- package/src/py/mat3ra/made/tools/analyze/crystal_site/adatom_material_analyzer.py +0 -49
- package/src/py/mat3ra/made/tools/analyze/crystal_site/crystal_site_analyzer.py +0 -65
- package/src/py/mat3ra/made/tools/analyze/crystal_site/voronoi_crystal_site_analyzer.py +0 -47
- package/src/py/mat3ra/made/tools/analyze/enums.py +0 -33
- package/src/py/mat3ra/made/tools/analyze/fingerprint/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/layered_fingerprint_along_axis.py +0 -83
- package/src/py/mat3ra/made/tools/analyze/fingerprint/layers/unique_element_string_per_layer.py +0 -9
- package/src/py/mat3ra/made/tools/analyze/interface/__init__.py +0 -20
- package/src/py/mat3ra/made/tools/analyze/interface/commensurate.py +0 -156
- package/src/py/mat3ra/made/tools/analyze/interface/enums.py +0 -60
- package/src/py/mat3ra/made/tools/analyze/interface/grain_boundary.py +0 -80
- package/src/py/mat3ra/made/tools/analyze/interface/simple.py +0 -251
- package/src/py/mat3ra/made/tools/analyze/interface/twisted_nanoribbons.py +0 -91
- package/src/py/mat3ra/made/tools/analyze/interface/utils/__init__.py +0 -77
- package/src/py/mat3ra/made/tools/analyze/interface/utils/holders.py +0 -14
- package/src/py/mat3ra/made/tools/analyze/interface/utils/vector.py +0 -56
- package/src/py/mat3ra/made/tools/analyze/interface/zsl.py +0 -259
- package/src/py/mat3ra/made/tools/analyze/interface_material.py +0 -45
- package/src/py/mat3ra/made/tools/analyze/lattice/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/analyze/lattice/analyzer.py +0 -126
- package/src/py/mat3ra/made/tools/analyze/lattice/helpers.py +0 -31
- package/src/py/mat3ra/made/tools/analyze/lattice_lines.py +0 -30
- package/src/py/mat3ra/made/tools/analyze/lattice_planes.py +0 -192
- package/src/py/mat3ra/made/tools/analyze/lattice_swap_analyzer.py +0 -105
- package/src/py/mat3ra/made/tools/analyze/material.py +0 -276
- package/src/py/mat3ra/made/tools/analyze/other.py +0 -434
- package/src/py/mat3ra/made/tools/analyze/rdf.py +0 -74
- package/src/py/mat3ra/made/tools/analyze/slab.py +0 -76
- package/src/py/mat3ra/made/tools/analyze/solid_solution_analyzer.py +0 -171
- package/src/py/mat3ra/made/tools/analyze/terrace.py +0 -105
- package/src/py/mat3ra/made/tools/analyze/utils.py +0 -162
- package/src/py/mat3ra/made/tools/bond_directions/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions.py +0 -150
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_for_element_list.py +0 -7
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_enum.py +0 -8
- package/src/py/mat3ra/made/tools/bond_directions/bond_directions_templates_for_element.py +0 -16
- package/src/py/mat3ra/made/tools/build/__init__.py +0 -25
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/helpers.py +0 -59
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/types.py +0 -26
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/heterostructure/utils.py +0 -139
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/__init__.py +0 -47
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/__init__.py +0 -11
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/builder.py +0 -164
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/configuration.py +0 -48
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/base/helpers.py +0 -134
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/commensurate/helpers.py +0 -157
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/enums.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/configuration.py +0 -13
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/twisted/helpers.py +0 -70
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/utils.py +0 -87
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build/compound_pristine_structures/two_dimensional/interface/zsl/helpers.py +0 -129
- package/src/py/mat3ra/made/tools/build/defective_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/build_parameters.py +0 -12
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/builder.py +0 -17
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +0 -40
- package/src/py/mat3ra/made/tools/build/defective_structures/one_dimensional/grain_boundary_linear/helpers.py +0 -82
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/__init__.py +0 -1
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/builder.py +0 -37
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/configuration.py +0 -30
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/enums.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/three_dimensional/solid_solution/helpers.py +0 -76
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/builder.py +0 -11
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/configuration.py +0 -18
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/helpers.py +0 -137
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/adatom/types.py +0 -22
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/builder.py +0 -28
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +0 -55
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/grain_boundary_planar/helpers.py +0 -75
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/builder.py +0 -15
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/configuration.py +0 -16
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/island/helpers.py +0 -116
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/build_parameters.py +0 -10
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/builder.py +0 -30
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/configuration.py +0 -11
- package/src/py/mat3ra/made/tools/build/defective_structures/two_dimensional/terrace/helpers.py +0 -78
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/builder.py +0 -31
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/configuration.py +0 -45
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/pair_defect/helpers.py +0 -80
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/__init__.py +0 -40
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/atom_placement_method_enum.py +0 -14
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/base/configuration.py +0 -27
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/complex_defect_type_enum.py +0 -5
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/factories.py +0 -69
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/helpers.py +0 -92
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/builder.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/configuration.py +0 -29
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/helpers.py +0 -48
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/interstitial/interstitial_placement_method_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/point_defect_type_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/builder.py +0 -6
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/configuration.py +0 -41
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/helpers.py +0 -43
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/substitutional/substitution_placement_method_enum.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/types.py +0 -24
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/builder.py +0 -19
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/configuration.py +0 -27
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/helpers.py +0 -42
- package/src/py/mat3ra/made/tools/build/defective_structures/zero_dimensional/point_defect/vacancy/vacancy_placement_method_enum.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/builder.py +0 -80
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/configurations.py +0 -22
- package/src/py/mat3ra/made/tools/build/pristine_structures/three_dimensional/ideal_crystal/helpers.py +0 -40
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/__init__.py +0 -29
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/builders.py +0 -56
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/configuration.py +0 -33
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/helpers.py +0 -76
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/__init__.py +0 -11
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/build_parameters.py +0 -9
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/builders.py +0 -83
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/configuration.py +0 -35
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/helpers.py +0 -62
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/build_parameters.py +0 -8
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py +0 -99
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/helpers.py +0 -95
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/termination_utils.py +0 -14
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/utils.py +0 -61
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/builder.py +0 -22
- package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab_strained_supercell/configuration.py +0 -17
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/__init__.py +0 -19
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/analyzer.py +0 -86
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/builder.py +0 -54
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/ase_based/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/enums.py +0 -42
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/helpers.py +0 -127
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/builder.py +0 -33
- package/src/py/mat3ra/made/tools/build/pristine_structures/zero_dimensional/nanoparticle/merge_based/configuration.py +0 -16
- package/src/py/mat3ra/made/tools/build/processed_structures/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/__init__.py +0 -9
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/coordination_based_passivation_material_analyzer.py +0 -112
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/passivation_material_analyzer.py +0 -16
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/analyzers/surface_passivation_material_analyzer.py +0 -32
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/builder.py +0 -23
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/configuration.py +0 -31
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/enums.py +0 -7
- package/src/py/mat3ra/made/tools/build/processed_structures/two_dimensional/passivation/helpers.py +0 -151
- package/src/py/mat3ra/made/tools/build_components/__init__.py +0 -10
- package/src/py/mat3ra/made/tools/build_components/entities/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/miller_indices.py +0 -18
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/two_dimensional/termination.py +0 -33
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/crystal_site/crystal_site_list.py +0 -9
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/builder.py +0 -32
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/point_defect_site/configuration.py +0 -14
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/builder.py +0 -29
- package/src/py/mat3ra/made/tools/build_components/entities/auxiliary/zero_dimensional/void_region/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/builder.py +0 -48
- package/src/py/mat3ra/made/tools/build_components/entities/core/two_dimensional/vacuum/configuration.py +0 -17
- package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/builder.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/entities/core/zero_dimensional/atom/configuration.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/__init__.py +0 -16
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_configuration_pydantic.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/base_single_builder.py +0 -87
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/base_builder/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/builder.py +0 -46
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/configuration.py +0 -19
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/edge_types.py +0 -51
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines/helpers.py +0 -58
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/builder.py +0 -42
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated/configuration.py +0 -21
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/configuration.py +0 -11
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/three_dimensional/supercell/helpers.py +0 -38
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/__init__.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/builder.py +0 -62
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/configuration.py +0 -14
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated/helpers.py +0 -42
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/__init__.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/builder.py +0 -39
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/crystal_lattice_planes/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/__init__.py +0 -10
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/builder.py +0 -36
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/configuration.py +0 -31
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/two_dimensional/slab_stack/helpers.py +0 -80
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/entities/reusable/zero_dimensional/coordinates_shape_enum.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/metadata/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/metadata/build_metadata.py +0 -7
- package/src/py/mat3ra/made/tools/build_components/metadata/material_build_metadata.py +0 -35
- package/src/py/mat3ra/made/tools/build_components/metadata/material_with_build_metadata.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/mixins/__init__.py +0 -2
- package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_ase_atoms_mixin.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/mixins/convert_generated_items_pymatgen_structure_mixin.py +0 -8
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/__init__.py +0 -0
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/enums.py +0 -11
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/__init__.py +0 -6
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/build_parameters.py +0 -18
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/builder.py +0 -93
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/merge/configuration.py +0 -20
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/builder.py +0 -83
- package/src/py/mat3ra/made/tools/build_components/operations/core/combinations/stack/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/__init__.py +0 -15
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/build_parameters.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/base.py +0 -33
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/builders/isometric.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/configuration.py +0 -24
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/__init__.py +0 -13
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/atomic_mass_dependent_function_holder.py +0 -32
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/function_holder.py +0 -80
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/maxwell_boltzmann.py +0 -39
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/perturbation_function_holder.py +0 -45
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/functions/sine_wave_perturbation_function_holder.py +0 -29
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/perturb/helpers.py +0 -83
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/__init__.py +0 -5
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/builder.py +0 -25
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/configuration.py +0 -23
- package/src/py/mat3ra/made/tools/build_components/operations/core/modifications/strain/helpers.py +0 -49
- package/src/py/mat3ra/made/tools/build_components/utils.py +0 -44
- package/src/py/mat3ra/made/tools/calculate/__init__.py +0 -149
- package/src/py/mat3ra/made/tools/calculate/ase/__init__.py +0 -133
- package/src/py/mat3ra/made/tools/calculate/ase/constraints.py +0 -91
- package/src/py/mat3ra/made/tools/calculate/calculators/__init__.py +0 -4
- package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator.py +0 -70
- package/src/py/mat3ra/made/tools/calculate/calculators/interface_material_calculator_parameters.py +0 -14
- package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator.py +0 -32
- package/src/py/mat3ra/made/tools/calculate/calculators/material_calculator_parameters.py +0 -17
- package/src/py/mat3ra/made/tools/calculate/interaction_functions.py +0 -23
- package/src/py/mat3ra/made/tools/convert/__init__.py +0 -286
- package/src/py/mat3ra/made/tools/convert/interface_parts_enum.py +0 -9
- package/src/py/mat3ra/made/tools/convert/utils.py +0 -96
- package/src/py/mat3ra/made/tools/entities/__init__.py +0 -5
- package/src/py/mat3ra/made/tools/entities/coordinate/__init__.py +0 -14
- package/src/py/mat3ra/made/tools/entities/coordinate/box_coordinate_condition.py +0 -15
- package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_condition.py +0 -16
- package/src/py/mat3ra/made/tools/entities/coordinate/coordinate_functions.py +0 -158
- package/src/py/mat3ra/made/tools/entities/coordinate/cylinder_coordinate_condition.py +0 -17
- package/src/py/mat3ra/made/tools/entities/coordinate/plane_coordinate_condition.py +0 -14
- package/src/py/mat3ra/made/tools/entities/coordinate/sphere_coordinate_condition.py +0 -15
- package/src/py/mat3ra/made/tools/entities/coordinate/triangular_prism_coordinate_condition.py +0 -26
- package/src/py/mat3ra/made/tools/entities/termination_holder.py +0 -12
- package/src/py/mat3ra/made/tools/helpers.py +0 -168
- package/src/py/mat3ra/made/tools/modify.py +0 -627
- package/src/py/mat3ra/made/tools/operations/core/binary.py +0 -106
- package/src/py/mat3ra/made/tools/operations/core/unary.py +0 -170
- package/src/py/mat3ra/made/tools/operations/core/utils.py +0 -138
- package/src/py/mat3ra/made/tools/operations/reusable/unary.py +0 -53
- package/src/py/mat3ra/made/tools/optimize.py +0 -55
- package/src/py/mat3ra/made/tools/third_party.py +0 -69
- package/src/py/mat3ra/made/tools/utils.py +0 -182
- package/src/py/mat3ra/made/utils.py +0 -144
- package/tests/.gitattributes +0 -1
- package/tests/fixtures/AsGe-basis.json +0 -3
- package/tests/fixtures/C2H4-translated.json +0 -3
- package/tests/fixtures/C2H4.json +0 -3
- package/tests/fixtures/FeLiSi-basis.json +0 -3
- package/tests/fixtures/FeO.json +0 -3
- package/tests/fixtures/Ge2-basis.json +0 -3
- package/tests/fixtures/Graphene.json +0 -3
- package/tests/fixtures/Graphene.poscar +0 -3
- package/tests/fixtures/H2+H-final.json +0 -3
- package/tests/fixtures/H2+H-image.json +0 -3
- package/tests/fixtures/H2+H-initial.json +0 -3
- package/tests/fixtures/H2O.poscar +0 -3
- package/tests/fixtures/LiFeSi-basis-labels.json +0 -3
- package/tests/fixtures/LiFeSi-basis.json +0 -3
- package/tests/fixtures/Na.json +0 -3
- package/tests/fixtures/Na4Cl4-cartesian.json +0 -3
- package/tests/fixtures/Na4Cl4.json +0 -3
- package/tests/fixtures/Na4Cl4.poscar +0 -3
- package/tests/fixtures/Ni-hex.json +0 -3
- package/tests/fixtures/Ni-hex.poscar +0 -3
- package/tests/fixtures/OSi-basis.json +0 -3
- package/tests/fixtures/Si-hex.poscar +0 -3
- package/tests/fixtures/Si-pwscf.in +0 -3
- package/tests/fixtures/Si-slab.json +0 -3
- package/tests/fixtures/Si-supercell.json +0 -3
- package/tests/fixtures/Si2-basis-repeated.json +0 -3
- package/tests/fixtures/Si2-basis.json +0 -3
- package/tests/fixtures/Zr1H23Zr1H1.json +0 -3
- package/tests/fixtures/Zr1H23Zr1H1.poscar +0 -3
- package/tests/fixtures/atomic-constraints.json +0 -3
- package/tests/fixtures/hashes.json +0 -3
- package/tests/fixtures/si-slab-100.json +0 -3
- package/tests/fixtures/si-slab-111-0-vacuum.json +0 -3
- package/tests/fixtures/si-slab-111-0.5-vacuum-gamma-120.json +0 -3
- package/tests/fixtures/si-slab-111-0.5-vacuum-ratio.json +0 -3
- package/tests/fixtures/si-standata.json +0 -3
- package/tests/js/basis/basis.ts +0 -247
- package/tests/js/cell/cell.ts +0 -182
- package/tests/js/cell/primitive_cell.ts +0 -21
- package/tests/js/constraints/constraints.ts +0 -11
- package/tests/js/fixtures.ts +0 -120
- package/tests/js/lattice/lattice.ts +0 -43
- package/tests/js/lattice/lattice_reciprocal.ts +0 -104
- package/tests/js/material.test.ts +0 -42
- package/tests/js/parsers/espresso.ts +0 -15
- package/tests/js/parsers/native_formats.ts +0 -35
- package/tests/js/parsers/poscar.ts +0 -89
- package/tests/js/parsers/xyz.ts +0 -33
- package/tests/js/parsers/xyz_combinatorial_basis.ts +0 -156
- package/tests/js/setup.ts +0 -6
- package/tests/js/tools/basis.ts +0 -22
- package/tests/js/tools/supercell.ts +0 -58
- package/tests/js/tools/surface.ts +0 -115
- package/tests/py/conftest.py +0 -34
- package/tests/py/mat3ra/debug_utils.py +0 -75
- package/tests/py/unit/__init__.py +0 -0
- package/tests/py/unit/fixtures/__init__.py +0 -0
- package/tests/py/unit/fixtures/adatom.py +0 -60
- package/tests/py/unit/fixtures/bulk.py +0 -162
- package/tests/py/unit/fixtures/cuts.py +0 -118
- package/tests/py/unit/fixtures/grain_boundary.py +0 -875
- package/tests/py/unit/fixtures/interface/commensurate.py +0 -498
- package/tests/py/unit/fixtures/interface/gaas_dia.py +0 -837
- package/tests/py/unit/fixtures/interface/gr_ni_111_top_hcp.py +0 -123
- package/tests/py/unit/fixtures/interface/simple.py +0 -84
- package/tests/py/unit/fixtures/interface/twisted_nanoribbons.py +0 -131
- package/tests/py/unit/fixtures/interface/zsl.py +0 -756
- package/tests/py/unit/fixtures/island.py +0 -336
- package/tests/py/unit/fixtures/merge.py +0 -147
- package/tests/py/unit/fixtures/monolayer.py +0 -46
- package/tests/py/unit/fixtures/nanoparticle.py +0 -116
- package/tests/py/unit/fixtures/nanoribbon/__init__.py +0 -0
- package/tests/py/unit/fixtures/nanoribbon/armchair.py +0 -102
- package/tests/py/unit/fixtures/nanoribbon/nanoribbon.py +0 -145
- package/tests/py/unit/fixtures/nanoribbon/zigzag.py +0 -54
- package/tests/py/unit/fixtures/pair_defects.py +0 -41
- package/tests/py/unit/fixtures/passivated/nanoribbon.py +0 -69
- package/tests/py/unit/fixtures/passivated/slab.py +0 -58
- package/tests/py/unit/fixtures/point_defects.py +0 -158
- package/tests/py/unit/fixtures/slab.py +0 -606
- package/tests/py/unit/fixtures/strain.py +0 -42
- package/tests/py/unit/fixtures/supercell.py +0 -64
- package/tests/py/unit/fixtures/terrace.py +0 -70
- package/tests/py/unit/fixtures/thrid_party/ase_atoms.py +0 -13
- package/tests/py/unit/test_analyze_lattice_planes.py +0 -131
- package/tests/py/unit/test_cell.py +0 -104
- package/tests/py/unit/test_data_files.py +0 -68
- package/tests/py/unit/test_lattice.py +0 -103
- package/tests/py/unit/test_lattice_type_extended.py +0 -53
- package/tests/py/unit/test_material.py +0 -158
- package/tests/py/unit/test_operations.py +0 -126
- package/tests/py/unit/test_primitive_cell.py +0 -118
- package/tests/py/unit/test_reciprocal_lattice.py +0 -86
- package/tests/py/unit/test_reciprocal_paths.py +0 -64
- package/tests/py/unit/test_symmetry_points.py +0 -151
- package/tests/py/unit/test_tools_analyze.py +0 -219
- package/tests/py/unit/test_tools_analyze_basis.py +0 -105
- package/tests/py/unit/test_tools_analyze_interface.py +0 -223
- package/tests/py/unit/test_tools_analyze_interface_material.py +0 -63
- package/tests/py/unit/test_tools_analyze_interface_zsl.py +0 -187
- package/tests/py/unit/test_tools_analyze_lattice.py +0 -74
- package/tests/py/unit/test_tools_analyze_swap.py +0 -80
- package/tests/py/unit/test_tools_build.py +0 -158
- package/tests/py/unit/test_tools_build_defect/__init__.py +0 -0
- package/tests/py/unit/test_tools_build_defect/test_adatom.py +0 -84
- package/tests/py/unit/test_tools_build_defect/test_island.py +0 -45
- package/tests/py/unit/test_tools_build_defect/test_pair_defect.py +0 -84
- package/tests/py/unit/test_tools_build_defect/test_point_defect.py +0 -196
- package/tests/py/unit/test_tools_build_defect/test_slab_stack.py +0 -30
- package/tests/py/unit/test_tools_build_defect/test_solid_solution.py +0 -90
- package/tests/py/unit/test_tools_build_defect/test_terrace.py +0 -44
- package/tests/py/unit/test_tools_build_grain_boundary.py +0 -133
- package/tests/py/unit/test_tools_build_heterostructure.py +0 -46
- package/tests/py/unit/test_tools_build_interface.py +0 -292
- package/tests/py/unit/test_tools_build_interface_zsl.py +0 -263
- package/tests/py/unit/test_tools_build_maxwell_disorder.py +0 -123
- package/tests/py/unit/test_tools_build_metadata.py +0 -79
- package/tests/py/unit/test_tools_build_monolayer.py +0 -33
- package/tests/py/unit/test_tools_build_nanoparticle.py +0 -42
- package/tests/py/unit/test_tools_build_nanoribbon.py +0 -45
- package/tests/py/unit/test_tools_build_passivation.py +0 -85
- package/tests/py/unit/test_tools_build_perturbation.py +0 -103
- package/tests/py/unit/test_tools_build_slab.py +0 -382
- package/tests/py/unit/test_tools_build_strain.py +0 -36
- package/tests/py/unit/test_tools_build_supercell.py +0 -47
- package/tests/py/unit/test_tools_calculate.py +0 -67
- package/tests/py/unit/test_tools_convert.py +0 -174
- package/tests/py/unit/test_tools_modify.py +0 -248
- package/tests/py/unit/utils.py +0 -142
- package/tsconfig-transpile.json +0 -3
- package/tsconfig.json +0 -3
package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanoribbon/helpers.py
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
from typing import Optional, Tuple, Union
|
|
2
|
-
from typing import TypeVar
|
|
3
|
-
|
|
4
|
-
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
5
|
-
|
|
6
|
-
from mat3ra.made.material import Material
|
|
7
|
-
from . import NanoribbonConfiguration
|
|
8
|
-
from .builders import NanoribbonBuilder, NanoribbonBuilderParameters
|
|
9
|
-
from ..nanotape import NanoTapeConfiguration
|
|
10
|
-
from .....build_components import MaterialWithBuildMetadata
|
|
11
|
-
from .....build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
12
|
-
from .....build_components.entities.reusable.base_builder import BaseBuilderParameters
|
|
13
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.edge_types import EdgeTypesEnum
|
|
14
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.helpers import (
|
|
15
|
-
create_lattice_lines_config_and_material,
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
P = TypeVar("P", bound=BaseBuilderParameters)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def create_nanoribbon(
|
|
22
|
-
material: Union[Material, MaterialWithBuildMetadata],
|
|
23
|
-
miller_indices_2d: Optional[Tuple[int, int]] = None,
|
|
24
|
-
edge_type: EdgeTypesEnum = EdgeTypesEnum.zigzag,
|
|
25
|
-
width: int = 2,
|
|
26
|
-
length: int = 2,
|
|
27
|
-
vacuum_width: float = 10.0,
|
|
28
|
-
vacuum_length: float = 10.0,
|
|
29
|
-
use_rectangular_lattice: bool = True,
|
|
30
|
-
termination_formula: Optional[str] = None,
|
|
31
|
-
) -> Material:
|
|
32
|
-
"""
|
|
33
|
-
Creates a nanoribbon material from a monolayer material.
|
|
34
|
-
|
|
35
|
-
Args:
|
|
36
|
-
material: The monolayer material to create the nanoribbon from (assumes vacuum is present).
|
|
37
|
-
miller_indices_2d: The (u,v) Miller indices for the nanoribbon direction.
|
|
38
|
-
edge_type: Edge type string ("zigzag"/"armchair"). Optional if miller_indices_2d is provided.
|
|
39
|
-
width: The width of the nanoribbon in number of unit cells.
|
|
40
|
-
length: The length of the nanoribbon in number of unit cells.
|
|
41
|
-
vacuum_width: The width of the vacuum region in Angstroms (cartesian).
|
|
42
|
-
vacuum_length: The length of the vacuum region in Angstroms (cartesian).
|
|
43
|
-
use_rectangular_lattice: Whether the nanoribbon is rectangular.
|
|
44
|
-
termination_formula: The termination formula to use for the nanoribbon (e.g., "Si").
|
|
45
|
-
|
|
46
|
-
Returns:
|
|
47
|
-
Material: The generated nanoribbon material.
|
|
48
|
-
"""
|
|
49
|
-
lattice_lines_config = create_lattice_lines_config_and_material(
|
|
50
|
-
material=material,
|
|
51
|
-
miller_indices_2d=miller_indices_2d,
|
|
52
|
-
edge_type=edge_type,
|
|
53
|
-
width=width,
|
|
54
|
-
length=length,
|
|
55
|
-
termination_formula=termination_formula,
|
|
56
|
-
)
|
|
57
|
-
nanotape_vacuum_config = VacuumConfiguration(
|
|
58
|
-
size=vacuum_width,
|
|
59
|
-
direction=AxisEnum.y,
|
|
60
|
-
)
|
|
61
|
-
nanotape_config = NanoTapeConfiguration(
|
|
62
|
-
stack_components=[lattice_lines_config, nanotape_vacuum_config],
|
|
63
|
-
direction=AxisEnum.y,
|
|
64
|
-
)
|
|
65
|
-
vacuum_config = VacuumConfiguration(
|
|
66
|
-
size=vacuum_length,
|
|
67
|
-
direction=AxisEnum.x,
|
|
68
|
-
)
|
|
69
|
-
config = NanoribbonConfiguration(
|
|
70
|
-
stack_components=[nanotape_config, vacuum_config],
|
|
71
|
-
direction=AxisEnum.x,
|
|
72
|
-
)
|
|
73
|
-
builder = NanoribbonBuilder(
|
|
74
|
-
build_parameters=NanoribbonBuilderParameters(use_rectangular_lattice=use_rectangular_lattice)
|
|
75
|
-
)
|
|
76
|
-
return builder.get_material(config)
|
package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/__init__.py
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
from .build_parameters import NanoTapeBuilderParameters
|
|
2
|
-
from .configuration import NanoTapeConfiguration
|
|
3
|
-
from .builders import NanoTapeBuilder
|
|
4
|
-
from .helpers import create_nanotape
|
|
5
|
-
|
|
6
|
-
__all__ = [
|
|
7
|
-
"NanoTapeConfiguration",
|
|
8
|
-
"NanoTapeBuilder",
|
|
9
|
-
"NanoTapeBuilderParameters",
|
|
10
|
-
"create_nanotape",
|
|
11
|
-
]
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
from pydantic import Field
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseBuilderParameters
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class NanoTapeBuilderParameters(BaseBuilderParameters):
|
|
7
|
-
use_rectangular_lattice: bool = Field(
|
|
8
|
-
True, description="If True, set the XY lattice to be rectangular after stacking."
|
|
9
|
-
)
|
package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/builders.py
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
from typing import Any, Optional, Union, Type
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.lattice import Lattice
|
|
4
|
-
from mat3ra.made.material import Material
|
|
5
|
-
|
|
6
|
-
from . import NanoTapeBuilderParameters
|
|
7
|
-
from .configuration import NanoTapeConfiguration
|
|
8
|
-
from .....build_components import MaterialWithBuildMetadata, TypeConfiguration
|
|
9
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.edge_types import (
|
|
10
|
-
get_edge_type_from_miller_indices,
|
|
11
|
-
)
|
|
12
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines_unique_repeated import (
|
|
13
|
-
CrystalLatticeLinesUniqueRepeatedConfiguration,
|
|
14
|
-
)
|
|
15
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines_unique_repeated.builder import (
|
|
16
|
-
CrystalLatticeLinesRepeatedBuilder,
|
|
17
|
-
)
|
|
18
|
-
from .....build_components.operations.core.combinations.stack.builder import StackNComponentsBuilder
|
|
19
|
-
from .....modify import wrap_to_unit_cell
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class NanoTapeBuilder(StackNComponentsBuilder):
|
|
23
|
-
_ConfigurationType: Type[NanoTapeConfiguration] = NanoTapeConfiguration
|
|
24
|
-
_GeneratedItemType: Type[Material] = Material
|
|
25
|
-
_BuildParametersType: Type[NanoTapeBuilderParameters] = NanoTapeBuilderParameters
|
|
26
|
-
_DefaultBuildParameters: NanoTapeBuilderParameters = NanoTapeBuilderParameters(
|
|
27
|
-
use_rectangular_lattice=True,
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
@property
|
|
31
|
-
def stack_component_types_conversion_map(self):
|
|
32
|
-
return {
|
|
33
|
-
**super().stack_component_types_conversion_map,
|
|
34
|
-
CrystalLatticeLinesUniqueRepeatedConfiguration: CrystalLatticeLinesRepeatedBuilder,
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
def _make_rectangular_lattice(self, item: Material) -> Material:
|
|
38
|
-
lattice_vectors = item.lattice.vector_arrays
|
|
39
|
-
new_lattice_vectors = [
|
|
40
|
-
[lattice_vectors[0][0], 0.0, 0.0],
|
|
41
|
-
[0.0, lattice_vectors[1][1], 0.0],
|
|
42
|
-
[0.0, 0.0, lattice_vectors[2][2]],
|
|
43
|
-
]
|
|
44
|
-
new_lattice = Lattice.from_vectors_array(vectors=new_lattice_vectors)
|
|
45
|
-
item.set_lattice(new_lattice)
|
|
46
|
-
return item
|
|
47
|
-
|
|
48
|
-
def _update_material_name_with_edge_type(
|
|
49
|
-
self,
|
|
50
|
-
material: Union[Material, MaterialWithBuildMetadata],
|
|
51
|
-
crystal_name: str,
|
|
52
|
-
miller_indices_2d: tuple,
|
|
53
|
-
structure_type: str,
|
|
54
|
-
) -> Material:
|
|
55
|
-
edge_type = get_edge_type_from_miller_indices(miller_indices_2d)
|
|
56
|
-
miller_str = f"{miller_indices_2d[0]}{miller_indices_2d[1]}"
|
|
57
|
-
material.name = f"{crystal_name} - {edge_type} {structure_type} ({miller_str})"
|
|
58
|
-
return material
|
|
59
|
-
|
|
60
|
-
def _update_material_name(
|
|
61
|
-
self, material: Union[Material, MaterialWithBuildMetadata], configuration: Any
|
|
62
|
-
) -> Material:
|
|
63
|
-
if isinstance(configuration, NanoTapeConfiguration):
|
|
64
|
-
lattice_lines = configuration.lattice_lines
|
|
65
|
-
material = self._update_material_name_with_edge_type(
|
|
66
|
-
material, lattice_lines.crystal.name, lattice_lines.miller_indices_2d, "Nanotape"
|
|
67
|
-
)
|
|
68
|
-
return material
|
|
69
|
-
return super()._update_material_name(material, configuration)
|
|
70
|
-
|
|
71
|
-
def _post_process(
|
|
72
|
-
self,
|
|
73
|
-
item: Material,
|
|
74
|
-
post_process_parameters: Optional[Any] = None,
|
|
75
|
-
configuration: Optional[TypeConfiguration] = None,
|
|
76
|
-
) -> Material:
|
|
77
|
-
item = super()._post_process(item, post_process_parameters, configuration)
|
|
78
|
-
# wrapping before changing lattice to avoid singular atoms beyond the boundaries
|
|
79
|
-
item = wrap_to_unit_cell(item)
|
|
80
|
-
params = self.build_parameters or self._DefaultBuildParameters
|
|
81
|
-
if params.use_rectangular_lattice:
|
|
82
|
-
item = self._make_rectangular_lattice(item)
|
|
83
|
-
return wrap_to_unit_cell(item)
|
package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/configuration.py
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
from typing import List, Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
4
|
-
from mat3ra.esse.models.materials_category.pristine_structures.two_dimensional.nanotape import (
|
|
5
|
-
NanoTapeConfigurationSchema,
|
|
6
|
-
)
|
|
7
|
-
|
|
8
|
-
from .....build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
9
|
-
from .....build_components.operations.core.combinations.stack.configuration import StackConfiguration
|
|
10
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines_unique_repeated import (
|
|
11
|
-
CrystalLatticeLinesUniqueRepeatedConfiguration,
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class NanoTapeConfiguration(StackConfiguration, NanoTapeConfigurationSchema):
|
|
16
|
-
"""
|
|
17
|
-
Configuration for building a nanotape from crystal lattice lines.
|
|
18
|
-
NanoTape = [CrystalLatticeLinesUniqueRepeatedConfiguration, vacuum] stacked in X or Y direction.
|
|
19
|
-
|
|
20
|
-
Args:
|
|
21
|
-
stack_components: List of configuration objects for nanotape components.
|
|
22
|
-
direction: Direction along which to stack components.
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
type: str = "NanoTapeConfiguration"
|
|
26
|
-
stack_components: List[Union[CrystalLatticeLinesUniqueRepeatedConfiguration, VacuumConfiguration]]
|
|
27
|
-
direction: AxisEnum = AxisEnum.y
|
|
28
|
-
|
|
29
|
-
@property
|
|
30
|
-
def lattice_lines(self):
|
|
31
|
-
return self.stack_components[0]
|
|
32
|
-
|
|
33
|
-
@property
|
|
34
|
-
def vacuum_configuration(self) -> VacuumConfiguration:
|
|
35
|
-
return self.stack_components[1]
|
package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/nanotape/helpers.py
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
from typing import Optional, Tuple, Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
4
|
-
|
|
5
|
-
from mat3ra.made.material import Material
|
|
6
|
-
from . import NanoTapeConfiguration
|
|
7
|
-
from .builders import NanoTapeBuilder, NanoTapeBuilderParameters
|
|
8
|
-
from .....build_components import MaterialWithBuildMetadata
|
|
9
|
-
from .....build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
10
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.edge_types import EdgeTypesEnum
|
|
11
|
-
from .....build_components.entities.reusable.one_dimensional.crystal_lattice_lines.helpers import (
|
|
12
|
-
create_lattice_lines_config_and_material,
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def create_nanotape(
|
|
17
|
-
material: Union[Material, MaterialWithBuildMetadata],
|
|
18
|
-
miller_indices_2d: Optional[Tuple[int, int]] = None,
|
|
19
|
-
edge_type: EdgeTypesEnum = EdgeTypesEnum.zigzag,
|
|
20
|
-
width: int = 2,
|
|
21
|
-
length: int = 2,
|
|
22
|
-
vacuum_width: float = 10.0,
|
|
23
|
-
use_rectangular_lattice: bool = True,
|
|
24
|
-
termination_formula: Optional[str] = None,
|
|
25
|
-
) -> Material:
|
|
26
|
-
"""
|
|
27
|
-
Creates a nanotape material from a monolayer material.
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
material: The monolayer material to create the nanotape from (assumes vacuum is present).
|
|
31
|
-
miller_indices_2d: The (u,v) Miller indices for the nanotape direction.
|
|
32
|
-
edge_type: Edge type string ("zigzag"/"armchair"). Optional if miller_indices_2d is provided.
|
|
33
|
-
width: The width of the nanotape in number of unit cells.
|
|
34
|
-
length: The length of the nanotape in number of unit cells.
|
|
35
|
-
vacuum_width: The width of the vacuum region in Angstroms (cartesian).
|
|
36
|
-
use_rectangular_lattice: Whether the nanotape is rectangular.
|
|
37
|
-
termination_formula: The termination formula to use for the nanotape (e.g., "Si").
|
|
38
|
-
|
|
39
|
-
Returns:
|
|
40
|
-
Material: The generated nanotape material.
|
|
41
|
-
"""
|
|
42
|
-
lattice_lines_config = create_lattice_lines_config_and_material(
|
|
43
|
-
material=material,
|
|
44
|
-
miller_indices_2d=miller_indices_2d,
|
|
45
|
-
edge_type=edge_type,
|
|
46
|
-
width=width,
|
|
47
|
-
length=length,
|
|
48
|
-
termination_formula=termination_formula,
|
|
49
|
-
)
|
|
50
|
-
vacuum_config = VacuumConfiguration(
|
|
51
|
-
size=vacuum_width,
|
|
52
|
-
crystal=material,
|
|
53
|
-
direction=AxisEnum.y,
|
|
54
|
-
)
|
|
55
|
-
config = NanoTapeConfiguration(
|
|
56
|
-
stack_components=[lattice_lines_config, vacuum_config],
|
|
57
|
-
direction=AxisEnum.y,
|
|
58
|
-
)
|
|
59
|
-
builder = NanoTapeBuilder(
|
|
60
|
-
build_parameters=NanoTapeBuilderParameters(use_rectangular_lattice=use_rectangular_lattice)
|
|
61
|
-
)
|
|
62
|
-
return builder.get_material(config)
|
package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/build_parameters.py
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
from typing import List
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.tools.build_components.entities.reusable.base_builder import BaseBuilderParameters
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class SlabBuilderParameters(BaseBuilderParameters):
|
|
7
|
-
use_orthogonal_c: bool = True
|
|
8
|
-
xy_supercell_matrix: List[List[int]] = [[1, 0], [0, 1]]
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
from typing import Type, cast
|
|
2
|
-
|
|
3
|
-
from .build_parameters import SlabBuilderParameters
|
|
4
|
-
from .configuration import SlabConfiguration
|
|
5
|
-
from .utils import get_orthogonal_c_slab
|
|
6
|
-
from .....build_components import MaterialWithBuildMetadata
|
|
7
|
-
from .....build_components.entities.reusable.two_dimensional import (
|
|
8
|
-
AtomicLayersUniqueRepeatedConfiguration,
|
|
9
|
-
AtomicLayersUniqueRepeatedBuilder,
|
|
10
|
-
)
|
|
11
|
-
|
|
12
|
-
from .....build_components.operations.core.combinations.stack.builder import StackNComponentsBuilder
|
|
13
|
-
from .....operations.core.unary import supercell
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class SlabBuilder(StackNComponentsBuilder):
|
|
17
|
-
_BuildParametersType: Type[SlabBuilderParameters] = SlabBuilderParameters
|
|
18
|
-
_DefaultBuildParameters: SlabBuilderParameters = SlabBuilderParameters()
|
|
19
|
-
|
|
20
|
-
@property
|
|
21
|
-
def stack_component_types_conversion_map(self):
|
|
22
|
-
return {
|
|
23
|
-
**super().stack_component_types_conversion_map,
|
|
24
|
-
AtomicLayersUniqueRepeatedConfiguration: AtomicLayersUniqueRepeatedBuilder,
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
def _generate(self, configuration: SlabConfiguration) -> MaterialWithBuildMetadata:
|
|
28
|
-
stack_as_material = super()._generate(configuration)
|
|
29
|
-
build_params = cast(SlabBuilderParameters, self.build_parameters)
|
|
30
|
-
supercell_slab = supercell(stack_as_material, build_params.xy_supercell_matrix)
|
|
31
|
-
if build_params.use_orthogonal_c:
|
|
32
|
-
supercell_slab = get_orthogonal_c_slab(supercell_slab)
|
|
33
|
-
return supercell_slab
|
|
34
|
-
|
|
35
|
-
def _update_material_name(
|
|
36
|
-
self, material: MaterialWithBuildMetadata, configuration: SlabConfiguration
|
|
37
|
-
) -> MaterialWithBuildMetadata:
|
|
38
|
-
# for example: "Si(001), termination Si_P4/mmm_1, Slab"
|
|
39
|
-
material = AtomicLayersUniqueRepeatedBuilder()._update_material_name(material, configuration.atomic_layers)
|
|
40
|
-
new_name = f"{material.name}, Slab"
|
|
41
|
-
material.name = new_name
|
|
42
|
-
return material
|
package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/configuration.py
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
from typing import List, Optional, Tuple, Union
|
|
2
|
-
|
|
3
|
-
from mat3ra.esse.models.core.reusable.axis_enum import AxisEnum
|
|
4
|
-
from mat3ra.esse.models.materials_category.pristine_structures.two_dimensional.slab import SlabConfigurationSchema
|
|
5
|
-
from mat3ra.made.material import Material
|
|
6
|
-
from .termination_utils import select_slab_termination
|
|
7
|
-
|
|
8
|
-
from .....analyze.lattice_planes import CrystalLatticePlanesMaterialAnalyzer
|
|
9
|
-
from .....build_components.entities.reusable.two_dimensional.atomic_layers_unique_repeated.configuration import (
|
|
10
|
-
AtomicLayersUniqueRepeatedConfiguration,
|
|
11
|
-
)
|
|
12
|
-
from .....build_components.metadata import MaterialWithBuildMetadata
|
|
13
|
-
from .....build_components.operations.core.combinations.stack.configuration import StackConfiguration
|
|
14
|
-
from .....build_components.entities.core.two_dimensional.vacuum.configuration import VacuumConfiguration
|
|
15
|
-
from .....build_components.entities.auxiliary.two_dimensional.termination import Termination
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class SlabConfiguration(StackConfiguration, SlabConfigurationSchema):
|
|
19
|
-
type: str = "SlabConfiguration"
|
|
20
|
-
stack_components: List[Union[AtomicLayersUniqueRepeatedConfiguration, VacuumConfiguration]] # No Materials!
|
|
21
|
-
direction: AxisEnum = AxisEnum.z
|
|
22
|
-
|
|
23
|
-
termination_top: Optional[Termination] = None
|
|
24
|
-
termination_bottom: Optional[Termination] = None
|
|
25
|
-
|
|
26
|
-
@property
|
|
27
|
-
def number_of_layers(self):
|
|
28
|
-
return self.atomic_layers.number_of_repetitions
|
|
29
|
-
|
|
30
|
-
@property
|
|
31
|
-
def vacuum(self):
|
|
32
|
-
return self.vacuum_configuration.size
|
|
33
|
-
|
|
34
|
-
@property
|
|
35
|
-
def atomic_layers(self):
|
|
36
|
-
return self.stack_components[0]
|
|
37
|
-
|
|
38
|
-
@property
|
|
39
|
-
def vacuum_configuration(self) -> VacuumConfiguration:
|
|
40
|
-
return self.stack_components[1]
|
|
41
|
-
|
|
42
|
-
def set_vacuum(self, vacuum: float) -> None:
|
|
43
|
-
vacuum_configuration = self.vacuum_configuration
|
|
44
|
-
vacuum_configuration.size = vacuum
|
|
45
|
-
self.stack_components[1] = vacuum_configuration
|
|
46
|
-
|
|
47
|
-
@classmethod
|
|
48
|
-
def from_parameters(
|
|
49
|
-
cls,
|
|
50
|
-
material_or_dict: Union[Material, dict],
|
|
51
|
-
miller_indices: Tuple[int, int, int],
|
|
52
|
-
number_of_layers: int,
|
|
53
|
-
termination_top_formula: Optional[str] = None,
|
|
54
|
-
termination_bottom_formula: Optional[str] = None,
|
|
55
|
-
vacuum: float = 10.0,
|
|
56
|
-
use_conventional_cell: bool = True,
|
|
57
|
-
) -> "SlabConfiguration":
|
|
58
|
-
"""
|
|
59
|
-
Creates a SlabConfiguration from the given parameters.
|
|
60
|
-
Args:
|
|
61
|
-
material_or_dict (Union[Material, dict]): Material or dictionary representation of the material.
|
|
62
|
-
miller_indices (Tuple[int, int, int]): Miller indices for the slab surface.
|
|
63
|
-
number_of_layers (int): Number of atomic layers in the slab, in the number of unit cells.
|
|
64
|
-
termination_top_formula (Optional[str]): Formula of the top termination to use for the slab (i.e. "SrTiO").
|
|
65
|
-
termination_bottom_formula (Optional[str]): Formula of the bottom termination to use for the slab.
|
|
66
|
-
|
|
67
|
-
vacuum (float): Size of the vacuum layer in Angstroms.
|
|
68
|
-
|
|
69
|
-
Returns:
|
|
70
|
-
SlabConfiguration: The created slab configuration.
|
|
71
|
-
"""
|
|
72
|
-
if isinstance(material_or_dict, dict):
|
|
73
|
-
material = MaterialWithBuildMetadata.create(material_or_dict)
|
|
74
|
-
else:
|
|
75
|
-
material = material_or_dict
|
|
76
|
-
|
|
77
|
-
crystal_lattice_planes_analyzer = CrystalLatticePlanesMaterialAnalyzer(
|
|
78
|
-
material=material, miller_indices=miller_indices
|
|
79
|
-
)
|
|
80
|
-
terminations = crystal_lattice_planes_analyzer.terminations
|
|
81
|
-
termination_top = select_slab_termination(terminations, termination_top_formula)
|
|
82
|
-
termination_bottom = select_slab_termination(terminations, termination_bottom_formula)
|
|
83
|
-
|
|
84
|
-
if use_conventional_cell:
|
|
85
|
-
material = crystal_lattice_planes_analyzer.material_with_conventional_lattice
|
|
86
|
-
atomic_layers_repeated_configuration = AtomicLayersUniqueRepeatedConfiguration(
|
|
87
|
-
crystal=material,
|
|
88
|
-
miller_indices=miller_indices,
|
|
89
|
-
termination_top=termination_top,
|
|
90
|
-
termination_bottom=termination_bottom,
|
|
91
|
-
number_of_repetitions=number_of_layers,
|
|
92
|
-
)
|
|
93
|
-
|
|
94
|
-
vacuum_configuration = VacuumConfiguration(size=vacuum, crystal=None, direction=AxisEnum.z)
|
|
95
|
-
|
|
96
|
-
return cls(
|
|
97
|
-
stack_components=[atomic_layers_repeated_configuration, vacuum_configuration],
|
|
98
|
-
direction=AxisEnum.z,
|
|
99
|
-
)
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
from typing import List, Tuple, Union, Optional
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.material import Material
|
|
4
|
-
from . import SlabBuilderParameters, SlabConfiguration, SlabBuilder
|
|
5
|
-
from .....analyze.lattice_planes import CrystalLatticePlanesMaterialAnalyzer
|
|
6
|
-
from .....build_components import MaterialWithBuildMetadata
|
|
7
|
-
from .....build_components.entities.auxiliary.two_dimensional.termination import Termination
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
DEFAULT_XY_SUPERCELL_MATRIX = ([1, 0], [0, 1])
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def create_slab(
|
|
14
|
-
crystal: Union[Material, MaterialWithBuildMetadata],
|
|
15
|
-
miller_indices: Tuple[int, int, int] = (0, 0, 1),
|
|
16
|
-
use_conventional_cell=True,
|
|
17
|
-
use_orthogonal_c: bool = True,
|
|
18
|
-
termination_top: Optional[Termination] = None,
|
|
19
|
-
termination_bottom: Optional[Termination] = None,
|
|
20
|
-
termination_top_formula: Optional[str] = None,
|
|
21
|
-
termination_bottom_formula: Optional[str] = None,
|
|
22
|
-
number_of_layers=1,
|
|
23
|
-
vacuum=10.0,
|
|
24
|
-
xy_supercell_matrix=DEFAULT_XY_SUPERCELL_MATRIX,
|
|
25
|
-
) -> MaterialWithBuildMetadata:
|
|
26
|
-
"""
|
|
27
|
-
Creates a slab material from a crystal material with specified Miller indices and other parameters.
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
crystal (Material): The crystal material to create the slab from.
|
|
31
|
-
miller_indices (Tuple[int, int, int]): Miller indices for the slab surface.
|
|
32
|
-
use_conventional_cell (bool): Whether to use the conventional cell for the crystal to apply Miller indices.
|
|
33
|
-
use_orthogonal_c (bool): Whether to make slab with c-lattice orthogonal to miller indices plane, along z-axis.
|
|
34
|
-
termination (Termination): The termination to use for the slab, supply a class instance of Termination.
|
|
35
|
-
termination_formula (str): The stoichiometric formula of the termination, e.g. "Si", "TiO", "SrTiO", "Hf2O".
|
|
36
|
-
number_of_layers (int): Number of atomic layers in the slab, in the number of unit cells.
|
|
37
|
-
vacuum (float): Size of the vacuum layer in Angstroms.
|
|
38
|
-
xy_supercell_matrix (List[List[int]]): Supercell matrix for the xy plane to apply to the generated slab.
|
|
39
|
-
|
|
40
|
-
Returns:
|
|
41
|
-
Material: The generated slab material.
|
|
42
|
-
"""
|
|
43
|
-
if termination_top is not None:
|
|
44
|
-
termination_top_formula = termination_top.formula
|
|
45
|
-
if termination_bottom is not None:
|
|
46
|
-
termination_bottom_formula = termination_bottom.formula
|
|
47
|
-
|
|
48
|
-
slab_builder_parameters = SlabBuilderParameters(
|
|
49
|
-
xy_supercell_matrix=xy_supercell_matrix,
|
|
50
|
-
use_orthogonal_c=use_orthogonal_c,
|
|
51
|
-
)
|
|
52
|
-
slab_configuration = SlabConfiguration.from_parameters(
|
|
53
|
-
material_or_dict=crystal,
|
|
54
|
-
miller_indices=miller_indices,
|
|
55
|
-
number_of_layers=number_of_layers,
|
|
56
|
-
termination_top_formula=termination_top_formula,
|
|
57
|
-
termination_bottom_formula=termination_bottom_formula,
|
|
58
|
-
vacuum=vacuum,
|
|
59
|
-
use_conventional_cell=use_conventional_cell,
|
|
60
|
-
)
|
|
61
|
-
builder = SlabBuilder(build_parameters=slab_builder_parameters)
|
|
62
|
-
return builder.get_material(slab_configuration)
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def create_slab_if_not(
|
|
66
|
-
material: MaterialWithBuildMetadata, default_slab_configuration: SlabConfiguration
|
|
67
|
-
) -> MaterialWithBuildMetadata:
|
|
68
|
-
slab = material
|
|
69
|
-
build_metadata_slab = slab.metadata.get_build_metadata_of_type("SlabConfiguration")
|
|
70
|
-
if build_metadata_slab is None:
|
|
71
|
-
print("The material is not a slab. Creating a new slab...")
|
|
72
|
-
slab = SlabBuilder().get_material(default_slab_configuration)
|
|
73
|
-
return slab
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def get_slab_terminations(
|
|
77
|
-
material: Union[Material, MaterialWithBuildMetadata], miller_indices: Tuple[int, int, int] = (0, 0, 1)
|
|
78
|
-
) -> List[Termination]:
|
|
79
|
-
crystal_lattice_planes_analyzer = CrystalLatticePlanesMaterialAnalyzer(
|
|
80
|
-
material=material, miller_indices=miller_indices
|
|
81
|
-
)
|
|
82
|
-
return crystal_lattice_planes_analyzer.terminations
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
def get_slab_material_in_standard_representation(slab_material: Union[Material, MaterialWithBuildMetadata]) -> Material:
|
|
86
|
-
"""
|
|
87
|
-
Get the slab material in a standard representation.
|
|
88
|
-
|
|
89
|
-
Args:
|
|
90
|
-
slab_material (Material): The slab material to convert.
|
|
91
|
-
|
|
92
|
-
Returns:
|
|
93
|
-
Material: The slab material in standard representation.
|
|
94
|
-
"""
|
|
95
|
-
pass
|
package/src/py/mat3ra/made/tools/build/pristine_structures/two_dimensional/slab/termination_utils.py
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
from typing import List, Optional
|
|
2
|
-
|
|
3
|
-
from mat3ra.made.tools.build_components.entities.auxiliary.two_dimensional.termination import Termination
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def select_slab_termination(terminations: List[Termination], formula: Optional[str] = None) -> Termination:
|
|
7
|
-
if not terminations:
|
|
8
|
-
raise ValueError("No terminations available.")
|
|
9
|
-
if formula is None:
|
|
10
|
-
return terminations[0]
|
|
11
|
-
for termination in terminations:
|
|
12
|
-
if termination.formula == formula:
|
|
13
|
-
return termination
|
|
14
|
-
raise ValueError(f"Termination with formula {formula} not found in available terminations: {terminations}")
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
from typing import Union, Optional, List
|
|
2
|
-
|
|
3
|
-
import numpy as np
|
|
4
|
-
|
|
5
|
-
from mat3ra.made.lattice import Lattice
|
|
6
|
-
from mat3ra.made.material import Material
|
|
7
|
-
from .....build_components import MaterialWithBuildMetadata
|
|
8
|
-
from .....build_components.entities.auxiliary.two_dimensional.termination import Termination
|
|
9
|
-
from .....modify import wrap_to_unit_cell
|
|
10
|
-
from .....operations.core.unary import edit_cell
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def select_slab_termination(terminations: List[Termination], formula: Optional[str] = None) -> Termination:
|
|
14
|
-
if not terminations:
|
|
15
|
-
raise ValueError("No terminations available.")
|
|
16
|
-
if formula is None:
|
|
17
|
-
return terminations[0]
|
|
18
|
-
for termination in terminations:
|
|
19
|
-
if termination.formula == formula:
|
|
20
|
-
return termination
|
|
21
|
-
raise ValueError(f"Termination with formula {formula} not found in available terminations: {terminations}")
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def get_orthogonal_c_slab(material: Union[Material, MaterialWithBuildMetadata]) -> Material:
|
|
25
|
-
"""
|
|
26
|
-
Make the c-vector orthogonal to the ab plane and update the basis.
|
|
27
|
-
|
|
28
|
-
This function calculates a new c-vector that is orthogonal to the a and b vectors
|
|
29
|
-
of the lattice. It then computes the transformation matrix between the old and new
|
|
30
|
-
lattice vectors and applies this transformation to the atomic coordinates.
|
|
31
|
-
|
|
32
|
-
A new material is returned with an updated lattice and basis, where the new
|
|
33
|
-
lattice is defined by its parameters (a, b, c, alpha, beta, gamma) to avoid
|
|
34
|
-
storing raw vectors, preserving a standard representation.
|
|
35
|
-
|
|
36
|
-
Args:
|
|
37
|
-
material (Material): The input material object.
|
|
38
|
-
|
|
39
|
-
Returns:
|
|
40
|
-
Material: A new material object with an orthogonalized c-vector and
|
|
41
|
-
updated basis.
|
|
42
|
-
"""
|
|
43
|
-
new_material = material.clone()
|
|
44
|
-
current_vectors = np.array(new_material.lattice.vector_arrays)
|
|
45
|
-
a_vec, b_vec, c_old_vec = current_vectors
|
|
46
|
-
|
|
47
|
-
normal = np.cross(a_vec, b_vec)
|
|
48
|
-
n_hat = normal / np.linalg.norm(normal)
|
|
49
|
-
height = float(np.dot(c_old_vec, n_hat))
|
|
50
|
-
c_new_vec = n_hat * height
|
|
51
|
-
|
|
52
|
-
new_vectors = np.array([a_vec, b_vec, c_new_vec])
|
|
53
|
-
transform_matrix = np.dot(current_vectors, np.linalg.inv(new_vectors))
|
|
54
|
-
|
|
55
|
-
new_basis = new_material.basis.clone()
|
|
56
|
-
new_basis.transform_by_matrix(transform_matrix)
|
|
57
|
-
new_lattice_from_vectors = Lattice.from_vectors_array(new_vectors.tolist())
|
|
58
|
-
new_material = edit_cell(new_material, new_lattice_from_vectors.vector_arrays)
|
|
59
|
-
new_material.basis = new_basis
|
|
60
|
-
new_material = wrap_to_unit_cell(new_material)
|
|
61
|
-
return new_material
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
from typing import Type
|
|
2
|
-
|
|
3
|
-
from .configuration import SlabStrainedSupercellConfiguration
|
|
4
|
-
from ..slab import SlabBuilder
|
|
5
|
-
from .....build_components import MaterialWithBuildMetadata
|
|
6
|
-
from .....operations.core.unary import strain, supercell
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class SlabStrainedSupercellBuilder(SlabBuilder):
|
|
10
|
-
_ConfigurationType: Type[SlabStrainedSupercellConfiguration] = SlabStrainedSupercellConfiguration
|
|
11
|
-
|
|
12
|
-
def _generate(self, configuration: SlabStrainedSupercellConfiguration) -> MaterialWithBuildMetadata:
|
|
13
|
-
slab_material = super()._generate(configuration)
|
|
14
|
-
if configuration.xy_supercell_matrix:
|
|
15
|
-
slab_material = supercell(slab_material, configuration.xy_supercell_matrix)
|
|
16
|
-
|
|
17
|
-
strained_slab_material = strain(
|
|
18
|
-
slab_material,
|
|
19
|
-
configuration.strain_matrix,
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
return strained_slab_material
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
|
-
import numpy as np
|
|
4
|
-
from mat3ra.esse.models.core.abstract.matrix_3x3 import Matrix3x3Schema
|
|
5
|
-
from mat3ra.esse.models.materials_category.pristine_structures.two_dimensional.slab_strained_supercell import (
|
|
6
|
-
SlabStrainedSupercellConfigurationSchema,
|
|
7
|
-
)
|
|
8
|
-
from mat3ra.esse.models.materials_category_components.entities.auxiliary.two_dimensional.supercell_matrix_2d import (
|
|
9
|
-
SupercellMatrix2DSchema,
|
|
10
|
-
)
|
|
11
|
-
|
|
12
|
-
from ..slab.configuration import SlabConfiguration
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class SlabStrainedSupercellConfiguration(SlabConfiguration, SlabStrainedSupercellConfigurationSchema):
|
|
16
|
-
strain_matrix: Matrix3x3Schema = Matrix3x3Schema(root=np.eye(3).tolist())
|
|
17
|
-
xy_supercell_matrix: Optional[SupercellMatrix2DSchema] = SupercellMatrix2DSchema(root=[[1, 0], [0, 1]])
|
|
File without changes
|