symfc 1.2.1__tar.gz → 1.2.2__tar.gz
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.
- {symfc-1.2.1/src/symfc.egg-info → symfc-1.2.2}/PKG-INFO +2 -2
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/utils.py +2 -2
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/version.py +1 -1
- {symfc-1.2.1 → symfc-1.2.2/src/symfc.egg-info}/PKG-INFO +2 -2
- symfc-1.2.2/tests/utils/test_utils.py +408 -0
- symfc-1.2.1/tests/utils/test_utils.py +0 -73
- {symfc-1.2.1 → symfc-1.2.2}/LICENSE +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/MANIFEST.in +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/README.md +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/pyproject.toml +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/setup.cfg +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/__init__.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/api_symfc.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/basis_sets/__init__.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/basis_sets/basis_sets_O1.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/basis_sets/basis_sets_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/basis_sets/basis_sets_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/basis_sets/basis_sets_O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/basis_sets/basis_sets_base.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/solvers/__init__.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/solvers/solver_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/solvers/solver_O2O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/solvers/solver_O2O3O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/solvers/solver_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/solvers/solver_O3O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/solvers/solver_O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/solvers/solver_base.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/spg_reps/__init__.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/spg_reps/spg_reps_O1.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/spg_reps/spg_reps_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/spg_reps/spg_reps_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/spg_reps/spg_reps_O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/spg_reps/spg_reps_base.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/__init__.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/cutoff_tools.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/eig_tools.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/matrix_tools.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/matrix_tools_O1.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/matrix_tools_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/matrix_tools_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/matrix_tools_O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/permutation_tools.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/permutation_tools_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/permutation_tools_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/permutation_tools_O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/rotation_tools_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/run_rotation_tools_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/run_rotation_tools_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/run_test_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/solver_funcs.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/utils_O1.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/utils_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/utils_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc/utils/utils_O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc.egg-info/SOURCES.txt +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc.egg-info/dependency_links.txt +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc.egg-info/requires.txt +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/src/symfc.egg-info/top_level.txt +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/NaCl-unitcell.yaml +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/basis_sets/test_basis_sets_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/basis_sets/test_basis_sets_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/basis_sets/test_basis_sets_O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/basis_sets/test_basis_sets_base.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/compact_fc_GaN_222.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/compact_fc_GaN_442.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/compact_fc_NaCl_222.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/compact_fc_SiO2_221.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/compact_fc_Si_111_fc3_2.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/compact_fc_Si_111_fc3_3.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/compact_fc_Si_111_fc4_2.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/compact_fc_Si_111_fc4_3.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/compact_fc_Si_111_fc4_4.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/compact_fc_SnO2_223.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/conftest.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/dfset_GaN_222_rd.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/dfset_GaN_442_rd.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/dfset_NaCl_222_rd.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/dfset_SiO2_221_rd.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/dfset_Si_111_fc3_rd.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/dfset_SnO2_223_rd.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/full_fc_NaCl_222.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/full_fc_Si_111_fc3_2.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/full_fc_Si_111_fc3_3.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/full_fc_Si_111_fc4_2.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/full_fc_Si_111_fc4_3.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/full_fc_Si_111_fc4_4.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/full_fc_Si_111_fc4_step_2.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/full_fc_Si_111_fc4_step_3.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/full_fc_Si_111_fc4_step_4.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/full_fc_SnO2_223.xz +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/perms_super.dat +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/phonopy_to_python.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/solvers/test_solver_utils.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/spg_reps/test_spg_reps_O1.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/spg_reps/test_spg_reps_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/spg_reps/test_spg_reps_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/spg_reps/test_spg_reps_O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/spg_reps/test_spg_reps_base.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/test_api.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_cutoff_tools.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_eig_tools.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_matrix_tools_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_matrix_tools_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_matrix_tools_O4.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_solver_funcs.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_utils_O1.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_utils_O2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_utils_O2_2.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_utils_O3.py +0 -0
- {symfc-1.2.1 → symfc-1.2.2}/tests/utils/test_utils_O4.py +0 -0
|
@@ -57,7 +57,7 @@ def argsort_positions(positions: np.ndarray, tol: float = 1e-13, decimals: int =
|
|
|
57
57
|
def _find_optimal_decimals(positions: np.ndarray, tol: float = 1e-13):
|
|
58
58
|
"""Find optimal value of decimals used for sorting atoms."""
|
|
59
59
|
n_atom = positions.shape[0]
|
|
60
|
-
for decimals in range(
|
|
60
|
+
for decimals in range(3, 15):
|
|
61
61
|
positions_round = round_positions(positions, tol=tol, decimals=decimals)
|
|
62
62
|
n_atom_uniq = len(set([tuple(pos) for pos in positions_round]))
|
|
63
63
|
if n_atom_uniq == n_atom:
|
|
@@ -115,7 +115,7 @@ def compute_sg_permutations(
|
|
|
115
115
|
)
|
|
116
116
|
if np.allclose(sorted_trans_positions - sorted_positions, 0.0):
|
|
117
117
|
tp = np.zeros(n_atom, dtype=int)
|
|
118
|
-
tp[
|
|
118
|
+
tp[sorted_trans_ids] = sorted_ids
|
|
119
119
|
else:
|
|
120
120
|
diffs = positions[None, :, :] - trans_positions[:, None, :]
|
|
121
121
|
diffs -= np.rint(diffs)
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
"""Tests of matrix manipulating functions."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
import pytest
|
|
9
|
+
|
|
10
|
+
from symfc.spg_reps import SpgRepsBase
|
|
11
|
+
from symfc.utils.utils import (
|
|
12
|
+
SymfcAtoms,
|
|
13
|
+
compute_sg_permutations,
|
|
14
|
+
compute_sg_permutations_stable,
|
|
15
|
+
get_indep_atoms_by_lat_trans,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
cwd = Path(__file__).parent
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_get_indep_atoms_by_lattice_translation(
|
|
22
|
+
ph_nacl_222: tuple[SymfcAtoms, np.ndarray, np.ndarray],
|
|
23
|
+
):
|
|
24
|
+
"""Test of get_indep_atoms_by_lattice_translation."""
|
|
25
|
+
supercell, _, _ = ph_nacl_222
|
|
26
|
+
sym_op_reps = SpgRepsBase(supercell)
|
|
27
|
+
trans_perms = sym_op_reps.translation_permutations
|
|
28
|
+
assert trans_perms.shape == (32, 64)
|
|
29
|
+
indep_atoms = get_indep_atoms_by_lat_trans(trans_perms)
|
|
30
|
+
np.testing.assert_array_equal(indep_atoms, [0, 32])
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def test_compute_sg_permutations(
|
|
34
|
+
ph_gan_222: tuple[SymfcAtoms, np.ndarray, np.ndarray], cell_gan_111: SymfcAtoms
|
|
35
|
+
):
|
|
36
|
+
"""Test compute_sg_permutations."""
|
|
37
|
+
pytest.importorskip("spglib", minversion="2.5")
|
|
38
|
+
from spglib import spglib
|
|
39
|
+
|
|
40
|
+
supercell, _, _ = ph_gan_222
|
|
41
|
+
primitive = cell_gan_111
|
|
42
|
+
dataset = spglib.get_symmetry_dataset(supercell.totuple())
|
|
43
|
+
primitive_dataset = spglib.get_symmetry_dataset(primitive.totuple())
|
|
44
|
+
perms = compute_sg_permutations(
|
|
45
|
+
primitive.scaled_positions,
|
|
46
|
+
primitive_dataset.rotations,
|
|
47
|
+
primitive_dataset.translations,
|
|
48
|
+
primitive.cell,
|
|
49
|
+
)
|
|
50
|
+
ref_perms = [
|
|
51
|
+
[0, 1, 2, 3],
|
|
52
|
+
[1, 0, 3, 2],
|
|
53
|
+
[0, 1, 2, 3],
|
|
54
|
+
[1, 0, 3, 2],
|
|
55
|
+
[0, 1, 2, 3],
|
|
56
|
+
[1, 0, 3, 2],
|
|
57
|
+
[1, 0, 3, 2],
|
|
58
|
+
[0, 1, 2, 3],
|
|
59
|
+
[1, 0, 3, 2],
|
|
60
|
+
[0, 1, 2, 3],
|
|
61
|
+
[1, 0, 3, 2],
|
|
62
|
+
[0, 1, 2, 3],
|
|
63
|
+
]
|
|
64
|
+
np.testing.assert_array_equal(ref_perms, perms)
|
|
65
|
+
|
|
66
|
+
perms_super = compute_sg_permutations(
|
|
67
|
+
supercell.scaled_positions,
|
|
68
|
+
dataset.rotations,
|
|
69
|
+
dataset.translations,
|
|
70
|
+
supercell.cell,
|
|
71
|
+
)
|
|
72
|
+
# np.savetxt("perms_super.dat", perms_super, fmt="%d")
|
|
73
|
+
perms_super_ref = np.loadtxt(cwd / ".." / "perms_super.dat", dtype=int)
|
|
74
|
+
np.testing.assert_array_equal(perms_super_ref, perms_super)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def test_compute_sg_permutations_compare_stable():
|
|
78
|
+
"""Test compute_sg_permutations and compare with compute_sg_permutations_stable."""
|
|
79
|
+
pytest.importorskip("spglib", minversion="2.5")
|
|
80
|
+
from spglib import spglib
|
|
81
|
+
|
|
82
|
+
axis = np.array([[0.0, 1.0, 1.0], [7.0, 6.0, 7.0], [8.0, 8.0, 8.0]])
|
|
83
|
+
positions = np.array(
|
|
84
|
+
[
|
|
85
|
+
[0.000000000000000, 0.000000000000000, 0.000000000000000],
|
|
86
|
+
[0.000000000000000, 0.000000000000000, 0.125000000000000],
|
|
87
|
+
[0.000000000000000, 0.000000000000000, 0.250000000000000],
|
|
88
|
+
[0.000000000000000, 0.000000000000000, 0.375000000000000],
|
|
89
|
+
[0.000000000000000, 0.000000000000000, 0.500000000000000],
|
|
90
|
+
[0.000000000000000, 0.000000000000000, 0.625000000000000],
|
|
91
|
+
[0.000000000000000, 0.000000000000000, 0.750000000000000],
|
|
92
|
+
[0.000000000000000, 0.000000000000000, 0.875000000000000],
|
|
93
|
+
]
|
|
94
|
+
)
|
|
95
|
+
types = np.zeros(8, dtype=int)
|
|
96
|
+
|
|
97
|
+
cell = axis, positions, types
|
|
98
|
+
dataset = spglib.get_symmetry_dataset(cell)
|
|
99
|
+
perms = compute_sg_permutations(
|
|
100
|
+
positions,
|
|
101
|
+
dataset.rotations,
|
|
102
|
+
dataset.translations,
|
|
103
|
+
axis,
|
|
104
|
+
)
|
|
105
|
+
perms_stable = compute_sg_permutations_stable(
|
|
106
|
+
positions,
|
|
107
|
+
dataset.rotations,
|
|
108
|
+
dataset.translations,
|
|
109
|
+
axis,
|
|
110
|
+
)
|
|
111
|
+
ref_perms = [
|
|
112
|
+
[0, 1, 2, 3, 4, 5, 6, 7],
|
|
113
|
+
[0, 7, 6, 5, 4, 3, 2, 1],
|
|
114
|
+
[0, 7, 6, 5, 4, 3, 2, 1],
|
|
115
|
+
[0, 1, 2, 3, 4, 5, 6, 7],
|
|
116
|
+
[0, 1, 2, 3, 4, 5, 6, 7],
|
|
117
|
+
[0, 7, 6, 5, 4, 3, 2, 1],
|
|
118
|
+
[0, 7, 6, 5, 4, 3, 2, 1],
|
|
119
|
+
[0, 1, 2, 3, 4, 5, 6, 7],
|
|
120
|
+
[0, 7, 6, 5, 4, 3, 2, 1],
|
|
121
|
+
[0, 1, 2, 3, 4, 5, 6, 7],
|
|
122
|
+
[0, 1, 2, 3, 4, 5, 6, 7],
|
|
123
|
+
[0, 7, 6, 5, 4, 3, 2, 1],
|
|
124
|
+
[1, 2, 3, 4, 5, 6, 7, 0],
|
|
125
|
+
[1, 0, 7, 6, 5, 4, 3, 2],
|
|
126
|
+
[1, 0, 7, 6, 5, 4, 3, 2],
|
|
127
|
+
[1, 2, 3, 4, 5, 6, 7, 0],
|
|
128
|
+
[1, 2, 3, 4, 5, 6, 7, 0],
|
|
129
|
+
[1, 0, 7, 6, 5, 4, 3, 2],
|
|
130
|
+
[1, 0, 7, 6, 5, 4, 3, 2],
|
|
131
|
+
[1, 2, 3, 4, 5, 6, 7, 0],
|
|
132
|
+
[1, 0, 7, 6, 5, 4, 3, 2],
|
|
133
|
+
[1, 2, 3, 4, 5, 6, 7, 0],
|
|
134
|
+
[1, 2, 3, 4, 5, 6, 7, 0],
|
|
135
|
+
[1, 0, 7, 6, 5, 4, 3, 2],
|
|
136
|
+
[2, 3, 4, 5, 6, 7, 0, 1],
|
|
137
|
+
[2, 1, 0, 7, 6, 5, 4, 3],
|
|
138
|
+
[2, 1, 0, 7, 6, 5, 4, 3],
|
|
139
|
+
[2, 3, 4, 5, 6, 7, 0, 1],
|
|
140
|
+
[2, 3, 4, 5, 6, 7, 0, 1],
|
|
141
|
+
[2, 1, 0, 7, 6, 5, 4, 3],
|
|
142
|
+
[2, 1, 0, 7, 6, 5, 4, 3],
|
|
143
|
+
[2, 3, 4, 5, 6, 7, 0, 1],
|
|
144
|
+
[2, 1, 0, 7, 6, 5, 4, 3],
|
|
145
|
+
[2, 3, 4, 5, 6, 7, 0, 1],
|
|
146
|
+
[2, 3, 4, 5, 6, 7, 0, 1],
|
|
147
|
+
[2, 1, 0, 7, 6, 5, 4, 3],
|
|
148
|
+
[3, 4, 5, 6, 7, 0, 1, 2],
|
|
149
|
+
[3, 2, 1, 0, 7, 6, 5, 4],
|
|
150
|
+
[3, 2, 1, 0, 7, 6, 5, 4],
|
|
151
|
+
[3, 4, 5, 6, 7, 0, 1, 2],
|
|
152
|
+
[3, 4, 5, 6, 7, 0, 1, 2],
|
|
153
|
+
[3, 2, 1, 0, 7, 6, 5, 4],
|
|
154
|
+
[3, 2, 1, 0, 7, 6, 5, 4],
|
|
155
|
+
[3, 4, 5, 6, 7, 0, 1, 2],
|
|
156
|
+
[3, 2, 1, 0, 7, 6, 5, 4],
|
|
157
|
+
[3, 4, 5, 6, 7, 0, 1, 2],
|
|
158
|
+
[3, 4, 5, 6, 7, 0, 1, 2],
|
|
159
|
+
[3, 2, 1, 0, 7, 6, 5, 4],
|
|
160
|
+
[4, 5, 6, 7, 0, 1, 2, 3],
|
|
161
|
+
[4, 3, 2, 1, 0, 7, 6, 5],
|
|
162
|
+
[4, 3, 2, 1, 0, 7, 6, 5],
|
|
163
|
+
[4, 5, 6, 7, 0, 1, 2, 3],
|
|
164
|
+
[4, 5, 6, 7, 0, 1, 2, 3],
|
|
165
|
+
[4, 3, 2, 1, 0, 7, 6, 5],
|
|
166
|
+
[4, 3, 2, 1, 0, 7, 6, 5],
|
|
167
|
+
[4, 5, 6, 7, 0, 1, 2, 3],
|
|
168
|
+
[4, 3, 2, 1, 0, 7, 6, 5],
|
|
169
|
+
[4, 5, 6, 7, 0, 1, 2, 3],
|
|
170
|
+
[4, 5, 6, 7, 0, 1, 2, 3],
|
|
171
|
+
[4, 3, 2, 1, 0, 7, 6, 5],
|
|
172
|
+
[5, 6, 7, 0, 1, 2, 3, 4],
|
|
173
|
+
[5, 4, 3, 2, 1, 0, 7, 6],
|
|
174
|
+
[5, 4, 3, 2, 1, 0, 7, 6],
|
|
175
|
+
[5, 6, 7, 0, 1, 2, 3, 4],
|
|
176
|
+
[5, 6, 7, 0, 1, 2, 3, 4],
|
|
177
|
+
[5, 4, 3, 2, 1, 0, 7, 6],
|
|
178
|
+
[5, 4, 3, 2, 1, 0, 7, 6],
|
|
179
|
+
[5, 6, 7, 0, 1, 2, 3, 4],
|
|
180
|
+
[5, 4, 3, 2, 1, 0, 7, 6],
|
|
181
|
+
[5, 6, 7, 0, 1, 2, 3, 4],
|
|
182
|
+
[5, 6, 7, 0, 1, 2, 3, 4],
|
|
183
|
+
[5, 4, 3, 2, 1, 0, 7, 6],
|
|
184
|
+
[6, 7, 0, 1, 2, 3, 4, 5],
|
|
185
|
+
[6, 5, 4, 3, 2, 1, 0, 7],
|
|
186
|
+
[6, 5, 4, 3, 2, 1, 0, 7],
|
|
187
|
+
[6, 7, 0, 1, 2, 3, 4, 5],
|
|
188
|
+
[6, 7, 0, 1, 2, 3, 4, 5],
|
|
189
|
+
[6, 5, 4, 3, 2, 1, 0, 7],
|
|
190
|
+
[6, 5, 4, 3, 2, 1, 0, 7],
|
|
191
|
+
[6, 7, 0, 1, 2, 3, 4, 5],
|
|
192
|
+
[6, 5, 4, 3, 2, 1, 0, 7],
|
|
193
|
+
[6, 7, 0, 1, 2, 3, 4, 5],
|
|
194
|
+
[6, 7, 0, 1, 2, 3, 4, 5],
|
|
195
|
+
[6, 5, 4, 3, 2, 1, 0, 7],
|
|
196
|
+
[7, 0, 1, 2, 3, 4, 5, 6],
|
|
197
|
+
[7, 6, 5, 4, 3, 2, 1, 0],
|
|
198
|
+
[7, 6, 5, 4, 3, 2, 1, 0],
|
|
199
|
+
[7, 0, 1, 2, 3, 4, 5, 6],
|
|
200
|
+
[7, 0, 1, 2, 3, 4, 5, 6],
|
|
201
|
+
[7, 6, 5, 4, 3, 2, 1, 0],
|
|
202
|
+
[7, 6, 5, 4, 3, 2, 1, 0],
|
|
203
|
+
[7, 0, 1, 2, 3, 4, 5, 6],
|
|
204
|
+
[7, 6, 5, 4, 3, 2, 1, 0],
|
|
205
|
+
[7, 0, 1, 2, 3, 4, 5, 6],
|
|
206
|
+
[7, 0, 1, 2, 3, 4, 5, 6],
|
|
207
|
+
[7, 6, 5, 4, 3, 2, 1, 0],
|
|
208
|
+
]
|
|
209
|
+
np.testing.assert_array_equal(perms, perms_stable)
|
|
210
|
+
np.testing.assert_array_equal(perms, ref_perms)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
def test_compute_sg_permutations_compare_stable_nacl(
|
|
214
|
+
ph_nacl_222: tuple[SymfcAtoms, np.ndarray, np.ndarray],
|
|
215
|
+
):
|
|
216
|
+
"""Test of compute_sg_permutations for NaCl."""
|
|
217
|
+
pytest.importorskip("spglib", minversion="2.5")
|
|
218
|
+
from spglib import spglib
|
|
219
|
+
|
|
220
|
+
supercell, _, _ = ph_nacl_222
|
|
221
|
+
dataset = spglib.get_symmetry_dataset(supercell.totuple())
|
|
222
|
+
perms = compute_sg_permutations(
|
|
223
|
+
supercell.scaled_positions,
|
|
224
|
+
dataset.rotations,
|
|
225
|
+
dataset.translations,
|
|
226
|
+
supercell.cell,
|
|
227
|
+
)
|
|
228
|
+
perms_stable = compute_sg_permutations_stable(
|
|
229
|
+
supercell.scaled_positions,
|
|
230
|
+
dataset.rotations,
|
|
231
|
+
dataset.translations,
|
|
232
|
+
supercell.cell,
|
|
233
|
+
)
|
|
234
|
+
np.testing.assert_array_equal(perms, perms_stable)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
def test_compute_sg_permutations_compare_stable_sio2(
|
|
238
|
+
ph_sio2_221: tuple[SymfcAtoms, np.ndarray, np.ndarray],
|
|
239
|
+
):
|
|
240
|
+
"""Test of compute_sg_permutations for SiO2."""
|
|
241
|
+
pytest.importorskip("spglib", minversion="2.5")
|
|
242
|
+
from spglib import spglib
|
|
243
|
+
|
|
244
|
+
supercell, _, _ = ph_sio2_221
|
|
245
|
+
dataset = spglib.get_symmetry_dataset(supercell.totuple())
|
|
246
|
+
perms = compute_sg_permutations(
|
|
247
|
+
supercell.scaled_positions,
|
|
248
|
+
dataset.rotations,
|
|
249
|
+
dataset.translations,
|
|
250
|
+
supercell.cell,
|
|
251
|
+
)
|
|
252
|
+
perms_stable = compute_sg_permutations_stable(
|
|
253
|
+
supercell.scaled_positions,
|
|
254
|
+
dataset.rotations,
|
|
255
|
+
dataset.translations,
|
|
256
|
+
supercell.cell,
|
|
257
|
+
)
|
|
258
|
+
np.testing.assert_array_equal(perms, perms_stable)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
def test_compute_sg_permutations_compare_stable_baal2o4():
|
|
262
|
+
"""Test compute_sg_permutations for BaAl2O4."""
|
|
263
|
+
pytest.importorskip("spglib", minversion="2.5")
|
|
264
|
+
from spglib import spglib
|
|
265
|
+
|
|
266
|
+
types = np.zeros(8, dtype=int)
|
|
267
|
+
axis = np.array(
|
|
268
|
+
[
|
|
269
|
+
[10.4020522437529994, 0.0000000000000000, 0.0000000000000000],
|
|
270
|
+
[-5.2010261218764997, 9.0084414945829998, 0.0000000000000000],
|
|
271
|
+
[0.00000000000000000, 0.0000000000000000, 17.8057491600000013],
|
|
272
|
+
]
|
|
273
|
+
)
|
|
274
|
+
types = np.hstack(
|
|
275
|
+
[np.zeros(16, dtype=int), np.ones(32, dtype=int), np.ones(64, dtype=int) * 2]
|
|
276
|
+
)
|
|
277
|
+
positions = np.array(
|
|
278
|
+
[
|
|
279
|
+
[0.0000000000000000, 0.0000000000000000, 0.1250000000000000],
|
|
280
|
+
[0.5000000000000000, 0.0000000000000000, 0.1250000000000000],
|
|
281
|
+
[0.0000000000000050, 0.5000000000000000, 0.1250000000000000],
|
|
282
|
+
[0.4999999999999950, 0.5000000000000000, 0.1250000000000000],
|
|
283
|
+
[0.0000000000000000, 0.0000000000000000, 0.6250000000000000],
|
|
284
|
+
[0.5000000000000000, 0.0000000000000000, 0.6250000000000000],
|
|
285
|
+
[0.0000000000000050, 0.5000000000000000, 0.6250000000000000],
|
|
286
|
+
[0.4999999999999950, 0.5000000000000000, 0.6250000000000000],
|
|
287
|
+
[0.0000000000000000, 0.0000000000000000, 0.3750000000000000],
|
|
288
|
+
[0.5000000000000000, 0.0000000000000000, 0.3750000000000000],
|
|
289
|
+
[0.0000000000000050, 0.5000000000000000, 0.3750000000000000],
|
|
290
|
+
[0.4999999999999950, 0.5000000000000000, 0.3750000000000000],
|
|
291
|
+
[0.0000000000000000, 0.0000000000000000, 0.8750000000000000],
|
|
292
|
+
[0.5000000000000000, 0.0000000000000000, 0.8750000000000000],
|
|
293
|
+
[0.0000000000000050, 0.5000000000000000, 0.8750000000000000],
|
|
294
|
+
[0.4999999999999950, 0.5000000000000000, 0.8750000000000000],
|
|
295
|
+
[0.1666666666666690, 0.3333333333333370, 0.2768253700000010],
|
|
296
|
+
[0.6666666666666690, 0.3333333333333370, 0.2768253700000010],
|
|
297
|
+
[0.1666666666666730, 0.8333333333333370, 0.2768253700000010],
|
|
298
|
+
[0.6666666666666640, 0.8333333333333370, 0.2768253700000010],
|
|
299
|
+
[0.1666666666666690, 0.3333333333333370, 0.7768253699999890],
|
|
300
|
+
[0.6666666666666690, 0.3333333333333370, 0.7768253699999890],
|
|
301
|
+
[0.1666666666666730, 0.8333333333333370, 0.7768253699999890],
|
|
302
|
+
[0.6666666666666640, 0.8333333333333370, 0.7768253699999890],
|
|
303
|
+
[0.3333333333333270, 0.1666666666666630, 0.0268253700000010],
|
|
304
|
+
[0.8333333333333270, 0.1666666666666630, 0.0268253700000010],
|
|
305
|
+
[0.3333333333333320, 0.6666666666666630, 0.0268253700000010],
|
|
306
|
+
[0.8333333333333310, 0.6666666666666630, 0.0268253700000010],
|
|
307
|
+
[0.3333333333333270, 0.1666666666666630, 0.5268253700000010],
|
|
308
|
+
[0.8333333333333270, 0.1666666666666630, 0.5268253700000010],
|
|
309
|
+
[0.3333333333333320, 0.6666666666666630, 0.5268253700000010],
|
|
310
|
+
[0.8333333333333310, 0.6666666666666630, 0.5268253700000010],
|
|
311
|
+
[0.3333333333333270, 0.1666666666666630, 0.2231746299999990],
|
|
312
|
+
[0.8333333333333270, 0.1666666666666630, 0.2231746299999990],
|
|
313
|
+
[0.3333333333333320, 0.6666666666666630, 0.2231746299999990],
|
|
314
|
+
[0.8333333333333310, 0.6666666666666630, 0.2231746299999990],
|
|
315
|
+
[0.3333333333333270, 0.1666666666666630, 0.7231746300000110],
|
|
316
|
+
[0.8333333333333270, 0.1666666666666630, 0.7231746300000110],
|
|
317
|
+
[0.3333333333333320, 0.6666666666666630, 0.7231746300000110],
|
|
318
|
+
[0.8333333333333310, 0.6666666666666630, 0.7231746300000110],
|
|
319
|
+
[0.1666666666666690, 0.3333333333333370, 0.4731746299999990],
|
|
320
|
+
[0.6666666666666690, 0.3333333333333370, 0.4731746299999990],
|
|
321
|
+
[0.1666666666666730, 0.8333333333333370, 0.4731746299999990],
|
|
322
|
+
[0.6666666666666640, 0.8333333333333370, 0.4731746299999990],
|
|
323
|
+
[0.1666666666666690, 0.3333333333333370, 0.9731746300000110],
|
|
324
|
+
[0.6666666666666690, 0.3333333333333370, 0.9731746300000110],
|
|
325
|
+
[0.1666666666666730, 0.8333333333333370, 0.9731746300000110],
|
|
326
|
+
[0.6666666666666640, 0.8333333333333370, 0.9731746300000110],
|
|
327
|
+
[0.1749127449999990, 0.1749127449999980, 0.2500000000000000],
|
|
328
|
+
[0.6749127449999970, 0.1749127449999980, 0.2500000000000000],
|
|
329
|
+
[0.1749127450000020, 0.6749127449999980, 0.2500000000000000],
|
|
330
|
+
[0.6749127450000020, 0.6749127449999980, 0.2500000000000000],
|
|
331
|
+
[0.1749127449999990, 0.1749127449999980, 0.7500000000000000],
|
|
332
|
+
[0.6749127449999970, 0.1749127449999980, 0.7500000000000000],
|
|
333
|
+
[0.1749127450000020, 0.6749127449999980, 0.7500000000000000],
|
|
334
|
+
[0.6749127450000020, 0.6749127449999980, 0.7500000000000000],
|
|
335
|
+
[0.0000000000000030, 0.3250872550000020, 0.2500000000000000],
|
|
336
|
+
[0.5000000000000030, 0.3250872550000020, 0.2500000000000000],
|
|
337
|
+
[0.9999999999999990, 0.8250872550000020, 0.2500000000000000],
|
|
338
|
+
[0.5000000000000010, 0.8250872550000020, 0.2500000000000000],
|
|
339
|
+
[0.0000000000000030, 0.3250872550000020, 0.7500000000000000],
|
|
340
|
+
[0.5000000000000030, 0.3250872550000020, 0.7500000000000000],
|
|
341
|
+
[0.9999999999999990, 0.8250872550000020, 0.7500000000000000],
|
|
342
|
+
[0.5000000000000010, 0.8250872550000020, 0.7500000000000000],
|
|
343
|
+
[0.9999999999999990, 0.1749127449999980, 0.0000000000000000],
|
|
344
|
+
[0.5000000000000010, 0.1749127449999980, 0.0000000000000000],
|
|
345
|
+
[0.9999999999999970, 0.6749127449999980, 0.0000000000000000],
|
|
346
|
+
[0.4999999999999970, 0.6749127449999980, 0.0000000000000000],
|
|
347
|
+
[0.9999999999999990, 0.1749127449999980, 0.5000000000000000],
|
|
348
|
+
[0.5000000000000010, 0.1749127449999980, 0.5000000000000000],
|
|
349
|
+
[0.9999999999999970, 0.6749127449999980, 0.5000000000000000],
|
|
350
|
+
[0.4999999999999970, 0.6749127449999980, 0.5000000000000000],
|
|
351
|
+
[0.1666666666666690, 0.3333333333333370, 0.3750000000000000],
|
|
352
|
+
[0.6666666666666690, 0.3333333333333370, 0.3750000000000000],
|
|
353
|
+
[0.1666666666666730, 0.8333333333333370, 0.3750000000000000],
|
|
354
|
+
[0.6666666666666640, 0.8333333333333370, 0.3750000000000000],
|
|
355
|
+
[0.1666666666666690, 0.3333333333333370, 0.8750000000000000],
|
|
356
|
+
[0.6666666666666690, 0.3333333333333370, 0.8750000000000000],
|
|
357
|
+
[0.1666666666666730, 0.8333333333333370, 0.8750000000000000],
|
|
358
|
+
[0.6666666666666640, 0.8333333333333370, 0.8750000000000000],
|
|
359
|
+
[0.3250872549999980, 0.3250872550000020, 0.0000000000000000],
|
|
360
|
+
[0.8250872549999980, 0.3250872550000020, 0.0000000000000000],
|
|
361
|
+
[0.3250872550000010, 0.8250872550000020, 0.0000000000000000],
|
|
362
|
+
[0.8250872550000030, 0.8250872550000020, 0.0000000000000000],
|
|
363
|
+
[0.3250872549999980, 0.3250872550000020, 0.5000000000000000],
|
|
364
|
+
[0.8250872549999980, 0.3250872550000020, 0.5000000000000000],
|
|
365
|
+
[0.3250872550000010, 0.8250872550000020, 0.5000000000000000],
|
|
366
|
+
[0.8250872550000030, 0.8250872550000020, 0.5000000000000000],
|
|
367
|
+
[0.3250872550000040, 0.0000000000000000, 0.2500000000000000],
|
|
368
|
+
[0.8250872550000040, 0.0000000000000000, 0.2500000000000000],
|
|
369
|
+
[0.3250872550000020, 0.5000000000000000, 0.2500000000000000],
|
|
370
|
+
[0.8250872550000000, 0.5000000000000000, 0.2500000000000000],
|
|
371
|
+
[0.3250872550000040, 0.0000000000000000, 0.7500000000000000],
|
|
372
|
+
[0.8250872550000040, 0.0000000000000000, 0.7500000000000000],
|
|
373
|
+
[0.3250872550000020, 0.5000000000000000, 0.7500000000000000],
|
|
374
|
+
[0.8250872550000000, 0.5000000000000000, 0.7500000000000000],
|
|
375
|
+
[0.3333333333333270, 0.1666666666666630, 0.1250000000000000],
|
|
376
|
+
[0.8333333333333270, 0.1666666666666630, 0.1250000000000000],
|
|
377
|
+
[0.3333333333333320, 0.6666666666666630, 0.1250000000000000],
|
|
378
|
+
[0.8333333333333310, 0.6666666666666630, 0.1250000000000000],
|
|
379
|
+
[0.3333333333333270, 0.1666666666666630, 0.6250000000000000],
|
|
380
|
+
[0.8333333333333270, 0.1666666666666630, 0.6250000000000000],
|
|
381
|
+
[0.3333333333333320, 0.6666666666666630, 0.6250000000000000],
|
|
382
|
+
[0.8333333333333310, 0.6666666666666630, 0.6250000000000000],
|
|
383
|
+
[0.1749127449999960, 0.0000000000000000, 0.0000000000000000],
|
|
384
|
+
[0.6749127449999960, 0.0000000000000000, 0.0000000000000000],
|
|
385
|
+
[0.1749127449999980, 0.5000000000000000, 0.0000000000000000],
|
|
386
|
+
[0.6749127450000000, 0.5000000000000000, 0.0000000000000000],
|
|
387
|
+
[0.1749127449999960, 0.0000000000000000, 0.5000000000000000],
|
|
388
|
+
[0.6749127449999960, 0.0000000000000000, 0.5000000000000000],
|
|
389
|
+
[0.1749127449999980, 0.5000000000000000, 0.5000000000000000],
|
|
390
|
+
[0.6749127450000000, 0.5000000000000000, 0.5000000000000000],
|
|
391
|
+
]
|
|
392
|
+
)
|
|
393
|
+
|
|
394
|
+
cell = axis, positions, types
|
|
395
|
+
dataset = spglib.get_symmetry_dataset(cell)
|
|
396
|
+
perms = compute_sg_permutations(
|
|
397
|
+
positions,
|
|
398
|
+
dataset.rotations,
|
|
399
|
+
dataset.translations,
|
|
400
|
+
axis,
|
|
401
|
+
)
|
|
402
|
+
perms_stable = compute_sg_permutations_stable(
|
|
403
|
+
positions,
|
|
404
|
+
dataset.rotations,
|
|
405
|
+
dataset.translations,
|
|
406
|
+
axis,
|
|
407
|
+
)
|
|
408
|
+
np.testing.assert_array_equal(perms, perms_stable)
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"""Tests of matrix manipulating functions."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from pathlib import Path
|
|
6
|
-
|
|
7
|
-
import numpy as np
|
|
8
|
-
import pytest
|
|
9
|
-
|
|
10
|
-
from symfc.spg_reps import SpgRepsBase
|
|
11
|
-
from symfc.utils.utils import (
|
|
12
|
-
SymfcAtoms,
|
|
13
|
-
compute_sg_permutations,
|
|
14
|
-
get_indep_atoms_by_lat_trans,
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
cwd = Path(__file__).parent
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def test_get_indep_atoms_by_lattice_translation(
|
|
21
|
-
ph_nacl_222: tuple[SymfcAtoms, np.ndarray, np.ndarray],
|
|
22
|
-
):
|
|
23
|
-
"""Test of get_indep_atoms_by_lattice_translation."""
|
|
24
|
-
supercell, _, _ = ph_nacl_222
|
|
25
|
-
sym_op_reps = SpgRepsBase(supercell)
|
|
26
|
-
trans_perms = sym_op_reps.translation_permutations
|
|
27
|
-
assert trans_perms.shape == (32, 64)
|
|
28
|
-
indep_atoms = get_indep_atoms_by_lat_trans(trans_perms)
|
|
29
|
-
np.testing.assert_array_equal(indep_atoms, [0, 32])
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def test_compute_sg_permutations(
|
|
33
|
-
ph_gan_222: tuple[SymfcAtoms, np.ndarray, np.ndarray], cell_gan_111: SymfcAtoms
|
|
34
|
-
):
|
|
35
|
-
"""Test compute_sg_permutations."""
|
|
36
|
-
pytest.importorskip("spglib", minversion="2.5")
|
|
37
|
-
from spglib import spglib
|
|
38
|
-
|
|
39
|
-
supercell, _, _ = ph_gan_222
|
|
40
|
-
primitive = cell_gan_111
|
|
41
|
-
dataset = spglib.get_symmetry_dataset(supercell.totuple())
|
|
42
|
-
primitive_dataset = spglib.get_symmetry_dataset(primitive.totuple())
|
|
43
|
-
perms = compute_sg_permutations(
|
|
44
|
-
primitive.scaled_positions,
|
|
45
|
-
primitive_dataset.rotations,
|
|
46
|
-
primitive_dataset.translations,
|
|
47
|
-
primitive.cell,
|
|
48
|
-
)
|
|
49
|
-
ref_perms = [
|
|
50
|
-
[0, 1, 2, 3],
|
|
51
|
-
[1, 0, 3, 2],
|
|
52
|
-
[0, 1, 2, 3],
|
|
53
|
-
[1, 0, 3, 2],
|
|
54
|
-
[0, 1, 2, 3],
|
|
55
|
-
[1, 0, 3, 2],
|
|
56
|
-
[1, 0, 3, 2],
|
|
57
|
-
[0, 1, 2, 3],
|
|
58
|
-
[1, 0, 3, 2],
|
|
59
|
-
[0, 1, 2, 3],
|
|
60
|
-
[1, 0, 3, 2],
|
|
61
|
-
[0, 1, 2, 3],
|
|
62
|
-
]
|
|
63
|
-
np.testing.assert_array_equal(ref_perms, perms)
|
|
64
|
-
|
|
65
|
-
perms_super = compute_sg_permutations(
|
|
66
|
-
supercell.scaled_positions,
|
|
67
|
-
dataset.rotations,
|
|
68
|
-
dataset.translations,
|
|
69
|
-
supercell.cell,
|
|
70
|
-
)
|
|
71
|
-
# np.savetxt("perms_super.dat", perms_super, fmt="%d")
|
|
72
|
-
perms_super_ref = np.loadtxt(cwd / ".." / "perms_super.dat", dtype=int)
|
|
73
|
-
np.testing.assert_array_equal(perms_super_ref, perms_super)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|