From f7de724f00718ef8450e3fde4f73883c64412f57 Mon Sep 17 00:00:00 2001 From: susyexists Date: Sun, 17 Mar 2024 03:04:19 -0400 Subject: [PATCH] Si convergence parameters checked on ipynb --- susyexists/README.md | 37 + susyexists/Si_parameter_test.ipynb | 110 ++ susyexists/Structures/Si.poscar | 16 + susyexists/config.json | 38 + susyexists/pseudos/Si.UPF | 1231 +++++++++++++++++ susyexists/src/__init__.py | 0 .../src/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 146 bytes .../src/__pycache__/compute.cpython-310.pyc | Bin 0 -> 1126 bytes .../src/__pycache__/generate.cpython-310.pyc | Bin 0 -> 3349 bytes .../src/__pycache__/kpoints.cpython-310.pyc | Bin 0 -> 1054 bytes .../src/__pycache__/model.cpython-310.pyc | Bin 0 -> 6313 bytes .../src/__pycache__/plots.cpython-310.pyc | Bin 0 -> 2144 bytes .../src/__pycache__/reads.cpython-310.pyc | Bin 0 -> 3662 bytes .../src/__pycache__/scaffold.cpython-310.pyc | Bin 0 -> 2979 bytes .../src/__pycache__/structure.cpython-310.pyc | Bin 0 -> 7321 bytes .../src/__pycache__/utils.cpython-310.pyc | Bin 0 -> 4169 bytes .../src/__pycache__/writes.cpython-310.pyc | Bin 0 -> 1851 bytes susyexists/src/adiabatic.sh | 88 ++ susyexists/src/compute.py | 20 + susyexists/src/generate.py | 176 +++ susyexists/src/kpoints.py | 35 + susyexists/src/model.py | 142 ++ susyexists/src/ph_plot.py | 36 + susyexists/src/plot_band.py | 57 + susyexists/src/plot_sigma_energy.py | 33 + susyexists/src/plots.py | 50 + susyexists/src/reads.py | 114 ++ susyexists/src/run.py | 58 + susyexists/src/scaffold.py | 126 ++ susyexists/src/seekpath/__init__.py | 57 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1701 bytes .../__pycache__/getpaths.cpython-310.pyc | Bin 0 -> 23247 bytes .../src/seekpath/brillouinzone/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 169 bytes .../__pycache__/brillouinzone.cpython-310.pyc | Bin 0 -> 7342 bytes .../seekpath/brillouinzone/brillouinzone.py | 343 +++++ susyexists/src/seekpath/getpaths.py | 608 ++++++++ susyexists/src/seekpath/hpkot/__init__.py | 521 +++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 13715 bytes .../hpkot/__pycache__/spg_db.cpython-310.pyc | Bin 0 -> 7169 bytes .../__pycache__/spg_mapping.cpython-310.pyc | Bin 0 -> 9535 bytes .../hpkot/__pycache__/tools.cpython-310.pyc | Bin 0 -> 11909 bytes .../hpkot/band_path_data/aP2/POSCAR_inversion | 12 + .../band_path_data/aP2/POSCAR_noinversion | 12 + .../aP2/k_vector_parameters.txt | 0 .../hpkot/band_path_data/aP2/path.txt | 7 + .../hpkot/band_path_data/aP2/points.txt | 8 + .../hpkot/band_path_data/aP3/POSCAR_inversion | 14 + .../band_path_data/aP3/POSCAR_noinversion | 12 + .../aP3/k_vector_parameters.txt | 0 .../hpkot/band_path_data/aP3/path.txt | 7 + .../hpkot/band_path_data/aP3/points.txt | 9 + .../hpkot/band_path_data/cF1/POSCAR_inversion | 96 ++ .../band_path_data/cF1/POSCAR_noinversion | 96 ++ .../cF1/k_vector_parameters.txt | 0 .../hpkot/band_path_data/cF1/path.txt | 7 + .../hpkot/band_path_data/cF1/points.txt | 7 + .../hpkot/band_path_data/cF2/POSCAR_inversion | 16 + .../band_path_data/cF2/POSCAR_noinversion | 16 + .../cF2/k_vector_parameters.txt | 0 .../hpkot/band_path_data/cF2/path.txt | 6 + .../hpkot/band_path_data/cF2/points.txt | 7 + .../hpkot/band_path_data/cI1/POSCAR_inversion | 16 + .../band_path_data/cI1/POSCAR_noinversion | 18 + .../cI1/k_vector_parameters.txt | 0 .../hpkot/band_path_data/cI1/path.txt | 6 + .../hpkot/band_path_data/cI1/points.txt | 4 + .../hpkot/band_path_data/cP1/POSCAR_inversion | 19 + .../band_path_data/cP1/POSCAR_noinversion | 16 + .../cP1/k_vector_parameters.txt | 0 .../hpkot/band_path_data/cP1/path.txt | 7 + .../hpkot/band_path_data/cP1/points.txt | 5 + .../hpkot/band_path_data/cP2/POSCAR_inversion | 10 + .../band_path_data/cP2/POSCAR_noinversion | 13 + .../cP2/k_vector_parameters.txt | 0 .../hpkot/band_path_data/cP2/path.txt | 6 + .../hpkot/band_path_data/cP2/points.txt | 5 + .../hpkot/band_path_data/hP1/POSCAR_inversion | 15 + .../band_path_data/hP1/POSCAR_noinversion | 13 + .../hP1/k_vector_parameters.txt | 0 .../hpkot/band_path_data/hP1/path.txt | 10 + .../hpkot/band_path_data/hP1/points.txt | 7 + .../hpkot/band_path_data/hP2/POSCAR_inversion | 11 + .../band_path_data/hP2/POSCAR_noinversion | 10 + .../hP2/k_vector_parameters.txt | 0 .../hpkot/band_path_data/hP2/path.txt | 9 + .../hpkot/band_path_data/hP2/points.txt | 7 + .../hpkot/band_path_data/hR1/POSCAR_inversion | 14 + .../band_path_data/hR1/POSCAR_noinversion | 14 + .../hR1/k_vector_parameters.txt | 3 + .../hpkot/band_path_data/hR1/path.txt | 7 + .../hpkot/band_path_data/hR1/points.txt | 20 + .../hpkot/band_path_data/hR2/POSCAR_inversion | 38 + .../hR2/POSCAR_inversion_alternate | 20 + .../band_path_data/hR2/POSCAR_noinversion | 17 + .../hR2/k_vector_parameters.txt | 3 + .../hpkot/band_path_data/hR2/path.txt | 5 + .../hpkot/band_path_data/hR2/points.txt | 9 + .../hpkot/band_path_data/mC1/POSCAR_inversion | 16 + .../mC1/POSCAR_inversion_alternate | 14 + .../band_path_data/mC1/POSCAR_noinversion | 16 + .../mC1/POSCAR_noinversion_alternate | 14 + .../mC1/k_vector_parameters.txt | 4 + .../hpkot/band_path_data/mC1/path.txt | 9 + .../hpkot/band_path_data/mC1/points.txt | 16 + .../hpkot/band_path_data/mC2/POSCAR_inversion | 16 + .../mC2/POSCAR_inversion_alternate | 20 + .../band_path_data/mC2/POSCAR_noinversion | 14 + .../mC2/k_vector_parameters.txt | 6 + .../hpkot/band_path_data/mC2/path.txt | 6 + .../hpkot/band_path_data/mC2/points.txt | 16 + .../hpkot/band_path_data/mC3/POSCAR_inversion | 14 + .../band_path_data/mC3/POSCAR_noinversion | 16 + .../mC3/k_vector_parameters.txt | 7 + .../hpkot/band_path_data/mC3/path.txt | 7 + .../hpkot/band_path_data/mC3/points.txt | 19 + .../hpkot/band_path_data/mP1/POSCAR_inversion | 12 + .../band_path_data/mP1/POSCAR_noinversion | 20 + .../mP1/POSCAR_noinversion_alternate | 13 + .../mP1/k_vector_parameters.txt | 2 + .../hpkot/band_path_data/mP1/path.txt | 10 + .../hpkot/band_path_data/mP1/points.txt | 18 + .../band_path_data/oA1/POSCAR_noinversion | 14 + .../oA1/k_vector_parameters.txt | 1 + .../hpkot/band_path_data/oA1/path.txt | 11 + .../hpkot/band_path_data/oA1/points.txt | 10 + .../band_path_data/oA2/POSCAR_noinversion | 16 + .../oA2/k_vector_parameters.txt | 1 + .../hpkot/band_path_data/oA2/path.txt | 11 + .../hpkot/band_path_data/oA2/points.txt | 15 + .../hpkot/band_path_data/oC1/POSCAR_inversion | 12 + .../band_path_data/oC1/POSCAR_noinversion | 16 + .../oC1/k_vector_parameters.txt | 1 + .../hpkot/band_path_data/oC1/path.txt | 11 + .../hpkot/band_path_data/oC1/points.txt | 10 + .../hpkot/band_path_data/oC2/POSCAR_inversion | 16 + .../band_path_data/oC2/POSCAR_noinversion | 24 + .../oC2/k_vector_parameters.txt | 1 + .../hpkot/band_path_data/oC2/path.txt | 11 + .../hpkot/band_path_data/oC2/points.txt | 15 + .../hpkot/band_path_data/oF1/POSCAR_inversion | 20 + .../band_path_data/oF1/POSCAR_noinversion | 16 + .../oF1/k_vector_parameters.txt | 2 + .../hpkot/band_path_data/oF1/path.txt | 9 + .../hpkot/band_path_data/oF1/points.txt | 9 + .../band_path_data/oF2/POSCAR_noinversion | 32 + .../oF2/k_vector_parameters.txt | 2 + .../hpkot/band_path_data/oF2/path.txt | 9 + .../hpkot/band_path_data/oF2/points.txt | 9 + .../hpkot/band_path_data/oF3/POSCAR_inversion | 40 + .../band_path_data/oF3/POSCAR_noinversion | 24 + .../oF3/k_vector_parameters.txt | 3 + .../hpkot/band_path_data/oF3/path.txt | 10 + .../hpkot/band_path_data/oF3/points.txt | 11 + .../hpkot/band_path_data/oI1/POSCAR_inversion | 12 + .../band_path_data/oI1/POSCAR_noinversion | 16 + .../oI1/k_vector_parameters.txt | 4 + .../hpkot/band_path_data/oI1/path.txt | 11 + .../hpkot/band_path_data/oI1/points.txt | 13 + .../band_path_data/oI2/POSCAR_noinversion | 28 + .../oI2/k_vector_parameters.txt | 4 + .../hpkot/band_path_data/oI2/path.txt | 11 + .../hpkot/band_path_data/oI2/points.txt | 13 + .../hpkot/band_path_data/oI3/POSCAR_inversion | 20 + .../band_path_data/oI3/POSCAR_noinversion | 12 + .../oI3/POSCAR_noinversion_alternate | 12 + .../oI3/k_vector_parameters.txt | 4 + .../hpkot/band_path_data/oI3/path.txt | 11 + .../hpkot/band_path_data/oI3/points.txt | 13 + .../hpkot/band_path_data/oP1/POSCAR_inversion | 11 + .../band_path_data/oP1/POSCAR_noinversion | 10 + .../oP1/k_vector_parameters.txt | 0 .../hpkot/band_path_data/oP1/path.txt | 12 + .../hpkot/band_path_data/oP1/points.txt | 8 + .../hpkot/band_path_data/tI1/POSCAR_inversion | 18 + .../band_path_data/tI1/POSCAR_noinversion | 20 + .../tI1/k_vector_parameters.txt | 1 + .../hpkot/band_path_data/tI1/path.txt | 8 + .../hpkot/band_path_data/tI1/points.txt | 7 + .../hpkot/band_path_data/tI2/POSCAR_inversion | 12 + .../band_path_data/tI2/POSCAR_noinversion | 12 + .../tI2/k_vector_parameters.txt | 2 + .../hpkot/band_path_data/tI2/path.txt | 9 + .../hpkot/band_path_data/tI2/points.txt | 9 + .../hpkot/band_path_data/tP1/POSCAR_inversion | 10 + .../band_path_data/tP1/POSCAR_noinversion | 11 + .../tP1/k_vector_parameters.txt | 0 .../hpkot/band_path_data/tP1/path.txt | 9 + .../hpkot/band_path_data/tP1/points.txt | 6 + susyexists/src/seekpath/hpkot/spg_db.py | 472 +++++++ susyexists/src/seekpath/hpkot/spg_mapping.py | 345 +++++ susyexists/src/seekpath/hpkot/tools.py | 367 +++++ susyexists/src/seekpath/util.py | 116 ++ susyexists/src/structure.py | 338 +++++ susyexists/src/utils.py | 142 ++ susyexists/src/writes.py | 55 + 196 files changed, 7476 insertions(+) create mode 100644 susyexists/README.md create mode 100644 susyexists/Si_parameter_test.ipynb create mode 100644 susyexists/Structures/Si.poscar create mode 100644 susyexists/config.json create mode 100644 susyexists/pseudos/Si.UPF create mode 100644 susyexists/src/__init__.py create mode 100644 susyexists/src/__pycache__/__init__.cpython-310.pyc create mode 100644 susyexists/src/__pycache__/compute.cpython-310.pyc create mode 100644 susyexists/src/__pycache__/generate.cpython-310.pyc create mode 100644 susyexists/src/__pycache__/kpoints.cpython-310.pyc create mode 100644 susyexists/src/__pycache__/model.cpython-310.pyc create mode 100644 susyexists/src/__pycache__/plots.cpython-310.pyc create mode 100644 susyexists/src/__pycache__/reads.cpython-310.pyc create mode 100644 susyexists/src/__pycache__/scaffold.cpython-310.pyc create mode 100644 susyexists/src/__pycache__/structure.cpython-310.pyc create mode 100644 susyexists/src/__pycache__/utils.cpython-310.pyc create mode 100644 susyexists/src/__pycache__/writes.cpython-310.pyc create mode 100644 susyexists/src/adiabatic.sh create mode 100644 susyexists/src/compute.py create mode 100644 susyexists/src/generate.py create mode 100644 susyexists/src/kpoints.py create mode 100644 susyexists/src/model.py create mode 100644 susyexists/src/ph_plot.py create mode 100644 susyexists/src/plot_band.py create mode 100644 susyexists/src/plot_sigma_energy.py create mode 100644 susyexists/src/plots.py create mode 100644 susyexists/src/reads.py create mode 100644 susyexists/src/run.py create mode 100644 susyexists/src/scaffold.py create mode 100644 susyexists/src/seekpath/__init__.py create mode 100644 susyexists/src/seekpath/__pycache__/__init__.cpython-310.pyc create mode 100644 susyexists/src/seekpath/__pycache__/getpaths.cpython-310.pyc create mode 100644 susyexists/src/seekpath/brillouinzone/__init__.py create mode 100644 susyexists/src/seekpath/brillouinzone/__pycache__/__init__.cpython-310.pyc create mode 100644 susyexists/src/seekpath/brillouinzone/__pycache__/brillouinzone.cpython-310.pyc create mode 100644 susyexists/src/seekpath/brillouinzone/brillouinzone.py create mode 100644 susyexists/src/seekpath/getpaths.py create mode 100644 susyexists/src/seekpath/hpkot/__init__.py create mode 100644 susyexists/src/seekpath/hpkot/__pycache__/__init__.cpython-310.pyc create mode 100644 susyexists/src/seekpath/hpkot/__pycache__/spg_db.cpython-310.pyc create mode 100644 susyexists/src/seekpath/hpkot/__pycache__/spg_mapping.cpython-310.pyc create mode 100644 susyexists/src/seekpath/hpkot/__pycache__/tools.cpython-310.pyc create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/aP2/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/aP2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/aP2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/aP2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/aP2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/aP3/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/aP3/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/aP3/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/aP3/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/aP3/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cF1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cF1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cF1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cF1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cF1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cF2/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cF2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cF2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cF2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cF2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cI1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cI1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cI1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cI1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cI1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cP1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cP1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cP1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cP1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cP1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cP2/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cP2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cP2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cP2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/cP2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hP1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hP1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hP1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hP1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hP1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hP2/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hP2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hP2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hP2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hP2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_inversion_alternate create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/hR2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_inversion_alternate create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_noinversion_alternate create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_inversion_alternate create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC3/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC3/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC3/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC3/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mC3/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_noinversion_alternate create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mP1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mP1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/mP1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oA1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oA1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oA1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oA1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oA2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oA2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oA2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oA2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oC1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oC1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oC1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oC1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oC1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oC2/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oC2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oC2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oC2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oC2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF3/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF3/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF3/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF3/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oF3/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_noinversion_alternate create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI3/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI3/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oI3/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oP1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oP1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oP1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oP1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/oP1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tI1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tI1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tI1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tI1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tI1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tI2/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tI2/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tI2/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tI2/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tI2/points.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tP1/POSCAR_inversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tP1/POSCAR_noinversion create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tP1/k_vector_parameters.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tP1/path.txt create mode 100644 susyexists/src/seekpath/hpkot/band_path_data/tP1/points.txt create mode 100644 susyexists/src/seekpath/hpkot/spg_db.py create mode 100644 susyexists/src/seekpath/hpkot/spg_mapping.py create mode 100644 susyexists/src/seekpath/hpkot/tools.py create mode 100644 susyexists/src/seekpath/util.py create mode 100644 susyexists/src/structure.py create mode 100644 susyexists/src/utils.py create mode 100644 susyexists/src/writes.py diff --git a/susyexists/README.md b/susyexists/README.md new file mode 100644 index 00000000..cbd01009 --- /dev/null +++ b/susyexists/README.md @@ -0,0 +1,37 @@ +# K-point convergence tracker (Materials) + +> Ideal candidate: scientists skilled in Density Functional Theory and proficient in python. + +# Overview + +The aim of this task is to create a python package that implements automatic convergence tracking mechanism for a materials simulations engine. The convergence is tracked with respect to the k-point sampling inside a reciprocal cell of a crystalline compound. + +# Requirements + +1. automatically find the dimensions of a k-point mesh that satisfy a certain criteria for total energy (eg. total energy is converged within dE = 0.01meV) +1. the code shall be written in a way that can facilitate easy addition of convergence wrt other characteristics extracted from simulations (forces, pressures, phonon frequencies etc) +1. the code shall support VASP or Quantum ESPRESSO + +# Expectations + +- correctly find k-point mesh that satisfies total energy convergence parameters for a set of 10 materials, starting from Si2, as simplest, to a 10-20-atom supercell of your choice +- modular and object-oriented implementation +- commit early and often - at least once per 24 hours + +# Timeline + +We leave exact timing to the candidate. Must fit Within 5 days total. + +# User story + +As a user of this software I can start it passing: + +- path to input data (eg. pw.in / POSCAR, INCAR, KPOINTS) and +- kinetic energy cutoff + +as parameters and get the k-point dimensions (eg. 5 5 5). + +# Notes + +- create an account at exabyte.io and use it for the calculation purposes +- suggested modeling engine: Quantum ESPRESSO diff --git a/susyexists/Si_parameter_test.ipynb b/susyexists/Si_parameter_test.ipynb new file mode 100644 index 00000000..1bee14c4 --- /dev/null +++ b/susyexists/Si_parameter_test.ipynb @@ -0,0 +1,110 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from src import model #Import library\n", + "num_core = 8 #Define number of cores" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#Step 1 - Initialize model\n", + "pw = model.pw(project_id=\"Si\") #Define project\n", + "pw.from_poscar(directory=\"./Structures/Si.poscar\") #Load structure\n", + "pw.get_primitive() #Get primitive cell\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ecutwfc: 50.0 DeltaE :-0.0006273841728230423 Ry Time: 0.1938261985778809 seconds\n", + "ecutwfc: 60.0 DeltaE :-0.0003047080408862257 Ry Time: 0.2084970474243164 seconds\n", + "ecutwfc: 70.0 DeltaE :-6.351904913692863e-05 Ry Time: 0.2371938228607178 seconds\n", + "ecutwfc: 80.0 DeltaE :-6.302970438909483e-06 Ry Time: 0.2995648384094238 seconds\n", + "ecutwfc: 90.0 DeltaE :-1.8760475342105565e-06 Ry Time: 0.3129620552062988 seconds\n", + "ecutwfc: 100.0 DeltaE :-1.1352211721771255e-06 Ry Time: 0.3260128498077393 seconds\n", + "ecutwfc: 110.0 DeltaE :-5.068481669923131e-07 Ry Time: 0.4594228267669678 seconds\n", + "ecutwfc: 120.0 DeltaE :-3.066274292251592e-07 Ry Time: 0.4630310535430908 seconds\n", + "ecutwfc: 130.0 DeltaE :-2.0733272876327646e-07 Ry Time: 0.4597089290618896 seconds\n", + "ecutwfc: 140.0 DeltaE :-1.7449340994346585e-07 Ry Time: 0.5133810043334961 seconds\n", + "ecutwfc: 150.0 DeltaE :-1.0422343521554467e-07 Ry Time: 0.5248079299926758 seconds\n", + "ecutwfc: 160.0 DeltaE :-2.12823554335273e-07 Ry Time: 0.5203700065612793 seconds\n", + "ecutwfc: 170.0 DeltaE :-1.0274962747303107e-07 Ry Time: 0.5212390422821045 seconds\n", + "ecutwfc: 180.0 DeltaE :-4.080993676325306e-08 Ry Time: 0.5420069694519043 seconds\n" + ] + } + ], + "source": [ + "res = pw.test('ecutwfc',conv_thr=1e-7,start=40,end=500,step=10,num_core=8,debug=False,out=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "kpoints: 3.0 DeltaE :-0.11467918418520107 Ry Time: 1.894612073898315 seconds\n", + "kpoints: 4.0 DeltaE :-0.02549575453173958 Ry Time: 3.407161951065063 seconds\n", + "kpoints: 5.0 DeltaE :-0.006562763616971168 Ry Time: 2.148712158203125 seconds\n", + "kpoints: 6.0 DeltaE :-0.0016181548250191469 Ry Time: 3.427868127822876 seconds\n", + "kpoints: 7.0 DeltaE :-0.00030730358718500383 Ry Time: 3.61491584777832 seconds\n", + "kpoints: 8.0 DeltaE :-2.980461402835033e-05 Ry Time: 6.036959886550903 seconds\n", + "kpoints: 9.0 DeltaE :7.220643169603136e-06 Ry Time: 7.17269492149353 seconds\n", + "kpoints: 10.0 DeltaE :4.551905615102214e-06 Ry Time: 9.542922973632812 seconds\n", + "kpoints: 11.0 DeltaE :1.018306175382122e-06 Ry Time: 10.97165894508362 seconds\n", + "kpoints: 12.0 DeltaE :-2.4028405931630914e-08 Ry Time: 13.10678911209106 seconds\n" + ] + } + ], + "source": [ + "res = pw.test('kpoints',conv_thr=1e-7,start=2,end=20,step=1,num_core=8,debug=False,out=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/susyexists/Structures/Si.poscar b/susyexists/Structures/Si.poscar new file mode 100644 index 00000000..cb6a29ed --- /dev/null +++ b/susyexists/Structures/Si.poscar @@ -0,0 +1,16 @@ +Si8 +1.0 + 5.4437023729394527 0.0000000000000000 0.0000000000000003 + 0.0000000000000009 5.4437023729394527 0.0000000000000003 + 0.0000000000000000 0.0000000000000000 5.4437023729394527 +Si +8 +direct + 0.7500000000000000 0.7500000000000000 0.2500000000000000 Si + 0.0000000000000000 0.5000000000000000 0.5000000000000000 Si + 0.7500000000000000 0.2500000000000000 0.7500000000000000 Si + 0.0000000000000000 0.0000000000000000 0.0000000000000000 Si + 0.2500000000000000 0.7500000000000000 0.7500000000000000 Si + 0.5000000000000000 0.5000000000000000 0.0000000000000000 Si + 0.2500000000000000 0.2500000000000000 0.2500000000000000 Si + 0.5000000000000000 0.0000000000000000 0.5000000000000000 Si diff --git a/susyexists/config.json b/susyexists/config.json new file mode 100644 index 00000000..893e4e8c --- /dev/null +++ b/susyexists/config.json @@ -0,0 +1,38 @@ +{ + "pw": { + "control": { + "pseudo_dir": "./pseudos/" + }, + "system": { + "degauss": "0.1", + "ecutwfc": "20", + "occupations": "smearing" + }, + "electrons": { + "conv_thr": "1e-6" + }, + "ions": {}, + "cell": {}, + "k_points": "1 1 1 0 0 0" + }, + "ph": { + "inputph": { + "ldisp": "true", + "nq1": "1", + "nq2": "1", + "nq3": "1" + } + }, + "q2r": { + "input": { + "zasr": "simple" + } + }, + "matdyn": { + "input": { + "asr": "simple", + "q_in_band_form": "true", + "q_in_cryst_coord": "true" + } + } +} diff --git a/susyexists/pseudos/Si.UPF b/susyexists/pseudos/Si.UPF new file mode 100644 index 00000000..f8355759 --- /dev/null +++ b/susyexists/pseudos/Si.UPF @@ -0,0 +1,1231 @@ + + + + Si_ONCV_PBE-1.2.upf + + This pseudopotential file has been produced using the code + ONCVPSP (Optimized Norm-Conservinng Vanderbilt PSeudopotential) + scalar-relativistic version 2.1.1, 03/26/2014 by D. R. Hamann + The code is available through a link at URL www.mat-simresearch.com. + Documentation with the package provides a full discription of the + input data below. + + + While it is not required under the terms of the GNU GPL, it is + suggested that you cite D. R. Hamann, Phys. Rev. B 88, 085117 (2013) + in any publication using these pseudopotentials. + + + Copyright 2015 The Regents of the University of California + + This work is licensed under the Creative Commons Attribution-ShareAlike + 4.0 International License. To view a copy of this license, visit + http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to + Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + + This pseudopotential is part of the Schlipf-Gygi norm-conserving + pseudopotential library. Its construction parameters were tuned to + reproduce materials of a training set with very high accuracy and + should be suitable as a general purpose pseudopotential to treat a + variety of different compounds. For details of the construction and + testing of the pseudopotential please refer to: + + M. Schlipf and F. Gygi, Computer Physics Communications (2015) + DOI: 10.1016/j.cpc.2015.05.011 + http://dx.doi.org/10.1016/j.cpc.2015.05.011 + http://www.quantum-simulation.org + + We kindly ask that you include this reference in all publications + associated to this pseudopotential. + + + +# ATOM AND REFERENCE CONFIGURATION +# atsym z nc nv iexc psfile + Si 14.00 3 2 4 upf +# +# n l f energy (Ha) + 1 0 2.00 + 2 0 2.00 + 2 1 6.00 + 3 0 2.00 + 3 1 2.00 +# +# PSEUDOPOTENTIAL AND OPTIMIZATION +# lmax + 1 +# +# l, rc, ep, ncon, nbas, qcut + 0 2.40480 -0.39736 5 8 5.11281 + 1 3.56481 -0.14998 5 8 3.50314 +# +# LOCAL POTENTIAL +# lloc, lpopt, rc(5), dvloc0 + 4 5 1.27795 0.00000 +# +# VANDERBILT-KLEINMAN-BYLANDER PROJECTORs +# l, nproj, debl + 0 2 0.56800 + 1 2 1.00881 +# +# MODEL CORE CHARGE +# icmod, fcfact + 0 0.00000 +# +# LOG DERIVATIVE ANALYSIS +# epsh1, epsh2, depsh + -5.00 3.00 0.02 +# +# OUTPUT GRID +# rlmax, drl + 6.00 0.01 +# +# TEST CONFIGURATIONS +# ncnf + 0 +# nvcnf +# n l f + + + + + + + + + 0.0000 0.0100 0.0200 0.0300 0.0400 0.0500 0.0600 0.0700 + 0.0800 0.0900 0.1000 0.1100 0.1200 0.1300 0.1400 0.1500 + 0.1600 0.1700 0.1800 0.1900 0.2000 0.2100 0.2200 0.2300 + 0.2400 0.2500 0.2600 0.2700 0.2800 0.2900 0.3000 0.3100 + 0.3200 0.3300 0.3400 0.3500 0.3600 0.3700 0.3800 0.3900 + 0.4000 0.4100 0.4200 0.4300 0.4400 0.4500 0.4600 0.4700 + 0.4800 0.4900 0.5000 0.5100 0.5200 0.5300 0.5400 0.5500 + 0.5600 0.5700 0.5800 0.5900 0.6000 0.6100 0.6200 0.6300 + 0.6400 0.6500 0.6600 0.6700 0.6800 0.6900 0.7000 0.7100 + 0.7200 0.7300 0.7400 0.7500 0.7600 0.7700 0.7800 0.7900 + 0.8000 0.8100 0.8200 0.8300 0.8400 0.8500 0.8600 0.8700 + 0.8800 0.8900 0.9000 0.9100 0.9200 0.9300 0.9400 0.9500 + 0.9600 0.9700 0.9800 0.9900 1.0000 1.0100 1.0200 1.0300 + 1.0400 1.0500 1.0600 1.0700 1.0800 1.0900 1.1000 1.1100 + 1.1200 1.1300 1.1400 1.1500 1.1600 1.1700 1.1800 1.1900 + 1.2000 1.2100 1.2200 1.2300 1.2400 1.2500 1.2600 1.2700 + 1.2800 1.2900 1.3000 1.3100 1.3200 1.3300 1.3400 1.3500 + 1.3600 1.3700 1.3800 1.3900 1.4000 1.4100 1.4200 1.4300 + 1.4400 1.4500 1.4600 1.4700 1.4800 1.4900 1.5000 1.5100 + 1.5200 1.5300 1.5400 1.5500 1.5600 1.5700 1.5800 1.5900 + 1.6000 1.6100 1.6200 1.6300 1.6400 1.6500 1.6600 1.6700 + 1.6800 1.6900 1.7000 1.7100 1.7200 1.7300 1.7400 1.7500 + 1.7600 1.7700 1.7800 1.7900 1.8000 1.8100 1.8200 1.8300 + 1.8400 1.8500 1.8600 1.8700 1.8800 1.8900 1.9000 1.9100 + 1.9200 1.9300 1.9400 1.9500 1.9600 1.9700 1.9800 1.9900 + 2.0000 2.0100 2.0200 2.0300 2.0400 2.0500 2.0600 2.0700 + 2.0800 2.0900 2.1000 2.1100 2.1200 2.1300 2.1400 2.1500 + 2.1600 2.1700 2.1800 2.1900 2.2000 2.2100 2.2200 2.2300 + 2.2400 2.2500 2.2600 2.2700 2.2800 2.2900 2.3000 2.3100 + 2.3200 2.3300 2.3400 2.3500 2.3600 2.3700 2.3800 2.3900 + 2.4000 2.4100 2.4200 2.4300 2.4400 2.4500 2.4600 2.4700 + 2.4800 2.4900 2.5000 2.5100 2.5200 2.5300 2.5400 2.5500 + 2.5600 2.5700 2.5800 2.5900 2.6000 2.6100 2.6200 2.6300 + 2.6400 2.6500 2.6600 2.6700 2.6800 2.6900 2.7000 2.7100 + 2.7200 2.7300 2.7400 2.7500 2.7600 2.7700 2.7800 2.7900 + 2.8000 2.8100 2.8200 2.8300 2.8400 2.8500 2.8600 2.8700 + 2.8800 2.8900 2.9000 2.9100 2.9200 2.9300 2.9400 2.9500 + 2.9600 2.9700 2.9800 2.9900 3.0000 3.0100 3.0200 3.0300 + 3.0400 3.0500 3.0600 3.0700 3.0800 3.0900 3.1000 3.1100 + 3.1200 3.1300 3.1400 3.1500 3.1600 3.1700 3.1800 3.1900 + 3.2000 3.2100 3.2200 3.2300 3.2400 3.2500 3.2600 3.2700 + 3.2800 3.2900 3.3000 3.3100 3.3200 3.3300 3.3400 3.3500 + 3.3600 3.3700 3.3800 3.3900 3.4000 3.4100 3.4200 3.4300 + 3.4400 3.4500 3.4600 3.4700 3.4800 3.4900 3.5000 3.5100 + 3.5200 3.5300 3.5400 3.5500 3.5600 3.5700 3.5800 3.5900 + 3.6000 3.6100 3.6200 3.6300 3.6400 3.6500 3.6600 3.6700 + 3.6800 3.6900 3.7000 3.7100 3.7200 3.7300 3.7400 3.7500 + 3.7600 3.7700 3.7800 3.7900 3.8000 3.8100 3.8200 3.8300 + 3.8400 3.8500 3.8600 3.8700 3.8800 3.8900 3.9000 3.9100 + 3.9200 3.9300 3.9400 3.9500 3.9600 3.9700 3.9800 3.9900 + 4.0000 4.0100 4.0200 4.0300 4.0400 4.0500 4.0600 4.0700 + 4.0800 4.0900 4.1000 4.1100 4.1200 4.1300 4.1400 4.1500 + 4.1600 4.1700 4.1800 4.1900 4.2000 4.2100 4.2200 4.2300 + 4.2400 4.2500 4.2600 4.2700 4.2800 4.2900 4.3000 4.3100 + 4.3200 4.3300 4.3400 4.3500 4.3600 4.3700 4.3800 4.3900 + 4.4000 4.4100 4.4200 4.4300 4.4400 4.4500 4.4600 4.4700 + 4.4800 4.4900 4.5000 4.5100 4.5200 4.5300 4.5400 4.5500 + 4.5600 4.5700 4.5800 4.5900 4.6000 4.6100 4.6200 4.6300 + 4.6400 4.6500 4.6600 4.6700 4.6800 4.6900 4.7000 4.7100 + 4.7200 4.7300 4.7400 4.7500 4.7600 4.7700 4.7800 4.7900 + 4.8000 4.8100 4.8200 4.8300 4.8400 4.8500 4.8600 4.8700 + 4.8800 4.8900 4.9000 4.9100 4.9200 4.9300 4.9400 4.9500 + 4.9600 4.9700 4.9800 4.9900 5.0000 5.0100 5.0200 5.0300 + 5.0400 5.0500 5.0600 5.0700 5.0800 5.0900 5.1000 5.1100 + 5.1200 5.1300 5.1400 5.1500 5.1600 5.1700 5.1800 5.1900 + 5.2000 5.2100 5.2200 5.2300 5.2400 5.2500 5.2600 5.2700 + 5.2800 5.2900 5.3000 5.3100 5.3200 5.3300 5.3400 5.3500 + 5.3600 5.3700 5.3800 5.3900 5.4000 5.4100 5.4200 5.4300 + 5.4400 5.4500 5.4600 5.4700 5.4800 5.4900 5.5000 5.5100 + 5.5200 5.5300 5.5400 5.5500 5.5600 5.5700 5.5800 5.5900 + 5.6000 5.6100 5.6200 5.6300 5.6400 5.6500 5.6600 5.6700 + 5.6800 5.6900 5.7000 5.7100 5.7200 5.7300 5.7400 5.7500 + 5.7600 5.7700 5.7800 5.7900 5.8000 5.8100 5.8200 5.8300 + 5.8400 5.8500 5.8600 5.8700 5.8800 5.8900 5.9000 5.9100 + 5.9200 5.9300 5.9400 5.9500 5.9600 5.9700 5.9800 5.9900 + 6.0000 6.0100 + + + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 0.0100 + 0.0100 0.0100 + + + + -2.5160304129e+01 -2.5156559663e+01 -2.5145367977e+01 -2.5126854207e+01 + -2.5101226916e+01 -2.5068778089e+01 -2.5029883139e+01 -2.4985000900e+01 + -2.4934673633e+01 -2.4879527023e+01 -2.4820270180e+01 -2.4757412248e+01 + -2.4690707529e+01 -2.4619908619e+01 -2.4544913952e+01 -2.4465690072e+01 + -2.4382239902e+01 -2.4294588183e+01 -2.4202773826e+01 -2.4106845331e+01 + -2.4006857712e+01 -2.3902870263e+01 -2.3794944832e+01 -2.3683144453e+01 + -2.3567532222e+01 -2.3448170370e+01 -2.3325119484e+01 -2.3198437854e+01 + -2.3068180933e+01 -2.2934400894e+01 -2.2797146278e+01 -2.2656461739e+01 + -2.2512387873e+01 -2.2364961151e+01 -2.2214213926e+01 -2.2060174574e+01 + -2.1902867687e+01 -2.1742314424e+01 -2.1578532926e+01 -2.1411538851e+01 + -2.1241346018e+01 -2.1067967144e+01 -2.0891414679e+01 -2.0711701725e+01 + -2.0528843042e+01 -2.0342856111e+01 -2.0153762250e+01 -1.9961587770e+01 + -1.9766365122e+01 -1.9568134059e+01 -1.9366942824e+01 -1.9162849156e+01 + -1.8955921192e+01 -1.8746238672e+01 -1.8533893323e+01 -1.8318989685e+01 + -1.8101645532e+01 -1.7881991925e+01 -1.7660173498e+01 -1.7436347980e+01 + -1.7210685890e+01 -1.6983369961e+01 -1.6754593800e+01 -1.6524561482e+01 + -1.6293485634e+01 -1.6061586135e+01 -1.5829088782e+01 -1.5596223293e+01 + -1.5363221713e+01 -1.5130316716e+01 -1.4897739845e+01 -1.4665719939e+01 + -1.4434481659e+01 -1.4204244184e+01 -1.3975220005e+01 -1.3747613830e+01 + -1.3521621990e+01 -1.3297431797e+01 -1.3075221158e+01 -1.2855158363e+01 + -1.2637402040e+01 -1.2422101244e+01 -1.2209395660e+01 -1.1999415900e+01 + -1.1792283861e+01 -1.1588113126e+01 -1.1387009382e+01 -1.1189070846e+01 + -1.0994388670e+01 -1.0803047324e+01 -1.0615124949e+01 -1.0430693659e+01 + -1.0249819810e+01 -1.0072564219e+01 -9.8989823400e+00 -9.7291243995e+00 + -9.5630354963e+00 -9.4007558350e+00 -9.2423202946e+00 -9.0877588186e+00 + -8.9370963431e+00 -8.7903527500e+00 -8.6475428366e+00 -8.5086764428e+00 + -8.3737581319e+00 -8.2427869426e+00 -8.1157568288e+00 -7.9926564372e+00 + -7.8734693478e+00 -7.7581734943e+00 -7.6467409698e+00 -7.5391386646e+00 + -7.4353281646e+00 -7.3352657501e+00 -7.2389009776e+00 -7.1461782942e+00 + -7.0570369231e+00 -6.9714100460e+00 -6.8892240431e+00 -6.8103999310e+00 + -6.7348539728e+00 -6.6624937797e+00 -6.5932214436e+00 -6.5269339285e+00 + -6.4635198789e+00 -6.4028605987e+00 -6.3448323139e+00 -6.2893026490e+00 + -6.2361307039e+00 -6.1851687676e+00 -6.1362460770e+00 -6.0891737898e+00 + -6.0437542780e+00 -5.9997824464e+00 -5.9570641603e+00 -5.9154057309e+00 + -5.8746445187e+00 -5.8346266722e+00 -5.7952216703e+00 -5.7563298574e+00 + -5.7178559554e+00 -5.6797439417e+00 -5.6419425664e+00 -5.6044192537e+00 + -5.5671584310e+00 -5.5301456719e+00 -5.4933852483e+00 -5.4568791441e+00 + -5.4206379339e+00 -5.3846728490e+00 -5.3489973601e+00 -5.3136250328e+00 + -5.2785699936e+00 -5.2438444091e+00 -5.2094608889e+00 -5.1754292076e+00 + -5.1417589860e+00 -5.1084574587e+00 -5.0755308179e+00 -5.0429838025e+00 + -5.0108193914e+00 -4.9790400036e+00 -4.9476459113e+00 -4.9166374676e+00 + -4.8860128224e+00 -4.8557705589e+00 -4.8259072537e+00 -4.7964200311e+00 + -4.7673043609e+00 -4.7385562137e+00 -4.7101703242e+00 -4.6821417944e+00 + -4.6544649071e+00 -4.6271341528e+00 -4.6001435689e+00 -4.5734872608e+00 + -4.5471591643e+00 -4.5211531944e+00 -4.4954632799e+00 -4.4700833106e+00 + -4.4450072653e+00 -4.4202291453e+00 -4.3957430102e+00 -4.3715430831e+00 + -4.3476235184e+00 -4.3239788438e+00 -4.3006033168e+00 -4.2774917787e+00 + -4.2546387370e+00 -4.2320392188e+00 -4.2096880970e+00 -4.1875805275e+00 + -4.1657118053e+00 -4.1440771838e+00 -4.1226724025e+00 -4.1014928094e+00 + -4.0805344887e+00 -4.0597931513e+00 -4.0392649393e+00 -4.0189460345e+00 + -3.9988326022e+00 -3.9789212720e+00 -3.9592082959e+00 -3.9396905671e+00 + -3.9203647169e+00 -3.9012276089e+00 -3.8822763374e+00 -3.8635077293e+00 + -3.8449192053e+00 -3.8265078683e+00 -3.8082711123e+00 -3.7902064559e+00 + -3.7723112189e+00 -3.7545832111e+00 -3.7370199771e+00 -3.7196192801e+00 + -3.7023790216e+00 -3.6852968792e+00 -3.6683709673e+00 -3.6515992010e+00 + -3.6349795807e+00 -3.6185102889e+00 -3.6021893394e+00 -3.5860149761e+00 + -3.5699854184e+00 -3.5540988193e+00 -3.5383535433e+00 -3.5227478466e+00 + -3.5072800370e+00 -3.4919485039e+00 -3.4767515617e+00 -3.4616876114e+00 + -3.4467550591e+00 -3.4319522686e+00 -3.4172776837e+00 -3.4027297199e+00 + -3.3883067879e+00 -3.3740073292e+00 -3.3598297607e+00 -3.3457725134e+00 + -3.3318340631e+00 -3.3180127986e+00 -3.3043072292e+00 -3.2907159686e+00 + -3.2772374878e+00 -3.2638704304e+00 -3.2506134911e+00 -3.2374652996e+00 + -3.2244245247e+00 -3.2114898374e+00 -3.1986598194e+00 -3.1859332481e+00 + -3.1733088943e+00 -3.1607854555e+00 -3.1483617369e+00 -3.1360365380e+00 + -3.1238085869e+00 -3.1116767424e+00 -3.0996398630e+00 -3.0876967359e+00 + -3.0758462566e+00 -3.0640873359e+00 -3.0524188164e+00 -3.0408396230e+00 + -3.0293487233e+00 -3.0179450177e+00 -3.0066274531e+00 -2.9953950551e+00 + -2.9842467852e+00 -2.9731816036e+00 -2.9621985961e+00 -2.9512967886e+00 + -2.9404751469e+00 -2.9297328183e+00 -2.9190688798e+00 -2.9084823458e+00 + -2.8979723759e+00 -2.8875381094e+00 -2.8771786280e+00 -2.8668930794e+00 + -2.8566806724e+00 -2.8465405607e+00 -2.8364718714e+00 -2.8264738829e+00 + -2.8165458092e+00 -2.8066867993e+00 -2.7968961512e+00 -2.7871731387e+00 + -2.7775169864e+00 -2.7679269534e+00 -2.7584023893e+00 -2.7489425950e+00 + -2.7395467978e+00 -2.7302144067e+00 -2.7209447682e+00 -2.7117371878e+00 + -2.7025910190e+00 -2.6935056869e+00 -2.6844805737e+00 -2.6755149928e+00 + -2.6666084229e+00 -2.6577602896e+00 -2.6489699866e+00 -2.6402369232e+00 + -2.6315606022e+00 -2.6229404784e+00 -2.6143759566e+00 -2.6058665452e+00 + -2.5974117510e+00 -2.5890110570e+00 -2.5806638980e+00 -2.5723698487e+00 + -2.5641284258e+00 -2.5559391247e+00 -2.5478014543e+00 -2.5397149955e+00 + -2.5316792911e+00 -2.5236938519e+00 -2.5157582451e+00 -2.5078720577e+00 + -2.5000348554e+00 -2.4922461670e+00 -2.4845056016e+00 -2.4768127538e+00 + -2.4691672088e+00 -2.4615685147e+00 -2.4540163084e+00 -2.4465101933e+00 + -2.4390497687e+00 -2.4316346093e+00 -2.4242643615e+00 -2.4169386412e+00 + -2.4096570597e+00 -2.4024192138e+00 -2.3952247558e+00 -2.3880733133e+00 + -2.3809645095e+00 -2.3738979555e+00 -2.3668733113e+00 -2.3598902150e+00 + -2.3529483009e+00 -2.3460471891e+00 -2.3391865497e+00 -2.3323660308e+00 + -2.3255852786e+00 -2.3188439163e+00 -2.3121416288e+00 -2.3054780742e+00 + -2.2988529111e+00 -2.2922657665e+00 -2.2857163384e+00 -2.2792043000e+00 + -2.2727293221e+00 -2.2662910402e+00 -2.2598891597e+00 -2.2535233799e+00 + -2.2471933879e+00 -2.2408988386e+00 -2.2346394319e+00 -2.2284149055e+00 + -2.2222249672e+00 -2.2160693127e+00 -2.2099476286e+00 -2.2038596764e+00 + -2.1978051806e+00 -2.1917838655e+00 -2.1857954228e+00 -2.1798396167e+00 + -2.1739161867e+00 -2.1680248688e+00 -2.1621653778e+00 -2.1563374587e+00 + -2.1505408792e+00 -2.1447753880e+00 -2.1390407300e+00 -2.1333366252e+00 + -2.1276628673e+00 -2.1220192168e+00 -2.1164054341e+00 -2.1108212567e+00 + -2.1052664597e+00 -2.0997408293e+00 -2.0942441369e+00 -2.0887761515e+00 + -2.0833366149e+00 -2.0779253420e+00 -2.0725421150e+00 -2.0671867160e+00 + -2.0618589102e+00 -2.0565584826e+00 -2.0512852441e+00 -2.0460389871e+00 + -2.0408195037e+00 -2.0356265580e+00 -2.0304599722e+00 -2.0253195543e+00 + -2.0202051063e+00 -2.0151164259e+00 -2.0100532909e+00 -2.0050155417e+00 + -2.0000029894e+00 -1.9950154452e+00 -1.9900527083e+00 -1.9851145834e+00 + -1.9802009118e+00 -1.9753115133e+00 -1.9704462079e+00 -1.9656047982e+00 + -1.9607871107e+00 -1.9559929888e+00 -1.9512222609e+00 -1.9464747552e+00 + -1.9417502793e+00 -1.9370486765e+00 -1.9323697940e+00 -1.9277134681e+00 + -1.9230795352e+00 -1.9184678093e+00 -1.9138781456e+00 -1.9093103968e+00 + -1.9047644068e+00 -1.9002400194e+00 -1.8957370569e+00 -1.8912553817e+00 + -1.8867948534e+00 -1.8823553233e+00 -1.8779366424e+00 -1.8735386423e+00 + -1.8691611886e+00 -1.8648041493e+00 -1.8604673825e+00 -1.8561507463e+00 + -1.8518540828e+00 -1.8475772568e+00 -1.8433201460e+00 -1.8390826150e+00 + -1.8348645287e+00 -1.8306657410e+00 -1.8264861122e+00 -1.8223255309e+00 + -1.8181838679e+00 -1.8140609945e+00 -1.8099567776e+00 -1.8058710698e+00 + -1.8018037713e+00 -1.7977547591e+00 -1.7937239104e+00 -1.7897111021e+00 + -1.7857161890e+00 -1.7817390708e+00 -1.7777796345e+00 -1.7738377630e+00 + -1.7699133391e+00 -1.7660062330e+00 -1.7621163287e+00 -1.7582435281e+00 + -1.7543877195e+00 -1.7505487911e+00 -1.7467266302e+00 -1.7429211021e+00 + -1.7391321243e+00 -1.7353595902e+00 -1.7316033932e+00 -1.7278634268e+00 + -1.7241395708e+00 -1.7204317235e+00 -1.7167397946e+00 -1.7130636826e+00 + -1.7094032860e+00 -1.7057585031e+00 -1.7021292086e+00 -1.6985153289e+00 + -1.6949167674e+00 -1.6913334272e+00 -1.6877652116e+00 -1.6842120150e+00 + -1.6806737355e+00 -1.6771502958e+00 -1.6736416038e+00 -1.6701475670e+00 + -1.6666680931e+00 -1.6632030745e+00 -1.6597524288e+00 -1.6563160760e+00 + -1.6528939281e+00 -1.6494858970e+00 -1.6460918947e+00 -1.6427118130e+00 + -1.6393455852e+00 -1.6359931297e+00 -1.6326543626e+00 -1.6293292000e+00 + -1.6260175565e+00 -1.6227193292e+00 -1.6194344586e+00 -1.6161628647e+00 + -1.6129044675e+00 -1.6096591868e+00 -1.6064269393e+00 -1.6032076307e+00 + -1.6000012029e+00 -1.5968075796e+00 -1.5936266844e+00 -1.5904584411e+00 + -1.5873027694e+00 -1.5841595804e+00 -1.5810288184e+00 -1.5779104108e+00 + -1.5748042848e+00 -1.5717103677e+00 -1.5686285837e+00 -1.5655588459e+00 + -1.5625011024e+00 -1.5594552840e+00 -1.5564213212e+00 -1.5533991448e+00 + -1.5503886849e+00 -1.5473898532e+00 -1.5444026029e+00 -1.5414268680e+00 + -1.5384625823e+00 -1.5355096797e+00 -1.5325680940e+00 -1.5296377430e+00 + -1.5267185758e+00 -1.5238105327e+00 -1.5209135507e+00 -1.5180275668e+00 + -1.5151525180e+00 -1.5122883302e+00 -1.5094349445e+00 -1.5065923092e+00 + -1.5037603643e+00 -1.5009390495e+00 -1.4981283049e+00 -1.4953280660e+00 + -1.4925382630e+00 -1.4897588532e+00 -1.4869897792e+00 -1.4842309837e+00 + -1.4814824094e+00 -1.4787439991e+00 -1.4760156806e+00 -1.4732974099e+00 + -1.4705891360e+00 -1.4678908041e+00 -1.4652023597e+00 -1.4625237482e+00 + -1.4598549093e+00 -1.4571957823e+00 -1.4545463276e+00 -1.4519064929e+00 + -1.4492762263e+00 -1.4466554756e+00 -1.4440441888e+00 -1.4414423008e+00 + -1.4388497696e+00 -1.4362665501e+00 -1.4336925927e+00 -1.4311278477e+00 + -1.4285722654e+00 -1.4260257948e+00 -1.4234883722e+00 -1.4209599659e+00 + -1.4184405284e+00 -1.4159300124e+00 -1.4134283706e+00 -1.4109355557e+00 + -1.4084515142e+00 -1.4059761948e+00 -1.4035095631e+00 -1.4010515740e+00 + -1.3986021823e+00 -1.3961613429e+00 -1.3937290106e+00 -1.3913051314e+00 + -1.3888896627e+00 -1.3864825689e+00 -1.3840838069e+00 -1.3816933338e+00 + -1.3793111065e+00 -1.3769370819e+00 -1.3745712066e+00 -1.3722134437e+00 + -1.3698637576e+00 -1.3675221074e+00 -1.3651884520e+00 -1.3628627504e+00 + -1.3605449616e+00 -1.3582350340e+00 -1.3559329332e+00 -1.3536386252e+00 + -1.3513520708e+00 -1.3490732311e+00 -1.3468020667e+00 -1.3445385387e+00 + -1.3422825986e+00 -1.3400342116e+00 -1.3377933465e+00 -1.3355599660e+00 + -1.3333340327e+00 -1.3311155093e+00 + + + + 0.0000000000E+00 -2.8221815062E-02 -5.6445494142E-02 -8.4672798168E-02 + -1.1290528242E-01 -1.4114419501E-01 -1.6939037698E-01 -1.9764416444E-01 + -2.2590529334E-01 -2.5417280732E-01 -2.8244496915E-01 -3.1071917621E-01 + -3.3899188047E-01 -3.6725851339E-01 -3.9551341617E-01 -4.2374977575E-01 + -4.5195956687E-01 -4.8013350061E-01 -5.0826097965E-01 -5.3633006056E-01 + -5.6432742342E-01 -5.9223834894E-01 -6.2004670325E-01 -6.4773493059E-01 + -6.7528405400E-01 -7.0267368405E-01 -7.2988203575E-01 -7.5688595357E-01 + -7.8366094466E-01 -8.1018122006E-01 -8.3641974404E-01 -8.6234829123E-01 + -8.8793751146E-01 -9.1315700190E-01 -9.3797538772E-01 -9.6236040671E-01 + -9.8627900572E-01 -1.0096974376E+00 -1.0325813683E+00 -1.0548959893E+00 + -1.0766061328E+00 -1.0976763939E+00 -1.1180712564E+00 -1.1377552226E+00 + -1.1566929460E+00 -1.1748493674E+00 -1.1921898527E+00 -1.2086803323E+00 + -1.2242874399E+00 -1.2389786543E+00 -1.2527224472E+00 -1.2654884143E+00 + -1.2772474045E+00 -1.2879716911E+00 -1.2976350646E+00 -1.3062129874E+00 + -1.3136827195E+00 -1.3200234233E+00 -1.3252163082E+00 -1.3292447140E+00 + -1.3320942308E+00 -1.3337528104E+00 -1.3342107988E+00 -1.3334611157E+00 + -1.3314992447E+00 -1.3283233091E+00 -1.3239341926E+00 -1.3183355172E+00 + -1.3115336917E+00 -1.3035379589E+00 -1.2943604150E+00 -1.2840159881E+00 + -1.2725224433E+00 -1.2599003611E+00 -1.2461731164E+00 -1.2313668437E+00 + -1.2155103671E+00 -1.1986351443E+00 -1.1807751919E+00 -1.1619669990E+00 + -1.1422494296E+00 -1.1216636141E+00 -1.1002528308E+00 -1.0780623759E+00 + -1.0551394246E+00 -1.0315328824E+00 -1.0072932274E+00 -9.8247234402E-01 + -9.5712334873E-01 -9.3130040903E-01 -9.0505855525E-01 -8.7845348673E-01 + -8.5154137294E-01 -8.2437865042E-01 -7.9702181635E-01 -7.6952722003E-01 + -7.4195085302E-01 -7.1434821609E-01 -6.8677390600E-01 -6.5928155968E-01 + -6.3192362688E-01 -6.0475115787E-01 -5.7781360791E-01 -5.5115873666E-01 + -5.2483227904E-01 -4.9887765189E-01 -4.7333605091E-01 -4.4824620147E-01 + -4.2364436891E-01 -3.9956392409E-01 -3.7603514691E-01 -3.5308549759E-01 + -3.3073948786E-01 -3.0901860407E-01 -2.8794058194E-01 -2.6752024376E-01 + -2.4776940468E-01 -2.2869649292E-01 -2.1030639794E-01 -1.9260118193E-01 + -1.7558023252E-01 -1.5923918508E-01 -1.4357125705E-01 -1.2856728225E-01 + -1.1421521153E-01 -1.0050086910E-01 -8.7408295800E-02 -7.4919574579E-02 + -6.3015584453E-02 -5.1675982987E-02 -4.0879118758E-02 -3.0603560471E-02 + -2.0827219717E-02 -1.1530587296E-02 -2.6960536196E-03 5.6933329069E-03 + 1.3649262182E-02 2.1183224529E-02 2.8303792615E-02 3.5017205748E-02 + 4.1329605057E-02 4.7244681143E-02 5.2766576570E-02 5.7898783676E-02 + 6.2645082956E-02 6.7009455920E-02 7.0996674550E-02 7.4611963115E-02 + 7.7861475917E-02 8.0752158018E-02 8.3291622422E-02 8.5488566224E-02 + 8.7352042038E-02 8.8892215701E-02 9.0119548828E-02 9.1045280625E-02 + 9.1681015941E-02 9.2038858010E-02 9.2131194283E-02 9.1970801067E-02 + 9.1570514692E-02 9.0943594386E-02 9.0103044884E-02 8.9062419882E-02 + 8.7834667821E-02 8.6433452357E-02 8.4871490865E-02 8.3162378388E-02 + 8.1318468468E-02 7.9353115688E-02 7.7278212047E-02 7.5106706083E-02 + 7.2849960607E-02 7.0520357522E-02 6.8128689522E-02 6.5686615086E-02 + 6.3204339951E-02 6.0692646067E-02 5.8161156381E-02 5.5619628883E-02 + 5.3077124086E-02 5.0542239380E-02 4.8023501758E-02 4.5528231064E-02 + 4.3064447069E-02 4.0638107774E-02 3.8256734615E-02 3.5925087076E-02 + 3.3649566515E-02 3.1434393662E-02 2.9284476182E-02 2.7203678286E-02 + 2.5195325304E-02 2.3262974752E-02 2.1408405235E-02 1.9634808063E-02 + 1.7942846275E-02 1.6334421616E-02 1.4810054472E-02 1.3370091312E-02 + 1.2014931246E-02 1.0743576870E-02 9.5560333975E-03 8.4505812108E-03 + 7.4260862543E-03 6.4808452755E-03 5.6125602920E-03 4.8194090931E-03 + 4.0984157774E-03 3.4470424015E-03 2.8623005910E-03 2.3409480898E-03 + 1.8798492482E-03 1.4754749275E-03 1.1242993649E-03 8.2275609307E-04 + 5.6722371900E-04 3.5380455999E-04 1.7906799390E-04 3.9175479243E-05 + -6.9563899372E-05 -1.5042686328E-04 -2.0738093672E-04 -2.4340600869E-04 + -2.6168902892E-04 -2.6590392705E-04 -2.5821171217E-04 -2.4176438089E-04 + -2.1916537887E-04 -1.9209316461E-04 -1.6341344735E-04 -1.3436562271E-04 + -1.0611056278E-04 -8.1064671060E-05 -5.8949209202E-05 -4.0573918929E-05 + -2.7062732269E-05 -1.7264995276E-05 -1.1361026416E-05 -9.0187223690E-06 + -8.2275179000E-06 -6.4979956464E-06 -3.5021442825E-06 -8.1492721747E-07 + 4.2135375221E-07 4.9654080995E-07 1.3679919748E-07 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 0.0000000000E+00 -2.2617493275E-02 -4.5216914859E-02 -6.7780069759E-02 + -9.0288517322E-02 -1.1272345081E-01 -1.3506557978E-01 -1.5729501634E-01 + -1.7939116598E-01 -2.0133262408E-01 -2.2309707887E-01 -2.4466122163E-01 + -2.6600066503E-01 -2.8708987034E-01 -3.0790208419E-01 -3.2840928561E-01 + -3.4858214399E-01 -3.6838998850E-01 -3.8780078947E-01 -4.0678115231E-01 + -4.2529632421E-01 -4.4331021412E-01 -4.6078542610E-01 -4.7768330647E-01 + -4.9396400464E-01 -5.0958654788E-01 -5.2450892987E-01 -5.3868821308E-01 + -5.5208064453E-01 -5.6464178505E-01 -5.7632665149E-01 -5.8708987150E-01 + -5.9688585019E-01 -6.0566894784E-01 -6.1339367183E-01 -6.2001487023E-01 + -6.2548794854E-01 -6.2976907921E-01 -6.3281542910E-01 -6.3458539357E-01 + -6.3503882872E-01 -6.3413729376E-01 -6.3184429502E-01 -6.2812553181E-01 + -6.2294914272E-01 -6.1628595127E-01 -6.0810970922E-01 -5.9839733635E-01 + -5.8712915114E-01 -5.7428910148E-01 -5.5986499706E-01 -5.4384870300E-01 + -5.2623632473E-01 -5.0702845469E-01 -4.8623027470E-01 -4.6385175651E-01 + -4.3990779888E-01 -4.1441832542E-01 -3.8740842892E-01 -3.5890841425E-01 + -3.2895388000E-01 -2.9758577258E-01 -2.6485032981E-01 -2.3079918256E-01 + -1.9548921930E-01 -1.5898254185E-01 -1.2134642812E-01 -8.2653150320E-02 + -4.2979845639E-02 -2.4083517635E-03 3.8975005336E-02 8.1079652409E-02 + 1.2381102588E-01 1.6707085666E-01 2.1075749183E-01 2.5476626062E-01 + 2.9898982326E-01 3.4331857540E-01 3.8764107005E-01 4.3184446236E-01 + 4.7581497597E-01 5.1943838895E-01 5.6260053758E-01 6.0518783591E-01 + 6.4708780888E-01 6.8818963657E-01 7.2838470711E-01 7.6756717557E-01 + 8.0563452583E-01 8.4248813254E-01 8.7803381974E-01 9.1218241290E-01 + 9.4485028066E-01 9.7595986251E-01 1.0054401785E+00 1.0332273167E+00 + 1.0592648945E+00 1.0835042363E+00 1.1059054759E+00 1.1264373575E+00 + 1.1450776414E+00 1.1618134115E+00 1.1766412913E+00 1.1895673908E+00 + 1.2006078275E+00 1.2097889728E+00 1.2171467753E+00 1.2227269116E+00 + 1.2265843699E+00 1.2287838181E+00 1.2293991989E+00 1.2285126948E+00 + 1.2262144162E+00 1.2226020205E+00 1.2177802161E+00 1.2118592021E+00 + 1.2049542364E+00 1.1971848138E+00 1.1886726091E+00 1.1795407194E+00 + 1.1699138629E+00 1.1599131580E+00 1.1496568083E+00 1.1392603853E+00 + 1.1288306294E+00 1.1184638960E+00 1.1082495945E+00 1.0982616350E+00 + 1.0885548433E+00 1.0791709080E+00 1.0701102992E+00 1.0613320189E+00 + 1.0527743198E+00 1.0443322811E+00 1.0358934750E+00 1.0273305821E+00 + 1.0185170714E+00 1.0093297980E+00 9.9965333877E-01 9.8939641258E-01 + 9.7846803855E-01 9.6681504516E-01 9.5439015193E-01 9.4116645561E-01 + 9.2714066624E-01 9.1231056879E-01 8.9670333343E-01 8.8034409702E-01 + 8.6327401399E-01 8.4553810801E-01 8.2718729446E-01 8.0827659158E-01 + 7.8886328917E-01 7.6900544989E-01 7.4876295213E-01 7.2819357681E-01 + 7.0735601617E-01 6.8630639840E-01 6.6509973448E-01 6.4378951592E-01 + 6.2242582573E-01 6.0105880450E-01 5.7973316575E-01 5.5849519495E-01 + 5.3738425932E-01 5.1644245618E-01 4.9570406704E-01 4.7520680357E-01 + 4.5498022397E-01 4.3505755773E-01 4.1546403183E-01 3.9622836724E-01 + 3.7737184740E-01 3.5891870492E-01 3.4088664870E-01 3.2329547451E-01 + 3.0615966109E-01 2.8949464442E-01 2.7331198797E-01 2.5762287355E-01 + 2.4243622725E-01 2.2775912159E-01 2.1359807490E-01 1.9995625095E-01 + 1.8683792722E-01 1.7424263357E-01 1.6217249646E-01 1.5062410033E-01 + 1.3959645380E-01 1.2908458786E-01 1.1908411059E-01 1.0958878635E-01 + 1.0059114418E-01 9.2083683330E-02 8.4056381276E-02 7.6500313885E-02 + 6.9403752540E-02 6.2755605957E-02 5.6543447984E-02 5.0754258899E-02 + 4.5374726418E-02 4.0390638638E-02 3.5787502546E-02 3.1550521091E-02 + 2.7664267876E-02 2.4113275888E-02 2.0881993745E-02 1.7953831480E-02 + 1.5313579003E-02 1.2944459444E-02 1.0830669709E-02 8.9565811653E-03 + 7.3050254242E-03 5.8617649047E-03 4.6101871077E-03 3.5353189670E-03 + 2.6231351342E-03 1.8568031558E-03 1.2244957924E-03 7.1145314742E-04 + 3.0398749557E-04 -8.9051522939E-06 -2.4166157102E-04 -4.0404358183E-04 + -5.0662623854E-04 -5.6194581045E-04 -5.7657207476E-04 -5.6075544754E-04 + -5.2282735721E-04 -4.6789193181E-04 -4.0496846495E-04 -3.3789566867E-04 + -2.7026100964E-04 -2.0946348948E-04 -1.5484602095E-04 -1.0898232458E-04 + -7.5354929872E-05 -5.0934286974E-05 -3.6698428998E-05 -3.1955472692E-05 + -3.0527339774E-05 -2.4594376958E-05 -1.3564940118E-05 -3.2121979946E-06 + 1.5707686451E-06 1.8510591901E-06 5.0997502442E-07 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 0.0000000000E+00 7.8147995169E-04 3.1239584188E-03 7.0215567989E-03 + 1.2464495942E-02 1.9439123871E-02 2.7927954469E-02 3.7909717009E-02 + 4.9359416381E-02 6.2248403811E-02 7.6544457872E-02 9.2211875516E-02 + 1.0921157285E-01 1.2750119535E-01 1.4703523714E-01 1.6776516904E-01 + 1.8963957485E-01 2.1260429560E-01 2.3660258123E-01 2.6157524925E-01 + 2.8746084984E-01 3.1419583708E-01 3.4171474542E-01 3.6995037130E-01 + 3.9883395893E-01 4.2829539003E-01 4.5826337663E-01 4.8866565672E-01 + 5.1942919167E-01 5.5048036535E-01 5.8174518394E-01 6.1314947612E-01 + 6.4461909280E-01 6.7608010590E-01 7.0745900601E-01 7.3868289706E-01 + 7.6967968958E-01 8.0037828945E-01 8.3070878377E-01 8.6060262214E-01 + 8.8999279297E-01 9.1881399464E-01 9.4700280088E-01 9.7449781978E-01 + 1.0012398461E+00 1.0271720067E+00 1.0522398977E+00 1.0763917152E+00 + 1.0995783762E+00 1.1217536327E+00 1.1428741736E+00 1.1628997219E+00 + 1.1817931236E+00 1.1995204145E+00 1.2160508980E+00 1.2313571957E+00 + 1.2454152933E+00 1.2582045850E+00 1.2697078886E+00 1.2799114739E+00 + 1.2888050635E+00 1.2963818210E+00 1.3026383707E+00 1.3075747180E+00 + 1.3111942652E+00 1.3135037675E+00 1.3145132314E+00 1.3142359035E+00 + 1.3126881944E+00 1.3098895815E+00 1.3058625122E+00 1.3006323353E+00 + 1.2942271862E+00 1.2866778825E+00 1.2780177942E+00 1.2682827005E+00 + 1.2575106905E+00 1.2457420120E+00 1.2330189270E+00 1.2193855624E+00 + 1.2048877556E+00 1.1895728956E+00 1.1734897605E+00 1.1566883514E+00 + 1.1392197233E+00 1.1211358133E+00 1.1024892670E+00 1.0833332632E+00 + 1.0637213375E+00 1.0437072051E+00 1.0233445839E+00 1.0026870176E+00 + 9.8178770009E-01 9.6069930103E-01 9.3947379334E-01 9.1816228334E-01 + 8.9681484380E-01 8.7548040777E-01 8.5420644581E-01 8.3303894426E-01 + 8.1202223184E-01 7.9119882559E-01 7.7060929153E-01 7.5029215612E-01 + 7.3028369192E-01 7.1061775709E-01 6.9132581669E-01 6.7243678426E-01 + 6.5397697896E-01 6.3596990791E-01 6.1843618745E-01 6.0139360667E-01 + 5.8485703184E-01 5.6883832994E-01 5.5334618531E-01 5.3838630201E-01 + 5.2396132146E-01 5.1007072670E-01 4.9671088877E-01 4.8387515969E-01 + 4.7155379753E-01 4.5973407522E-01 4.4840037177E-01 4.3753408130E-01 + 4.2711388404E-01 4.1711588803E-01 4.0751339144E-01 3.9827739875E-01 + 3.8937692574E-01 3.8077799218E-01 3.7244239955E-01 3.6432904772E-01 + 3.5639337214E-01 3.4859243713E-01 3.4088570271E-01 3.3323207774E-01 + 3.2560097591E-01 3.1796212422E-01 3.1029186228E-01 3.0257403690E-01 + 2.9479279838E-01 2.8694224500E-01 2.7901681947E-01 2.7101545700E-01 + 2.6294063371E-01 2.5479515002E-01 2.4658566641E-01 2.3831842368E-01 + 2.3000138169E-01 2.2164261424E-01 2.1325074818E-01 2.0483426554E-01 + 1.9640202661E-01 1.8796226583E-01 1.7952358496E-01 1.7109391032E-01 + 1.6268131707E-01 1.5429340790E-01 1.4593769932E-01 1.3762146859E-01 + 1.2935174509E-01 1.2113549642E-01 1.1297936087E-01 1.0489002086E-01 + 9.6873806697E-02 8.8937141180E-02 8.1086103072E-02 7.3326875738E-02 + 6.5665315284E-02 5.8107375885E-02 5.0658697293E-02 4.3325002214E-02 + 3.6111704509E-02 2.9024279821E-02 2.2067897231E-02 1.5247756997E-02 + 8.5687605369E-03 2.0357933537E-03 -4.3465338847E-03 -1.0573698191E-02 + -1.6641400948E-02 -2.2545534158E-02 -2.8282130695E-02 -3.3847550008E-02 + -3.9238175856E-02 -4.4450881879E-02 -4.9482425447E-02 -5.4330194591E-02 + -5.8991454332E-02 -6.3464015134E-02 -6.7745741267E-02 -7.1834853213E-02 + -7.5729850131E-02 -7.9429376272E-02 -8.2932569034E-02 -8.6238533552E-02 + -8.9346977884E-02 -9.2257631953E-02 -9.4970633059E-02 -9.7486368456E-02 + -9.9805434405E-02 -1.0192881598E-01 -1.0385763866E-01 -1.0559339191E-01 + -1.0713778485E-01 -1.0849277544E-01 -1.0966058175E-01 -1.1064371231E-01 + -1.1144480595E-01 -1.1206687217E-01 -1.1251304004E-01 -1.1278664884E-01 + -1.1289145238E-01 -1.1283104376E-01 -1.1260956942E-01 -1.1223115511E-01 + -1.1170000690E-01 -1.1102100352E-01 -1.1019842116E-01 -1.0923725367E-01 + -1.0814252573E-01 -1.0691899878E-01 -1.0557229773E-01 -1.0410736434E-01 + -1.0252951690E-01 -1.0084469141E-01 -9.9057801427E-02 -9.7174754141E-02 + -9.5201248785E-02 -9.3142476764E-02 -9.1004738376E-02 -8.8793322640E-02 + -8.6513659143E-02 -8.4172328749E-02 -8.1774089860E-02 -7.9324717856E-02 + -7.6830433429E-02 -7.4295904549E-02 -7.1727011211E-02 -6.9129439674E-02 + -6.6507774304E-02 -6.3867864338E-02 -6.1214800681E-02 -5.8553009801E-02 + -5.5888193228E-02 -5.3224825454E-02 -5.0567091627E-02 -4.7920430241E-02 + -4.5288711188E-02 -4.2675791340E-02 -4.0086736644E-02 -3.7524850345E-02 + -3.4993576159E-02 -3.2497506890E-02 -3.0039436708E-02 -2.7622318805E-02 + -2.5250183653E-02 -2.2925386675E-02 -2.0650325918E-02 -1.8428394421E-02 + -1.6261583887E-02 -1.4151690473E-02 -1.2101412318E-02 -1.0112447259E-02 + -8.1859657208E-03 -6.3239359323E-03 -4.5278147805E-03 -2.7981507313E-03 + -1.1361754499E-03 4.5687176818E-04 1.9810293547E-03 3.4357745313E-03 + 4.8201030841E-03 6.1345722331E-03 7.3791912921E-03 8.5535857656E-03 + 9.6584028716E-03 1.0694210131E-02 1.1661306453E-02 1.2560372392E-02 + 1.3392455269E-02 1.4158414511E-02 1.4859082575E-02 1.5495841458E-02 + 1.6069933377E-02 1.6582577671E-02 1.7035265156E-02 1.7429524025E-02 + 1.7766946306E-02 1.8049179436E-02 1.8277900336E-02 1.8454879979E-02 + 1.8582130007E-02 1.8661321340E-02 1.8694336931E-02 1.8683291291E-02 + 1.8630178487E-02 1.8536767850E-02 1.8405073346E-02 1.8237581457E-02 + 1.8035883926E-02 1.7801943060E-02 1.7538021480E-02 1.7246332179E-02 + 1.6928436493E-02 1.6586319284E-02 1.6222498441E-02 1.5838582041E-02 + 1.5436243384E-02 1.5017439644E-02 1.4584729079E-02 1.4139153224E-02 + 1.3682447181E-02 1.3216673480E-02 1.2743767861E-02 1.2264769402E-02 + 1.1781249039E-02 1.1295299373E-02 1.0808215231E-02 1.0321020089E-02 + 9.8350876254E-03 9.3524541060E-03 8.8738281220E-03 8.4001826460E-03 + 7.9326716292E-03 7.4731907333E-03 7.0219625404E-03 6.5798633383E-03 + 6.1478714926E-03 5.7275007326E-03 5.3187767150E-03 4.9223753836E-03 + 4.5390795888E-03 4.1700175399E-03 3.8150860233E-03 3.4747371118E-03 + 3.1495242456E-03 2.8402713493E-03 2.5467334801E-03 2.2691486469E-03 + 2.0078227902E-03 1.7633456519E-03 1.5353230341E-03 1.3237919611E-03 + 1.1288074571E-03 9.5077794934E-04 7.8915776391E-04 6.4379688060E-04 + 5.1453645719E-04 4.0155030142E-04 3.0423100338E-04 2.2222425673E-04 + 1.5519325798E-04 1.0679059079E-04 7.2726930789E-05 4.9315052014E-05 + 3.4202337633E-05 2.2197575789E-05 1.1904746202E-05 5.2045210825E-06 + 1.3973414112E-06 -5.2237946623E-07 -1.8013058224E-06 -1.9154271305E-06 + -1.2270326155E-06 -1.0670564411E-07 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 0.0000000000E+00 1.1919956725E-03 4.7619438270E-03 1.0691754666E-02 + 1.8951367717E-02 2.9498885227E-02 4.2280758114E-02 5.7232023706E-02 + 7.4276594240E-02 9.3327594922E-02 1.1428775010E-01 1.3704981590E-01 + 1.6149705757E-01 1.8750376936E-01 2.1493583491E-01 2.4365132561E-01 + 2.7350113454E-01 3.0432964315E-01 3.3597541795E-01 3.6827193433E-01 + 4.0104832406E-01 4.3413014392E-01 4.6734016147E-01 5.0049915523E-01 + 5.3342672540E-01 5.6594211200E-01 5.9786501668E-01 6.2901642493E-01 + 6.5921942472E-01 6.8830001864E-01 7.1608792571E-01 7.4241736936E-01 + 7.6712784821E-01 7.9006488649E-01 8.1108076087E-01 8.3003519992E-01 + 8.4679605373E-01 8.6123993101E-01 8.7325280030E-01 8.8273055135E-01 + 8.8957951791E-01 8.9371695570E-01 8.9507147505E-01 8.9358342605E-01 + 8.8920523425E-01 8.8190168531E-01 8.7165015711E-01 8.5844079827E-01 + 8.4227665627E-01 8.2317374456E-01 8.0116103954E-01 7.7628045475E-01 + 7.4858676566E-01 7.1814736788E-01 6.8504216454E-01 6.4936323882E-01 + 6.1121452961E-01 5.7071150784E-01 5.2798066059E-01 4.8315909889E-01 + 4.3639398052E-01 3.8784187980E-01 3.3766838643E-01 2.8604706248E-01 + 2.3315906167E-01 1.7919236705E-01 1.2434070143E-01 6.8803027369E-02 + 1.2782666294E-02 -4.3513685046E-02 -9.9876890441E-02 -1.5609613235E-01 + -2.1195990527E-01 -2.6725692129E-01 -3.2177712278E-01 -3.7531272368E-01 + -4.2765899893E-01 -4.7861530805E-01 -5.2798604626E-01 -5.7558158514E-01 + -6.2121919870E-01 -6.6472397112E-01 -7.0592968210E-01 -7.4467966602E-01 + -7.8082764100E-01 -8.1423850394E-01 -8.4478908790E-01 -8.7236887767E-01 + -8.9688068014E-01 -9.1824124540E-01 -9.3638183516E-01 -9.5124873467E-01 + -9.6280370476E-01 -9.7102437066E-01 -9.7590454432E-01 -9.7745447726E-01 + -9.7570104150E-01 -9.7068781183E-01 -9.6247522132E-01 -9.5114034814E-01 + -9.3677681855E-01 -9.1949458922E-01 -8.9941963728E-01 -8.7669368157E-01 + -8.5147360398E-01 -8.2393055432E-01 -7.9424959799E-01 -7.6262884598E-01 + -7.2927900977E-01 -6.9442179781E-01 -6.5828828022E-01 -6.2111872047E-01 + -5.8316138965E-01 -5.4467149112E-01 -5.0590633086E-01 -4.6712720332E-01 + -4.2859800147E-01 -3.9058156426E-01 -3.5333524637E-01 -3.1711322591E-01 + -2.8216723051E-01 -2.4873175782E-01 -2.1703197613E-01 -1.8728374122E-01 + -1.5968018921E-01 -1.3439271966E-01 -1.1157757280E-01 -9.1360103710E-02 + -7.3832235554E-02 -5.9062109017E-02 -4.7053180661E-02 -3.7747847093E-02 + -3.1052263078E-02 -2.6809896378E-02 -2.4848801716E-02 -2.4968446757E-02 + -2.6969758634E-02 -3.0649561731E-02 -3.5812036001E-02 -4.2291258034E-02 + -4.9914205599E-02 -5.8558933831E-02 -6.8104812818E-02 -7.8455893546E-02 + -8.9544828073E-02 -1.0130091747E-01 -1.1369124765E-01 -1.2667568440E-01 + -1.4023325424E-01 -1.5434519919E-01 -1.6899766506E-01 -1.8418081412E-01 + -1.9988409518E-01 -2.1609813091E-01 -2.3281209895E-01 -2.5001291153E-01 + -2.6768592506E-01 -2.8581314961E-01 -3.0437411463E-01 -3.2334537119E-01 + -3.4270018643E-01 -3.6240952754E-01 -3.8244090763E-01 -4.0275994298E-01 + -4.2332936363E-01 -4.4410996241E-01 -4.6506081035E-01 -4.8613863284E-01 + -5.0729994140E-01 -5.2849831415E-01 -5.4968868653E-01 -5.7082251806E-01 + -5.9185399440E-01 -6.1273354952E-01 -6.3341527563E-01 -6.5384970425E-01 + -6.7399132486E-01 -6.9379189034E-01 -7.1320663028E-01 -7.3218961277E-01 + -7.5069703358E-01 -7.6868630229E-01 -7.8611473603E-01 -8.0294399575E-01 + -8.1913266491E-01 -8.3464738867E-01 -8.4944822493E-01 -8.6350645766E-01 + -8.7678646359E-01 -8.8926168298E-01 -9.0090268147E-01 -9.1168448138E-01 + -9.2158451857E-01 -9.3057937648E-01 -9.3865349522E-01 -9.4578546610E-01 + -9.5196513411E-01 -9.5717731759E-01 -9.6141326271E-01 -9.6466543624E-01 + -9.6692654875E-01 -9.6819608107E-01 -9.6846956057E-01 -9.6775097279E-01 + -9.6604226107E-01 -9.6334871812E-01 -9.5967916988E-01 -9.5504086596E-01 + -9.4944758440E-01 -9.4291163046E-01 -9.3544859907E-01 -9.2707630703E-01 + -9.1781266974E-01 -9.0767931785E-01 -8.9669825468E-01 -8.8489326743E-01 + -8.7228981028E-01 -8.5891490472E-01 -8.4479611300E-01 -8.2996315975E-01 + -8.1444661182E-01 -7.9827713315E-01 -7.8148876956E-01 -7.6411359562E-01 + -7.4618561914E-01 -7.2774179241E-01 -7.0881490569E-01 -6.8944259520E-01 + -6.6966165345E-01 -6.4950654666E-01 -6.2901763751E-01 -6.0822993819E-01 + -5.8717930407E-01 -5.6590810628E-01 -5.4444832947E-01 -5.2283781816E-01 + -5.0111702520E-01 -4.7931710386E-01 -4.5747646104E-01 -4.3563222813E-01 + -4.1381466526E-01 -3.9206181792E-01 -3.7040683279E-01 -3.4887854867E-01 + -3.2751380914E-01 -3.0634144044E-01 -2.8538827343E-01 -2.6468911007E-01 + -2.4426840210E-01 -2.2415036396E-01 -2.0436695439E-01 -1.8493842619E-01 + -1.6588578836E-01 -1.4723742265E-01 -1.2900973273E-01 -1.1121999501E-01 + -9.3892373727E-02 -7.7039886778E-02 -6.0675654763E-02 -4.4819103250E-02 + -2.9480370624E-02 -1.4668143737E-02 -3.9673955145E-04 1.3326117738E-02 + 2.6496268294E-02 3.9104682534E-02 5.1145721544E-02 6.2619626274E-02 + 7.3522596691E-02 8.3850983337E-02 9.3609059025E-02 1.0279791726E-01 + 1.1141611469E-01 1.1947133842E-01 1.2696836363E-01 1.3391021642E-01 + 1.4030546139E-01 1.4616249536E-01 1.5148876674E-01 1.5629364397E-01 + 1.6058835540E-01 1.6438373360E-01 1.6769097926E-01 1.7052296146E-01 + 1.7289267245E-01 1.7481414964E-01 1.7630098986E-01 1.7736754772E-01 + 1.7802959019E-01 1.7830277758E-01 1.7820144971E-01 1.7774155807E-01 + 1.7694221813E-01 1.7581683261E-01 1.7438152132E-01 1.7265489426E-01 + 1.7065386355E-01 1.6839241043E-01 1.6588711980E-01 1.6315930720E-01 + 1.6022078573E-01 1.5708703438E-01 1.5377630771E-01 1.5030624111E-01 + 1.4668806047E-01 1.4293691974E-01 1.3907269177E-01 1.3510689039E-01 + 1.3105150639E-01 1.2692096758E-01 1.2273479110E-01 1.1849932799E-01 + 1.1422681417E-01 1.0993210232E-01 1.0562892683E-01 1.0132357361E-01 + 9.7026624063E-02 9.2752683103E-02 8.8510044909E-02 8.4304815236E-02 + 8.0145778879E-02 7.6046588510E-02 7.2010989413E-02 6.8044637776E-02 + 6.4154481109E-02 6.0352597694E-02 5.6639357789E-02 5.3019648050E-02 + 4.9498995595E-02 4.6086351203E-02 4.2781023311E-02 3.9586485517E-02 + 3.6506809743E-02 3.3548061449E-02 3.0709071800E-02 2.7991893532E-02 + 2.5399075377E-02 2.2934530265E-02 2.0596657362E-02 1.8386310616E-02 + 1.6304609933E-02 1.4353867343E-02 1.2532146202E-02 1.0839334166E-02 + 9.2753477363E-03 7.8412501190E-03 6.5348920543E-03 5.3554112534E-03 + 4.3018836898E-03 3.3741211461E-03 2.5700680758E-03 1.8882181276E-03 + 1.3270632494E-03 9.1967724861E-04 6.3039526964E-04 4.2880211273E-04 + 2.9607577370E-04 1.9119926976E-04 1.0280412506E-04 4.5118178085E-05 + 1.2193178537E-05 -4.4949767497E-06 -1.5499896750E-05 -1.6481889075E-05 + -1.0558384152E-05 -9.1818193541E-07 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 + + + 1.3605849050E+01 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 8.7957345917E-01 0.0000000000E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 5.9060233804E+00 0.0000000000E+00 + 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 2.9822026495E-01 + + + + + + 0.0000000000E+00 2.1715094897E-06 8.7564102574E-06 1.9965954979E-05 + 3.6152682474E-05 5.7811088589E-05 8.5578554165E-05 1.2023651890E-04 + 1.6271188688E-04 2.1407864653E-04 2.7555968502E-04 3.4852877423E-04 + 4.3451270306E-04 5.3519352841E-04 6.5241091476E-04 7.8816453067E-04 + 9.4461646851E-04 1.1240936520E-03 1.3290901956E-03 1.5622696772E-03 + 1.8264672873E-03 2.1246918142E-03 2.4601274265E-03 2.8361352149E-03 + 3.2562544526E-03 3.7242035371E-03 4.2438805747E-03 4.8193635718E-03 + 5.4549101991E-03 6.1549570916E-03 6.9241186534E-03 7.7671853387E-03 + 8.6891213818E-03 9.6950619569E-03 1.0790309686E-02 1.1980330651E-02 + 1.3270749561E-02 1.4667344495E-02 1.6176040838E-02 1.7802904518E-02 + 1.9554134694E-02 2.1436055670E-02 2.3455108141E-02 2.5617839781E-02 + 2.7930895154E-02 3.0401004973E-02 3.3034974718E-02 3.5839672635E-02 + 3.8822017219E-02 4.1988963987E-02 4.5347491489E-02 4.8904587415E-02 + 5.2667234235E-02 5.6642392644E-02 6.0836987615E-02 6.5257891453E-02 + 6.9911907561E-02 7.4805754571E-02 7.9946048386E-02 8.5339286328E-02 + 9.0991829396E-02 9.6909884437E-02 1.0309948939E-01 1.0956649185E-01 + 1.1631653551E-01 1.2335504268E-01 1.3068719452E-01 1.3831791740E-01 + 1.4625186601E-01 1.5449340633E-01 1.6304659974E-01 1.7191518898E-01 + 1.8110258286E-01 1.9061184222E-01 2.0044566587E-01 2.1060637725E-01 + 2.2109591298E-01 2.3191581081E-01 2.4306719874E-01 2.5455078491E-01 + 2.6636684836E-01 2.7851523059E-01 2.9099532805E-01 3.0380608560E-01 + 3.1694599083E-01 3.3041306940E-01 3.4420488139E-01 3.5831851864E-01 + 3.7275060309E-01 3.8749728624E-01 4.0255424955E-01 4.1791670600E-01 + 4.3357940267E-01 4.4953662431E-01 4.6578219805E-01 4.8230949907E-01 + 4.9911145737E-01 5.1618056081E-01 5.3350887577E-01 5.5108804818E-01 + 5.6890931531E-01 5.8696351805E-01 6.0524111331E-01 6.2373218122E-01 + 6.4242644857E-01 6.6131331266E-01 6.8038183935E-01 6.9962078570E-01 + 7.1901860499E-01 7.3856348662E-01 7.5824338325E-01 7.7804600062E-01 + 7.9795881841E-01 8.1796910763E-01 8.3806401676E-01 8.5823051450E-01 + 8.7845541180E-01 8.9872542015E-01 9.1902720615E-01 9.3934733768E-01 + 9.5967227284E-01 9.7998856349E-01 1.0002827155E+00 1.0205411900E+00 + 1.0407505661E+00 1.0608974985E+00 1.0809686367E+00 1.1009507982E+00 + 1.1208309662E+00 1.1405961513E+00 1.1602336211E+00 1.1797308514E+00 + 1.1990753747E+00 1.2182551113E+00 1.2372581675E+00 1.2560727701E+00 + 1.2746876527E+00 1.2930916473E+00 1.3112739288E+00 1.3292240805E+00 + 1.3469318026E+00 1.3643873694E+00 1.3815812455E+00 1.3985042707E+00 + 1.4151477579E+00 1.4315031756E+00 1.4475626393E+00 1.4633184333E+00 + 1.4787633540E+00 1.4938905619E+00 1.5086935679E+00 1.5231663992E+00 + 1.5373033174E+00 1.5510991786E+00 1.5645490712E+00 1.5776486137E+00 + 1.5903937343E+00 1.6027808153E+00 1.6148065974E+00 1.6264682312E+00 + 1.6377632344E+00 1.6486895225E+00 1.6592453510E+00 1.6694293898E+00 + 1.6792405909E+00 1.6886783588E+00 1.6977423015E+00 1.7064325290E+00 + 1.7147492655E+00 1.7226932894E+00 1.7302654040E+00 1.7374670092E+00 + 1.7442994544E+00 1.7507647060E+00 1.7568646312E+00 1.7626016985E+00 + 1.7679782717E+00 1.7729972480E+00 1.7776614744E+00 1.7819741950E+00 + 1.7859387338E+00 1.7895585939E+00 1.7928375763E+00 1.7957793520E+00 + 1.7983882016E+00 1.8006678762E+00 1.8026231340E+00 1.8042578257E+00 + 1.8055768864E+00 1.8065845304E+00 1.8072856408E+00 1.8076848775E+00 + 1.8077869473E+00 1.8075969879E+00 1.8071194511E+00 1.8063599331E+00 + 1.8053227930E+00 1.8040134879E+00 1.8024368484E+00 1.8005979067E+00 + 1.7985020188E+00 1.7961537721E+00 1.7935588868E+00 1.7907218588E+00 + 1.7876480501E+00 1.7843425148E+00 1.7808099783E+00 1.7770560691E+00 + 1.7730851293E+00 1.7689025395E+00 1.7645131169E+00 1.7599215406E+00 + 1.7551332461E+00 1.7501524539E+00 1.7449843435E+00 1.7396336057E+00 + 1.7341046645E+00 1.7284028460E+00 1.7225321567E+00 1.7164974461E+00 + 1.7103033959E+00 1.7039541299E+00 1.6974545973E+00 1.6908088787E+00 + 1.6840212866E+00 1.6770965847E+00 1.6700385453E+00 1.6628516524E+00 + 1.6555401646E+00 1.6481078963E+00 1.6405593347E+00 1.6328982877E+00 + 1.6251285960E+00 1.6172546988E+00 1.6092800182E+00 1.6012084730E+00 + 1.5930441679E+00 1.5847904442E+00 1.5764511720E+00 1.5680301195E+00 + 1.5595305660E+00 1.5509562874E+00 1.5423107514E+00 1.5335971532E+00 + 1.5248191424E+00 1.5159799240E+00 1.5070825885E+00 1.4981306331E+00 + 1.4891270390E+00 1.4800747730E+00 1.4709771623E+00 1.4618369983E+00 + 1.4526571051E+00 1.4434406238E+00 1.4341901866E+00 1.4249084611E+00 + 1.4155983915E+00 1.4062624763E+00 1.3969032155E+00 1.3875233491E+00 + 1.3781252617E+00 1.3687112799E+00 1.3592839345E+00 1.3498455112E+00 + 1.3403981608E+00 1.3309442047E+00 1.3214858373E+00 1.3120250364E+00 + 1.3025639175E+00 1.2931045841E+00 1.2836488484E+00 1.2741986288E+00 + 1.2647559292E+00 1.2553224088E+00 1.2458998253E+00 1.2364899982E+00 + 1.2270945182E+00 1.2177149741E+00 1.2083529910E+00 1.1990100960E+00 + 1.1896877214E+00 1.1803873173E+00 1.1711103190E+00 1.1618580261E+00 + 1.1526317456E+00 1.1434327681E+00 1.1342623023E+00 1.1251215259E+00 + 1.1160115815E+00 1.1069335742E+00 1.0978885743E+00 1.0888776093E+00 + 1.0799016351E+00 1.0709616411E+00 1.0620585497E+00 1.0531932098E+00 + 1.0443664647E+00 1.0355791717E+00 1.0268321107E+00 1.0181259360E+00 + 1.0094614527E+00 1.0008393599E+00 9.9226026254E-01 9.8372474481E-01 + 9.7523349765E-01 9.6678708973E-01 9.5838593794E-01 9.5003063110E-01 + 9.4172171037E-01 9.3345961893E-01 9.2524462265E-01 9.1707731750E-01 + 9.0895809901E-01 9.0088724426E-01 8.9286502895E-01 8.8489192614E-01 + 8.7696823614E-01 8.6909407715E-01 8.6126975769E-01 8.5349562740E-01 + 8.4577190083E-01 8.3809854977E-01 8.3047592524E-01 8.2290425909E-01 + 8.1538368960E-01 8.0791405819E-01 8.0049575688E-01 7.9312891078E-01 + 7.8581356861E-01 7.7854952735E-01 7.7133714192E-01 7.6417646865E-01 + 7.5706747626E-01 7.5000993485E-01 7.4300414673E-01 7.3605011734E-01 + 7.2914775745E-01 7.2229679037E-01 7.1549748256E-01 7.0874979619E-01 + 7.0205360805E-01 6.9540856842E-01 6.8881492655E-01 6.8227260825E-01 + 6.7578148165E-01 6.6934109343E-01 6.6295169476E-01 6.5661318132E-01 + 6.5032541029E-01 6.4408787667E-01 6.3790076733E-01 6.3176398132E-01 + 6.2567735246E-01 6.1964040597E-01 6.1365316655E-01 6.0771557906E-01 + 6.0182745854E-01 5.9598838960E-01 5.9019818967E-01 5.8445687244E-01 + 5.7876423828E-01 5.7311996033E-01 5.6752360503E-01 5.6197527611E-01 + 5.5647476340E-01 5.5102182365E-01 5.4561583669E-01 5.4025690926E-01 + 5.3494485906E-01 5.2967943792E-01 5.2446015783E-01 5.1928679085E-01 + 5.1415930019E-01 5.0907743621E-01 5.0404088008E-01 4.9904902244E-01 + 4.9410198714E-01 4.8919952622E-01 4.8434136294E-01 4.7952694941E-01 + 4.7475610424E-01 4.7002873886E-01 4.6534458243E-01 4.6070330844E-01 + 4.5610426374E-01 4.5154756874E-01 4.4703296083E-01 4.4256015140E-01 + 4.3812863507E-01 4.3373810026E-01 4.2938850323E-01 4.2507956700E-01 + 4.2081098975E-01 4.1658212024E-01 4.1239294618E-01 4.0824327443E-01 + 4.0413281782E-01 4.0006121805E-01 3.9602785502E-01 3.9203281933E-01 + 3.8807583962E-01 3.8415662237E-01 3.8027470990E-01 3.7642968540E-01 + 3.7262154596E-01 3.6885001608E-01 3.6511479936E-01 3.6141536736E-01 + 3.5775145919E-01 3.5412299976E-01 3.5052971256E-01 3.4697130130E-01 + 3.4344719454E-01 3.3995723727E-01 3.3650130636E-01 3.3307912693E-01 + 3.2969040551E-01 3.2633455395E-01 3.2301147301E-01 3.1972101645E-01 + 3.1646291342E-01 3.1323687556E-01 3.1004232297E-01 3.0687916303E-01 + 3.0374725124E-01 3.0064632274E-01 2.9757609626E-01 2.9453602411E-01 + 2.9152597269E-01 2.8854582305E-01 2.8559531803E-01 2.8267418512E-01 + 2.7978193216E-01 2.7691833873E-01 2.7408333382E-01 2.7127666938E-01 + 2.6849808297E-01 2.6574716067E-01 2.6302355208E-01 2.6032725424E-01 + 2.5765802930E-01 2.5501562603E-01 2.5239973026E-01 2.4980982278E-01 + 2.4724598545E-01 2.4470799151E-01 2.4219560171E-01 2.3970856424E-01 + 2.3724632943E-01 2.3480890576E-01 2.3239613486E-01 2.3000779008E-01 + 2.2764363309E-01 2.2530325492E-01 2.2298640393E-01 2.2069305439E-01 + 2.1842299263E-01 2.1617599417E-01 2.1395181027E-01 2.1174990097E-01 + 2.0957038110E-01 2.0741305021E-01 2.0527769779E-01 2.0316410323E-01 + 2.0107186178E-01 1.9900079192E-01 1.9695085130E-01 1.9492184341E-01 + 1.9291356241E-01 1.9092579302E-01 1.8895801126E-01 1.8701033219E-01 + 1.8508257842E-01 1.8317455866E-01 1.8128607296E-01 1.7941680534E-01 + 1.7756647011E-01 1.7573509008E-01 1.7392248827E-01 1.7212847969E-01 + 1.7035287127E-01 1.6859527041E-01 1.6685559176E-01 1.6513377150E-01 + 1.6342963917E-01 1.6174301686E-01 1.6007371919E-01 1.5842130432E-01 + 1.5678583317E-01 1.5516717894E-01 1.5356517835E-01 1.5197966125E-01 + 1.5041043357E-01 1.4885707937E-01 1.4731970418E-01 1.4579815874E-01 + 1.4429228745E-01 1.4280192834E-01 1.4132687120E-01 1.3986677081E-01 + 1.3842170754E-01 1.3699153964E-01 1.3557611955E-01 1.3417529384E-01 + 1.3278885628E-01 1.3141649105E-01 1.3005827182E-01 1.2871406463E-01 + 1.2738373017E-01 1.2606712370E-01 1.2476406116E-01 1.2347421844E-01 + 1.2219767949E-01 1.2093431829E-01 1.1968400384E-01 1.1844660022E-01 + 1.1722196165E-01 1.1600972237E-01 1.1480999148E-01 1.1362265090E-01 + 1.1244757799E-01 1.1128464555E-01 1.1013372180E-01 1.0899448620E-01 + 1.0786696983E-01 1.0675110095E-01 1.0564676518E-01 1.0455384397E-01 + 1.0347221453E-01 1.0240162905E-01 1.0134199942E-01 1.0029331681E-01 + 9.9255474932E-02 9.8228363670E-02 9.7211869050E-02 9.6205827489E-02 + 9.5210009780E-02 9.4224478660E-02 9.3249135724E-02 9.2283879059E-02 + 9.1328603222E-02 9.0383199225E-02 8.9447397526E-02 8.8521221200E-02 + 8.7604618042E-02 8.6697494053E-02 8.5799752009E-02 8.4911291446E-02 + 8.4031950265E-02 8.3161557834E-02 8.2300158864E-02 8.1447666942E-02 + 8.0603992714E-02 7.9769043871E-02 7.8942725128E-02 7.8124806665E-02 + 7.7315288050E-02 7.6514137183E-02 7.5721272206E-02 7.4936608565E-02 + 7.4160058997E-02 7.3391518706E-02 7.2630756973E-02 7.1877854460E-02 + 7.1132736410E-02 7.0395325613E-02 6.9665542394E-02 6.8943304597E-02 + 6.8228469607E-02 6.7520910217E-02 6.6820662299E-02 6.6127655565E-02 + 6.5441817485E-02 6.4763073276E-02 6.4091345890E-02 6.3426471859E-02 + 6.2768392543E-02 6.2117114539E-02 6.1472572020E-02 6.0834697111E-02 + 6.0203419881E-02 5.9578668330E-02 5.8960272941E-02 5.8348212097E-02 + 5.7742477641E-02 5.7143008149E-02 5.6549740333E-02 5.5962609029E-02 + 5.5381547189E-02 5.4806391960E-02 5.4237131031E-02 5.3673754498E-02 + 5.3116205248E-02 5.2564424472E-02 5.2018351651E-02 5.1477924552E-02 + 5.0942997929E-02 5.0413544741E-02 4.9889564660E-02 4.9371004763E-02 + 4.8857810578E-02 4.8349926083E-02 + + diff --git a/susyexists/src/__init__.py b/susyexists/src/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/__pycache__/__init__.cpython-310.pyc b/susyexists/src/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d759392a29d5a1c402ce5905d93257d965219f73 GIT binary patch literal 146 zcmd1j<>g`k0?(=6QbF`%5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!Hienx(7s(x{4 zaizXXYH@Z+et~{bYI%N1YB5+awIZ{)1jsB(){l?R%*!l^kJl@xyv1RYo1apelWGSt Lu9yi(urL4s;yfYH literal 0 HcmV?d00001 diff --git a/susyexists/src/__pycache__/compute.cpython-310.pyc b/susyexists/src/__pycache__/compute.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b6ff8ce778b6e583dff9e9dc5bf2d835a9e46c19 GIT binary patch literal 1126 zcmbtTzi-n(6u$GXy7?ifgjzrhUL%xPLX4OewRL z_9w#ZB>{Anv_uQgy_4}i-(!1l#sagM|G~L-md+RFE1__wKB=(n-#Po=Y^_>%;g3fd z(`_l&^;E{H$bxnzgT?twjQLe)^4c7;qI17&d%DNp<MwKi@~NS+y|ch-Aty#CjpkA?UDv9!^BcLtW^3c*^xfE@Y_qOypdb zNq!Y;_$;lWFcPUOa^8`1Rs!qxQhK z58d>(!dTl)e_*Tw<8_6xu^S`yCt9o7HI|$x94J(MvPE@;KUU!YDV&^v@&Ju}`AjX2 z0>CXtjF*mbHqRE1gUx13jY6pu&S9zj29A(=qvxa!d;I_a_4MKSgAMB3D4hJ3t+1$6 dxlB};u%A>(=f6k=D-wQ8A*J#1KJl%F{~P?<836zQ literal 0 HcmV?d00001 diff --git a/susyexists/src/__pycache__/generate.cpython-310.pyc b/susyexists/src/__pycache__/generate.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e910714a5eea071a161c9964e769ba34c7984966 GIT binary patch literal 3349 zcmb7H-H#kc5ufj!o&C7Y`TTK?g$7{(OXOW*f)MCz5@8<#l2gJ3A)k`x4sb7(h@(&<%2!~(w?Am*d6Tz&yy1Ki*y1Kfm zH|umf4d0Lc_|NF$^P2W|8Z3V%2Ct)ucLA8j^hBHJJGxG|0o>Rz6m9}HcTC_GvlDB_ zQoX%nvo32e_kDfGVJpmIEnp4SW}Wx79hceLTEF*+4$*yGx*`n5<1AsoZ5{;SmG($GF=+MKm|2yDS!>R7q2?(&pG)yn>K%=lB(atN zr~|i88nDXQ&?=K@`z8-76XV9Z#@vnP=ud2{G_m4=T4ycnwekU08kN1Y@`thoIqh`~u(PfiiXOZFZM_rts;hjZvlVENa}6Iouc7Rb z{o^y5zVbzy$}U#jGj_a0b{uz>PZapY|IePv zWvlzf?{)qPqNQ1NNMhxXPcipe<-mLAa1Kq3zFReq+m#3GX61pZMNx*)kHP5?Cur9| zYoVv}JHMe7t*Y~o=INv_Y-puB$1koU0%2`u?jL>Do=YIgiyIW33))L_TCb*M>vI{G zh^p#f)PdGE`Zh%jdeVNGaQ3pY@KMp3bt@I&OxxBlT6s3=U)d^GZbjobjr_pBm)#x3 zZ1c1=7{1N3dr?@3;i*16H3xAjo8vf%MtM-|Nk<%sBAUnsi*|#l5V8?wX~DBZI@z>f zF)!T*;WZv5!J%9Uqa*kYT^>B(HZqKCg+UTdp%^BX?p;_RuH|{ZC!4nq!zia|ZV_P{Mvdd$ zDTi|oq>%~fPJ;aiUJ#tJsccbhqwR(PmmM{D5RPi^cxqVVU1A%N)k$y^aoJ_jIG85I zC>PO`WztL{oC57)1Y;v^knq~FQJza9Kj?R*m)8e}bL5wZz^TpSEj6f5Sa#wRz7LYo z?lcmDud21Vg?6pIH~0By;d8!HQ`N>;bga@QYs6nP{!Of%etWo=O`@TgilgDJNbDC` zj`KLkib$x*=r9(DD8a+wZj?qmD561rB;EXA6sP&La3Mte6~Hnr-O*jkHC^2>yTA?n zdirIB)zEnF3f9}0a~;=M)m?p6H;fC!r@Mv=YD4!GeLZJAaUGhwq8drG-XmDA8c#gS z(>?Gx2I;nR&*|!I0~~0Mz6Lv}?~-)A4N6b9Oz%@m=hw+CxC!d4LJEn+M|cBGRV;?8 zhy1T2-@1i1(@~pDW~f?$YJe(Xs#;;8R+!9I_tydKt+OnT{fy7ejlKFCAz$>Jl2P(o0V`2i57(~AcuhgZa+&Ym=m9cHVjbXa4C zx5Q(5&A62b*i_I{tF4pPaic&?sZr;|#OuQN-MM48a%V>6(CH|wQNO2{X5sgc-i|o0 zS2gka0VwEq2Th&f%2sKlEg3l zKvb}7sY+@2=7`04# zPrV@O!qK=tul9BtW;~K6>ZP<$Bv37h_W1~P;4UQfKO>sN005~Qv1b_W6T>FVH7sD( zzg2VHf33AVN~BLLv-cm%|WZ*z0AZ}4wnY7;hV^#!70s%{s58JINj2vNyb ng}35gGD%&Z`sQp*GB!=3oAkFs^Z?pg8=5JRd#3lR_WFMT9DYsc literal 0 HcmV?d00001 diff --git a/susyexists/src/__pycache__/kpoints.cpython-310.pyc b/susyexists/src/__pycache__/kpoints.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d29db889b06bee231b19cab7ff53c551eb5a986c GIT binary patch literal 1054 zcmah{&1w`u5bo-ppWWF_3>YMP5F&aR1ox6t2#H`oM9n41B`R^U-E20yJ2UB-#cY@X zA-;kqBW!ZZ1NaDnFW{w5qNjZU4>?)Yo0uqqJ#_U~Royl9RaG)I6);>+-v3nJ9mal; za($tVJ;a?YplCD6P5~uY$xlIwW3k1gBi(mw3#2D~Jh`mMDxN|H>nyB=qWyVqV{>!! z>q`66{bv@8F&Ybn1{;+W_HDe_ZT%8d3S+}S-8ZB|0TR@tjs z$#YilBPc}yBPhfP0NZy8SZ8Oj7IJel8}|Du*Td~rl4#k9qg)v;N>dff&@o<`bmBZS zfjzf-oh&!5#U{9VaK>~U|9ZaA+)etbnGLdGb5&*CJV~2cy-9MFS))3@_Xu^X*_{M_ zkPc04CyM3vL?;#*wZVZ3esyp_Pow$=U5*CYmhLQqf{oY-D_M@D8$=!HX%`(x&>bKb zZDu9}u5u2!rvK;~3CeyVrU-c`$et0PJTMD_ErH^4RS;Bh+bq5yz@iH*Hah|={EL^o zbV|1%yit0EJAxBdcoG_nP?zi1g_Co-E%_Yj%eg>5Z=l5@@f$f4B(aUsy^8UHedN+R zc1u6L{lB*~0{?znh>=tHb}Z`qULkNy{WUvnV;ZqB6?#m(55@eQ`Or0RU|?wA(0K8n zzk{W9d(n>Sp{J_QqBKsBzJU*n=&9IL+s0Q_Dm>qeSPR!Yh7#`WLUb?jryI literal 0 HcmV?d00001 diff --git a/susyexists/src/__pycache__/model.cpython-310.pyc b/susyexists/src/__pycache__/model.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f50d9404b988f349785edae7f619539fce4436c GIT binary patch literal 6313 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 PsVbQOvjLMzt={=Bhrq*) literal 0 HcmV?d00001 diff --git a/susyexists/src/__pycache__/plots.cpython-310.pyc b/susyexists/src/__pycache__/plots.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b671f544aa163a4ad9292edc7682a1607bb22e7 GIT binary patch literal 2144 zcmZWq&2Jk;6rb7ewKvX}lP0Bt09C0Gv8y5>KvhAaiiCtJP%DHYs%YaGe`W36%&ybK zT1yDGqCND$ffK6a9DCvdSGaQHK37ip2RM{N`Mq_50v&7K%)WW=&71e$?>U~ED=~~u zfA~xO?J)KyeViXAK0d}w-vbd$@Q7{mVm12aw#At+gc;d=XWPNv7q)O7@NHMP!h68B zJ;Cp=TImG3?Dh!>Cnpn-J_Awt@ zII~_lvx+l2vwIFX@q~|^%$>r4|JiU0ITvSs?&2Zrp&`7MvCd%G1Gn@q*C(zhW#!zP z@Ro6GjQuRYmp|bXev93!j!U?0F86XjFU>5GMpnt~314HPEP^K{XZv4d_H;hC;K#zT z!C4jvA6Bdh7ycTX7_d|xmtkoUGG*LIdXU>c0B=cnVs7>gE6X_--Z}&I;V;>;r`6ml zc$O&5c)2MmdxrW6XDctgex6>>S#A_EzvRvxL;xvTxc$6bZ+x!eo@{1m<2i4P<{G=< zK%|>VQjdq($ZMp{7VT=riH9tmpjy~7uH9C*opwiZRGG=wMVQswgQ22qD}y9oU}$?c z3Y&XKKW}PNNpW}N7Yg-c(5|g2sxv)Lm9di^_4_hYU76}qGV^GsE40&#cWEsbLb4@Q zzpKq8%CrL)hDvHzBXWDK-7?Ous zx4D;s8D<^rhKC1HcL2rkuv2WTqo~{0)*(?h4G$!)s|DIhWzfIFo6?l!x6E zDM?kcL0+fz4Zn`0~IQv-EpuCu9m%!EbgK~E$Qn6hGaEWKS-Mcj?+2MPb%g^R59oHW`sY^fsS8Znx!o%X4(;;U zZo*$-kI`&^@Sry*N}>$3yIDn8xF6EMC!uNqog(PXKVrno;bZPpnFxTV$`drM{oU_a zi;H=&@W9I?F+;N?+^yd(aH1=FJ4xIfWa-YVNbD%wl~Dm7?F@$f zU8xlHOGUXJdG(f(`}KCx{_2CDe?R#3w~qiyYM-hg1w09PsI_P)YlilzkneW|>f3I{ zQLO%xei9|)%a~~uq>ZHCbH;c~j=+C!>>GDx#adJ>>>2fIY7>Hl|D>}+z$uPY1591I z5us$8aX-0PBa>vm%0{mhMVoZuK|HA6h~j1#r8luTlU4LjG%_|fRT-NzuhZ-(lIneM zPUeZtwbzOfD72g*J@k*q8&~`C%i3suX1NGp(Nr#IUm|o;g_+b&Gae8coiIrx@Mot< z)XmfyENByfSM+YRLWHhS3v|HmYO^06swLu3bksVLi$q=}a*467XNbtbhhweFlY^xwW-b^R_KnTj$d4-RQ?+7|EN|Qc_By#{%41GJ=(V0D|TkG5`Po literal 0 HcmV?d00001 diff --git a/susyexists/src/__pycache__/reads.cpython-310.pyc b/susyexists/src/__pycache__/reads.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..129db1cf8a24a1fc76db0bf272711d6feb52a1d1 GIT binary patch literal 3662 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 literal 0 HcmV?d00001 diff --git a/susyexists/src/__pycache__/structure.cpython-310.pyc b/susyexists/src/__pycache__/structure.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff84b709b39dab507852c20eef562375a0710db9 GIT binary patch literal 7321 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 QY=eD;)Yth$`(Cd7f5VYq5C8xG literal 0 HcmV?d00001 diff --git a/susyexists/src/__pycache__/utils.cpython-310.pyc b/susyexists/src/__pycache__/utils.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d6d5b0d36369335b77838d3f529c0103e78d4b6 GIT binary patch literal 4169 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 literal 0 HcmV?d00001 diff --git a/susyexists/src/__pycache__/writes.cpython-310.pyc b/susyexists/src/__pycache__/writes.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80ea915faedd18a85ccabb6bf17aeb8a8c5bdaec GIT binary patch literal 1851 zcmZ`(QEMAV5Wctl zjf?za!{TT7)b}8`#mS%6Ym3{Q!bmvd4vaQ0@HrSMclkVwj2HO=j1Dg~EU(8Ju>ZP$YWM9S;r1CJR-bHHzb&6qZTIPro>>EO%8Zo`S)ZN3$+s-@ zJ1W0~s2IEhN?_Koo>=PP30Uxb1t01>XD1;+Z)szH_j!HOZ|v1J>$OIu_=QvwQuLgJ zMX~54&WQ}QNLVXWIw|}fw2p;J*!w8#pv#-EC6dKJNA0lbt5`Hcur8q1j}G38rcM|d zlLG!O__-w)A-yk8tM8(=sH$Vtt!@c*sH3ZBfND5;ispxSITe&q$jw(1Y}bT zdp9QbA=Q9=-m9~edX0QE>(fEb;}z6kW{tLI)JS5Ey*pWz_I4Zf{rc`sqw=6ByGjQw zuTqrAB}qY?I}$UMNGOSnN(zC}-B=`4Y3VUJkGlCdQlSo`j*<(wCZVZHDsG@=B?tA` z8UOu!8$=4WP1Z?)*yJ0Kw+Z{h{uhA11?Fpkmp8!*w98W3tZi@mdmAq{p4awkFCe3! z^A@6v+EXdXW&A0NoHa$OWrCJ#puQaTY8o~=`EekFw$MVVRrFj(fx%BjhnS5o-Y>8i z(_(ds7H|dogwynT&A425uN01DS+4x*@9oxi_8XPp7>FC_un7gjb3J=fE03m?A%|&l zNYz|97Sp^A{TQyDR`o~DTmlM;rrhPJica-3`&j4?S zPOi_eVZrp742Yxk8BqLi1&UF@Cs1V6^$#*A41v$*CV0pd2sxoG(UAq1Noc|;pMl^= zL-{odLte*VBFm__1Y5@95p4cJ(BbLjRA$Np1%(Mpg$9BYzTjD3vdrPp7Yq_plau;2v ./$project_name/$sigma/vc-relax.out +echo "Crystal relaxation for $sigma is finished" + +#Atom Relaxation +echo "Generating relaxation input for $sigma" +python run.py -n $project_name -c relax -j $pw_json -d $sigma -k ${relax_k[@]} -l mono +echo "Starting relaxation for $sigma" +mpirun -n $SLURM_NTASKS $QE/pw.x -inp ./$project_name/$sigma/relax.in > ./$project_name/$sigma/relax.out +echo "Atom relaxation for $sigma is finished" + +#Scf calculation +echo "Scf input for $sigma is generated" +python run.py -n $project_name -c scf -j $pw_json -d $sigma -k ${scf_k[@]} +echo "Scf calculation for $sigma is started" +mpirun -n $SLURM_NTASKS $QE/pw.x -inp ./$project_name/$sigma/scf.in > ./$project_name/$sigma/scf.out +echo "Scf calculation for $sigma is finished" + +#Band calculation +echo "Band calculation input for $sigma is generated" +python run.py -n $project_name -c bands -j $pw_json -d $sigma +echo "Band calculation for $sigma is started" +mpirun -n $SLURM_NTASKS $QE/pw.x -inp ./$project_name/$sigma/bands.in > ./$project_name/$sigma/bands.out +echo "Band-pp for $sigma is generated" +python run.py -n $project_name -c bands-pp -j $pw_json -d $sigma +echo "Band-pp calculation $sigma is started" +$QE/bands.x -inp ./$project_name/$sigma/bands-pp.in > ./$project_name/$sigma/bands-pp.out +mkdir ./$project_name/plots/ 2> /dev/null +python ./src/plot_band.py -n $project_name -d $sigma + +echo "Adiabatic automation for $sigma is completed" +##Memorize the last calculation +initial=$sigma +done + +echo "Adiabatic automation is completed" +echo "vc-relax > relax > scf > band" + +# # mkdir dyn +# # mkdir dyn/$sigma/ +# # python run.py -n $project_name -c ph -j $pw_json -d $sigma +# # mpirun -n 256 $QE/ph.x -npool 256 -inp ./inputs/$sigma-ph.in > ./outputs/$sigma-ph.out +# # python run.py -n $project_name -c q2r -j $pw_json -d $sigma +# # $QE/q2r.x < ./inputs/$sigma-q2r.in > ./outputs/$sigma-q2r.out +# # python run.py -n $project_name -c matdyn -j $pw_json -d $sigma +# # $QE/matdyn.x < ./inputs/$sigma-matdyn.in > ./outputs/$sigma-matdyn.out +# # python run.py -n $project_name -c plotband -j $pw_json -d $sigma +# # cd ./dyn/$sigma/ +# # $QE/plotband.x < $sigma-plotband.in > $sigma-plotband.out +# # cd ../.. +# # bash ph.sh $QE $sigma +# python ph_plot.py -j $pw_json -d $sigma diff --git a/susyexists/src/compute.py b/susyexists/src/compute.py new file mode 100644 index 00000000..9024bd8d --- /dev/null +++ b/susyexists/src/compute.py @@ -0,0 +1,20 @@ +import subprocess + +def run_pw(project_id,job_id,calculation,num_core): + if calculation == 'bands-pp': + p = subprocess.Popen(f"mpirun -np {num_core} bands.x -inp ./Projects/{project_id}/{job_id}/{calculation}.in > ./Projects/{project_id}/{job_id}/{calculation}.out ", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + p.wait() + else: + p = subprocess.Popen(f"mpirun -np {num_core} pw.x -inp ./Projects/{project_id}/{job_id}/{calculation}.in > ./Projects/{project_id}/{job_id}/{calculation}.out ", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + p.wait() + +def run_ph(project_id,job_id,calculation,num_core): + if calculation == 'ph': + p = subprocess.Popen(f"mpirun -np {num_core} ph.x -inp ./Projects/{project_id}/{job_id}/{calculation}.in > ./Projects/{project_id}/{job_id}/{calculation}.out ", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + p.wait() + if calculation == 'q2r': + p = subprocess.Popen(f"mpirun -np {num_core} q2r.x -inp ./Projects/{project_id}/{job_id}/{calculation}.in > ./Projects/{project_id}/{job_id}/{calculation}.out ", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + p.wait() + if calculation == 'matdyn': + p = subprocess.Popen(f"mpirun -np {num_core} matdyn.x -inp ./Projects/{project_id}/{job_id}/{calculation}.in > ./Projects/{project_id}/{job_id}/{calculation}.out ", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + p.wait() \ No newline at end of file diff --git a/susyexists/src/generate.py b/susyexists/src/generate.py new file mode 100644 index 00000000..0bde9041 --- /dev/null +++ b/susyexists/src/generate.py @@ -0,0 +1,176 @@ +from . import scaffold +from . import reads +from . import utils +import os +import sys + + +def pw_input(project_id, calculation,config=False, degauss=None, job_id=None, initial_guess=None, k_points=None, poscar=None, layer=None, lattice_constant=False,atomic_positions=False,pseudo=False): + + #Check file name, if it is None, uses degauss instead + if (not job_id): + if (degauss): + job_id = degauss + else: + # sys.stdout.writelines("No file name \n") + # print("No file name") + raise Exception("Define a job_id") + + #Default config + if config==False: + config = utils.configure_pw() + + #Create directory for input files + try: + os.makedirs(f'./Projects/') + except: + pass + try: + os.makedirs(f'./Projects/{project_id}') + os.makedirs(f'./Projects/{project_id}/{job_id}') + except: + try: + os.makedirs(f'./Projects/{project_id}/{job_id}') + except: + pass + + + # Set parameters from input + config["file_path"] = f"./Projects/{project_id}/{job_id}/{calculation}.in" + + #If degauss is given explicitly use it instead + if(degauss!=None): + config["system"]["degauss"] = degauss + config["control"]["outdir"] = f"./Projects/{project_id}/{job_id}/" + # nat = int(config["system"]['nat']) + + + + + if calculation == 'vc-relax': + # Import initial cell and atom parameters + if poscar != None: + cell, atoms = reads.read_poscar(f'{poscar}') + elif initial_guess != None: + cell, atoms = reads.read_vc_relax(f"{initial_guess}") + else: + try: + cell, atoms = config['cell_parameters'], config['atomic_positions'] + except: + raise Exception("PLease enter atomic position and lattice constants") + + elif calculation == 'relax': + if poscar != None: + cell, atoms = reads.read_poscar(f'{poscar}') + try: + cell, atoms = reads.read_vc_relax(f"./Projects/{project_id}/{job_id}/vc-relax.out") + except: + try: + cell, atoms = config['cell_parameters'], config['atomic_positions'] + except: + raise Exception("PLease enter atomic position and lattice constants") + + + else: + if poscar != None: + cell, atoms = reads.read_poscar(f'{poscar}') + try: + cell, atoms = reads.read_vc_relax(f"./Projects/{project_id}/{job_id}/vc-relax.out") + try: + atoms = reads.read_relax(f"./Projects/{project_id}/{job_id}/relax.out") + except: + pass + except: + try: + cell, atoms = config['cell_parameters'], config['atomic_positions'] + except: + raise Exception("PLease enter atomic position and lattice constants") + + if(layer=='mono'): + atoms = utils.make_monolayer(atoms) + + if k_points != None: + config['k_points'] = k_points + + if(lattice_constant): + cell=lattice_constant + if(atomic_positions): + atoms=atomic_positions + + + + + #Check for pseudopotentials + if pseudo==False: + config['atomic_species']=utils.default_pseudo(atoms) + + config["control"]['prefix'] = job_id + config["system"]['nat'] = len(atoms) + #check types of atoms + try: + config["system"]['ntyp'] + except: + config["system"]['ntyp'] = utils.atom_type(atoms) + + #check ibrav + try: + config["system"]['ibrav'] + except: + config["system"]['ibrav'] = 0 + config['atomic_positions'] = atoms + config['cell_parameters'] = cell + config["control"]['calculation'] = calculation + + if calculation == 'bands-pp': + scaffold.bands_pp(config) + else: + scaffold.pw(config) + return + + +def ph_input(project_id,calculation,job_id='default',config=False): + #Default config + if config==False: + config = utils.configure_ph() + # Set parameters from input + config["file_path"] = f"./Projects/{project_id}/{job_id}/{calculation}.in" + if calculation == 'ph': + config["inputph"]["outdir"] = f"./Projects/{project_id}/{job_id}/" + config["inputph"]['prefix'] = job_id + config["inputph"]["fildyn"]= f'./Projects/{project_id}/{job_id}/{job_id}.dyn' + scaffold.ph(config) + elif calculation == 'q2r': + config['input']['fildyn'] = f'./Projects/{project_id}/{job_id}/{job_id}.dyn' + config['input']['flfrc'] = f'./Projects/{project_id}/{job_id}/{job_id}.fc' + scaffold.q2r(config) + elif calculation == 'matdyn': + config['input']['flfrq'] = f'./Projects/{project_id}/{job_id}/{job_id}.freq' + config['input']['flfrc'] = f'./Projects/{project_id}/{job_id}/{job_id}.fc' + scaffold.matdyn(config) + elif calculation == 'plotband': + scaffold.plotband(config) + elif calculation == "ph_plot": + scaffold.ph_plot(config) + + +def runner(project_name,iteration,file_names,calculation,qe_path,ncore): + pre = f'''QE={qe_path} +SLURM_NTASKS={ncore} +project_name={project_name} + ''' + # print(pre) + post =f''' +echo Starting {iteration} calculation +for file_name in {" ".join(file_names)} +do +echo $file_name is started +mpirun -n $SLURM_NTASKS $QE/pw.x -inp ./$project_name/$file_name/{calculation}.in > ./$project_name/$file_name/{calculation}.out +echo $file_name is done +done +echo All {iteration} calculations are completed + ''' + # print(post) + with open(f"./{iteration}.sh", 'w') as file: + file.write(pre) + file.write(post) + return \ No newline at end of file diff --git a/susyexists/src/kpoints.py b/susyexists/src/kpoints.py new file mode 100644 index 00000000..d302d879 --- /dev/null +++ b/susyexists/src/kpoints.py @@ -0,0 +1,35 @@ + +point_coordinate = {'K':[0.33333333333,0.3333333333,0],'M':[0,0.5,0],'G':[0,0,0]} + +def band_points (points): + point_list =[] + for point in points: + coordinate = symmetry_coordinate(point) + point_list.append(coordinate) + return point_list + +def symmetry_coordinate(point): + point = point.upper() + coordinate = point_coordinate[point] + return coordinate + +# def band_input(points,num_points): +# coordinates = band_points(points) +# parameter = [] +# for j,i in enumerate(coordinates): +# input_line = {'x':str(i[0]),'y':str(i[1]),'z':str(i[2]),'number':str(num_points),'label':f" ! {points[j].upper()}"} +# parameter.append(input_line) +# return parameter + + +def band_input(path,points,num_points): + parameter = [] + for k,i in enumerate(path): + for j in points: + if i.upper() == j[0].upper(): + if k == len(path)-1: + input_line = {'x':str(j[1]),'y':str(j[2]),'z':str(j[3]),'number':str(1),'label':f" ! {j[0].upper()}"} + else: + input_line = {'x':str(j[1]),'y':str(j[2]),'z':str(j[3]),'number':str(num_points),'label':f" ! {j[0].upper()}"} + parameter.append(input_line) + return parameter diff --git a/susyexists/src/model.py b/susyexists/src/model.py new file mode 100644 index 00000000..0cfc6b05 --- /dev/null +++ b/susyexists/src/model.py @@ -0,0 +1,142 @@ +from . import utils +from . import reads +from . import generate +from . import compute +from . import kpoints +from . import plots +from . import structure +class pw: + def __init__(self,project_id): + self.project_id = project_id + self.config = utils.configure('pw') + self.atom = False + self.lattice = False + self.calculation=False + self.job_id = 'results' + self.path = False + self.poscar= False + + def from_poscar(self,directory): + self.poscar=directory + lattice, atom = reads.read_poscar(directory) + self.config['atomic_positions'] = atom + self.config['cell_parameters'] = lattice + + def from_json(self,data=False,path=False): + lattice, atom = reads.read_json(data=data,path=path) + self.config['atomic_positions'] = atom + self.config['cell_parameters'] = lattice + + def set_calculation(self,calculation_type): + self.calculation = calculation_type + self.config['control']['calculation'] = calculation_type + + + def create_input(self,layer="False"): + generate.pw_input(project_id=self.project_id,calculation=self.calculation,job_id=self.job_id, config=self.config,layer=layer) + + def calculate(self, num_core=1): + compute.run_pw(self.project_id,self.job_id,self.calculation,num_core) + def band_points(self,path,number): + self.path=path + points = self.get_points() + k_path = kpoints.band_input(path,points,number) + self.config['k_points_bands'] = k_path + + def ecutwfc(self,number): + self.config['system']['ecutwfc'] = number + def conv_thr(self,number): + self.config['electrons']['conv_thr']=number + + def k_points(self,number): + if type(number) == int : + self.config['k_points']=f'{number} {number} {number} 0 0 0' + elif len(number) == 3: + self.config['k_points']=f'{number[0]} {number[1]} {number[2]} 0 0 0' + else: + raise Exception("K points can be either a number or an array with 3 enteries") + + def plot_electron(self,ylim=False,show=False,save=False): + plots.plot_electron(self,ylim,show,save) + + def nbnd(self,number): + self.config['system']['nbnd']=number + + def get_nbnd(self): + return int(reads.read_num_bands(self)) + + def mixing_mode(self,value): + self.config['electrons']['mixing_mode']=value + def smearing(self,value): + self.config['system']['smearing'] = value + def degauss(self,value): + self.config['system']['degauss'] = value + + def get_primitive(self,file='vasp-ase'): + lattice,atoms,kpoints = structure.primitive(self.poscar,file) + self.config['atomic_positions'] = atoms + self.config['cell_parameters']=lattice + + def get_points(self,file='vasp-ase'): + lattice,atoms,kpoints = structure.primitive(self.poscar,file) + self.points=kpoints + return kpoints + + def vc_relax(self,num_core=1): #Crystal optimization + self.set_calculation(calculation_type='vc-relax') #set calculation + self.create_input() #create input + self.calculate(num_core) #run calculation + + def relax(self,num_core=1,layer=False): #Atomic optimization + self.set_calculation(calculation_type='relax') #set calculation + self.create_input(layer=layer) #create mono-layer input + self.calculate(num_core) #run calculation + + def scf(self,num_core=1): #Scf calculation + self.set_calculation(calculation_type='scf') #set calculation + self.create_input() #create input + self.calculate(num_core) #run calculation + def bands(self,path,num_points,num_core): #Band calculation + self.band_points(path,num_points) #define path + self.set_calculation(calculation_type='bands') #set calculation + self.create_input() #create input + self.calculate(num_core) #run calculations + self.set_calculation('bands-pp') #set calculaion + self.create_input() #create input + self.calculate( ) #run calculation + def test(self,parameter_name,conv_thr,start,end,step,num_core,debug=False,out=False): + result = utils.test_parameter(self=self,parameter_name=parameter_name,conv_thr=conv_thr,start=start,end=end,step=step,num_core=num_core,debug=debug,out=out) + # if parameter=='ecutwfc': + # result = utils.test_ecutwfc(self=self,start=start,end=end,step=step,num_core=num_core,debug=debug) + # elif parameter=='kpoints': + # result = utils.test_k(self=self,start=start,end=end,step=step,num_core=num_core,debug=debug) + return result + +class ph: + def __init__(self,project_id): + self.project_id = project_id + self.config = utils.configure('ph') + self.job_id = 'results' + self.calculation = False + def create_input(self,job_id='results'): + # self.set_calculation(self.calculation) + generate.ph_input(project_id=self.project_id,calculation=self.calculation,job_id=self.job_id, config=self.config) + def set_calculation(self,calculation): + self.calculation=calculation + self.config = utils.configure(calculation) + def calculate(self, num_core=1): + compute.run_ph(self.project_id,self.job_id,self.calculation,num_core) + def set_q(self,nq1=2,nq2=2,nq3=2): + self.config['inputph']['nq1']=nq1 + self.config['inputph']['nq2']=nq2 + self.config['inputph']['nq3']=nq3 + def set_path(self, path,number,poscar=True): + model = pw(project_id=self.project_id ) + if (poscar): + model.from_poscar(directory=f"{self.project_id}.poscar") + model.band_points(path,number) + kpt = model.config['k_points_bands'] + self.config['k_points_bands']=kpt + def plot(self): + plots.plot_phonon(self) + diff --git a/susyexists/src/ph_plot.py b/susyexists/src/ph_plot.py new file mode 100644 index 00000000..ca97a254 --- /dev/null +++ b/susyexists/src/ph_plot.py @@ -0,0 +1,36 @@ +prefix = "0.0057" +labels = ['Γ',"M","K",'Γ'] + + +import numpy as np +import matplotlib.pyplot as plt + +def Symmetries(fstring): + f = open(fstring, 'r') + x = np.zeros(0) + for i in f: + if "high-symmetry" in i: + x = np.append(x, float(i.split()[-1])) + f.close() + return x + +freq = np.loadtxt("./{}.freq.gp".format(prefix)) +load_sym = Symmetries("./plotband.out") +sym = load_sym/max(load_sym) +ph_path = freq.T[0]/max(freq.T[0]) +cm2mev = 0.124 + +fig = plt.figure(figsize=(7,6)) +# colors = ["blue","orange","green","red","purple","teal"] +for i in sym[:-1]: + plt.axvline(i,linestyle="--",color="black") +for i in range(1,len(freq.T)): + plt.plot(ph_path,freq.T[i]*cm2mev,linewidth=2,color="blue") +plt.xticks(sym,labels,fontsize=15) +# plt.axhline(0,color="black") +plt.title(f"{prefix}") +plt.ylim(0,) +plt.xlim(0,ph_path[-1]) +plt.ylabel("ω (meV)",fontsize=15) +plt.savefig('phonon_band.png') +plt.show() \ No newline at end of file diff --git a/susyexists/src/plot_band.py b/susyexists/src/plot_band.py new file mode 100644 index 00000000..4a06770a --- /dev/null +++ b/susyexists/src/plot_band.py @@ -0,0 +1,57 @@ +import argparse +import numpy as np +import matplotlib.pyplot as plt + + +ap = argparse.ArgumentParser() +ap.add_argument("-n", "--name", required=True, + help="Project name") +ap.add_argument("-d", "--degauss", required=True, help="Degauss value") +args = vars(ap.parse_args()) + +project_name = args['name'] +degauss = args['degauss'] + + +def read_efermi(path): + lines = open(path, 'r').readlines() + e_fermi = 0 + for i in lines: + if "the Fermi energy is" in i: + e_fermi = float(i.split()[-2]) + return e_fermi + +def Symmetries(fstring): + f = open(fstring, 'r') + x = np.zeros(0) + for i in f: + if "high-symmetry" in i: + x = np.append(x, float(i.split()[-1])) + f.close() + return x + +sym = Symmetries(f'./{project_name}/{degauss}/bands-pp.out') + + +temp_file = open(f'./{project_name}/{degauss}/scf.out', 'r').readlines() +for i in range(len(temp_file)): + if len(temp_file[i].split())>2: + if temp_file[i].split()[0]=='the': + fermi=temp_file[i].split()[-2] + +fig = plt.figure(figsize=(8,6)) +data =np.loadtxt(f'./{project_name}/{degauss}/bands.dat.gnu') + +k = np.unique(data[:, 0]) +bands = np.reshape(data[:, 1], (-1, len(k))) +for band in range(len(bands)): + plt.plot(k, bands[band, :]-float(fermi),c='black') +plt.xticks(sym,['G','M','K','G']) +plt.axvline(sym[1],c='black') +plt.axvline(sym[2],c='black') +plt.axhline(0,c='red') +plt.ylim(-10,10) +plt.xlim(sym[0],sym[-1]) +plt.savefig(f'./{project_name}/plots/band_{degauss}.png') +# plt.show() + \ No newline at end of file diff --git a/susyexists/src/plot_sigma_energy.py b/susyexists/src/plot_sigma_energy.py new file mode 100644 index 00000000..105f2dd4 --- /dev/null +++ b/susyexists/src/plot_sigma_energy.py @@ -0,0 +1,33 @@ + +import os +import numpy as np +import matplotlib.pyplot as plt +out_files = os.listdir('./results/') + +total_energy = [] +e_fermi = [] +for prefix in out_files: + temp_file = open(f'./results/{prefix}/scf.out', 'r').readlines() + for i in range(len(temp_file)): + if len(temp_file[i].split())>2: + if temp_file[i].split()[0]=='!': + temp_en=temp_file[i].split()[4] + # if temp_file[i].split()[0]=='the': + # temp_fermi=temp_file[i].split()[-2] + total_energy.append([float(temp_en),float(prefix)]) + # e_fermi.append([float(temp_fermi),float(file[:-13])]) + +tot_en = np.array(total_energy) +tot_en = tot_en[tot_en[:, 1].argsort()] + + +# e_f = np.array(e_fermi) +# e_f = e_f[e_f[:, 1].argsort()] + +# fig = plt.figure(figsize=(8,6)) +plt.plot(tot_en.T[1],tot_en.T[0]) +# plt.ylabel('Total Energy [Ry]',fontsize=20) +# plt.xlabel('Smearing Value [Ry]',fontsize=20) +# plt.xticks(fontsize=20) +# plt.yticks(fontsize=20) +plt.savefig('total_sigma.png') diff --git a/susyexists/src/plots.py b/susyexists/src/plots.py new file mode 100644 index 00000000..dc95069c --- /dev/null +++ b/susyexists/src/plots.py @@ -0,0 +1,50 @@ +import numpy as np +import matplotlib.pyplot as plt +from . import reads + +def plot_electron(self,ylim=False,show=False,save=False): + sym = reads.read_symmetries(f'./Projects/{self.project_id}/{self.job_id}/bands-pp.out') + fermi = reads.read_efermi(f'./Projects/{self.project_id}/{self.job_id}/scf.out') + fig = plt.figure(figsize=(8,6)) + data = np.loadtxt(f'./Projects/{self.project_id}/{self.job_id}/bands.dat.gnu') + k = np.unique(data[:, 0]) + bands = np.reshape(data[:, 1], (-1, len(k))) + for band in range(len(bands)): + plt.plot(k, bands[band, :]-float(fermi),c='black') + plt.xticks(sym,self.path) + for i in range(1,len(sym)-1): + plt.axvline(sym[i],c='black') + plt.axhline(0,c='red') + plt.ylim(ylim[0],ylim[1]) + plt.xlim(sym[0],sym[-1]) + if save==True: + plt.savefig(f'./Projects/{self.project_id}/{self.job_id}/band.png') + if show==True: + return fig + + +def plot_phonon(self): + sym = [] + point = [0] + for k,i in enumerate(self.config['k_points_bands']): + sym.append(i['label'].split()[1]) + if k!=len(self.config['k_points_bands'])-1: + point.append(point[k]+int(i['number'])) + freq = np.loadtxt(f"./Projects/{self.project_id}/{self.job_id}/{self.job_id}.freq.gp") + ph_path = freq.T[0]/max(freq.T[0]) + cm2mev = 0.124 + fig = plt.figure(figsize=(7,6)) + + for i in range(1,len(freq.T)): + plt.plot(ph_path,freq.T[i]*cm2mev,linewidth=2,color="blue") + # print(point) + tick = [ ph_path[i] for i in point ] + for i in tick[1:-1]: + plt.axvline(i,linestyle="--",color="black") + plt.xticks(tick,sym,fontsize=15) + plt.ylim(0,) + plt.xlim(0,ph_path[-1]) + plt.ylabel("ω (meV)",fontsize=15) + plt.savefig('phonon_band.png') + plt.show() + diff --git a/susyexists/src/reads.py b/susyexists/src/reads.py new file mode 100644 index 00000000..e55c5354 --- /dev/null +++ b/susyexists/src/reads.py @@ -0,0 +1,114 @@ +import numpy as np +import json + +def read_pp(paths): + elements = [] + wavefunction = [] + chargedensity = [] + for path in paths: + pp = {"Element":"","Wavefunction":50,"Chargedensity:":200} + with open(path, 'r') as data: + data = data.read().split() + for i in range(200): + if data[i] =="Element:": + # print(str(f"Element: {data[i+1]}")) + pp["Element"]=data[i+1] + if data[i] =="wavefunctions:": + # print(f"Wave function cutoff: {float(data[i+1])}") + pp["Wavefunction"]=data[i+1] + if data[i] =="density:": + # print(f"Charge density cutoff: {float(data[i+1])}") + pp["Chargedensity"]=data[i+1] + + elements.append(pp['Element']) + wavefunction.append(float(pp['Wavefunction'])) + chargedensity.append(float(pp['Chargedensity'])) + chargedensity.sort() + wavefunction.sort() + return(elements,wavefunction[-1]*1.5,chargedensity[-1]*1.5) + + +def read_poscar(path): + data = open(path, 'r').readlines() + cell =[] + for i in data[2:5]: + line=i.split() + cell.append(line) + atoms= [] + for i in data[8:]: + line=(i.split()) + position=line[:3] + atom = [line[-1]] + atoms.append(atom+position) + return(cell,atoms) + + +def read_vc_relax(path): + vc_relax = open(path, 'r').readlines() + begin = 0 + end = 0 + for i in range(len(vc_relax)): + if vc_relax[i] == 'Begin final coordinates\n': + begin = i + if vc_relax[i] == 'End final coordinates\n': + end = i + cell = np.array([i.split() + for i in vc_relax[begin+5:begin+8]]).astype(float) + atoms = np.array([i.split() for i in vc_relax[begin+10:end]]) + return(cell, atoms) + +def read_relax(path): + data = open(path, 'r').readlines() + begin = 0 + end = 0 + for i in range(len(data)): + if data[i] == 'Begin final coordinates\n': + begin = i + if data[i] == 'End final coordinates\n': + end = i + atoms = np.array([i.split() for i in data[begin+3:end]]) + return atoms + +def read_symmetries(fstring): + f = open(fstring, 'r') + x = np.zeros(0) + for i in f: + if "high-symmetry" in i: + x = np.append(x, float(i.split()[-1])) + f.close() + return x + +def read_efermi(path): + lines = open(path, 'r').readlines() + e_fermi = 0 + for i in lines: + if "the Fermi energy is" in i: + e_fermi = float(i.split()[-2]) + return e_fermi + +def read_num_bands(self): + directory = f"./Projects/{self.project_id}/{self.job_id}/scf.out" + lines = open(directory, 'r').readlines() + number = 0 + for i in lines: + if " number of Kohn-Sham states" in i: + number = float(i.split()[-1]) + return number + + +def read_json(data=False,path=False): + if (path): + with open(path) as f: + data = f.read() + crystal = json.loads(data) + atoms = [] + cell = np.array(crystal['lattice']['matrix'],dtype=str) + for i in range(len(crystal['sites'])): + element = crystal['sites'][i]['species'][0]['element'] + coordinate = crystal['sites'][i]['abc'] + atoms.append([element,str(coordinate[0]),str(coordinate[1]),str(coordinate[2])]) + # atoms.append(element) + # coordinate = crystal['sites'][i]['abc'] + # positions[i]={element:coordinate} + return cell,atoms + diff --git a/susyexists/src/run.py b/susyexists/src/run.py new file mode 100644 index 00000000..84082c30 --- /dev/null +++ b/susyexists/src/run.py @@ -0,0 +1,58 @@ +import sys +import argparse +import json +from src import generate + +# Construct the argument parser +ap = argparse.ArgumentParser() + +# Add the arguments to the parser +ap.add_argument("-n", "--name", required=True, + help="Project name") +ap.add_argument("-c", "--calculation", required=True, + help="Type of calculation") +ap.add_argument("-j", "--json", required=True, + help="JSON file") +ap.add_argument("-d", "--degauss", required=False, + help="Degauss value") +ap.add_argument("-k", "--kpoints", nargs='+', required=False, + help="K points") +ap.add_argument("-i", "--initial", required=False, + help="Initial guess path") +ap.add_argument("-p", "--poscar", required=False, + help="Poscar path") +ap.add_argument("-l", "--layer", required=False, + help="Layered materials") + + + +args = vars(ap.parse_args()) + +project_id = args['name'] +# Type of calculation +calculation = args['calculation'] +# Degauss parameter +degauss = args['degauss'] +parameter = args['json'] +# K points + +if args['kpoints'] != None: + k_points = ' '.join(args['kpoints']) +else: + k_points = None + +layer = args["layer"] + + +initial = args['initial'] +poscar = args['poscar'] +# print(f"Initial path: {initial}") +# print(f"Initial path: {poscar}") + +with open(f'{parameter}') as f: + data = f.read() + config = json.loads(data) + + +generate.pw_input(project_id=project_id,calculation=calculation,config=config,degauss=degauss, k_points=k_points, + initial_guess=initial, poscar=poscar,layer=layer) diff --git a/susyexists/src/scaffold.py b/susyexists/src/scaffold.py new file mode 100644 index 00000000..98e9d9aa --- /dev/null +++ b/susyexists/src/scaffold.py @@ -0,0 +1,126 @@ +import numpy as np +import pandas as pd +from . import reads +from . import writes +from . import utils +import json + +def pw(parameters): + with open(parameters['file_path'], 'w') as file: + for i,j in parameters.items(): + try: + if(type(j)==dict): + file.write(f"&{i.upper()} \n") + for k,l in j.items(): + try: + float(l) + file.write(f"{k} = {l} \n") + except: + try: + json.loads(l) + file.write(f"{k} = .{l}. \n") + except: + if(bool(l)): + file.write(f"{k} = '{l}' \n") + file.write("/ \n") + except: + pass + writes.write_atom_species(parameters['file_path'], parameters['atomic_species']) + writes.write_atom_positions(parameters['file_path'],parameters['atomic_positions']) + writes.write_cell_parameters(parameters['file_path'], parameters['cell_parameters']) + if parameters["control"]['calculation']=='bands': + writes.write_k_points_bands(parameters['file_path'], parameters['k_points_bands']) + else: + writes.write_k_points(parameters['file_path'], parameters['k_points']) + return + + +def bands_pp(parameters): + filedata = f""" +&bands +outdir = '{parameters["control"]['outdir']}' +prefix = '{parameters["control"]['prefix']}' +filband = '{parameters["control"]['outdir']}bands.dat' +/ +""" + with open(parameters['file_path'], 'w') as file: + file.write(filedata) + return + + +def ph(parameters): + with open(parameters['file_path'], 'w') as file: + for i,j in parameters.items(): + try: + if(type(j)==dict): + file.write(f"&{i.upper()} \n") + for k,l in j.items(): + try: + float(l) + file.write(f"{k} = {l} \n") + except: + try: + json.loads(l) + file.write(f"{k} = .{l}. \n") + except: + if(bool(l)): + file.write(f"{k} = '{l}' \n") + file.write("/ \n") + except: + pass + return + +def q2r(parameters): + with open(parameters['file_path'], 'w') as file: + for i,j in parameters.items(): + try: + if(type(j)==dict): + file.write(f"&{i.upper()} \n") + for k,l in j.items(): + try: + float(l) + file.write(f"{k} = {l} \n") + except: + try: + json.loads(l) + file.write(f"{k} = .{l}. \n") + except: + if(bool(l)): + file.write(f"{k} = '{l}' \n") + file.write("/ \n") + except: + pass + return + +def matdyn(parameters): + with open(parameters['file_path'], 'w') as file: + for i,j in parameters.items(): + try: + if(type(j)==dict): + file.write(f"&{i.upper()} \n") + for k,l in j.items(): + try: + float(l) + file.write(f"{k} = {l} \n") + except: + try: + json.loads(l) + file.write(f"{k} = .{l}. \n") + except: + if(bool(l)): + file.write(f"{k} = '{l}' \n") + file.write("/ \n") + except: + pass + writes.write_k_points_matdyn(parameters['file_path'], parameters['k_points_bands']) + return + +def plotband(parameters): + filedata = f""" +{parameters['prefix']}.freq +0 550 +{parameters['prefix']}.xmgr +""" + with open(f"./dyn/{parameters['prefix']}/{parameters['prefix']}-plotband.in", 'w') as file: + file.write(filedata) + return \ No newline at end of file diff --git a/susyexists/src/seekpath/__init__.py b/susyexists/src/seekpath/__init__.py new file mode 100644 index 00000000..318ea751 --- /dev/null +++ b/susyexists/src/seekpath/__init__.py @@ -0,0 +1,57 @@ +""" +The seekpath module contains routines to get automatically the +path in a 3D Brillouin zone to plot band structures. + +Author: Giovanni Pizzi, PSI (2016-2023) + +Licence: MIT License, see LICENSE.txt file +""" + +__version__ = "2.1.0" +__author__ = "Giovanni Pizzi, PSI" +__copyright__ = ( + "Copyright (c), 2016-2023, Giovanni Pizzi, PAUL SCHERRER INSTITUT " + "(Laboratory for Materials Simulations), EPFL " + "(Theory and Simulation of Materials (THEOS) and National Centre " + "for Computational Design and Discovery of Novel Materials " + "(NCCR MARVEL)), Switzerland." +) +__credits__ = ["Yoyo Hinuma", "Jae-Mo Lihm"] +__license__ = "MIT license" +__paper__ = ( + "Y. Hinuma, G. Pizzi, Y. Kumagai, F. Oba, I. Tanaka, " + "Band structure diagram paths based on crystallography, " + "Comp. Mat. Sci. 128, 140 (2017). DOI: 10.1016/j.commatsci.2016.10.015" +) + + +class SupercellWarning(UserWarning): + """ + A warning issued when the cell is an undistorted supercell of a smaller + unit cell, and the kpoint path for a non-standardized cell (i.e., for the + original cell) is requested. + """ + + pass + + +from .getpaths import ( + get_path, + get_explicit_k_path, + get_path_orig_cell, + get_explicit_k_path_orig_cell, +) + +from .hpkot import EdgeCaseWarning, SymmetryDetectionError +from .brillouinzone import brillouinzone + +__all__ = ( + "get_path", + "get_explicit_k_path", + "get_path_orig_cell", + "get_explicit_k_path_orig_cell", + "EdgeCaseWarning", + "SymmetryDetectionError", + "SupercellWarning", + "brillouinzone" +) diff --git a/susyexists/src/seekpath/__pycache__/__init__.cpython-310.pyc b/susyexists/src/seekpath/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..547382e46be73704013cd2112a681ad80a4c5955 GIT binary patch literal 1701 zcmZux&2Az`5FRi#Fo2EMQj|khsv}5v0B`Z-1;pRY>RYOaH8@bh2n`Ih7SVVTFP zfXvtU=?J&b@trW|=fb?74>$acun=xe@_r%Q@;AexzxBomOJVsZCoHq#j~jj|bi+zi zj$Pl4D}E)e`qjAR*K!V?SEKEC$KQ$Tem&!B(Qdr!?;^eJKMQw8PP3l=?vAGnG-Id$jEt$_0ga*sm??9!Yg_<@7sv2Q@hFlBvZ)lz zUYbYJz%>;iXrq$AB#LRzb&nD=mFf`QaQU7J!Qq0ZDR05WXaJ3aPWSWugU-Q=rt6;a zfQf(|!r5R98KYUt`U|InUVk|1d*;r-4Ud?cZXS4DuaoXQVU!kfj?t z%l(Vjr_jK}T16ZCgBaw^qic=vN&kG*%yfp?bs9mB38Pr{Ku^Z=#H>z_8!ozX2fDN_+%^wP>(xsY(eMH17r@(pGCXA%=T zjnj%vab)wYS^Dc+?_LSBW^3?}*hLF>VqA^&A zXas>~AxHs%T4;m#ktm!`7cH<+de(mrMgjMrd+=oox}SD3Bz)2I;P`xS2;Gj?MPRgl z@B$el1~sbM65^@X>3$Yq?|iVZ;H$2xBf%W(Cuuuo9i-%YMNJPjr;=rI>ukF}cP|z{P##Cl25!__gT3OYs zk=a~wVX~ZLC8i*x*vEv3kgAZUXfS)H!9C`+G8Nlq)-#FVFki*VZ=zPpuHX!Z9+IkNQj4xW%KB$=9DaV$Z)A>xANB&vYmRLu` t8X*r=Tv0_UEPb`A{!1H*wv{P3g>oU6&*%Rs6<7ay@ng4MtmaDje*s^o{B{5U literal 0 HcmV?d00001 diff --git a/susyexists/src/seekpath/__pycache__/getpaths.cpython-310.pyc b/susyexists/src/seekpath/__pycache__/getpaths.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..949e713aae8b786d73a3f74539c901998aff9bd5 GIT binary patch literal 23247 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 literal 0 HcmV?d00001 diff --git a/susyexists/src/seekpath/brillouinzone/__init__.py b/susyexists/src/seekpath/brillouinzone/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/brillouinzone/__pycache__/__init__.cpython-310.pyc b/susyexists/src/seekpath/brillouinzone/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1cb966de6db95445bf219c71323f50537b34b614 GIT binary patch literal 169 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 0 + is_down_inside = delaunay.find_simplex(point_down) >= 0 + + if is_up_inside and not is_down_inside: + correct_orientation = True + elif not is_up_inside and is_down_inside: + correct_orientation = False + else: + inside_outside_string = "inside" if is_up_inside else "outside" + print( + "WARNING! Both vectors are {}..." + " not changing orientation".format(inside_outside_string) + ) + correct_orientation = True + + if correct_orientation: + ret_data["triangles"].append(simplex.tolist()) + else: + ret_data["triangles"].append(simplex[::-1].tolist()) + + # print hull.area, hull.volume + + # Get edge-sharing faces + # edges has as key a tuple (sorted) with the indices of the two vertices of + # the shared edge; the value are the indices of the triangles + edges = defaultdict(list) + for simplex_idx, simplex in enumerate(hull.simplices): + edges[tuple(sorted([simplex[0], simplex[1]]))].append(simplex_idx) + edges[tuple(sorted([simplex[1], simplex[2]]))].append(simplex_idx) + edges[tuple(sorted([simplex[2], simplex[0]]))].append(simplex_idx) + # convert to dictionary of lists (from defaultdict of sets) + edges = dict(edges) + + ### Create now the list of faces, merging the triangles that share an + ### edge and are coplanar. Note: this works only if up to two triangles + ### must be merged; if three or more, this will not produce the expected + ### result + # print edges + + # Store merge operations to perform + merge_with = defaultdict(set) + + # List of found simplices that have been merged; will be used at the + # end to add the triangles that have not been merged, if any + merged_simplices = [] + for (p1, p2), triangles in edges.items(): + # I do it many times, but it's the easiest way (and anyway it's + # a set, so it should be fast: I add a point to be merged with + # itself + merge_with[triangles[0]].add(triangles[0]) + merge_with[triangles[1]].add(triangles[1]) + + if len(triangles) != 2: + # An edge shared by less (or more) than 2 triangles? + print("Warning!", p1, p2, triangles) + continue + else: + # Check if two triangles are coplanar: get the other two + # vertices that are not on the shared edge + otherpoint0 = get_missing_point(hull.simplices[triangles[0]], p1, p2) + otherpoint1 = get_missing_point(hull.simplices[triangles[1]], p1, p2) + # The actual vector coordinates + otherpoint0_p = hull.points[otherpoint0] + otherpoint1_p = hull.points[otherpoint1] + p1_p = hull.points[p1] + p2_p = hull.points[p2] + + # Check if they are coplanar + if are_coplanar(p2_p - p1_p, otherpoint0_p - p1_p, otherpoint1_p - p1_p): + merge_with[triangles[0]].add(triangles[1]) + merge_with[triangles[1]].add(triangles[0]) + + # PROBLEM TO SOLVE: we have to put together all groups + ## E.g. we have now: + # 0: [0, 3] + # 1: [1, 2, 3] + # 2: [1, 2] + # 3: [0, 1, 3] + ## We should get instead for all [0,1,2,3] + # So we have to do a pass to merge them all + # The algorithm below is probably wrong (actually, it is only + # probably inefficient) + + # for k, v in merge_with.items(): + # print "{}: {}".format(k, list(v)) + + # Iterate untile convergence - not sure this is correct + has_changed = True + while has_changed: + has_changed = False + # Add the missing ones + for tr in range(len(hull.simplices)): + for other1 in merge_with[tr]: + for other2 in merge_with[tr]: + if other1 not in merge_with[other2]: + has_changed = True + merge_with[other2].add(other1) + if other2 not in merge_with[other1]: + has_changed = True + merge_with[other1].add(other2) + + # convert to dict, and most importantly convert to list and sort + merge_with = {k: sorted(v) for k, v in merge_with.items()} + + # Assign to the smallest integer idx + merge_group = {k: v[0] for k, v in merge_with.items()} + + groups = defaultdict(list) + # I create a reverse index + for k, v in merge_group.items(): + groups[v].append(k) + + # List of faces (elements are lists of vertex ids) + faces = [] + + for group in groups.values(): + if len(group) == 1: + faces.append( + [hull.points[point_idx] for point_idx in hull.simplices[group[0]]] + ) + else: + # Get all points + all_points_idx = sorted( + set(np.concatenate([hull.simplices[g] for g in group])) + ) + + all_points_coords = [hull.points[point_idx] for point_idx in all_points_idx] + # Find projection in 2D: I first choose a first vector (between + # two points v1; I find the orthogonal vector to the plane b; + # I find a second vector v2 orthogonal to v1 and on the plane + # (<=> orthogonal to v1 and b); I normalize v1 and v2; + # I get the components of the vectors w.r.t. v1 and v2 + # NOTE: there is at least 1 triangle => at least 3 points + v1 = all_points_coords[1] - all_points_coords[0] + temp_v2 = all_points_coords[2] - all_points_coords[0] + b = np.cross(v1, temp_v2) + v2 = np.cross(v1, b) + # Normalize + v1 = v1 / np.linalg.norm(v1) + v2 = v2 / np.linalg.norm(v2) + # get components + x = [np.dot(point, v1) for point in all_points_coords] + y = [np.dot(point, v2) for point in all_points_coords] + # 2. do convexhull in 2D + hull_face2d = ConvexHull(np.array([x, y]).T) + # 3. get point indices of convex hull, convert back to original + # 3D indices + # 2dhull.vertices contains the segments, but with ids in the + # smaller subset. We want the indices in the initial set: + actual_points_idx = [ + all_points_idx[subset_idx] for subset_idx in hull_face2d.vertices + ] + # 4. add to faces list + faces.append( + [hull.points[point_idx].tolist() for point_idx in actual_points_idx] + ) + + ret_data["faces"] = faces + return ret_data + + +if __name__ == "__main__": + from pylab import figure, show + from mpl_toolkits.mplot3d.art3d import Poly3DCollection + + # draw a vector + from matplotlib.patches import FancyArrowPatch + from mpl_toolkits.mplot3d import proj3d + + class Arrow3D(FancyArrowPatch): + def __init__(self, xs, ys, zs, *args, **kwargs): + FancyArrowPatch.__init__(self, (0, 0), (0, 0), *args, **kwargs) + self._verts3d = xs, ys, zs + + def draw(self, renderer): + xs3d, ys3d, zs3d = self._verts3d + xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M) + self.set_positions((xs[0], ys[0]), (xs[1], ys[1])) + FancyArrowPatch.draw(self, renderer) + + ##SC + # faces_data = get_BZ(b1 = [1,0,0], b2 = [0,1,0], b3 = [0,0,1]) + ##BCC + # faces_data = get_BZ(b1 = [1,1,0], b2 = [1,0,1], b3 = [0,1,1]) + ##FCC + faces_data = get_BZ(b1=[1, 1, -1], b2=[1, -1, 1], b3=[-1, 1, 1]) + + import json + + print(json.dumps(faces_data)) + + faces_coords = faces_data["faces"] + + faces_count = defaultdict(int) + for face in faces_coords: + faces_count[len(face)] += 1 + + for num_sides in sorted(faces_count.keys()): + print("{} faces: {}".format(num_sides, faces_count[num_sides])) + + fig = figure() + ax = fig.add_subplot(111, projection="3d") + ax.add_collection3d( + Poly3DCollection( + faces_coords, linewidth=1, alpha=0.9, edgecolor="k", facecolor="#ccccff" + ) + ) + + # draw origin + ax.scatter([0], [0], [0], color="g", s=100) + + axes_length = 2 + # Add axes + ax.add_artist( + Arrow3D( + (0, axes_length), + (0, 0), + (0, 0), + mutation_scale=20, + lw=1, + arrowstyle="-|>", + color="k", + ) + ) + ax.add_artist( + Arrow3D( + (0, 0), + (0, axes_length), + (0, 0), + mutation_scale=20, + lw=1, + arrowstyle="-|>", + color="k", + ) + ) + ax.add_artist( + Arrow3D( + (0, 0), + (0, 0), + (0, axes_length), + mutation_scale=20, + lw=1, + arrowstyle="-|>", + color="k", + ) + ) + + ## Reset limits + ax.set_xlim(-1, 1) + ax.set_ylim(-1, 1) + ax.set_zlim(-1, 1) + ax.axis("off") + ax.view_init(elev=0, azim=60) + + show() diff --git a/susyexists/src/seekpath/getpaths.py b/susyexists/src/seekpath/getpaths.py new file mode 100644 index 00000000..bd3b21b8 --- /dev/null +++ b/susyexists/src/seekpath/getpaths.py @@ -0,0 +1,608 @@ +""" +This module contains the main functions to get a path and an explicit path. +""" +import numpy as np +import warnings +from . import SupercellWarning + + +def get_explicit_from_implicit( # pylint: disable=too-many-locals + seekpath_output, reference_distance +): + """ + Given the output of ``get_path`` by seekpath, compute an "explicit" path, + i.e. instead of just giving the endpoints and their coordinates, compute + a full list of kpoints + + :param seekpath_output: a dictionary, the output of ``seekpath.get_path`` + + :param reference_distance: a reference target distance between neighboring + k-points in the path, in units of 1/ang. The actual value will be as + close as possible to this value, to have an integer number of points in + each path. + """ + retdict = {} + + kpoints_rel = [] + kpoints_labels = [] + kpoints_linearcoord = [] + previous_linearcoord = 0.0 + segments = [] + for start_label, stop_label in seekpath_output["path"]: + start_coord = np.array(seekpath_output["point_coords"][start_label]) + stop_coord = np.array(seekpath_output["point_coords"][stop_label]) + start_coord_abs = np.dot( + start_coord, seekpath_output["reciprocal_primitive_lattice"] + ) + stop_coord_abs = np.dot( + stop_coord, seekpath_output["reciprocal_primitive_lattice"] + ) + segment_length = np.linalg.norm(stop_coord_abs - start_coord_abs) + num_points = max(2, int(segment_length / reference_distance)) + segment_linearcoord = np.linspace(0.0, segment_length, num_points) + segment_start = len(kpoints_labels) + for i in range(num_points): + # Skip the first point if it's the same as the last one of + # the previous segment + if i == 0: + if kpoints_labels: + if kpoints_labels[-1] == start_label: + segment_start -= 1 + continue + + kpoints_rel.append( + start_coord + + (stop_coord - start_coord) * float(i) / float(num_points - 1) + ) + if i == 0: + kpoints_labels.append(start_label) + elif i == num_points - 1: + kpoints_labels.append(stop_label) + else: + kpoints_labels.append("") + kpoints_linearcoord.append(previous_linearcoord + segment_linearcoord[i]) + previous_linearcoord += segment_length + segment_end = len(kpoints_labels) + segments.append((segment_start, segment_end)) + + retdict["kpoints_rel"] = np.array(kpoints_rel) + retdict["kpoints_linearcoord"] = np.array(kpoints_linearcoord) + retdict["kpoints_labels"] = kpoints_labels + retdict["kpoints_abs"] = np.dot( + retdict["kpoints_rel"], seekpath_output["reciprocal_primitive_lattice"] + ) + retdict["segments"] = segments + + return retdict + + +def get_path( + structure, + with_time_reversal=True, + recipe="hpkot", + threshold=1.0e-7, + symprec=1e-05, + angle_tolerance=-1.0, +): + r""" + Return the kpoint path information for band structure given a + crystal structure, using the paths from the chosen recipe/reference. + + If you use this module, please cite the paper of the corresponding + recipe (see parameter below). + + :param structure: The crystal structure for which we want to obtain + the suggested path. It should be a tuple in the format + accepted by spglib: ``(cell, positions, numbers)``, where + (if N is the number of atoms): + + - ``cell`` is a :math:`3 \times 3` list of floats (``cell[0]`` is the first lattice + vector, ...) + - ``positions`` is a :math:`N \times 3` list of floats with the atomic coordinates + in scaled coordinates (i.e., w.r.t. the cell vectors) + - ``numbers`` is a length-:math:`N` list with integers identifying uniquely + the atoms in the cell (e.g., the Z number of the atom, but + any other positive non-zero integer will work - e.g. if you + want to distinguish two Carbon atoms, you can set one number + to 6 and the other to 1006) + + :param with_time_reversal: if False, and the group has no inversion + symmetry, additional lines are returned as described in the HPKOT + paper. + + :param recipe: choose the reference publication that defines the special + points and paths. + Currently, the following value is implemented: + + - ``hpkot``: HPKOT paper: + Y. Hinuma, G. Pizzi, Y. Kumagai, F. Oba, I. Tanaka, Band structure + diagram paths based on crystallography, Comp. Mat. Sci. 128, 140 (2017). + DOI: 10.1016/j.commatsci.2016.10.015 + + :param threshold: the threshold to use to verify if we are in + and edge case (e.g., a tetragonal cell, but ``a==c``). For instance, + in the tI lattice, if ``abs(a-c) < threshold``, a + :py:exc:`~seekpath.hpkot.EdgeCaseWarning` is issued. + Note that depending on the bravais lattice, the meaning of the + threshold is different (angle, length, ...) + + :param symprec: the symmetry precision used internally by SPGLIB + + :param angle_tolerance: the angle_tolerance used internally by SPGLIB + + + :return: a dictionary with the following + keys: + + - ``point_coords``: a dictionary with label -> float coordinates + - ``path``: a list of length-2 tuples, with the labels of the starting + and ending point of each label section + - ``has_inversion_symmetry``: True or False, depending on whether the + input crystal structure has inversion symmetry or not. + - ``augmented_path``: if True, it means that the path was + augmented with the :math:`-k` points (this happens if both + has_inversion_symmetry is False, and the user set + with_time_reversal=False in the input) + - ``bravais_lattice``: the Bravais lattice string (like ``cP``, ``tI``, ...) + - ``bravais_lattice_extended``: the specific case used to define labels and + coordinates (like ``cP1``, ``tI2``, ...) + - ``cont_lattice``: three real-space vectors for the crystallographic + conventional cell (``conv_lattice[0,:]`` is the first vector) + - ``conv_positions``: fractional coordinates of atoms in the + crystallographic conventional cell + - ``conv_types``: list of integer types of the atoms in the crystallographic + conventional cell (typically, the atomic numbers) + - ``primitive_lattice``: three real-space vectors for the crystallographic + primitive cell (``primitive_lattice[0,:]`` is the first vector) + - ``primitive_positions``: fractional coordinates of atoms in the + crystallographic primitive cell + - ``primitive_types``: list of integer types of the atoms in the + crystallographic primitive cell (typically, the atomic numbers) + - ``reciprocal_primitive_lattice``: reciprocal-cell vectors for the + primitive cell (vectors are rows: ``reciprocal_primitive_lattice[0,:]`` + is the first vector) + - ``primitive_transformation_matrix``: the transformation matrix :math:`P` between + the conventional and the primitive cell + - ``inverse_primitive_transformation_matrix``: the inverse of the matrix :math:`P` + (the determinant is integer and gives the ratio in volume between + the conventional and primitive cells) + - ``volume_original_wrt_conv``: volume ratio of the user-provided cell + with respect to the the crystallographic conventional cell + - ``volume_original_wrt_prim``: volume ratio of the user-provided cell + with respect to the the crystalloraphic primitive cell + + :note: An :py:exc:`~seekpath.hpkot.EdgeCaseWarning` is issued for + edge cases (e.g. if ``a==b==c`` for + orthorhombic systems). In this case, still one of the valid cases + is picked. + """ + if recipe == "hpkot": + from . import hpkot + + res = hpkot.get_path( + structure=structure, + with_time_reversal=with_time_reversal, + threshold=threshold, + symprec=symprec, + angle_tolerance=angle_tolerance, + ) + + else: + raise ValueError( + "value for 'recipe' not recognized. The only value " + "currently accepted is 'hpkot'." + ) + return res + + +def get_explicit_k_path( + structure, + with_time_reversal=True, + reference_distance=0.025, + recipe="hpkot", + threshold=1.0e-7, + symprec=1e-05, + angle_tolerance=-1.0, +): + r""" + Return the kpoint path for band structure (in scaled and absolute + coordinates), given a crystal structure, + using the paths proposed in the various publications (see description + of the 'recipe' input parameter). + Note that the k-path typically refers to a different unit cell + (e.g., the primitive one with some transformation matrix to comply with + the conventions in the case of the HPKOT paper). So, one should use the + crystal cell provided in output for all calculations, rather than the + input 'structure'. + + If you use this module, please cite the paper of the corresponding + recipe (see parameter below). + + :param structure: The crystal structure for which we want to obtain + the suggested path. It should be a tuple in the format + accepted by spglib: (cell, positions, numbers), where + (if N is the number of atoms): + + - ``cell`` is a :math:`3 \times 3` list of floats (``cell[0]`` is the first lattice + vector, ...) + - ``positions`` is a :math:`N \times 3` list of floats with the atomic coordinates + in scaled coordinates (i.e., w.r.t. the cell vectors) + - ``numbers`` is a length-:math:`N` list with integers identifying uniquely + the atoms in the cell (e.g., the Z number of the atom, but + any other positive non-zero integer will work - e.g. if you + want to distinguish two Carbon atoms, you can set one number + to 6 and the other to 1006) + + :param with_time_reversal: if False, and the group has no inversion + symmetry, additional lines are returned. + + :param reference_distance: a reference target distance between neighboring + k-points in the path, in units of 1/ang. The actual value will be as + close as possible to this value, to have an integer number of points in + each path. + + :param recipe: choose the reference publication that defines the special + points and paths. + Currently, the following value is implemented: + + - ``hpkot``: HPKOT paper: + Y. Hinuma, G. Pizzi, Y. Kumagai, F. Oba, I. Tanaka, Band structure + diagram paths based on crystallography, Comp. Mat. Sci. 128, 140 (2017). + DOI: 10.1016/j.commatsci.2016.10.015 + + :param threshold: the threshold to use to verify if we are in + and edge case (e.g., a tetragonal cell, but ``a==c``). For instance, + in the tI lattice, if ``abs(a-c) < threshold``, a + :py:exc:`~seekpath.hpkot.EdgeCaseWarning` is issued. + Note that depending on the bravais lattice, the meaning of the + threshold is different (angle, length, ...) + + :param symprec: the symmetry precision used internally by SPGLIB + + :param angle_tolerance: the angle_tolerance used internally by SPGLIB + + .. versionchanged:: 1.8 + The key ``segments`` has been renamed ``explicit_segments`` + for consistency. + + :return: a dictionary with a number of keys. They are the same as + ``get_path``, plus a few ones: + + - ``explicit_kpoints_abs``: List of the kpoints along the specific path in + absolute (Cartesian) coordinates. The two endpoints are always + included, independently of the length. + - ``explicit_kpoints_rel``: List of the kpoints along the specific path in + relative (fractional) coordinates (same length as + explicit_kpoints_abs). + - ``explicit_kpoints_labels``: list of strings with kpoints labels. It has + the same length as explicit_kpoints_abs and explicit_kpoints_rel. + Empty if the point is not a special point. + - ``explicit_kpoints_linearcoord``: array of floats, giving the coordinate + at which to plot the corresponding point. + - ``explicit_segments``: a list of length-2 tuples, with the start and end + index of each segment. **Note**! The indices are supposed to be + used as follows: the labels for the i-th segment are given by:: + + segment_indices = explicit_segments[i] + segment_labels = explicit_kpoints_labels[slice(*segment_indices)] + + This means, in particular, that if you want the label of the start + and end points, you should do:: + + start_label = explicit_kpoints_labels[segment_indices[0]] + stop_label = explicit_kpoints_labels[segment_indices[1]-1] + + (note the minus one!) + + Also, note that if + ``explicit_segments[i-1][1] == explicit_segments[i][0] + 1`` it means + that the point was calculated only once, and it belongs to both + paths. Instead, if + ``explicit_segments[i-1][1] == explicit_segments[i][0]``, then + this is a 'break' point in the path (e.g., ``explicit_segments[i-1][1]`` + is the X point, and ``explicit_segments[i][0]`` is the R point, + and typically in a graphical representation they are shown at the + same coordinate, with a label ``R|X``). + """ + if recipe == "hpkot": + from . import hpkot + + res = hpkot.get_path( + structure=structure, + with_time_reversal=with_time_reversal, + threshold=threshold, + symprec=symprec, + angle_tolerance=angle_tolerance, + ) + + else: + raise ValueError( + "value for 'recipe' not recognized. The only value " + "currently accepted is 'hpkot'." + ) + + explicit_res = get_explicit_from_implicit( + res, reference_distance=reference_distance + ) + for k, v in explicit_res.items(): + res["explicit_{}".format(k)] = v + return res + + +def get_path_orig_cell( + structure, + with_time_reversal=True, + recipe="hpkot", + threshold=1.0e-7, + symprec=1e-05, + angle_tolerance=-1.0, +): + r""" + Return the kpoint path information for band structure given a + crystal structure, using the paths from the chosen recipe/reference. + The original unit cell (i.e., the one provided in input by the user) is used. + Standardization or symmetrization of the input unit cell is not performed. + + If the provided unit cell is a supercell of a smaller primitive cell, + return the standard k path of the smaller primitive cell in the basis + of the supercell reciprocal lattice vectors. In this case, the k-point + labels lose their meaning as the corresponding k-points are not at the + high-symmetry points of the first BZ of the given supercell. A + :py:exc:`~seekpath.SupercellWarning` is issued. + + If you use this module, please cite the paper of the corresponding + recipe (see parameter below). + + :param structure: The crystal structure for which we want to obtain + the suggested path. It should be a tuple in the format + accepted by spglib: ``(cell, positions, numbers)``, where + (if N is the number of atoms): + + - ``cell`` is a :math:`3 \times 3` list of floats (``cell[0]`` is the first lattice + vector, ...) + - ``positions`` is a :math:`N \times 3` list of floats with the atomic coordinates + in scaled coordinates (i.e., w.r.t. the cell vectors) + - ``numbers`` is a length-:math:`N` list with integers identifying uniquely + the atoms in the cell (e.g., the Z number of the atom, but + any other positive non-zero integer will work - e.g. if you + want to distinguish two Carbon atoms, you can set one number + to 6 and the other to 1006) + + :param with_time_reversal: if False, and the group has no inversion + symmetry, additional lines are returned as described in the HPKOT + paper. + + :param recipe: choose the reference publication that defines the special + points and paths. + Currently, the following value is implemented: + + - ``hpkot``: HPKOT paper: + Y. Hinuma, G. Pizzi, Y. Kumagai, F. Oba, I. Tanaka, Band structure + diagram paths based on crystallography, Comp. Mat. Sci. 128, 140 (2017). + DOI: 10.1016/j.commatsci.2016.10.015 + + :param threshold: the threshold to use to verify if we are in + and edge case (e.g., a tetragonal cell, but ``a==c``). For instance, + in the tI lattice, if ``abs(a-c) < threshold``, a + :py:exc:`~seekpath.hpkot.EdgeCaseWarning` is issued. + Note that depending on the bravais lattice, the meaning of the + threshold is different (angle, length, ...) + + :param symprec: the symmetry precision used internally by SPGLIB + + :param angle_tolerance: the angle_tolerance used internally by SPGLIB + + + :return: a dictionary with the following + keys: + + - ``point_coords``: a dictionary with label -> float coordinates + - ``path``: a list of length-2 tuples, with the labels of the starting + and ending point of each label section + input crystal structure has inversion symmetry or not. + - ``augmented_path``: if True, it means that the path was + augmented with the :math:`-k` points (this happens if both + has_inversion_symmetry is False, and the user set + with_time_reversal=False in the input) + - ``is_supercell``: True if the input unit cell is a supercell of + a smaller primitive cell. + + :note: An :py:exc:`~seekpath.hpkot.EdgeCaseWarning` is issued for + edge cases (e.g. if ``a==b==c`` for + orthorhombic systems). In this case, still one of the valid cases + is picked. + """ + + res = get_path( + structure=structure, + with_time_reversal=with_time_reversal, + threshold=threshold, + symprec=symprec, + angle_tolerance=angle_tolerance, + recipe=recipe, + ) + + is_supercell = abs(res["volume_original_wrt_prim"] - 1) > 0.1 + + if is_supercell: + warnings.warn( + "The provided cell is a supercell: the returned k-path is the " + "standard k-path of the associated primitive cell in the basis of " + "the supercell reciprocal lattice.", + SupercellWarning, + ) + + # points in the output of get_path are in scaled coordinates of the + # standardized primitive lattice + points_scaled_standard = res["point_coords"] + + # Convert points from scaled coordinates of the standardiced primitive + # lattice to Cartesian coordinates + points_cartesian = {} + for pointname, coords in points_scaled_standard.items(): + points_cartesian[pointname] = coords @ np.array( + res["reciprocal_primitive_lattice"] + ) + + # Rotate points in Cartesian space + for pointname, coords in points_cartesian.items(): + points_cartesian[pointname] = coords @ res["rotation_matrix"] + + # Convert points from Cartesian coordinates to the scaled coordinates + # of the original lattice + points_scaled_original = {} + cell_orig = np.array(structure[0]) + for pointname, coords in points_cartesian.items(): + points_scaled_original[pointname] = list(coords @ cell_orig.T / np.pi / 2) + + res_orig = { + "point_coords": points_scaled_original, + "path": res["path"], + "augmented_path": res["augmented_path"], + "is_supercell": is_supercell, + "has_inversion_symmetry": res["has_inversion_symmetry"], + "bravais_lattice": res["bravais_lattice"], + "bravais_lattice_extended": res["bravais_lattice_extended"], + "spacegroup_number": res["spacegroup_number"], + "spacegroup_international": res["spacegroup_international"], + } + + return res_orig + + +def get_explicit_k_path_orig_cell( + structure, + with_time_reversal=True, + reference_distance=0.025, + recipe="hpkot", + threshold=1.0e-7, + symprec=1e-05, + angle_tolerance=-1.0, +): + r""" + Return the kpoint path for band structure (in scaled and absolute + coordinates), given a crystal structure, + using the paths proposed in the various publications (see description + of the 'recipe' input parameter) for the given unit cell. + Standardization or symmetrization of the input unit cell is not performed. + + If the provided unit cell is a supercell of a smaller primitive cell, + return the standard k path of the smaller primitive cell in the basis + of the supercell reciprocal lattice vectors. In this case, the k-point + labels lose their meaning as the corresponding k-points are not at the + high-symmetry points of the first BZ of the given supercell. A + :py:exc:`~seekpath.SupercellWarning` is issued. + + If you use this module, please cite the paper of the corresponding + recipe (see parameter below). + + :param structure: The crystal structure for which we want to obtain + the suggested path. It should be a tuple in the format + accepted by spglib: (cell, positions, numbers), where + (if N is the number of atoms): + + - ``cell`` is a :math:`3 \times 3` list of floats (``cell[0]`` is the first lattice + vector, ...) + - ``positions`` is a :math:`N \times 3` list of floats with the atomic coordinates + in scaled coordinates (i.e., w.r.t. the cell vectors) + - ``numbers`` is a length-:math:`N` list with integers identifying uniquely + the atoms in the cell (e.g., the Z number of the atom, but + any other positive non-zero integer will work - e.g. if you + want to distinguish two Carbon atoms, you can set one number + to 6 and the other to 1006) + + :param with_time_reversal: if False, and the group has no inversion + symmetry, additional lines are returned. + + :param reference_distance: a reference target distance between neighboring + k-points in the path, in units of 1/ang. The actual value will be as + close as possible to this value, to have an integer number of points in + each path. + + :param recipe: choose the reference publication that defines the special + points and paths. + Currently, the following value is implemented: + + - ``hpkot``: HPKOT paper: + Y. Hinuma, G. Pizzi, Y. Kumagai, F. Oba, I. Tanaka, Band structure + diagram paths based on crystallography, Comp. Mat. Sci. 128, 140 (2017). + DOI: 10.1016/j.commatsci.2016.10.015 + + :param threshold: the threshold to use to verify if we are in + and edge case (e.g., a tetragonal cell, but ``a==c``). For instance, + in the tI lattice, if ``abs(a-c) < threshold``, a + :py:exc:`~seekpath.hpkot.EdgeCaseWarning` is issued. + Note that depending on the bravais lattice, the meaning of the + threshold is different (angle, length, ...) + + :param symprec: the symmetry precision used internally by SPGLIB + + :param angle_tolerance: the angle_tolerance used internally by SPGLIB + + .. versionchanged:: 1.8 + The key ``segments`` has been renamed ``explicit_segments`` + for consistency. + + :return: a dictionary with a number of keys. They are the same as + ``get_path_orig_cell``, plus a few ones: + + - ``explicit_kpoints_abs``: List of the kpoints along the specific path in + absolute (Cartesian) coordinates. The two endpoints are always + included, independently of the length. + - ``explicit_kpoints_rel``: List of the kpoints along the specific path in + relative (fractional) coordinates (same length as + explicit_kpoints_abs). + - ``explicit_kpoints_labels``: list of strings with kpoints labels. It has + the same length as explicit_kpoints_abs and explicit_kpoints_rel. + Empty if the point is not a special point. + - ``explicit_kpoints_linearcoord``: array of floats, giving the coordinate + at which to plot the corresponding point. + - ``explicit_segments``: a list of length-2 tuples, with the start and end + index of each segment. **Note**! The indices are supposed to be + used as follows: the labels for the i-th segment are given by:: + + segment_indices = explicit_segments[i] + segment_labels = explicit_kpoints_labels[slice(*segment_indices)] + + This means, in particular, that if you want the label of the start + and end points, you should do:: + + start_label = explicit_kpoints_labels[segment_indices[0]] + stop_label = explicit_kpoints_labels[segment_indices[1]-1] + + (note the minus one!) + + Also, note that if + ``explicit_segments[i-1][1] == explicit_segments[i][0] + 1`` it means + that the point was calculated only once, and it belongs to both + paths. Instead, if + ``explicit_segments[i-1][1] == explicit_segments[i][0]``, then + this is a 'break' point in the path (e.g., ``explicit_segments[i-1][1]`` + is the X point, and ``explicit_segments[i][0]`` is the R point, + and typically in a graphical representation they are shown at the + same coordinate, with a label ``R|X``). + """ + from .hpkot.tools import get_reciprocal_cell_rows + + res = get_path_orig_cell( + structure=structure, + with_time_reversal=with_time_reversal, + threshold=threshold, + symprec=symprec, + angle_tolerance=angle_tolerance, + recipe=recipe, + ) + + # Set reciprocal_primitive_lattice as the reciprocal lattice of the original + # cell. To be used only in the get_explicit_from_implicit function. + res["reciprocal_primitive_lattice"] = get_reciprocal_cell_rows(structure[0]) + + explicit_res = get_explicit_from_implicit( + res, reference_distance=reference_distance + ) + + res.pop("reciprocal_primitive_lattice") + + for k, v in explicit_res.items(): + res["explicit_{}".format(k)] = v + return res diff --git a/susyexists/src/seekpath/hpkot/__init__.py b/susyexists/src/seekpath/hpkot/__init__.py new file mode 100644 index 00000000..5ac1f765 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/__init__.py @@ -0,0 +1,521 @@ +""" +The seekpath.hpkot module contains routines to get automatically the +path in a 3D Brillouin zone to plot band structures according to the +HPKOT paper (see references below). + +Author: Giovanni Pizzi, PSI + +Licence: MIT License, see LICENSE.txt + +.. note:: the list of point coordinates and example POSCAR files in + the band_path_data subfolder have been provided by Yoyo Hinuma, + Kyoto University, Japan. The POSCARs have been retrieved from + the Materials Project (http://materialsproject.org). +""" + + +class EdgeCaseWarning(RuntimeWarning): + """ + A warning issued when the cell is an edge case (e.g. orthorhombic + symmetry, but ``a==b==c``. + """ + + pass + + +class SymmetryDetectionError(Exception): + """ + Error raised if spglib could not detect the symmetry. + """ + + pass + + +def get_path( + structure, + with_time_reversal=True, + threshold=1.0e-7, + symprec=1e-05, + angle_tolerance=-1.0, +): + r""" + Return the kpoint path information for band structure given a + crystal structure, using the paths from the chosen recipe/reference. + + If you use this module, please cite the paper of the corresponding + recipe (see parameter below). + + :param structure: The crystal structure for which we want to obtain + the suggested path. It should be a tuple in the format + accepted by spglib: ``(cell, positions, numbers)``, where + (if N is the number of atoms): + + - ``cell`` is a :math:`3 \times 3` list of floats (``cell[0]`` is the first lattice + vector, ...) + - ``positions`` is a :math:`N \times 3` list of floats with the atomic coordinates + in scaled coordinates (i.e., w.r.t. the cell vectors) + - ``numbers`` is a length-:math:`N` list with integers identifying uniquely + the atoms in the cell (e.g., the Z number of the atom, but + any other positive non-zero integer will work - e.g. if you + want to distinguish two Carbon atoms, you can set one number + to 6 and the other to 1006) + + :param with_time_reversal: if False, and the group has no inversion + symmetry, additional lines are returned as described in the HPKOT + paper. + + :param recipe: choose the reference publication that defines the special + points and paths. + Currently, the following value is implemented: + + - ``hpkot``: HPKOT paper: + Y. Hinuma, G. Pizzi, Y. Kumagai, F. Oba, I. Tanaka, Band structure + diagram paths based on crystallography, Comp. Mat. Sci. 128, 140 (2017). + DOI: 10.1016/j.commatsci.2016.10.015 + + :param threshold: the threshold to use to verify if we are in + and edge case (e.g., a tetragonal cell, but ``a==c``). For instance, + in the tI lattice, if ``abs(a-c) < threshold``, a + :py:exc:`~seekpath.hpkot.EdgeCaseWarning` is issued. + Note that depending on the bravais lattice, the meaning of the + threshold is different (angle, length, ...) + + :param symprec: the symmetry precision used internally by SPGLIB + + :param angle_tolerance: the angle_tolerance used internally by SPGLIB + + + :return: a dictionary with the following + keys: + + - ``point_coords``: a dictionary with label -> float coordinates + - ``path``: a list of length-2 tuples, with the labels of the starting + and ending point of each label section + - ``has_inversion_symmetry``: True or False, depending on whether the + input crystal structure has inversion symmetry or not. + - ``augmented_path``: if True, it means that the path was + augmented with the :math:`-k` points (this happens if both + has_inversion_symmetry is False, and the user set + with_time_reversal=False in the input) + - ``bravais_lattice``: the Bravais lattice string (like ``cP``, ``tI``, ...) + - ``bravais_lattice_extended``: the specific case used to define labels and + coordinates (like ``cP1``, ``tI2``, ...) + - ``cont_lattice``: three real-space vectors for the crystallographic + conventional cell (``conv_lattice[0,:]`` is the first vector) + - ``conv_positions``: fractional coordinates of atoms in the + crystallographic conventional cell + - ``conv_types``: list of integer types of the atoms in the crystallographic + conventional cell (typically, the atomic numbers) + - ``primitive_lattice``: three real-space vectors for the crystallographic + primitive cell (``primitive_lattice[0,:]`` is the first vector) + - ``primitive_positions``: fractional coordinates of atoms in the + crystallographic primitive cell + - ``primitive_types``: list of integer types of the atoms in the + crystallographic primitive cell (typically, the atomic numbers) + - ``reciprocal_primitive_lattice``: reciprocal-cell vectors for the + primitive cell (vectors are rows: ``reciprocal_primitive_lattice[0,:]`` + is the first vector) + - ``primitive_transformation_matrix``: the transformation matrix :math:`P` between + the conventional and the primitive cell + - ``inverse_primitive_transformation_matrix``: the inverse of the matrix :math:`P` + (the determinant is integer and gives the ratio in volume between + the conventional and primitive cells) + - ``rotation_matrix``: rotation matrix in Cartesian space from the input + cell to the standardized cell + - ``volume_original_wrt_conv``: volume ratio of the user-provided cell + with respect to the the crystallographic conventional cell + - ``volume_original_wrt_prim``: volume ratio of the user-provided cell + with respect to the the crystallographic primitive cell + + :note: An :py:exc:`~seekpath.hpkot.EdgeCaseWarning` is issued for + edge cases (e.g. if ``a==b==c`` for + orthorhombic systems). In this case, still one of the valid cases + is picked. + """ + import copy + from math import sqrt + import warnings + + import numpy as np + + from .tools import ( + check_spglib_version, + extend_kparam, + eval_expr, + eval_expr_simple, + get_cell_params, + get_path_data, + get_reciprocal_cell_rows, + get_real_cell_from_reciprocal_rows, + ) + from .spg_mapping import get_spgroup_data, get_primitive + + # I check if the SPGlib version is recent enough (raises ValueError) + # otherwise + spglib = check_spglib_version() + + structure_internal = ( + np.array(structure[0]), + np.array(structure[1]), + np.array(structure[2]), + ) + + # Symmetry analysis by SPGlib, get crystallographic lattice, + # and cell parameters for this lattice + dataset = spglib.get_symmetry_dataset( + structure_internal, symprec=symprec, angle_tolerance=angle_tolerance + ) + if dataset is None: + raise SymmetryDetectionError( + "Spglib could not detect the symmetry of the system" + ) + conv_lattice = dataset["std_lattice"] + conv_positions = dataset["std_positions"] + conv_types = dataset["std_types"] + a, b, c, cosalpha, cosbeta, cosgamma = get_cell_params(conv_lattice) + spgrp_num = dataset["number"] + # This is the transformation from the original to the crystallographic + # conventional (called std in spglib) + # Lattice^{crystallographic_bravais} = L^{original} * transf_matrix + transf_matrix = dataset["transformation_matrix"] + volume_conv_wrt_original = np.linalg.det(transf_matrix) + + # Get the properties of the spacegroup, needed to get the bravais_lattice + properties = get_spgroup_data()[spgrp_num] + bravais_lattice = "{}{}".format(properties[0], properties[1]) + has_inv = properties[2] + + # Implement all different extended Bravais lattices + if bravais_lattice == "cP": + if spgrp_num >= 195 and spgrp_num <= 206: + ext_bravais = "cP1" + elif spgrp_num >= 207 and spgrp_num <= 230: + ext_bravais = "cP2" + else: + raise ValueError( + "Internal error! should be cP, but the " + "spacegroup number is not in the correct range" + ) + elif bravais_lattice == "cF": + if spgrp_num >= 195 and spgrp_num <= 206: + ext_bravais = "cF1" + elif spgrp_num >= 207 and spgrp_num <= 230: + ext_bravais = "cF2" + else: + raise ValueError( + "Internal error! should be cF, but the " + "spacegroup number is not in the correct range" + ) + elif bravais_lattice == "cI": + ext_bravais = "cI1" + elif bravais_lattice == "tP": + ext_bravais = "tP1" + elif bravais_lattice == "tI": + if abs(c - a) < threshold: + warnings.warn("tI lattice, but a almost equal to c", EdgeCaseWarning) + if c <= a: + ext_bravais = "tI1" + else: + ext_bravais = "tI2" + elif bravais_lattice == "oP": + ext_bravais = "oP1" + elif bravais_lattice == "oF": + if abs(1.0 / (a**2) - (1.0 / (b**2) + 1.0 / (c**2))) < threshold: + warnings.warn( + "oF lattice, but 1/a^2 almost equal to 1/b^2 + 1/c^2", EdgeCaseWarning + ) + if abs(1.0 / (c**2) - (1.0 / (a**2) + 1.0 / (b**2))) < threshold: + warnings.warn( + "oF lattice, but 1/c^2 almost equal to 1/a^2 + 1/b^2", EdgeCaseWarning + ) + if 1.0 / (a**2) > 1.0 / (b**2) + 1.0 / (c**2): + ext_bravais = "oF1" + elif 1.0 / (c**2) > 1.0 / (a**2) + 1.0 / (b**2): + ext_bravais = "oF2" + else: # 1/a^2, 1/b^2, 1/c^2 edges of a triangle + ext_bravais = "oF3" + elif bravais_lattice == "oI": + # Sort a,b,c, first is the largest + sorted_vectors = sorted([(c, 1, "c"), (b, 3, "b"), (a, 2, "a")])[::-1] + if abs(sorted_vectors[0][0] - sorted_vectors[1][0]) < threshold: + warnings.warn( + "oI lattice, but the two longest vectors {} and {} " + "have almost the same length".format( + sorted_vectors[0][2], sorted_vectors[1][2] + ), + EdgeCaseWarning, + ) + ext_bravais = "{}{}".format(bravais_lattice, sorted_vectors[0][1]) + elif bravais_lattice == "oC": + if abs(b - a) < threshold: + warnings.warn("oC lattice, but a almost equal to b", EdgeCaseWarning) + if a <= b: + ext_bravais = "oC1" + else: + ext_bravais = "oC2" + elif bravais_lattice == "oA": + if abs(b - c) < threshold: + warnings.warn("oA lattice, but b almost equal to c", EdgeCaseWarning) + if b <= c: + ext_bravais = "oA1" + else: + ext_bravais = "oA2" + elif bravais_lattice == "hP": + if spgrp_num in [ + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 151, + 153, + 157, + 159, + 160, + 161, + 162, + 163, + ]: + ext_bravais = "hP1" + else: + ext_bravais = "hP2" + elif bravais_lattice == "hR": + if abs(sqrt(3.0) * a - sqrt(2.0) * c) < threshold: + warnings.warn( + "hR lattice, but sqrt(3)a almost equal to sqrt(2)c", EdgeCaseWarning + ) + if sqrt(3.0) * a <= sqrt(2.0) * c: + ext_bravais = "hR1" + else: + ext_bravais = "hR2" + elif bravais_lattice == "mP": + ext_bravais = "mP1" + elif bravais_lattice == "mC": + if abs(b - a * sqrt(1.0 - cosbeta**2)) < threshold: + warnings.warn( + "mC lattice, but b almost equal to a*sin(beta)", EdgeCaseWarning + ) + if b < a * sqrt(1.0 - cosbeta**2): + ext_bravais = "mC1" + else: + if ( + abs(-a * cosbeta / c + a**2 * (1.0 - cosbeta**2) / b**2 - 1.0) + < threshold + ): + warnings.warn( + "mC lattice, but -a*cos(beta)/c + " + "a^2*sin(beta)^2/b^2 almost equal to 1", + EdgeCaseWarning, + ) + if -a * cosbeta / c + a**2 * (1.0 - cosbeta**2) / b**2 <= 1.0: + # 12-face + ext_bravais = "mC2" + else: + ext_bravais = "mC3" + elif bravais_lattice == "aP": + # First step: cell that is Niggli reduced in reciprocal space + # I use the default eps here, this could be changed + reciprocal_cell_orig = get_reciprocal_cell_rows(conv_lattice) + ## This is Niggli-reduced + reciprocal_cell2 = spglib.niggli_reduce(reciprocal_cell_orig) + real_cell2 = get_real_cell_from_reciprocal_rows(reciprocal_cell2) + # TODO: get transformation matrix? + + ka2, kb2, kc2, coskalpha2, coskbeta2, coskgamma2 = get_cell_params( + reciprocal_cell2 + ) + + conditions = np.array( + [ + abs(kb2 * kc2 * coskalpha2), + abs(kc2 * ka2 * coskbeta2), + abs(ka2 * kb2 * coskgamma2), + ] + ) + M2_matrices = [ + np.array([[0, 0, 1], [1, 0, 0], [0, 1, 0]]), + np.array([[0, 1, 0], [0, 0, 1], [1, 0, 0]]), + np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), + ] + # TODO: manage edge cases + smallest_condition = np.argsort(conditions)[0] + M2 = M2_matrices[smallest_condition] + # First change of vectors to have |ka3 kb3 cosgamma3| smallest + real_cell3 = np.dot(np.array(real_cell2).T, M2).T + reciprocal_cell3 = get_reciprocal_cell_rows(real_cell3) + ka3, kb3, kc3, coskalpha3, coskbeta3, coskgamma3 = get_cell_params( + reciprocal_cell3 + ) + if abs(coskalpha3) < threshold: + warnings.warn( + "aP lattice, but the k_alpha3 angle is almost equal " "to 90 degrees", + EdgeCaseWarning, + ) + if abs(coskbeta3) < threshold: + warnings.warn( + "aP lattice, but the k_beta3 angle is almost equal " "to 90 degrees", + EdgeCaseWarning, + ) + if abs(coskgamma3) < threshold: + warnings.warn( + "aP lattice, but the k_gamma3 angle is almost equal " "to 90 degrees", + EdgeCaseWarning, + ) + # Make them all-acute or all-obtuse with the additional conditions + # explained in HPKOT + # Note: cos > 0 => angle < 90deg + if coskalpha3 > 0.0 and coskbeta3 > 0.0 and coskgamma3 > 0.0: # 1a + M3 = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) + elif coskalpha3 <= 0.0 and coskbeta3 <= 0.0 and coskgamma3 <= 0.0: # 1b + M3 = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) + elif coskalpha3 > 0.0 and coskbeta3 <= 0.0 and coskgamma3 <= 0.0: # 2a + M3 = np.array([[1, 0, 0], [0, -1, 0], [0, 0, -1]]) + elif coskalpha3 <= 0.0 and coskbeta3 > 0.0 and coskgamma3 > 0.0: # 2b + M3 = np.array([[1, 0, 0], [0, -1, 0], [0, 0, -1]]) + elif coskalpha3 <= 0.0 and coskbeta3 > 0.0 and coskgamma3 <= 0.0: # 3a + M3 = np.array([[-1, 0, 0], [0, 1, 0], [0, 0, -1]]) + elif coskalpha3 > 0.0 and coskbeta3 <= 0.0 and coskgamma3 > 0.0: # 3b + M3 = np.array([[-1, 0, 0], [0, 1, 0], [0, 0, -1]]) + elif coskalpha3 <= 0.0 and coskbeta3 <= 0.0 and coskgamma3 > 0.0: # 4a + M3 = np.array([[-1, 0, 0], [0, -1, 0], [0, 0, 1]]) + elif coskalpha3 > 0.0 and coskbeta3 > 0.0 and coskgamma3 <= 0.0: # 4b + M3 = np.array([[-1, 0, 0], [0, -1, 0], [0, 0, 1]]) + else: + raise ValueError( + "Problem identifying M3 matrix in aP lattice!" + "Sign of cosines: cos(kalpha3){}0, " + "cos(kbeta3){}0, cos(kgamma3){}0".format( + ">=" if coskalpha3 >= 0 else "<", + ">=" if coskbeta3 >= 0 else "<", + ">=" if coskgamma3 >= 0 else "<", + ) + ) + + real_cell_final = np.dot(real_cell3.T, M3).T + reciprocal_cell_final = get_reciprocal_cell_rows(real_cell_final) + ka, kb, kc, coskalpha, coskbeta, coskgamma = get_cell_params( + reciprocal_cell_final + ) + + if coskalpha <= 0.0 and coskbeta <= 0.0 and coskgamma <= 0.0: + # all-obtuse + ext_bravais = "aP2" + elif coskalpha >= 0.0 and coskbeta >= 0.0 and coskgamma >= 0.0: + # all-acute + ext_bravais = "aP3" + else: + raise ValueError( + "Unexpected aP triclinic lattice, it neither " + "all-obtuse nor all-acute! Sign of cosines: cos(kalpha){}0, " + "cos(kbeta){}0, cos(kgamma){}0".format( + ">=" if coskalpha >= 0 else "<", + ">=" if coskbeta >= 0 else "<", + ">=" if coskgamma >= 0 else "<", + ) + ) + + # Get absolute positions + conv_pos_abs = np.dot(conv_positions, conv_lattice) + # Replace conv_lattice with the new conv_lattice + conv_lattice = np.array(real_cell_final) + # Store the relative coords with respect to the new vectors + # TODO: decide if we want to do %1. for the fractional coordinates + conv_positions = np.dot(conv_pos_abs, np.linalg.inv(conv_lattice)) + # TODO: implement the correct one (probably we need the matrix + # out from niggli, and then we can combine it with M2 and M3??) + # We set it to None for the time being to avoid confusion + transformation_matrix = None + + else: + raise ValueError( + "Unknown type '{}' for spacegroup {}".format( + bravais_lattice, dataset["number"] + ) + ) + + # NOTE: we simply use spglib.find_primitive, because the + # find_primitive of spglib follows a different convention for mC + # and oA as explained in the HPKOT paper + (prim_lattice, prim_pos, prim_types), (P, invP), conv_prim_mapping = get_primitive( + structure=(conv_lattice, conv_positions, conv_types), + bravais_lattice=bravais_lattice, + ) + + # Get the path data (k-parameters definitions, defition of the points, + # suggested path) + kparam_def, points_def, path = get_path_data(ext_bravais) + + # Get the actual numerical values of the k-parameters + # Note: at each step, I pass kparam and store the new + # parameter in the same dictionary. This allows to have + # some parameters defined implicitly in terms of previous + # parameters, as far as they are returned in the + kparam = {} + for kparam_name, kparam_expr in kparam_def: + kparam[kparam_name] = eval_expr( + kparam_expr, a, b, c, cosalpha, cosbeta, cosgamma, kparam + ) + + # Extend kparam with additional simple expressions (like 1-a, ...) + kparam_extended = extend_kparam(kparam) + + # Now I have evaluated all needed kparams; I can compute the actual + # coordinates of the relevant kpoints, using eval_expr_simple + points = {} + for pointname, coords_def in points_def.items(): + coords = [eval_expr_simple(_, kparam_extended) for _ in coords_def] + points[pointname] = coords + + # If there is no inversion symmetry nor time-reversal symmetry, add + # additional path + if not has_inv and not with_time_reversal: + augmented_path = True + else: + augmented_path = False + + if augmented_path: + for pointname, coords in list(points.items()): + if pointname == "GAMMA": + continue + points["{}'".format(pointname)] = [-coords[0], -coords[1], -coords[2]] + old_path = copy.deepcopy(path) + for start_p, end_p in old_path: + if start_p == "GAMMA": + new_start_p = start_p + else: + new_start_p = "{}'".format(start_p) + if end_p == "GAMMA": + new_end_p = end_p + else: + new_end_p = "{}'".format(end_p) + path.append((new_start_p, new_end_p)) + + return { + "point_coords": points, + "path": path, + "has_inversion_symmetry": has_inv, + "augmented_path": augmented_path, + "bravais_lattice": bravais_lattice, + "bravais_lattice_extended": ext_bravais, + "conv_lattice": conv_lattice, + "conv_positions": conv_positions, + "conv_types": conv_types, + "primitive_lattice": prim_lattice, + "primitive_positions": prim_pos, + "primitive_types": prim_types, + "reciprocal_primitive_lattice": get_reciprocal_cell_rows(prim_lattice), + # The following: between conv and primitive, see docstring of + # spg_mapping.get_P_matrix + "inverse_primitive_transformation_matrix": invP, + "primitive_transformation_matrix": P, + # For the time being disabled, not valid for aP lattices + # (for which we would need the transformation matrix from niggli) + #'transformation_matrix': transf_matrix, + "volume_original_wrt_conv": volume_conv_wrt_original, + "volume_original_wrt_prim": volume_conv_wrt_original * np.linalg.det(invP), + "spacegroup_number": dataset["number"], + "spacegroup_international": dataset["international"], + "rotation_matrix": dataset["std_rotation_matrix"], + } diff --git a/susyexists/src/seekpath/hpkot/__pycache__/__init__.cpython-310.pyc b/susyexists/src/seekpath/hpkot/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d1e22b84262ba66f2c751369d24541f5ee62cae7 GIT binary patch literal 13715 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 E1<=UA+5i9m literal 0 HcmV?d00001 diff --git a/susyexists/src/seekpath/hpkot/__pycache__/spg_db.cpython-310.pyc b/susyexists/src/seekpath/hpkot/__pycache__/spg_db.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33dc2830514804c11364d5fba6b37dab128ec5a8 GIT binary patch literal 7169 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 literal 0 HcmV?d00001 diff --git a/susyexists/src/seekpath/hpkot/__pycache__/tools.cpython-310.pyc b/susyexists/src/seekpath/hpkot/__pycache__/tools.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0177e6a2797e4d55f3b8806f5563508ecfb2d753 GIT binary patch literal 11909 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 literal 0 HcmV?d00001 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/aP2/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/aP2/POSCAR_inversion new file mode 100644 index 00000000..f7b8cf83 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/aP2/POSCAR_inversion @@ -0,0 +1,12 @@ +aP2Y BPOSCAR-0675402 + 1.0 + -1.2489688500000000 2.4101964100000002 -1.1084066800000001 + -3.8805945199999998 -0.4578071300000000 0.1425430700000000 + -1.4313846100000001 2.5585931100000003 3.3956427200000006 + Cu Ag O + 1 1 2 +Direct + 0.5000000000000000 0.5000000000000000 0.5000000000000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.1691864300000000 0.3370706700000000 0.2835515499999998 + 0.8308135699999999 0.6629293300000000 0.7164484500000001 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/aP2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/aP2/POSCAR_noinversion new file mode 100644 index 00000000..a63bde43 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/aP2/POSCAR_noinversion @@ -0,0 +1,12 @@ +aP2N BPOSCAR-0676400 + 1.0 + 0.2232003000000002 3.9509284600000001 0.1087184900000000 + 0.3371022500000000 0.0885412800000000 4.1905891500000001 + 4.5153270699999997 0.1789567900000000 0.3161373900000000 + Tl N O + 1 1 2 +Direct + 0.9926416100000000 0.9866600400000000 0.0201893400000000 + 0.4692735300000002 0.4346563700000002 0.5762333700000000 + 0.3840447300000002 0.4084731400000002 0.3183778200000001 + 0.6540401400000000 0.6702104500000001 0.5851994800000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/aP2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/aP2/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/aP2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/aP2/path.txt new file mode 100644 index 00000000..96037614 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/aP2/path.txt @@ -0,0 +1,7 @@ +GAMMA X +Y GAMMA +GAMMA Z +R GAMMA +GAMMA T +U GAMMA +GAMMA V diff --git a/susyexists/src/seekpath/hpkot/band_path_data/aP2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/aP2/points.txt new file mode 100644 index 00000000..b21ff5e5 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/aP2/points.txt @@ -0,0 +1,8 @@ +GAMMA 0 0 0 +Z 0 0 1/2 +Y 0 1/2 0 +X 1/2 0 0 +V 1/2 1/2 0 +U 1/2 0 1/2 +T 0 1/2 1/2 +R 1/2 1/2 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/aP3/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/aP3/POSCAR_inversion new file mode 100644 index 00000000..034e6db2 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/aP3/POSCAR_inversion @@ -0,0 +1,14 @@ +aP3Y BPOSCAR-0642822 + 1.0 + 2.0626889899999998 2.6083333300000002 -2.0959087400000000 + 1.9072983399999999 2.9395872999999999 1.8656656300000001 + 6.5783827900000000 -3.2025691800000007 1.4025826200000000 + Ca C + 2 4 +Direct + 0.2293290750000000 0.9643429050000000 0.7541443700000001 + 0.7706709250000001 0.0356570950000000 0.2458556299999999 + 0.1294345049999998 0.4304467199999998 0.0623625850000001 + 0.8705654950000002 0.5695532800000003 0.9376374149999998 + 0.4456382749999998 0.6359233099999999 0.4306348850000002 + 0.5543617250000001 0.3640766900000001 0.5693651149999999 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/aP3/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/aP3/POSCAR_noinversion new file mode 100644 index 00000000..46982b54 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/aP3/POSCAR_noinversion @@ -0,0 +1,12 @@ +aP3N BPOSCAR-0635393 + 1.0 + -1.9233544500000015 -3.4958872399999996 1.3364586999999970 + 1.9624998199999997 -2.5383092100000000 2.8008223899999996 + -2.9663797300000017 3.7162808800000002 6.3732958999999996 + Ca P I + 2 1 1 +Direct + 0.6536658899999999 0.7085705400000003 0.3177989800000001 + 0.3133405799999996 0.3342418600000008 0.6846297399999999 + 0.9818335000000000 0.0236059500000002 0.5000213100000001 + 0.0511600299999996 0.9335816500000002 0.9975499799999996 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/aP3/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/aP3/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/aP3/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/aP3/path.txt new file mode 100644 index 00000000..3923ed87 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/aP3/path.txt @@ -0,0 +1,7 @@ +GAMMA X +Y GAMMA +GAMMA Z +R_2 GAMMA +GAMMA T_2 +U_2 GAMMA +GAMMA V_2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/aP3/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/aP3/points.txt new file mode 100644 index 00000000..f572b7dd --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/aP3/points.txt @@ -0,0 +1,9 @@ +GAMMA 0 0 0 +Z 0 0 1/2 +Y 0 1/2 0 +Y_2 0 -1/2 0 +X 1/2 0 0 +V_2 1/2 -1/2 0 +U_2 -1/2 0 1/2 +T_2 0 -1/2 1/2 +R_2 -1/2 -1/2 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cF1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/cF1/POSCAR_inversion new file mode 100644 index 00000000..b96b2f42 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cF1/POSCAR_inversion @@ -0,0 +1,96 @@ +cF1Y BPOSCAR-0019863 + 1.0 + 10.8589940276984667 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 10.8589940276984667 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 10.8589940276984667 + N O K Cu Pb + 24 48 8 4 4 +Direct + 0.8008872400000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 0.1991127600000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.8008872400000000 + 0.0000000000000000 0.0000000000000000 0.1991127600000000 + 0.0000000000000000 0.8008872400000000 0.0000000000000000 + 0.1991127600000000 0.0000000000000000 0.0000000000000000 + 0.8008872400000000 0.5000000000000000 0.5000000000000000 + 0.0000000000000000 0.6991127600000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.3008872400000000 + 0.0000000000000000 0.5000000000000000 0.6991127600000000 + 0.0000000000000000 0.3008872400000000 0.5000000000000000 + 0.1991127600000000 0.5000000000000000 0.5000000000000000 + 0.3008872400000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.1991127600000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.3008872400000000 + 0.5000000000000000 0.0000000000000000 0.6991127600000000 + 0.5000000000000000 0.8008872400000000 0.5000000000000000 + 0.6991127600000000 0.0000000000000000 0.5000000000000000 + 0.3008872400000000 0.5000000000000000 0.0000000000000000 + 0.5000000000000000 0.6991127600000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.8008872400000000 + 0.5000000000000000 0.5000000000000000 0.1991127600000000 + 0.5000000000000000 0.3008872400000000 0.0000000000000000 + 0.6991127600000000 0.5000000000000000 0.0000000000000000 + 0.0992918700000000 0.2589942300000000 0.0000000000000000 + 0.2589942300000000 0.0000000000000000 0.9007081299999999 + 0.7410057700000000 0.0000000000000000 0.0992918700000000 + 0.7410057700000000 0.0000000000000000 0.9007081299999999 + 0.2589942300000000 0.0000000000000000 0.0992918700000000 + 0.0000000000000000 0.9007081299999999 0.2589942300000000 + 0.0992918700000000 0.7410057700000000 0.0000000000000000 + 0.9007081299999999 0.7410057700000000 0.0000000000000000 + 0.0000000000000000 0.0992918700000000 0.7410057700000000 + 0.0000000000000000 0.9007081299999999 0.7410057700000000 + 0.9007081299999999 0.2589942300000000 0.0000000000000000 + 0.0000000000000000 0.0992918700000000 0.2589942300000000 + 0.0992918700000000 0.7589942300000000 0.5000000000000000 + 0.2589942300000000 0.5000000000000000 0.4007081300000000 + 0.7410057700000000 0.5000000000000000 0.5992918700000001 + 0.7410057700000000 0.5000000000000000 0.4007081300000000 + 0.2589942300000000 0.5000000000000000 0.5992918700000001 + 0.0000000000000000 0.4007081300000000 0.7589942300000000 + 0.0992918700000000 0.2410057700000000 0.5000000000000000 + 0.9007081299999999 0.2410057700000000 0.5000000000000000 + 0.0000000000000000 0.5992918700000001 0.2410057700000000 + 0.0000000000000000 0.4007081300000000 0.2410057700000000 + 0.9007081299999999 0.7589942300000000 0.5000000000000000 + 0.0000000000000000 0.5992918700000001 0.7589942300000000 + 0.5992918700000001 0.2589942300000000 0.5000000000000000 + 0.7589942300000000 0.0000000000000000 0.4007081300000000 + 0.2410057700000000 0.0000000000000000 0.5992918700000001 + 0.2410057700000000 0.0000000000000000 0.4007081300000000 + 0.7589942300000000 0.0000000000000000 0.5992918700000001 + 0.5000000000000000 0.9007081299999999 0.7589942300000000 + 0.5992918700000001 0.7410057700000000 0.5000000000000000 + 0.4007081300000000 0.7410057700000000 0.5000000000000000 + 0.5000000000000000 0.0992918700000000 0.2410057700000000 + 0.5000000000000000 0.9007081299999999 0.2410057700000000 + 0.4007081300000000 0.2589942300000000 0.5000000000000000 + 0.5000000000000000 0.0992918700000000 0.7589942300000000 + 0.5992918700000001 0.7589942300000000 0.0000000000000000 + 0.7589942300000000 0.5000000000000000 0.9007081299999999 + 0.2410057700000000 0.5000000000000000 0.0992918700000000 + 0.2410057700000000 0.5000000000000000 0.9007081299999999 + 0.7589942300000000 0.5000000000000000 0.0992918700000000 + 0.5000000000000000 0.4007081300000000 0.2589942300000000 + 0.5992918700000001 0.2410057700000000 0.0000000000000000 + 0.4007081300000000 0.2410057700000000 0.0000000000000000 + 0.5000000000000000 0.5992918700000001 0.7410057700000000 + 0.5000000000000000 0.4007081300000000 0.7410057700000000 + 0.4007081300000000 0.7589942300000000 0.0000000000000000 + 0.5000000000000000 0.5992918700000001 0.2589942300000000 + 0.7500000000000000 0.2500000000000000 0.2500000000000000 + 0.2500000000000000 0.7500000000000000 0.7500000000000000 + 0.7500000000000000 0.7500000000000000 0.7500000000000000 + 0.2500000000000000 0.2500000000000000 0.2500000000000000 + 0.2500000000000000 0.2500000000000000 0.7500000000000000 + 0.7500000000000000 0.7500000000000000 0.2500000000000000 + 0.2500000000000000 0.7500000000000000 0.2500000000000000 + 0.7500000000000000 0.2500000000000000 0.7500000000000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 0.5000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.5000000000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.0000000000000000 + 0.5000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cF1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/cF1/POSCAR_noinversion new file mode 100644 index 00000000..e3c6e445 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cF1/POSCAR_noinversion @@ -0,0 +1,96 @@ +cF1N BPOSCAR-0608162 + 1.0 + 10.5257053675443810 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 10.5257053675443810 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 10.5257053675443810 + K Cu Pb N O + 8 4 4 24 48 +Direct + 0.7500000000000000 0.2500000000000000 0.2500000000000000 + 0.2500000000000000 0.7500000000000000 0.7500000000000000 + 0.7500000000000000 0.7500000000000000 0.7500000000000000 + 0.2500000000000000 0.2500000000000000 0.2500000000000000 + 0.2500000000000000 0.2500000000000000 0.7500000000000000 + 0.7500000000000000 0.7500000000000000 0.2500000000000000 + 0.2500000000000000 0.7500000000000000 0.2500000000000000 + 0.7500000000000000 0.2500000000000000 0.7500000000000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 0.5000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.5000000000000000 0.0000000000000000 + 0.5000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 + 0.0000000000000000 0.0000000000000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.7997519249999998 + 0.0000000000000000 0.2002480750000002 0.0000000000000000 + 0.2002480750000002 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 0.7997519249999998 0.0000000000000000 + 0.7997519249999998 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.2002480750000002 + 0.0000000000000000 0.5000000000000000 0.2997519249999998 + 0.0000000000000000 0.7002480750000002 0.5000000000000000 + 0.2002480750000002 0.5000000000000000 0.5000000000000000 + 0.0000000000000000 0.2997519249999998 0.5000000000000000 + 0.7997519249999998 0.5000000000000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.7002480750000002 + 0.5000000000000000 0.0000000000000000 0.2997519249999998 + 0.5000000000000000 0.2002480750000002 0.5000000000000000 + 0.7002480750000002 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.7997519249999998 0.5000000000000000 + 0.2997519249999998 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.7002480750000002 + 0.5000000000000000 0.5000000000000000 0.7997519249999998 + 0.5000000000000000 0.7002480750000002 0.0000000000000000 + 0.7002480750000002 0.5000000000000000 0.0000000000000000 + 0.5000000000000000 0.2997519249999998 0.0000000000000000 + 0.2997519249999998 0.5000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.2002480750000002 + 0.1009603100000000 0.7627072449999998 0.4840792550000000 + 0.9840792550000000 0.8990396900000001 0.7372927550000002 + 0.7372927550000002 0.0159207450000000 0.1009603100000000 + 0.9840792550000000 0.1009603100000000 0.2627072449999998 + 0.0159207450000000 0.8990396900000001 0.2627072449999998 + 0.2627072449999998 0.0159207450000000 0.8990396900000001 + 0.8990396900000001 0.2372927550000002 0.4840792550000000 + 0.1009603100000000 0.2372927550000002 0.5159207450000000 + 0.7372927550000002 0.9840792550000000 0.8990396900000001 + 0.2627072449999998 0.9840792550000000 0.1009603100000000 + 0.8990396900000001 0.7627072449999998 0.5159207450000000 + 0.0159207450000000 0.1009603100000000 0.7372927550000002 + 0.1009603100000000 0.2627072449999998 0.9840792550000000 + 0.9840792550000000 0.3990396900000000 0.2372927550000002 + 0.7372927550000002 0.5159207450000000 0.6009603099999999 + 0.9840792550000000 0.6009603099999999 0.7627072449999998 + 0.0159207450000000 0.3990396900000000 0.7627072449999998 + 0.2627072449999998 0.5159207450000000 0.3990396900000000 + 0.8990396900000001 0.7372927550000002 0.9840792550000000 + 0.1009603100000000 0.7372927550000002 0.0159207450000000 + 0.7372927550000002 0.4840792550000000 0.3990396900000000 + 0.2627072449999998 0.4840792550000000 0.6009603099999999 + 0.8990396900000001 0.2627072449999998 0.0159207450000000 + 0.0159207450000000 0.6009603099999999 0.2372927550000002 + 0.6009603099999999 0.7627072449999998 0.9840792550000000 + 0.4840792550000000 0.8990396900000001 0.2372927550000002 + 0.2372927550000002 0.0159207450000000 0.6009603099999999 + 0.4840792550000000 0.1009603100000000 0.7627072449999998 + 0.5159207450000000 0.8990396900000001 0.7627072449999998 + 0.7627072449999998 0.0159207450000000 0.3990396900000000 + 0.3990396900000000 0.2372927550000002 0.9840792550000000 + 0.6009603099999999 0.2372927550000002 0.0159207450000000 + 0.2372927550000002 0.9840792550000000 0.3990396900000000 + 0.7627072449999998 0.9840792550000000 0.6009603099999999 + 0.3990396900000000 0.7627072449999998 0.0159207450000000 + 0.5159207450000000 0.1009603100000000 0.2372927550000002 + 0.6009603099999999 0.2627072449999998 0.4840792550000000 + 0.4840792550000000 0.3990396900000000 0.7372927550000002 + 0.2372927550000002 0.5159207450000000 0.1009603100000000 + 0.4840792550000000 0.6009603099999999 0.2627072449999998 + 0.5159207450000000 0.3990396900000000 0.2627072449999998 + 0.7627072449999998 0.5159207450000000 0.8990396900000001 + 0.3990396900000000 0.7372927550000002 0.4840792550000000 + 0.6009603099999999 0.7372927550000002 0.5159207450000000 + 0.2372927550000002 0.4840792550000000 0.8990396900000001 + 0.7627072449999998 0.4840792550000000 0.1009603100000000 + 0.3990396900000000 0.2627072449999998 0.5159207450000000 + 0.5159207450000000 0.6009603099999999 0.7372927550000002 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cF1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/cF1/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cF1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/cF1/path.txt new file mode 100644 index 00000000..3b22a840 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cF1/path.txt @@ -0,0 +1,7 @@ +GAMMA X +X U +K GAMMA +GAMMA L +L W +W X +X W_2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cF1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/cF1/points.txt new file mode 100644 index 00000000..b5b6d65c --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cF1/points.txt @@ -0,0 +1,7 @@ +GAMMA 0 0 0 +X 1/2 0 1/2 +L 1/2 1/2 1/2 +W 1/2 1/4 3/4 +W_2 3/4 1/4 1/2 +K 3/8 3/8 3/4 +U 5/8 1/4 5/8 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cF2/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/cF2/POSCAR_inversion new file mode 100644 index 00000000..f2b50ba5 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cF2/POSCAR_inversion @@ -0,0 +1,16 @@ +cF2Y BPOSCAR-0000451 + 1.0 + 4.9126411092111697 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 4.9126411092111697 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 4.9126411092111697 + B Zr + 4 4 +Direct + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 0.5000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.5000000000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.0000000000000000 + 0.5000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cF2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/cF2/POSCAR_noinversion new file mode 100644 index 00000000..c3401699 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cF2/POSCAR_noinversion @@ -0,0 +1,16 @@ +cF2N BPOSCAR-0008222 + 1.0 + 5.0670397789115720 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.0670397789115720 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 5.0670397789115720 + O Ag + 4 4 +Direct + 0.7500000000000000 0.7500000000000000 0.2500000000000000 + 0.7500000000000000 0.2500000000000000 0.7500000000000000 + 0.2500000000000000 0.7500000000000000 0.7500000000000000 + 0.2500000000000000 0.2500000000000000 0.2500000000000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 0.5000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.5000000000000000 0.0000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cF2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/cF2/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cF2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/cF2/path.txt new file mode 100644 index 00000000..166303c6 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cF2/path.txt @@ -0,0 +1,6 @@ +GAMMA X +X U +K GAMMA +GAMMA L +L W +W X diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cF2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/cF2/points.txt new file mode 100644 index 00000000..b5b6d65c --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cF2/points.txt @@ -0,0 +1,7 @@ +GAMMA 0 0 0 +X 1/2 0 1/2 +L 1/2 1/2 1/2 +W 1/2 1/4 3/4 +W_2 3/4 1/4 1/2 +K 3/8 3/8 3/4 +U 5/8 1/4 5/8 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cI1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/cI1/POSCAR_inversion new file mode 100644 index 00000000..b9a01c7a --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cI1/POSCAR_inversion @@ -0,0 +1,16 @@ +cI1Y BPOSCAR-0570334 + 1.0 + 5.2123498899999996 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.2123498899999996 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 5.2123498899999996 + Si W + 2 6 +Direct + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.5000000000000000 0.0000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cI1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/cI1/POSCAR_noinversion new file mode 100644 index 00000000..1a32a011 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cI1/POSCAR_noinversion @@ -0,0 +1,18 @@ +cI1N BPOSCAR-0001818 + 1.0 + 5.5951250842907712 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.5951250842907712 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 5.5951250842907712 + F Si + 8 2 +Direct + 0.1632964950000000 0.8367035050000000 0.1632964950000000 + 0.8367035050000000 0.1632964950000000 0.1632964950000000 + 0.1632964950000000 0.1632964950000000 0.8367035050000000 + 0.8367035050000000 0.8367035050000000 0.8367035050000000 + 0.6632964950000000 0.3367035050000000 0.6632964950000000 + 0.3367035050000000 0.6632964950000000 0.6632964950000000 + 0.6632964950000000 0.6632964950000000 0.3367035050000000 + 0.3367035050000000 0.3367035050000000 0.3367035050000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cI1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/cI1/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cI1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/cI1/path.txt new file mode 100644 index 00000000..8232a4aa --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cI1/path.txt @@ -0,0 +1,6 @@ +GAMMA H +H N +N GAMMA +GAMMA P +P H +P N diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cI1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/cI1/points.txt new file mode 100644 index 00000000..c0e19ba3 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cI1/points.txt @@ -0,0 +1,4 @@ +GAMMA 0 0 0 +H 1/2 -1/2 1/2 +P 1/4 1/4 1/4 +N 0 0 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cP1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/cP1/POSCAR_inversion new file mode 100644 index 00000000..4de47947 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cP1/POSCAR_inversion @@ -0,0 +1,19 @@ +cP1Y BPOSCAR-0022597 + 1.0 + 6.0025823999999988 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 6.0025823999999988 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 6.0025823999999988 + N O Rb Cd + 3 6 1 1 +Direct + 0.5000000000000000 0.5000000000000000 0.0000000000000000 + 0.5000000000000000 0.0000000000000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.7075126700000000 + 0.0000000000000000 0.7075126700000000 0.5000000000000000 + 0.0000000000000000 0.2924873300000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.2924873300000000 + 0.2924873300000000 0.5000000000000000 0.0000000000000000 + 0.7075126700000000 0.5000000000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cP1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/cP1/POSCAR_noinversion new file mode 100644 index 00000000..871566e6 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cP1/POSCAR_noinversion @@ -0,0 +1,16 @@ +cP1N BPOSCAR-0008675 + 1.0 + 5.3233224500000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.3233224500000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 5.3233224500000000 + Pd Hg + 4 4 +Direct + 0.1525474800000000 0.3474525200000000 0.6525474800000000 + 0.3474525200000000 0.6525474800000000 0.1525474800000000 + 0.6525474800000000 0.1525474800000000 0.3474525200000000 + 0.8474525200000000 0.8474525200000000 0.8474525200000000 + 0.8435654299999999 0.6564345700000001 0.3435654300000000 + 0.6564345700000001 0.3435654300000000 0.8435654299999999 + 0.3435654300000000 0.8435654299999999 0.6564345700000001 + 0.1564345700000000 0.1564345700000000 0.1564345700000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cP1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/cP1/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cP1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/cP1/path.txt new file mode 100644 index 00000000..f21622d6 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cP1/path.txt @@ -0,0 +1,7 @@ +GAMMA X +X M +M GAMMA +GAMMA R +R X +R M +M X_1 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cP1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/cP1/points.txt new file mode 100644 index 00000000..f6555f79 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cP1/points.txt @@ -0,0 +1,5 @@ +GAMMA 0 0 0 +R 1/2 1/2 1/2 +M 1/2 1/2 0 +X 0 1/2 0 +X_1 1/2 0 0 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cP2/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/cP2/POSCAR_inversion new file mode 100644 index 00000000..059f8430 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cP2/POSCAR_inversion @@ -0,0 +1,10 @@ +cP2Y BPOSCAR-0000284 + 1.0 + 2.8531242500000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 2.8531242500000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 2.8531242500000000 + Al Co + 1 1 +Direct + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cP2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/cP2/POSCAR_noinversion new file mode 100644 index 00000000..0564edcc --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cP2/POSCAR_noinversion @@ -0,0 +1,13 @@ +cP2N BPOSCAR-0571436 + 1.0 + 6.6864277300000010 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 6.6864277300000010 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 6.6864277300000010 + Sn I + 1 4 +Direct + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.2339031900000000 0.7660968100000000 0.7660968100000000 + 0.7660968100000000 0.2339031900000000 0.7660968100000000 + 0.7660968100000000 0.7660968100000000 0.2339031900000000 + 0.2339031900000000 0.2339031900000000 0.2339031900000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cP2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/cP2/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cP2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/cP2/path.txt new file mode 100644 index 00000000..b3a1d072 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cP2/path.txt @@ -0,0 +1,6 @@ +GAMMA X +X M +M GAMMA +GAMMA R +R X +R M diff --git a/susyexists/src/seekpath/hpkot/band_path_data/cP2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/cP2/points.txt new file mode 100644 index 00000000..f6555f79 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/cP2/points.txt @@ -0,0 +1,5 @@ +GAMMA 0 0 0 +R 1/2 1/2 1/2 +M 1/2 1/2 0 +X 0 1/2 0 +X_1 1/2 0 0 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hP1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/hP1/POSCAR_inversion new file mode 100644 index 00000000..8afe117a --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hP1/POSCAR_inversion @@ -0,0 +1,15 @@ +hP1Y BPOSCAR-0000882 + 1.0 + 5.1132522679799095 0.0000000000000000 0.0000000000000000 + -2.5566261339899548 4.4282063600289971 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 4.7497088850000004 + O Ti + 1 6 +Direct + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.6684051500000000 0.6684051500000000 0.7391580200000001 + 0.6684051500000000 0.0000000000000000 0.2608419799999999 + 0.0000000000000000 0.6684051500000000 0.2608419799999999 + 0.3315948500000000 0.3315948500000000 0.2608419799999999 + 0.3315948500000000 0.0000000000000000 0.7391580200000001 + 0.0000000000000000 0.3315948500000000 0.7391580200000001 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hP1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/hP1/POSCAR_noinversion new file mode 100644 index 00000000..322b2660 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hP1/POSCAR_noinversion @@ -0,0 +1,13 @@ +hP1N BPOSCAR-0574250 + 1.0 + 7.3838276686181779 0.0000000000000000 0.0000000000000000 + -3.6919138343090889 6.3945823381897675 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 5.2679669400000000 + In Si Te + 1 1 3 +Direct + 0.6666666666666667 0.3333333333333333 0.4633006600000000 + 0.0000000000000000 0.0000000000000000 0.2766757500000000 + 0.0544849066666666 0.3550765733333332 0.2667378600000000 + 0.6449234266666668 0.6994083333333334 0.2667378600000000 + 0.3005916666666666 0.9455150933333334 0.2667378600000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hP1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/hP1/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hP1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/hP1/path.txt new file mode 100644 index 00000000..79f24e7c --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hP1/path.txt @@ -0,0 +1,10 @@ +GAMMA M +M K +K GAMMA +GAMMA A +A L +L H +H A +L M +H K +K H_2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hP1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/hP1/points.txt new file mode 100644 index 00000000..43bbe684 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hP1/points.txt @@ -0,0 +1,7 @@ +GAMMA 0 0 0 +A 0 0 1/2 +K 1/3 1/3 0 +H 1/3 1/3 1/2 +H_2 1/3 1/3 -1/2 +M 1/2 0 0 +L 1/2 0 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hP2/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/hP2/POSCAR_inversion new file mode 100644 index 00000000..9a797bfc --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hP2/POSCAR_inversion @@ -0,0 +1,11 @@ +hP2Y BPOSCAR-0001103 + 1.0 + 4.0893356498319466 0.0000000000000000 0.0000000000000000 + -2.0446678249159733 3.5414685573558113 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 3.7962176799999998 + Si Lu + 2 1 +Direct + 0.3333333333333333 0.6666666666666667 0.5000000000000000 + 0.6666666666666667 0.3333333333333333 0.5000000000000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hP2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/hP2/POSCAR_noinversion new file mode 100644 index 00000000..98f58ab6 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hP2/POSCAR_noinversion @@ -0,0 +1,10 @@ +hP2N BPOSCAR-0000219 + 1.0 + 3.2446419509649993 0.0000000000000000 0.0000000000000000 + -1.6223209754824996 2.8099423557203922 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 3.2005169000000002 + P Mo + 1 1 +Direct + 0.3333333333333333 0.6666666666666667 0.5000000000000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hP2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/hP2/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hP2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/hP2/path.txt new file mode 100644 index 00000000..cde9b1e8 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hP2/path.txt @@ -0,0 +1,9 @@ +GAMMA M +M K +K GAMMA +GAMMA A +A L +L H +H A +L M +H K diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hP2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/hP2/points.txt new file mode 100644 index 00000000..43bbe684 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hP2/points.txt @@ -0,0 +1,7 @@ +GAMMA 0 0 0 +A 0 0 1/2 +K 1/3 1/3 0 +H 1/3 1/3 1/2 +H_2 1/3 1/3 -1/2 +M 1/2 0 0 +L 1/2 0 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/hR1/POSCAR_inversion new file mode 100644 index 00000000..e84faae2 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR1/POSCAR_inversion @@ -0,0 +1,14 @@ +hR1Y BPOSCAR-0020132 + 1.0 + 3.7622432546763140 0.0000000000000000 0.0000000000000000 + -1.8811216273381570 3.2581982337663353 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 13.5138670706735571 + In Hg + 3 3 +Direct + 0.6666666666666667 0.3333333333333333 0.8333333333333333 + 0.3333333333333333 0.6666666666666666 0.1666666666666666 + 0.0000000000000000 0.0000000000000000 0.4999999999999999 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.6666666666666666 0.3333333333333333 0.3333333333333333 + 0.3333333333333333 0.6666666666666666 0.6666666666666666 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/hR1/POSCAR_noinversion new file mode 100644 index 00000000..187f70e9 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR1/POSCAR_noinversion @@ -0,0 +1,14 @@ +hR1N BPOSCAR-0022895 + 1.0 + 4.3089558515497082 0.0000000000000000 0.0000000000000000 + -2.1544779257748541 3.7316652312276553 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 10.2486516858249015 + Cu I + 3 3 +Direct + 0.0000000000000000 0.0000000000000000 0.2797794000000000 + 0.6666666666666666 0.3333333333333333 0.6131127333333333 + 0.3333333333333333 0.6666666666666666 0.9464460666666666 + 0.0000000000000000 0.0000000000000000 0.0252206000000002 + 0.6666666666666666 0.3333333333333333 0.3585539333333334 + 0.3333333333333333 0.6666666666666666 0.6918872666666668 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/hR1/k_vector_parameters.txt new file mode 100644 index 00000000..b8d379ae --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR1/k_vector_parameters.txt @@ -0,0 +1,3 @@ +D a*a/4/c/c +Y 5/6-2*D +N 1/3+D diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/hR1/path.txt new file mode 100644 index 00000000..22c5fa65 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR1/path.txt @@ -0,0 +1,7 @@ +GAMMA T +T H_2 +H_0 L +L GAMMA +GAMMA S_0 +S_2 F +F GAMMA diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/hR1/points.txt new file mode 100644 index 00000000..6700f97f --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR1/points.txt @@ -0,0 +1,20 @@ +GAMMA 0 0 0 +T 1/2 1/2 1/2 +L 1/2 0 0 +L_2 0 -1/2 0 +L_4 0 0 -1/2 +F 1/2 0 1/2 +F_2 1/2 1/2 0 +S_0 N -N 0 +S_2 1-N 0 N +S_4 N 0 -N +S_6 1-N N 0 +H_0 1/2 -1+Y 1-Y +H_2 Y 1-Y 1/2 +H_4 Y 1/2 1-Y +H_6 1/2 1-Y -1+Y +M_0 N -1+Y N +M_2 1-N 1-Y 1-N +M_4 Y N N +M_6 1-N 1-N 1-Y +M_8 N N -1+Y diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_inversion new file mode 100644 index 00000000..009897b4 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_inversion @@ -0,0 +1,38 @@ +Mn1 O3 S1 +1.0 + 7.9120001793 0.0000000000 0.0000000000 + -2.6073387350 7.4700422728 0.0000000000 + -2.6073387350 -3.6716632672 6.5054146993 + Mn S O + 6 6 18 +Direct + 0.365300000 0.186100006 0.681429982 + 0.634700000 0.813899994 0.318570018 + 0.681429982 0.365300000 0.186100006 + 0.318570018 0.634700000 0.813899994 + 0.186100006 0.681429982 0.365300000 + 0.813899994 0.318570018 0.634700000 + 0.355500013 0.024850000 0.210030004 + 0.644500017 0.975149989 0.789969981 + 0.210030004 0.355500013 0.024850000 + 0.789969981 0.644500017 0.975149989 + 0.024850000 0.210030004 0.355500013 + 0.975149989 0.789969981 0.644500017 + 0.553499997 0.230100006 0.340499997 + 0.446500003 0.769899964 0.659500003 + 0.340499997 0.553499997 0.230100006 + 0.659500003 0.446500003 0.769899964 + 0.230100006 0.340499997 0.553499997 + 0.769899964 0.659500003 0.446500003 + 0.310099989 0.979699969 0.372500002 + 0.689900041 0.020300001 0.627499998 + 0.372500002 0.310099989 0.979699969 + 0.627499998 0.689900041 0.020300001 + 0.979699969 0.372500002 0.310099989 + 0.020300001 0.627499998 0.689900041 + 0.412699997 0.867799997 0.119000003 + 0.587300003 0.132200003 0.880999982 + 0.119000003 0.412699997 0.867799997 + 0.880999982 0.587300003 0.132200003 + 0.867799997 0.119000003 0.412699997 + 0.132200003 0.880999982 0.587300003 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_inversion_alternate b/susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_inversion_alternate new file mode 100644 index 00000000..db06b38d --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_inversion_alternate @@ -0,0 +1,20 @@ +hR2Y BPOSCAR-0559435 + 1.0 + 5.5166617143778431 0.0000000000000000 0.0000000000000000 + -2.7583308571889216 4.7775691887362246 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 6.5087155299999999 + F Co + 9 3 +Direct + 0.8333333333333333 0.6666666666666666 0.1666666666666666 + 0.6666666666666666 0.8333333333333333 0.8333333333333334 + 0.8333333333333333 0.1666666666666667 0.1666666666666666 + 0.4999999999999999 0.0000000000000000 0.5000000000000000 + 0.3333333333333332 0.1666666666666666 0.1666666666666666 + 0.4999999999999999 0.5000000000000000 0.5000000000000000 + 0.1666666666666666 0.3333333333333332 0.8333333333333333 + 0.0000000000000000 0.4999999999999999 0.5000000000000000 + 0.1666666666666666 0.8333333333333333 0.8333333333333333 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.6666666666666666 0.3333333333333333 0.3333333333333333 + 0.3333333333333333 0.6666666666666666 0.6666666666666666 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_noinversion new file mode 100644 index 00000000..fd324549 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR2/POSCAR_noinversion @@ -0,0 +1,17 @@ +hR2N BPOSCAR-0035308 + 1.0 + 6.1618161492568841 0.0000000000000000 0.0000000000000000 + -3.0809080746284421 5.3362893187056679 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 4.8124574132877891 + C Cu N + 3 3 3 +Direct + 0.0000000000000000 0.0000000000000000 0.3778850299999999 + 0.6666666666666666 0.3333333333333333 0.7112183633333332 + 0.3333333333333333 0.6666666666666666 0.0445516966666666 + 0.0000000000000000 0.0000000000000000 0.0002308800000000 + 0.6666666666666666 0.3333333333333333 0.3335642133333334 + 0.3333333333333333 0.6666666666666666 0.6668975466666667 + 0.0000000000000000 0.0000000000000000 0.6218840800000001 + 0.6666666666666666 0.3333333333333333 0.9552174133333334 + 0.3333333333333333 0.6666666666666666 0.2885507466666666 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/hR2/k_vector_parameters.txt new file mode 100644 index 00000000..de20aaae --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR2/k_vector_parameters.txt @@ -0,0 +1,3 @@ +Z 1/6-c*c/9/a/a +H 1/2-2*Z +N 1/2+Z diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/hR2/path.txt new file mode 100644 index 00000000..9c59e332 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR2/path.txt @@ -0,0 +1,5 @@ +GAMMA L +L T +T P_0 +P_2 GAMMA +GAMMA F diff --git a/susyexists/src/seekpath/hpkot/band_path_data/hR2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/hR2/points.txt new file mode 100644 index 00000000..0e8a46f0 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/hR2/points.txt @@ -0,0 +1,9 @@ +GAMMA 0 0 0 +T 1/2 -1/2 1/2 +P_0 H -1+H H +P_2 H H H +R_0 1-H -H -H +M 1-N -N 1-N +M_2 N -1+N -1+N +L 1/2 0 0 +F 1/2 -1/2 0 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_inversion new file mode 100644 index 00000000..7859e5fb --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_inversion @@ -0,0 +1,16 @@ +Cu1 O1 +1.0 + 4.6529998779 0.0000000000 0.0000000000 + 0.0000000000 3.4100000858 0.0000000000 + -0.8413048067 0.0000000000 5.0382405853 + Cu O + 4 4 +Direct + 0.250000000 0.250000000 0.000000000 + 0.750000000 0.750000000 0.000000000 + 0.750000000 0.250000000 0.500000000 + 0.250000000 0.750000000 0.500000000 + 0.000000000 0.583999991 0.250000000 + 0.000000000 0.416000009 0.750000000 + 0.500000000 0.083999991 0.250000000 + 0.500000000 0.916000009 0.750000000 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_inversion_alternate b/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_inversion_alternate new file mode 100644 index 00000000..453c5039 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_inversion_alternate @@ -0,0 +1,14 @@ +mC1Y BPOSCAR-0023219 + 1.0 + 7.6917654295426541 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 3.4925583779989822 0.0000000000000000 + -3.3889674554441087 0.0000000000000000 6.1941827927435229 + Cu Br + 2 4 +Direct + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.0000000000000000 + 0.9906259350000000 0.5000000000000000 0.7580006699999999 + 0.0093740650000000 0.5000000000000000 0.2419993300000000 + 0.4906259350000000 0.0000000000000000 0.7580006699999999 + 0.5093740650000000 0.0000000000000000 0.2419993300000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_noinversion new file mode 100644 index 00000000..4180a7e7 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_noinversion @@ -0,0 +1,16 @@ +Cu1 O1 +1.0 + 4.6890001297 0.0000000000 0.0000000000 + 0.0000000000 3.4200000763 0.0000000000 + -0.8528750994 0.0000000000 5.0586070453 + Cu O + 4 4 +Direct + 0.250000000 0.231999993 0.000000000 + 0.250000000 0.768000007 0.500000000 + 0.750000000 0.731999993 0.000000000 + 0.750000000 0.268000007 0.500000000 + 0.972999990 0.412999988 0.233999997 + 0.972999990 0.587000012 0.733999968 + 0.472999990 0.912999988 0.233999997 + 0.472999990 0.087000012 0.733999968 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_noinversion_alternate b/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_noinversion_alternate new file mode 100644 index 00000000..37f23abb --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC1/POSCAR_noinversion_alternate @@ -0,0 +1,14 @@ +mC1N BPOSCAR-0632403 + 1.0 + 5.9523730992692938 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.9315452334996053 0.0000000000000000 + -0.1322263448500317 0.0000000000000000 4.9936063923993803 + Cd Cl + 2 4 +Direct + 0.0000000000000000 0.8435554000000002 0.0000000000000000 + 0.5000000000000000 0.3435554000000002 0.0000000000000000 + 0.2512113300000000 0.0819644100000003 0.7285905800000003 + 0.7487886699999999 0.0819644100000003 0.2714094199999996 + 0.7512113300000001 0.5819644100000003 0.7285905800000003 + 0.2487886700000000 0.5819644100000003 0.2714094199999996 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/mC1/k_vector_parameters.txt new file mode 100644 index 00000000..85e248ae --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC1/k_vector_parameters.txt @@ -0,0 +1,4 @@ +Z (2+a/c*cosbeta)/4/sinbeta/sinbeta +H 1/2-2*Z*c*cosbeta/a +S 3/4-b*b/4/a/a/sinbeta/sinbeta +P S-(3/4-S)*a*cosbeta/c diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/mC1/path.txt new file mode 100644 index 00000000..afd2c6ca --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC1/path.txt @@ -0,0 +1,9 @@ +GAMMA C +C_2 Y_2 +Y_2 GAMMA +GAMMA M_2 +M_2 D +D_2 A +A GAMMA +L_2 GAMMA +GAMMA V_2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/mC1/points.txt new file mode 100644 index 00000000..40664dfe --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC1/points.txt @@ -0,0 +1,16 @@ +GAMMA 0 0 0 +Y_2 -1/2 1/2 0 +Y_4 1/2 -1/2 0 +A 0 0 1/2 +M_2 -1/2 1/2 1/2 +V 1/2 0 0 +V_2 0 1/2 0 +L_2 0 1/2 1/2 +C 1-S 1-S 0 +C_2 -1+S S 0 +C_4 S -1+S 0 +D -1+P P 1/2 +D_2 1-P 1-P 1/2 +E -1+Z 1-Z 1-H +E_2 -Z Z H +E_4 Z -Z 1-H diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_inversion new file mode 100644 index 00000000..bb3b7a1f --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_inversion @@ -0,0 +1,16 @@ +Cr1 S1 +1.0 + 3.8259999752 0.0000000000 0.0000000000 + 0.0000000000 5.9130001068 0.0000000000 + -1.2243633483 0.0000000000 5.9646339479 + Cr S + 4 4 +Direct + 0.000000000 0.000000000 0.000000000 + 0.000000000 0.000000000 0.500000000 + 0.500000000 0.500000000 0.000000000 + 0.500000000 0.500000000 0.500000000 + 0.000000000 0.319999993 0.250000000 + 0.000000000 0.680000007 0.750000000 + 0.500000000 0.819999993 0.250000000 + 0.500000000 0.180000007 0.750000000 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_inversion_alternate b/susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_inversion_alternate new file mode 100644 index 00000000..070fa4c3 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_inversion_alternate @@ -0,0 +1,20 @@ +mC2Y BPOSCAR-0849598 + 1.0 + 2.8361602316236882 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 4.9041675669748317 0.0000000000000000 + -0.2930545685024968 0.0000000000000000 10.6463836915664292 + Co O + 4 8 +Direct + 0.2500000000000000 0.7500000000000000 0.0000000000000000 + 0.7500000000000000 0.7500000000000000 0.5000000000000000 + 0.7500000000000000 0.2500000000000000 0.0000000000000000 + 0.2500000000000000 0.2500000000000000 0.5000000000000000 + 0.7573757500000002 0.9163308999999999 0.0906554850000001 + 0.2426242499999998 0.9163308999999999 0.4093445149999999 + 0.7426242499999998 0.5836691000000001 0.9093445150000000 + 0.2573757500000002 0.5836691000000001 0.5906554850000001 + 0.2573757500000002 0.4163308999999999 0.0906554850000001 + 0.7426242499999998 0.4163308999999999 0.4093445149999999 + 0.2426242499999998 0.0836691000000000 0.9093445150000000 + 0.7573757500000002 0.0836691000000000 0.5906554850000001 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_noinversion new file mode 100644 index 00000000..694a10bb --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC2/POSCAR_noinversion @@ -0,0 +1,14 @@ +mC2N BPOSCAR-0684604 + 1.0 + 4.4543676407916521 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.9441566239106152 0.0000000000000000 + -2.0649512746343106 0.0000000000000000 4.5288322975994166 + Cu S + 2 4 +Direct + 0.0000000000000000 0.2823929850000000 0.0000000000000000 + 0.5000000000000000 0.7823929850000000 0.0000000000000000 + 0.0646265024999999 0.9926399325000000 0.7196481600000000 + 0.9353734975000000 0.9926399325000000 0.2803518400000000 + 0.5646265024999999 0.4926399324999999 0.7196481600000000 + 0.4353734975000001 0.4926399324999999 0.2803518400000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/mC2/k_vector_parameters.txt new file mode 100644 index 00000000..a5ce1c6d --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC2/k_vector_parameters.txt @@ -0,0 +1,6 @@ +Z (a*a/b/b+(1+a/c*cosbeta)/sinbeta/sinbeta)/4 +M (1+a*a/b/b)/4 +D -a*c*cosbeta/2/b/b +X 1/2-2*Z*c*cosbeta/a +P 1+Z-2*M +S X-2*D diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/mC2/path.txt new file mode 100644 index 00000000..15c24804 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC2/path.txt @@ -0,0 +1,6 @@ +GAMMA Y +Y M +M A +A GAMMA +L_2 GAMMA +GAMMA V_2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/mC2/points.txt new file mode 100644 index 00000000..4e04590d --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC2/points.txt @@ -0,0 +1,16 @@ +GAMMA 0 0 0 +Y 1/2 1/2 0 +A 0 0 1/2 +M 1/2 1/2 1/2 +V_2 0 1/2 0 +L_2 0 1/2 1/2 +F -1+P 1-P 1-S +F_2 1-P P S +F_4 P 1-P 1-S +H -Z Z X +H_2 Z 1-Z 1-X +H_4 Z -Z 1-X +G -M M D +G_2 M 1-M -D +G_4 M -M -D +G_6 1-M M D diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC3/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/mC3/POSCAR_inversion new file mode 100644 index 00000000..2a305566 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC3/POSCAR_inversion @@ -0,0 +1,14 @@ +mC3Y BPOSCAR-0755333 + 1.0 + 4.9221728169717158 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.0500784999999997 0.0000000000000000 + -1.9363348593869576 0.0000000000000000 3.8443169378737232 + Hg O + 2 4 +Direct + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.0000000000000000 + 0.5244409400000001 0.0000000000000000 0.6825487000000000 + 0.4755590600000000 0.0000000000000000 0.3174513000000000 + 0.0244409400000000 0.5000000000000000 0.6825487000000000 + 0.9755590600000000 0.5000000000000000 0.3174513000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC3/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/mC3/POSCAR_noinversion new file mode 100644 index 00000000..9c80651e --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC3/POSCAR_noinversion @@ -0,0 +1,16 @@ +mC3N BPOSCAR-0546787 + 1.0 + 6.0503027690559161 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.8058162443484527 0.0000000000000000 + -1.3412847479118257 0.0000000000000000 3.9837269517466511 + O K N + 4 2 2 +Direct + 0.9204877800000000 0.6856527500000000 0.4000303300000000 + 0.9204877800000000 0.3143472500000000 0.4000303300000000 + 0.4204877800000000 0.1856527500000000 0.4000303300000000 + 0.4204877800000000 0.8143472500000000 0.4000303300000000 + 0.9924952600000000 0.0000000000000000 0.9494725800000000 + 0.4924952600000000 0.5000000000000000 0.9494725800000000 + 0.4988838949999999 0.0000000000000000 0.5567151100000001 + 0.9988838949999999 0.5000000000000000 0.5567151100000001 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC3/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/mC3/k_vector_parameters.txt new file mode 100644 index 00000000..cf4a2b4a --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC3/k_vector_parameters.txt @@ -0,0 +1,7 @@ +Z (a*a/b/b+(1+a/c*cosbeta)/sinbeta/sinbeta)/4 +R 1-Z*b*b/a/a +E 1/2-2*Z*c*cosbeta/a +F E/2+a*a/4/b/b+a*c*cosbeta/2/b/b +U 2*F-Z +W c/2/a/cosbeta*(1-4*U+a*a*sinbeta*sinbeta/b/b) +D -1/4+W/2-Z*c*cosbeta/a diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC3/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/mC3/path.txt new file mode 100644 index 00000000..226205e3 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC3/path.txt @@ -0,0 +1,7 @@ +GAMMA A +A I_2 +I M_2 +M_2 GAMMA +GAMMA Y +L_2 GAMMA +GAMMA V_2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mC3/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/mC3/points.txt new file mode 100644 index 00000000..961f7071 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mC3/points.txt @@ -0,0 +1,19 @@ +GAMMA 0 0 0 +Y 1/2 1/2 0 +A 0 0 1/2 +M_2 -1/2 1/2 1/2 +V 1/2 0 0 +V_2 0 1/2 0 +L_2 0 1/2 1/2 +I -1+R R 1/2 +I_2 1-R 1-R 1/2 +K -U U W +K_2 -1+U 1-U 1-W +K_4 1-U U W +H -Z Z E +H_2 Z 1-Z 1-E +H_4 Z -Z 1-E +N -F F D +N_2 F 1-F -D +N_4 F -F -D +N_6 1-F F D diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_inversion new file mode 100644 index 00000000..ac3ca189 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_inversion @@ -0,0 +1,12 @@ +mP1Y BPOSCAR-0001048 + 1.0 + 2.9385939922724953 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 4.0149254499999998 0.0000000000000000 + -0.9809144665664697 0.0000000000000000 4.6621998437406615 + Ti Ni + 2 2 +Direct + 0.6102526299999999 0.7500000000000000 0.7841075399999999 + 0.3897473700000002 0.2500000000000000 0.2158924600000000 + 0.9374365400000000 0.7500000000000000 0.3284379699999999 + 0.0625634599999999 0.2500000000000000 0.6715620300000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_noinversion new file mode 100644 index 00000000..e3a2c043 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_noinversion @@ -0,0 +1,20 @@ +Au1 Te2 +1.0 + 8.7600002289 0.0000000000 0.0000000000 + 0.0000000000 4.4099998474 0.0000000000 + -5.8507873475 0.0000000000 8.2940207180 + Au Te + 4 8 +Direct + 0.748300016 0.493800014 0.124300003 + 0.748300016 0.506199956 0.624300003 + 0.246000007 0.994099975 0.873099983 + 0.246000007 0.005900000 0.373099983 + 0.935100019 0.986199975 0.572799981 + 0.935100019 0.013800000 0.072799981 + 0.558499992 0.052000001 0.674700022 + 0.558499992 0.948000014 0.174700022 + 0.057500001 0.446399987 0.420899987 + 0.057500001 0.553600013 0.920899987 + 0.436300009 0.558499992 0.323500007 + 0.436300009 0.441500008 0.823500037 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_noinversion_alternate b/susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_noinversion_alternate new file mode 100644 index 00000000..bd01116a --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mP1/POSCAR_noinversion_alternate @@ -0,0 +1,13 @@ +mP1N BPOSCAR-0037036 + 1.0 + 4.3191896229634406 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 3.7277627610011685 0.0000000000000000 + -0.2651497979729798 0.0000000000000000 5.7104711285392602 + Bi O + 2 3 +Direct + 0.0435174299999992 0.0000000000000000 0.0357734900000000 + 0.4811621599999999 0.5000000000000000 0.4800676200000000 + 0.5036851999999993 0.0000000000000000 0.2121958200000000 + 0.2902936299999997 0.0000000000000000 0.6861861600000001 + 0.0393416099999997 0.5000000000000000 0.2647768900000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mP1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/mP1/k_vector_parameters.txt new file mode 100644 index 00000000..de426841 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mP1/k_vector_parameters.txt @@ -0,0 +1,2 @@ +Y (1+a/c*cosbeta)/2/sinbeta/sinbeta +N 1/2+Y*c*cosbeta/a diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mP1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/mP1/path.txt new file mode 100644 index 00000000..b7acaf7b --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mP1/path.txt @@ -0,0 +1,10 @@ +GAMMA Z +Z D +D B +B GAMMA +GAMMA A +A E +E Z +Z C_2 +C_2 Y_2 +Y_2 GAMMA diff --git a/susyexists/src/seekpath/hpkot/band_path_data/mP1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/mP1/points.txt new file mode 100644 index 00000000..049122e0 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/mP1/points.txt @@ -0,0 +1,18 @@ +GAMMA 0 0 0 +Z 0 1/2 0 +B 0 0 1/2 +B_2 0 0 -1/2 +Y 1/2 0 0 +Y_2 -1/2 0 0 +C 1/2 1/2 0 +C_2 -1/2 1/2 0 +D 0 1/2 1/2 +D_2 0 1/2 -1/2 +A -1/2 0 1/2 +E -1/2 1/2 1/2 +H -Y 0 1-N +H_2 -1+Y 0 N +H_4 -Y 0 -N +M -Y 1/2 1-N +M_2 -1+Y 1/2 N +M_4 -Y 1/2 -N diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oA1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oA1/POSCAR_noinversion new file mode 100644 index 00000000..3143baaf --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oA1/POSCAR_noinversion @@ -0,0 +1,14 @@ +oA1N BPOSCAR-0632475 + 1.0 + 3.5372412112199783 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 3.1790663357329523 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 9.9032878682703824 + Nb S + 2 4 +Direct + 0.0000000000000000 0.0000000000000000 0.0309652399999998 + 0.0000000000000000 0.5000000000000000 0.5309652399999998 + 0.0000000000000000 0.5000000000000000 0.8489601849999999 + 0.5000000000000000 0.5000000000000000 0.1263269549999999 + 0.0000000000000000 0.0000000000000000 0.3489601849999999 + 0.5000000000000000 0.0000000000000000 0.6263269549999999 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oA1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oA1/k_vector_parameters.txt new file mode 100644 index 00000000..65033af5 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oA1/k_vector_parameters.txt @@ -0,0 +1 @@ +X (1+b*b/c/c)/4 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oA1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oA1/path.txt new file mode 100644 index 00000000..1d8637f2 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oA1/path.txt @@ -0,0 +1,11 @@ +GAMMA Y +Y C_0 +SIGMA_0 GAMMA +GAMMA Z +Z A_0 +E_0 T +T Y +GAMMA S +S R +R Z +Z T diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oA1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oA1/points.txt new file mode 100644 index 00000000..49efa4b4 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oA1/points.txt @@ -0,0 +1,10 @@ +GAMMA 0 0 0 +Y -1/2 1/2 0 +T -1/2 1/2 1/2 +Z 0 0 1/2 +S 0 1/2 0 +R 0 1/2 1/2 +SIGMA_0 X X 0 +C_0 -X 1-X 0 +A_0 X X 1/2 +E_0 -X 1-X 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oA2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oA2/POSCAR_noinversion new file mode 100644 index 00000000..dcbbdf14 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oA2/POSCAR_noinversion @@ -0,0 +1,16 @@ +oA2N BPOSCAR-0776563 + 1.0 + 3.0969165300000001 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 8.3989907800000001 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 4.9027343099999996 + Cr O + 2 6 +Direct + 0.0000000000000000 0.0000000000000000 0.8606000400000000 + 0.0000000000000000 0.5000000000000000 0.3606000400000000 + 0.5000000000000000 0.0000000000000000 0.0421212999999999 + 0.0000000000000000 0.8482551199999999 0.6657793299999999 + 0.0000000000000000 0.1517448800000001 0.6657793299999999 + 0.5000000000000000 0.5000000000000000 0.5421212999999999 + 0.0000000000000000 0.3482551199999998 0.1657793300000000 + 0.0000000000000000 0.6517448800000001 0.1657793300000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oA2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oA2/k_vector_parameters.txt new file mode 100644 index 00000000..18b16f55 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oA2/k_vector_parameters.txt @@ -0,0 +1 @@ +X (1+c*c/b/b)/4 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oA2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oA2/path.txt new file mode 100644 index 00000000..ad5a6ef5 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oA2/path.txt @@ -0,0 +1,11 @@ +GAMMA Y +Y F_0 +DELTA_0 GAMMA +GAMMA Z +Z B_0 +G_0 T +T Y +GAMMA S +S R +R Z +Z T diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oA2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oA2/points.txt new file mode 100644 index 00000000..41f61b23 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oA2/points.txt @@ -0,0 +1,15 @@ +GAMMA 0 0 0 +Y 1/2 1/2 0 +T 1/2 1/2 1/2 +T_2 1/2 1/2 -1/2 +Z 0 0 1/2 +Z_2 0 0 -1/2 +S 0 1/2 0 +R 0 1/2 1/2 +R_2 0 1/2 -1/2 +DELTA_0 -X X 0 +F_0 X 1-X 0 +B_0 -X X 1/2 +B_2 -X X -1/2 +G_0 X 1-X 1/2 +G_2 X 1-X -1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oC1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/oC1/POSCAR_inversion new file mode 100644 index 00000000..024f69f7 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oC1/POSCAR_inversion @@ -0,0 +1,12 @@ +oC1Y BPOSCAR-0022558 + 1.0 + 3.6793989900000006 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 4.1535798599999998 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 3.8236792350000002 + Si Ti + 2 2 +Direct + 0.0000000000000000 0.5000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.5000000000000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.0000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oC1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oC1/POSCAR_noinversion new file mode 100644 index 00000000..17a251ce --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oC1/POSCAR_noinversion @@ -0,0 +1,16 @@ +oC1N BPOSCAR-0571636 + 1.0 + 4.4114352315552399 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 12.4398762544664478 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 4.5441456599999999 + In Cl + 4 4 +Direct + 0.5000000000000000 0.1136209299999999 0.7500967299999999 + 0.5000000000000000 0.8863790700000000 0.2500967299999999 + 0.0000000000000000 0.6136209300000000 0.7500967299999999 + 0.0000000000000000 0.3863790700000001 0.2500967299999999 + 0.0000000000000000 0.8444605049999999 0.7659032699999999 + 0.0000000000000000 0.1555394950000001 0.2659032699999999 + 0.5000000000000000 0.3444605049999999 0.7659032699999999 + 0.5000000000000000 0.6555394950000001 0.2659032699999999 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oC1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oC1/k_vector_parameters.txt new file mode 100644 index 00000000..7ded452d --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oC1/k_vector_parameters.txt @@ -0,0 +1 @@ +X (1+a*a/b/b)/4 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oC1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oC1/path.txt new file mode 100644 index 00000000..1d8637f2 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oC1/path.txt @@ -0,0 +1,11 @@ +GAMMA Y +Y C_0 +SIGMA_0 GAMMA +GAMMA Z +Z A_0 +E_0 T +T Y +GAMMA S +S R +R Z +Z T diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oC1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oC1/points.txt new file mode 100644 index 00000000..49efa4b4 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oC1/points.txt @@ -0,0 +1,10 @@ +GAMMA 0 0 0 +Y -1/2 1/2 0 +T -1/2 1/2 1/2 +Z 0 0 1/2 +S 0 1/2 0 +R 0 1/2 1/2 +SIGMA_0 X X 0 +C_0 -X 1-X 0 +A_0 X X 1/2 +E_0 -X 1-X 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oC2/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/oC2/POSCAR_inversion new file mode 100644 index 00000000..cf6d0445 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oC2/POSCAR_inversion @@ -0,0 +1,16 @@ +oC2Y BPOSCAR-0027639 + 1.0 + 8.4287740423760944 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.4132319855084452 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 8.8163600399999993 + Br I + 4 4 +Direct + 0.0000000000000000 0.7990394399999999 0.2500000000000000 + 0.0000000000000000 0.2009605600000000 0.7500000000000000 + 0.5000000000000000 0.2990394400000000 0.2500000000000000 + 0.5000000000000000 0.7009605600000001 0.7500000000000000 + 0.0000000000000000 0.5000000000000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.0000000000000000 + 0.5000000000000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.0000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oC2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oC2/POSCAR_noinversion new file mode 100644 index 00000000..13087ec2 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oC2/POSCAR_noinversion @@ -0,0 +1,24 @@ +oC2N BPOSCAR-0560008 + 1.0 + 9.0059756537376536 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.5869779485260906 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 4.9891349099999998 + P N F + 4 4 8 +Direct + 0.0000000000000000 0.8668441500000000 0.5046977300000000 + 0.0000000000000000 0.1331558500000000 0.0046977300000000 + 0.5000000000000000 0.3668441500000000 0.5046977300000000 + 0.5000000000000000 0.6331558500000000 0.0046977300000000 + 0.0000000000000000 0.9118570800000000 0.1953748200000000 + 0.0000000000000000 0.0881429200000000 0.6953748200000001 + 0.5000000000000000 0.4118570800000000 0.1953748200000000 + 0.5000000000000000 0.5881429200000000 0.6953748200000001 + 0.1317217700000000 0.3063995400000000 0.0694637200000000 + 0.8682782300000000 0.6936004600000001 0.5694637200000000 + 0.8682782300000000 0.3063995400000000 0.0694637200000000 + 0.1317217700000000 0.6936004600000001 0.5694637200000000 + 0.6317217700000000 0.8063995399999999 0.0694637200000000 + 0.3682782300000000 0.1936004600000000 0.5694637200000000 + 0.3682782300000000 0.8063995399999999 0.0694637200000000 + 0.6317217700000000 0.1936004600000000 0.5694637200000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oC2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oC2/k_vector_parameters.txt new file mode 100644 index 00000000..50668952 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oC2/k_vector_parameters.txt @@ -0,0 +1 @@ +X (1+b*b/a/a)/4 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oC2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oC2/path.txt new file mode 100644 index 00000000..ad5a6ef5 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oC2/path.txt @@ -0,0 +1,11 @@ +GAMMA Y +Y F_0 +DELTA_0 GAMMA +GAMMA Z +Z B_0 +G_0 T +T Y +GAMMA S +S R +R Z +Z T diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oC2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oC2/points.txt new file mode 100644 index 00000000..41f61b23 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oC2/points.txt @@ -0,0 +1,15 @@ +GAMMA 0 0 0 +Y 1/2 1/2 0 +T 1/2 1/2 1/2 +T_2 1/2 1/2 -1/2 +Z 0 0 1/2 +Z_2 0 0 -1/2 +S 0 1/2 0 +R 0 1/2 1/2 +R_2 0 1/2 -1/2 +DELTA_0 -X X 0 +F_0 X 1-X 0 +B_0 -X X 1/2 +B_2 -X X -1/2 +G_0 X 1-X 1/2 +G_2 X 1-X -1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/oF1/POSCAR_inversion new file mode 100644 index 00000000..3fe3cbfa --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF1/POSCAR_inversion @@ -0,0 +1,20 @@ +oF1Y BPOSCAR-0614565 + 1.0 + 2.7462061222599123 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 7.2623585400000694 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 11.4917672794962744 + Cu O + 4 8 +Direct + 0.5000000000000000 0.5000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 0.5000000000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.6021200900000001 + 0.5000000000000000 0.5000000000000000 0.8978799099999999 + 0.0000000000000000 0.0000000000000000 0.1021200900000001 + 0.5000000000000000 0.0000000000000000 0.3978799099999999 + 0.5000000000000000 0.5000000000000000 0.1021200900000001 + 0.0000000000000000 0.5000000000000000 0.3978799099999999 + 0.5000000000000000 0.0000000000000000 0.6021200900000001 + 0.0000000000000000 0.0000000000000000 0.8978799099999999 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oF1/POSCAR_noinversion new file mode 100644 index 00000000..e897f485 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF1/POSCAR_noinversion @@ -0,0 +1,16 @@ +oF1N BPOSCAR-0685145 + 1.0 + 2.5153398345521460 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 6.0450801374370702 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 4.3398312607247256 + B N + 4 4 +Direct + 0.0000000000000000 0.0000000000000000 0.0004411600000001 + 0.0000000000000000 0.5000000000000000 0.5004411600000001 + 0.5000000000000000 0.0000000000000000 0.5004411600000001 + 0.5000000000000000 0.5000000000000000 0.0004411600000001 + 0.0000000000000000 0.0000000000000000 0.6665199100000001 + 0.0000000000000000 0.5000000000000000 0.1665199100000000 + 0.5000000000000000 0.0000000000000000 0.1665199100000000 + 0.5000000000000000 0.5000000000000000 0.6665199100000001 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oF1/k_vector_parameters.txt new file mode 100644 index 00000000..875b14c1 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF1/k_vector_parameters.txt @@ -0,0 +1,2 @@ +J (1+a*a/b/b-a*a/c/c)/4 +H (1+a*a/b/b+a*a/c/c)/4 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oF1/path.txt new file mode 100644 index 00000000..c8f9040d --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF1/path.txt @@ -0,0 +1,9 @@ +GAMMA Y +Y T +T Z +Z GAMMA +GAMMA SIGMA_0 +U_0 T +Y C_0 +A_0 Z +GAMMA L diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oF1/points.txt new file mode 100644 index 00000000..60da6b08 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF1/points.txt @@ -0,0 +1,9 @@ +GAMMA 0 0 0 +T 1 1/2 1/2 +Z 1/2 1/2 0 +Y 1/2 0 1/2 +SIGMA_0 0 H H +U_0 1 1-H 1-H +A_0 1/2 1/2+J J +C_0 1/2 1/2-J 1-J +L 1/2 1/2 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oF2/POSCAR_noinversion new file mode 100644 index 00000000..e58b6557 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF2/POSCAR_noinversion @@ -0,0 +1,32 @@ +oF2N BPOSCAR-0569272 + 1.0 + 10.4292567500000608 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 21.2694236321398442 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 5.5880580299681384 + Cs Se + 16 8 +Direct + 0.1729328200000002 0.5632488700000001 0.9531259500000002 + 0.8270671799999998 0.4367511299999999 0.9531259500000002 + 0.0770671799999998 0.3132488700000001 0.7031259500000002 + 0.9229328200000002 0.6867511299999999 0.7031259500000002 + 0.1729328200000002 0.0632488700000001 0.4531259500000002 + 0.8270671799999998 0.9367511299999998 0.4531259500000002 + 0.0770671799999998 0.8132488700000001 0.2031259500000002 + 0.9229328200000002 0.1867511299999999 0.2031259500000002 + 0.6729328200000002 0.5632488700000001 0.4531259500000002 + 0.3270671799999998 0.4367511299999999 0.4531259500000002 + 0.5770671799999998 0.3132488700000001 0.2031259500000002 + 0.4229328200000002 0.6867511299999999 0.2031259500000002 + 0.6729328200000002 0.0632488700000001 0.9531259500000002 + 0.3270671799999998 0.9367511299999998 0.9531259500000002 + 0.5770671799999998 0.8132488700000001 0.7031259500000002 + 0.4229328200000002 0.1867511299999999 0.7031259500000002 + 0.0000000000000000 0.5000000000000000 0.4701481000000003 + 0.7500000000000000 0.7500000000000000 0.2201481000000003 + 0.0000000000000000 0.0000000000000000 0.9701481000000002 + 0.7500000000000000 0.2500000000000000 0.7201481000000003 + 0.5000000000000000 0.5000000000000000 0.9701481000000002 + 0.2500000000000000 0.7500000000000000 0.7201481000000003 + 0.5000000000000000 0.0000000000000000 0.4701481000000003 + 0.2500000000000000 0.2500000000000000 0.2201481000000003 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oF2/k_vector_parameters.txt new file mode 100644 index 00000000..6b9898da --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF2/k_vector_parameters.txt @@ -0,0 +1,2 @@ +J (1+c*c/a/a-c*c/b/b)/4 +K (1+c*c/a/a+c*c/b/b)/4 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oF2/path.txt new file mode 100644 index 00000000..bddd09d0 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF2/path.txt @@ -0,0 +1,9 @@ +GAMMA T +T Z +Z Y +Y GAMMA +GAMMA LAMBDA_0 +Q_0 Z +T G_0 +H_0 Y +GAMMA L diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oF2/points.txt new file mode 100644 index 00000000..684f82a4 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF2/points.txt @@ -0,0 +1,9 @@ +GAMMA 0 0 0 +T 0 1/2 1/2 +Z 1/2 1/2 1 +Y 1/2 0 1/2 +LAMBDA_0 K K 0 +Q_0 1-K 1-K 1 +G_0 1/2-J 1-J 1/2 +H_0 1/2+J J 1/2 +L 1/2 1/2 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF3/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/oF3/POSCAR_inversion new file mode 100644 index 00000000..9855c66e --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF3/POSCAR_inversion @@ -0,0 +1,40 @@ +oF3Y BPOSCAR-0029752 + 1.0 + 7.4214640959206575 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 7.7727154597461103 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 7.9121098820103706 + Ni Ge Pt + 8 8 16 +Direct + 0.0000000000000000 0.2013824000000001 0.0000000000000000 + 0.0000000000000000 0.7986175999999999 0.0000000000000000 + 0.0000000000000000 0.7013824000000001 0.5000000000000000 + 0.0000000000000000 0.2986176000000000 0.5000000000000000 + 0.5000000000000000 0.2013824000000001 0.5000000000000000 + 0.5000000000000000 0.7986175999999999 0.5000000000000000 + 0.5000000000000000 0.7013824000000001 0.0000000000000000 + 0.5000000000000000 0.2986176000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.2326445950000000 + 0.0000000000000000 0.0000000000000000 0.7673554050000000 + 0.0000000000000000 0.5000000000000000 0.7326445950000000 + 0.0000000000000000 0.5000000000000000 0.2673554050000000 + 0.5000000000000000 0.0000000000000000 0.7326445950000000 + 0.5000000000000000 0.0000000000000000 0.2673554050000000 + 0.5000000000000000 0.5000000000000000 0.2326445950000000 + 0.5000000000000000 0.5000000000000000 0.7673554050000000 + 0.6979597600000003 0.0000000000000000 0.0000000000000000 + 0.7500000000000000 0.2500000000000000 0.2500000000000000 + 0.3020402399999998 0.0000000000000000 0.0000000000000000 + 0.7500000000000000 0.7500000000000000 0.2500000000000000 + 0.6979597600000003 0.5000000000000000 0.5000000000000000 + 0.7500000000000000 0.7500000000000000 0.7500000000000000 + 0.3020402399999998 0.5000000000000000 0.5000000000000000 + 0.7500000000000000 0.2500000000000000 0.7500000000000000 + 0.1979597600000002 0.0000000000000000 0.5000000000000000 + 0.2500000000000000 0.2500000000000000 0.7500000000000000 + 0.8020402399999997 0.0000000000000000 0.5000000000000000 + 0.2500000000000000 0.7500000000000000 0.7500000000000000 + 0.1979597600000002 0.5000000000000000 0.0000000000000000 + 0.2500000000000000 0.7500000000000000 0.2500000000000000 + 0.8020402399999997 0.5000000000000000 0.0000000000000000 + 0.2500000000000000 0.2500000000000000 0.2500000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF3/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oF3/POSCAR_noinversion new file mode 100644 index 00000000..e72abd44 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF3/POSCAR_noinversion @@ -0,0 +1,24 @@ +oF3N BPOSCAR-0022009 + 1.0 + 6.2363014538798494 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 24.0015979387369036 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 6.2508834982500243 + Se Pb + 8 8 +Direct + 0.5000000000000000 0.1894212000000000 0.9850017800000000 + 0.5000000000000000 0.8105788000000000 0.9850017800000000 + 0.5000000000000000 0.6894212000000000 0.4850017799999999 + 0.5000000000000000 0.3105788000000000 0.4850017799999999 + 0.0000000000000000 0.1894212000000000 0.4850017799999999 + 0.0000000000000000 0.8105788000000000 0.4850017799999999 + 0.0000000000000000 0.6894212000000000 0.9850017800000000 + 0.0000000000000000 0.3105788000000000 0.9850017800000000 + 0.0000000000000000 0.1927314850000000 0.9979982250000000 + 0.0000000000000000 0.8072685150000001 0.9979982250000000 + 0.0000000000000000 0.6927314849999999 0.4979982249999999 + 0.0000000000000000 0.3072685150000000 0.4979982249999999 + 0.5000000000000000 0.1927314850000000 0.4979982249999999 + 0.5000000000000000 0.8072685150000001 0.4979982249999999 + 0.5000000000000000 0.6927314849999999 0.9979982250000000 + 0.5000000000000000 0.3072685150000000 0.9979982250000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF3/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oF3/k_vector_parameters.txt new file mode 100644 index 00000000..dc832b13 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF3/k_vector_parameters.txt @@ -0,0 +1,3 @@ +H (1+a*a/b/b-a*a/c/c)/4 +K (1+b*b/a/a-b*b/c/c)/4 +P (1+c*c/b/b-c*c/a/a)/4 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF3/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oF3/path.txt new file mode 100644 index 00000000..d40b0833 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF3/path.txt @@ -0,0 +1,10 @@ +GAMMA Y +Y C_0 +A_0 Z +Z B_0 +D_0 T +T G_0 +H_0 Y +T GAMMA +GAMMA Z +GAMMA L diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oF3/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oF3/points.txt new file mode 100644 index 00000000..effbb545 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oF3/points.txt @@ -0,0 +1,11 @@ +GAMMA 0 0 0 +T 0 1/2 1/2 +Z 1/2 1/2 0 +Y 1/2 0 1/2 +A_0 1/2 1/2+H H +C_0 1/2 1/2-H 1-H +B_0 1/2+K 1/2 K +D_0 1/2-K 1/2 1-K +G_0 P 1/2+P 1/2 +H_0 1-P 1/2-P 1/2 +L 1/2 1/2 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/oI1/POSCAR_inversion new file mode 100644 index 00000000..2c22c1ea --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI1/POSCAR_inversion @@ -0,0 +1,12 @@ +oI1Y BPOSCAR-0684664 + 1.0 + 3.1118027642203017 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.3500051348576578 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 5.7866263658364208 + Ga Sb + 2 2 +Direct + 0.0000000000000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.5000000000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oI1/POSCAR_noinversion new file mode 100644 index 00000000..90b535b0 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI1/POSCAR_noinversion @@ -0,0 +1,16 @@ +oI1N BPOSCAR-0025596 + 1.0 + 2.6917850833772863 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 3.3132275496844019 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 10.0701233878206633 + Li O Ni + 2 4 2 +Direct + 0.5000000000000000 0.0000000000000000 0.7724267500000002 + 0.0000000000000000 0.5000000000000000 0.2724267500000001 + 0.5000000000000000 0.5000000000000000 0.8826666700000001 + 0.5000000000000000 0.5000000000000000 0.1307543700000000 + 0.0000000000000000 0.0000000000000000 0.3826666700000001 + 0.0000000000000000 0.0000000000000000 0.6307543700000000 + 0.0000000000000000 0.5000000000000000 0.0071568500000000 + 0.5000000000000000 0.0000000000000000 0.5071568500000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oI1/k_vector_parameters.txt new file mode 100644 index 00000000..69135c83 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI1/k_vector_parameters.txt @@ -0,0 +1,4 @@ +Z (1+a*a/c/c)/4 +H (1+b*b/c/c)/4 +D (b*b-a*a)/4/c/c +N (a*a+b*b)/4/c/c diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oI1/path.txt new file mode 100644 index 00000000..c8757548 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI1/path.txt @@ -0,0 +1,11 @@ +GAMMA X +X F_2 +SIGMA_0 GAMMA +GAMMA Y_0 +U_0 X +GAMMA R +R W +W S +S GAMMA +GAMMA T +T W diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oI1/points.txt new file mode 100644 index 00000000..dcd6eea2 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI1/points.txt @@ -0,0 +1,13 @@ +GAMMA 0 0 0 +X 1/2 1/2 -1/2 +S 1/2 0 0 +R 0 1/2 0 +T 0 0 1/2 +W 1/4 1/4 1/4 +SIGMA_0 -Z Z Z +F_2 Z 1-Z -Z +Y_0 H -H H +U_0 1-H H -H +L_0 -N N 1/2-D +M_0 N -N 1/2+D +J_0 1/2-D 1/2+D -N diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oI2/POSCAR_noinversion new file mode 100644 index 00000000..713c157f --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI2/POSCAR_noinversion @@ -0,0 +1,28 @@ +oI2N BPOSCAR-0866845 + 1.0 + 9.8579857154919317 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 6.8879312335870866 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 7.0088148600000002 + Ca Sn S + 4 4 12 +Direct + 0.7500000000000000 0.0305814600000002 0.0354614700000000 + 0.2500000000000000 0.9694185399999998 0.0354614700000000 + 0.2500000000000000 0.5305814600000002 0.5354614700000000 + 0.7500000000000000 0.4694185399999998 0.5354614700000000 + 0.0000000000000000 0.0000000000000000 0.5085183400000000 + 0.0000000000000000 0.5000000000000000 0.0085183399999999 + 0.5000000000000000 0.5000000000000000 0.0085183399999999 + 0.5000000000000000 0.0000000000000000 0.5085183400000000 + 0.2500000000000000 0.3739959450000001 0.9444468950000000 + 0.7500000000000000 0.6260040549999999 0.9444468950000000 + 0.0756857550000000 0.7605886250000001 0.7620421749999999 + 0.9243142450000000 0.2394113749999999 0.7620421749999999 + 0.9243142450000000 0.2605886250000002 0.2620421750000000 + 0.0756857550000000 0.7394113749999999 0.2620421750000000 + 0.7500000000000000 0.8739959450000001 0.4444468950000000 + 0.2500000000000000 0.1260040549999999 0.4444468950000000 + 0.5756857550000001 0.2605886250000002 0.2620421750000000 + 0.4243142450000000 0.7394113749999999 0.2620421750000000 + 0.4243142450000000 0.7605886250000001 0.7620421749999999 + 0.5756857550000001 0.2394113749999998 0.7620421749999999 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oI2/k_vector_parameters.txt new file mode 100644 index 00000000..aa895a7d --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI2/k_vector_parameters.txt @@ -0,0 +1,4 @@ +Z (1+b*b/a/a)/4 +H (1+c*c/a/a)/4 +D (c*c-b*b)/4/a/a +N (b*b+c*c)/4/a/a diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oI2/path.txt new file mode 100644 index 00000000..c30cb7c2 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI2/path.txt @@ -0,0 +1,11 @@ +GAMMA X +X U_2 +Y_0 GAMMA +GAMMA LAMBDA_0 +G_2 X +GAMMA R +R W +W S +S GAMMA +GAMMA T +T W diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oI2/points.txt new file mode 100644 index 00000000..c900673f --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI2/points.txt @@ -0,0 +1,13 @@ +GAMMA 0 0 0 +X -1/2 1/2 1/2 +S 1/2 0 0 +R 0 1/2 0 +T 0 0 1/2 +W 1/4 1/4 1/4 +Y_0 Z -Z Z +U_2 -Z Z 1-Z +LAMBDA_0 H H -H +G_2 -H 1-H H +K 1/2-D -N N +K_2 1/2+D N -N +K_4 -N 1/2-D 1/2+D diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_inversion new file mode 100644 index 00000000..64345393 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_inversion @@ -0,0 +1,20 @@ +oI3Y BPOSCAR-0030435 + 1.0 + 8.1511447228165714 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.0461430197341626 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 7.8659149207773531 + Zn Ba + 8 4 +Direct + 0.6724366150000002 0.7500000000000000 0.4101287450000002 + 0.8275633849999998 0.7500000000000000 0.0898712549999998 + 0.6724366150000002 0.2500000000000000 0.5898712549999998 + 0.8275633849999998 0.2500000000000000 0.9101287450000002 + 0.1724366150000002 0.2500000000000000 0.9101287450000002 + 0.3275633849999998 0.2500000000000000 0.5898712549999998 + 0.1724366150000002 0.7500000000000000 0.0898712549999998 + 0.3275633849999998 0.7500000000000000 0.4101287450000002 + 0.5000000000000000 0.7500000000000000 0.8073779000000001 + 0.0000000000000000 0.7500000000000000 0.6926220999999999 + 0.0000000000000000 0.2500000000000000 0.3073779000000001 + 0.5000000000000000 0.2500000000000000 0.1926220999999999 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_noinversion new file mode 100644 index 00000000..bc141bc5 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_noinversion @@ -0,0 +1,12 @@ +Hg1 O1 +1.0 + 3.3110001087 0.0000000000 0.0000000000 + 0.0000000000 5.5260000229 0.0000000000 + 0.0000000000 0.0000000000 3.5260000229 + Hg O + 2 2 +Direct + 0.000000000 0.000000000 0.000000000 + 0.500000000 0.500000000 0.500000000 + 0.000000000 0.500000000 0.170000002 + 0.500000000 0.000000000 0.670000017 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_noinversion_alternate b/susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_noinversion_alternate new file mode 100644 index 00000000..3f54d672 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI3/POSCAR_noinversion_alternate @@ -0,0 +1,12 @@ +oI3N BPOSCAR-0684597 + 1.0 + 5.8530782471827889 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 6.1588711111131813 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 3.1607929446275036 + In Sb + 2 2 +Direct + 0.5000000000000000 0.0000000000000000 0.5976610100000000 + 0.0000000000000000 0.5000000000000000 0.0976610100000000 + 0.0000000000000000 0.0000000000000000 0.1515127200000000 + 0.5000000000000000 0.5000000000000000 0.6515127199999999 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI3/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oI3/k_vector_parameters.txt new file mode 100644 index 00000000..5a7bcb32 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI3/k_vector_parameters.txt @@ -0,0 +1,4 @@ +Z (1+c*c/b/b)/4 +Y (1+a*a/b/b)/4 +D (a*a-c*c)/4/b/b +M (c*c+a*a)/4/b/b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI3/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oI3/path.txt new file mode 100644 index 00000000..49bd952d --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI3/path.txt @@ -0,0 +1,11 @@ +GAMMA X +X F_0 +SIGMA_0 GAMMA +GAMMA LAMBDA_0 +G_0 X +GAMMA R +R W +W S +S GAMMA +GAMMA T +T W diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oI3/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oI3/points.txt new file mode 100644 index 00000000..15aa13ab --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oI3/points.txt @@ -0,0 +1,13 @@ +GAMMA 0 0 0 +X 1/2 -1/2 1/2 +S 1/2 0 0 +R 0 1/2 0 +T 0 0 1/2 +W 1/4 1/4 1/4 +SIGMA_0 -Y Y Y +F_0 Y -Y 1-Y +LAMBDA_0 Z Z -Z +G_0 1-Z -Z Z +V_0 M 1/2-D -M +H_0 -M 1/2+D M +H_2 1/2+D -M 1/2-D diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oP1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/oP1/POSCAR_inversion new file mode 100644 index 00000000..a54e65d9 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oP1/POSCAR_inversion @@ -0,0 +1,11 @@ +oP1Y BPOSCAR-0705439 + 1.0 + 2.2658624671048813 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.9598350933265563 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 6.5642248417443598 + Cu O + 1 2 +Direct + 0.5000000000000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.0000000000000000 0.9050977550000002 + 0.5000000000000000 0.0000000000000000 0.0949022449999998 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oP1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/oP1/POSCAR_noinversion new file mode 100644 index 00000000..d0e84f46 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oP1/POSCAR_noinversion @@ -0,0 +1,10 @@ +oP1N BPOSCAR-0019744 + 1.0 + 3.0414632300000002 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 6.1468502899999997 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 3.1394173099999998 + In Sb + 1 1 +Direct + 0.0000000000000000 0.0000000000000000 0.0024766500000000 + 0.0000000000000000 0.5000000000000000 0.7475233500000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oP1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/oP1/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oP1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/oP1/path.txt new file mode 100644 index 00000000..3f09bcc7 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oP1/path.txt @@ -0,0 +1,12 @@ +GAMMA X +X S +S Y +Y GAMMA +GAMMA Z +Z U +U R +R T +T Z +X U +Y T +S R diff --git a/susyexists/src/seekpath/hpkot/band_path_data/oP1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/oP1/points.txt new file mode 100644 index 00000000..81346fd4 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/oP1/points.txt @@ -0,0 +1,8 @@ +GAMMA 0 0 0 +X 1/2 0 0 +Z 0 0 1/2 +U 1/2 0 1/2 +Y 0 1/2 0 +S 1/2 1/2 0 +T 0 1/2 1/2 +R 1/2 1/2 1/2 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tI1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/tI1/POSCAR_inversion new file mode 100644 index 00000000..85befb72 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tI1/POSCAR_inversion @@ -0,0 +1,18 @@ +tI1Y BPOSCAR-0012635 + 1.0 + 6.6011835174224816 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 6.6011835174224816 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 4.0143642377425790 + Ti Au + 2 8 +Direct + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 + 0.1049425700000000 0.7069229100000002 0.5000000000000000 + 0.8950574300000000 0.2930770899999998 0.5000000000000000 + 0.2930770899999998 0.1049425700000000 0.5000000000000000 + 0.7069229100000002 0.8950574300000000 0.5000000000000000 + 0.6049425700000000 0.2069229100000002 0.0000000000000000 + 0.3950574300000000 0.7930770899999998 0.0000000000000000 + 0.7930770899999998 0.6049425700000000 0.0000000000000000 + 0.2069229100000002 0.3950574300000000 0.0000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tI1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/tI1/POSCAR_noinversion new file mode 100644 index 00000000..07e30986 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tI1/POSCAR_noinversion @@ -0,0 +1,20 @@ +tI1N BPOSCAR-0540284 + 1.0 + 5.4794836100000683 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 5.4794836100000683 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 5.1848378200001886 + Cu O P + 2 8 2 +Direct + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 + 0.1343956450000000 0.6953349850000001 0.9145759350000002 + 0.6953349850000001 0.8656043550000001 0.0854240649999999 + 0.8656043550000001 0.3046650149999998 0.9145759350000002 + 0.3046650149999998 0.1343956450000000 0.0854240649999999 + 0.6343956449999999 0.1953349850000001 0.4145759350000001 + 0.1953349850000001 0.3656043550000000 0.5854240649999999 + 0.3656043550000000 0.8046650149999999 0.4145759350000001 + 0.8046650149999999 0.6343956449999999 0.5854240649999999 + 0.5000000000000000 0.0000000000000000 0.2500000000000000 + 0.0000000000000000 0.5000000000000000 0.7500000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tI1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/tI1/k_vector_parameters.txt new file mode 100644 index 00000000..52bdedb4 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tI1/k_vector_parameters.txt @@ -0,0 +1 @@ +H (1+c*c/a/a)/4 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tI1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/tI1/path.txt new file mode 100644 index 00000000..d9a5150f --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tI1/path.txt @@ -0,0 +1,8 @@ +GAMMA X +X M +M GAMMA +GAMMA Z +Z_0 M +X P +P N +N GAMMA diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tI1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/tI1/points.txt new file mode 100644 index 00000000..4c35fd34 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tI1/points.txt @@ -0,0 +1,7 @@ +GAMMA 0 0 0 +M -1/2 1/2 1/2 +X 0 0 1/2 +P 1/4 1/4 1/4 +Z H H -H +Z_0 -H 1-H H +N 0 1/2 0 diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tI2/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/tI2/POSCAR_inversion new file mode 100644 index 00000000..d3b69d61 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tI2/POSCAR_inversion @@ -0,0 +1,12 @@ +tI2Y BPOSCAR-0019275 + 1.0 + 3.0845227912262532 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 3.0845227912262532 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 4.0861539485071861 + O Co + 2 2 +Direct + 0.0000000000000000 0.0000000000000000 0.5000000000000000 + 0.5000000000000000 0.5000000000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tI2/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/tI2/POSCAR_noinversion new file mode 100644 index 00000000..4760e77d --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tI2/POSCAR_noinversion @@ -0,0 +1,12 @@ +tI2N BPOSCAR-0007590 + 1.0 + 3.5651955268357800 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 3.5651955268357800 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 5.7414401540403173 + P Ge + 2 2 +Direct + 0.5000000000000000 0.5000000000000000 0.9233913399999996 + 0.0000000000000000 0.0000000000000000 0.4233913399999996 + 0.0000000000000000 0.0000000000000000 0.0036086699999997 + 0.5000000000000000 0.5000000000000000 0.5036086699999996 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tI2/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/tI2/k_vector_parameters.txt new file mode 100644 index 00000000..5dcb4b54 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tI2/k_vector_parameters.txt @@ -0,0 +1,2 @@ +H (1+a*a/c/c)/4 +Z a*a/2/c/c diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tI2/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/tI2/path.txt new file mode 100644 index 00000000..39c00310 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tI2/path.txt @@ -0,0 +1,9 @@ +GAMMA X +X P +P N +N GAMMA +GAMMA M +M S +S_0 GAMMA +X R +G M diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tI2/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/tI2/points.txt new file mode 100644 index 00000000..8ed3864f --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tI2/points.txt @@ -0,0 +1,9 @@ +GAMMA 0 0 0 +M 1/2 1/2 -1/2 +X 0 0 1/2 +P 1/4 1/4 1/4 +N 0 1/2 0 +S_0 -H H H +S H 1-H -H +R -Z Z 1/2 +G 1/2 1/2 -Z diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tP1/POSCAR_inversion b/susyexists/src/seekpath/hpkot/band_path_data/tP1/POSCAR_inversion new file mode 100644 index 00000000..3f099fc0 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tP1/POSCAR_inversion @@ -0,0 +1,10 @@ +tP1Y BPOSCAR-0000949 + 1.0 + 2.6983934120929063 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 2.6983934120929063 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 3.7266309199999998 + Co Pt + 1 1 +Direct + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.5000000000000000 0.5000000000000000 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tP1/POSCAR_noinversion b/susyexists/src/seekpath/hpkot/band_path_data/tP1/POSCAR_noinversion new file mode 100644 index 00000000..eab5ebba --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tP1/POSCAR_noinversion @@ -0,0 +1,11 @@ +tP1N BPOSCAR-0033154 + 1.0 + 4.2857283318865660 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 4.2857283318865660 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 6.3547812573430607 + Ag I + 1 2 +Direct + 0.5000000000000000 0.5000000000000000 0.5000000000000000 + 0.0000000000000000 0.5000000000000000 0.7777616999999999 + 0.5000000000000000 0.0000000000000000 0.2222383000000001 \ No newline at end of file diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tP1/k_vector_parameters.txt b/susyexists/src/seekpath/hpkot/band_path_data/tP1/k_vector_parameters.txt new file mode 100644 index 00000000..e69de29b diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tP1/path.txt b/susyexists/src/seekpath/hpkot/band_path_data/tP1/path.txt new file mode 100644 index 00000000..0f59a1a7 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tP1/path.txt @@ -0,0 +1,9 @@ +GAMMA X +X M +M GAMMA +GAMMA Z +Z R +R A +A Z +X R +M A diff --git a/susyexists/src/seekpath/hpkot/band_path_data/tP1/points.txt b/susyexists/src/seekpath/hpkot/band_path_data/tP1/points.txt new file mode 100644 index 00000000..947b3576 --- /dev/null +++ b/susyexists/src/seekpath/hpkot/band_path_data/tP1/points.txt @@ -0,0 +1,6 @@ +GAMMA 0 0 0 +Z 0 0 1/2 +M 1/2 1/2 0 +A 1/2 1/2 1/2 +R 0 1/2 1/2 +X 0 1/2 0 diff --git a/susyexists/src/seekpath/hpkot/spg_db.py b/susyexists/src/seekpath/hpkot/spg_db.py new file mode 100644 index 00000000..71a7785c --- /dev/null +++ b/susyexists/src/seekpath/hpkot/spg_db.py @@ -0,0 +1,472 @@ +"""Basic information on spacegroups.""" +# Given a spgroup number, return +# the crystal family letter, the centering, and if the corresponding +# pointgroup has inversion (True) or not. +# Generated from the output of spg_mapping.get_spgroup_data_realtime +# using spglib v.1.9.4. + +spgroup_data = { + 1: ("a", "P", False), + 2: ("a", "P", True), + 3: ("m", "P", False), + 4: ("m", "P", False), + 5: ("m", "C", False), + 6: ("m", "P", False), + 7: ("m", "P", False), + 8: ("m", "C", False), + 9: ("m", "C", False), + 10: ("m", "P", True), + 11: ("m", "P", True), + 12: ("m", "C", True), + 13: ("m", "P", True), + 14: ("m", "P", True), + 15: ("m", "C", True), + 16: ("o", "P", False), + 17: ("o", "P", False), + 18: ("o", "P", False), + 19: ("o", "P", False), + 20: ("o", "C", False), + 21: ("o", "C", False), + 22: ("o", "F", False), + 23: ("o", "I", False), + 24: ("o", "I", False), + 25: ("o", "P", False), + 26: ("o", "P", False), + 27: ("o", "P", False), + 28: ("o", "P", False), + 29: ("o", "P", False), + 30: ("o", "P", False), + 31: ("o", "P", False), + 32: ("o", "P", False), + 33: ("o", "P", False), + 34: ("o", "P", False), + 35: ("o", "C", False), + 36: ("o", "C", False), + 37: ("o", "C", False), + 38: ("o", "A", False), + 39: ("o", "A", False), + 40: ("o", "A", False), + 41: ("o", "A", False), + 42: ("o", "F", False), + 43: ("o", "F", False), + 44: ("o", "I", False), + 45: ("o", "I", False), + 46: ("o", "I", False), + 47: ("o", "P", True), + 48: ("o", "P", True), + 49: ("o", "P", True), + 50: ("o", "P", True), + 51: ("o", "P", True), + 52: ("o", "P", True), + 53: ("o", "P", True), + 54: ("o", "P", True), + 55: ("o", "P", True), + 56: ("o", "P", True), + 57: ("o", "P", True), + 58: ("o", "P", True), + 59: ("o", "P", True), + 60: ("o", "P", True), + 61: ("o", "P", True), + 62: ("o", "P", True), + 63: ("o", "C", True), + 64: ("o", "C", True), + 65: ("o", "C", True), + 66: ("o", "C", True), + 67: ("o", "C", True), + 68: ("o", "C", True), + 69: ("o", "F", True), + 70: ("o", "F", True), + 71: ("o", "I", True), + 72: ("o", "I", True), + 73: ("o", "I", True), + 74: ("o", "I", True), + 75: ("t", "P", False), + 76: ("t", "P", False), + 77: ("t", "P", False), + 78: ("t", "P", False), + 79: ("t", "I", False), + 80: ("t", "I", False), + 81: ("t", "P", False), + 82: ("t", "I", False), + 83: ("t", "P", True), + 84: ("t", "P", True), + 85: ("t", "P", True), + 86: ("t", "P", True), + 87: ("t", "I", True), + 88: ("t", "I", True), + 89: ("t", "P", False), + 90: ("t", "P", False), + 91: ("t", "P", False), + 92: ("t", "P", False), + 93: ("t", "P", False), + 94: ("t", "P", False), + 95: ("t", "P", False), + 96: ("t", "P", False), + 97: ("t", "I", False), + 98: ("t", "I", False), + 99: ("t", "P", False), + 100: ("t", "P", False), + 101: ("t", "P", False), + 102: ("t", "P", False), + 103: ("t", "P", False), + 104: ("t", "P", False), + 105: ("t", "P", False), + 106: ("t", "P", False), + 107: ("t", "I", False), + 108: ("t", "I", False), + 109: ("t", "I", False), + 110: ("t", "I", False), + 111: ("t", "P", False), + 112: ("t", "P", False), + 113: ("t", "P", False), + 114: ("t", "P", False), + 115: ("t", "P", False), + 116: ("t", "P", False), + 117: ("t", "P", False), + 118: ("t", "P", False), + 119: ("t", "I", False), + 120: ("t", "I", False), + 121: ("t", "I", False), + 122: ("t", "I", False), + 123: ("t", "P", True), + 124: ("t", "P", True), + 125: ("t", "P", True), + 126: ("t", "P", True), + 127: ("t", "P", True), + 128: ("t", "P", True), + 129: ("t", "P", True), + 130: ("t", "P", True), + 131: ("t", "P", True), + 132: ("t", "P", True), + 133: ("t", "P", True), + 134: ("t", "P", True), + 135: ("t", "P", True), + 136: ("t", "P", True), + 137: ("t", "P", True), + 138: ("t", "P", True), + 139: ("t", "I", True), + 140: ("t", "I", True), + 141: ("t", "I", True), + 142: ("t", "I", True), + 143: ("h", "P", False), + 144: ("h", "P", False), + 145: ("h", "P", False), + 146: ("h", "R", False), + 147: ("h", "P", True), + 148: ("h", "R", True), + 149: ("h", "P", False), + 150: ("h", "P", False), + 151: ("h", "P", False), + 152: ("h", "P", False), + 153: ("h", "P", False), + 154: ("h", "P", False), + 155: ("h", "R", False), + 156: ("h", "P", False), + 157: ("h", "P", False), + 158: ("h", "P", False), + 159: ("h", "P", False), + 160: ("h", "R", False), + 161: ("h", "R", False), + 162: ("h", "P", True), + 163: ("h", "P", True), + 164: ("h", "P", True), + 165: ("h", "P", True), + 166: ("h", "R", True), + 167: ("h", "R", True), + 168: ("h", "P", False), + 169: ("h", "P", False), + 170: ("h", "P", False), + 171: ("h", "P", False), + 172: ("h", "P", False), + 173: ("h", "P", False), + 174: ("h", "P", False), + 175: ("h", "P", True), + 176: ("h", "P", True), + 177: ("h", "P", False), + 178: ("h", "P", False), + 179: ("h", "P", False), + 180: ("h", "P", False), + 181: ("h", "P", False), + 182: ("h", "P", False), + 183: ("h", "P", False), + 184: ("h", "P", False), + 185: ("h", "P", False), + 186: ("h", "P", False), + 187: ("h", "P", False), + 188: ("h", "P", False), + 189: ("h", "P", False), + 190: ("h", "P", False), + 191: ("h", "P", True), + 192: ("h", "P", True), + 193: ("h", "P", True), + 194: ("h", "P", True), + 195: ("c", "P", False), + 196: ("c", "F", False), + 197: ("c", "I", False), + 198: ("c", "P", False), + 199: ("c", "I", False), + 200: ("c", "P", True), + 201: ("c", "P", True), + 202: ("c", "F", True), + 203: ("c", "F", True), + 204: ("c", "I", True), + 205: ("c", "P", True), + 206: ("c", "I", True), + 207: ("c", "P", False), + 208: ("c", "P", False), + 209: ("c", "F", False), + 210: ("c", "F", False), + 211: ("c", "I", False), + 212: ("c", "P", False), + 213: ("c", "P", False), + 214: ("c", "I", False), + 215: ("c", "P", False), + 216: ("c", "F", False), + 217: ("c", "I", False), + 218: ("c", "P", False), + 219: ("c", "F", False), + 220: ("c", "I", False), + 221: ("c", "P", True), + 222: ("c", "P", True), + 223: ("c", "P", True), + 224: ("c", "P", True), + 225: ("c", "F", True), + 226: ("c", "F", True), + 227: ("c", "F", True), + 228: ("c", "F", True), + 229: ("c", "I", True), + 230: ("c", "I", True), +} + +centering = { + 1: "P", + 2: "P", + 3: "P", + 4: "P", + 5: "C", + 6: "P", + 7: "P", + 8: "C", + 9: "C", + 10: "P", + 11: "P", + 12: "C", + 13: "P", + 14: "P", + 15: "C", + 16: "P", + 17: "P", + 18: "P", + 19: "P", + 20: "C", + 21: "C", + 22: "F", + 23: "I", + 24: "I", + 25: "P", + 26: "P", + 27: "P", + 28: "P", + 29: "P", + 30: "P", + 31: "P", + 32: "P", + 33: "P", + 34: "P", + 35: "C", + 36: "C", + 37: "C", + 38: "A", + 39: "A", + 40: "A", + 41: "A", + 42: "F", + 43: "F", + 44: "I", + 45: "I", + 46: "I", + 47: "P", + 48: "P", + 49: "P", + 50: "P", + 51: "P", + 52: "P", + 53: "P", + 54: "P", + 55: "P", + 56: "P", + 57: "P", + 58: "P", + 59: "P", + 60: "P", + 61: "P", + 62: "P", + 63: "C", + 64: "C", + 65: "C", + 66: "C", + 67: "C", + 68: "C", + 69: "F", + 70: "F", + 71: "I", + 72: "I", + 73: "I", + 74: "I", + 75: "P", + 76: "P", + 77: "P", + 78: "P", + 79: "I", + 80: "I", + 81: "P", + 82: "I", + 83: "P", + 84: "P", + 85: "P", + 86: "P", + 87: "I", + 88: "I", + 89: "P", + 90: "P", + 91: "P", + 92: "P", + 93: "P", + 94: "P", + 95: "P", + 96: "P", + 97: "I", + 98: "I", + 99: "P", + 100: "P", + 101: "P", + 102: "P", + 103: "P", + 104: "P", + 105: "P", + 106: "P", + 107: "I", + 108: "I", + 109: "I", + 110: "I", + 111: "P", + 112: "P", + 113: "P", + 114: "P", + 115: "P", + 116: "P", + 117: "P", + 118: "P", + 119: "I", + 120: "I", + 121: "I", + 122: "I", + 123: "P", + 124: "P", + 125: "P", + 126: "P", + 127: "P", + 128: "P", + 129: "P", + 130: "P", + 131: "P", + 132: "P", + 133: "P", + 134: "P", + 135: "P", + 136: "P", + 137: "P", + 138: "P", + 139: "I", + 140: "I", + 141: "I", + 142: "I", + 143: "P", + 144: "P", + 145: "P", + 146: "R", + 147: "P", + 148: "R", + 149: "P", + 150: "P", + 151: "P", + 152: "P", + 153: "P", + 154: "P", + 155: "R", + 156: "P", + 157: "P", + 158: "P", + 159: "P", + 160: "R", + 161: "R", + 162: "P", + 163: "P", + 164: "P", + 165: "P", + 166: "R", + 167: "R", + 168: "P", + 169: "P", + 170: "P", + 171: "P", + 172: "P", + 173: "P", + 174: "P", + 175: "P", + 176: "P", + 177: "P", + 178: "P", + 179: "P", + 180: "P", + 181: "P", + 182: "P", + 183: "P", + 184: "P", + 185: "P", + 186: "P", + 187: "P", + 188: "P", + 189: "P", + 190: "P", + 191: "P", + 192: "P", + 193: "P", + 194: "P", + 195: "P", + 196: "F", + 197: "I", + 198: "P", + 199: "I", + 200: "P", + 201: "P", + 202: "F", + 203: "F", + 204: "I", + 205: "P", + 206: "I", + 207: "P", + 208: "P", + 209: "F", + 210: "F", + 211: "I", + 212: "P", + 213: "P", + 214: "I", + 215: "P", + 216: "F", + 217: "I", + 218: "P", + 219: "F", + 220: "I", + 221: "P", + 222: "P", + 223: "P", + 224: "P", + 225: "F", + 226: "F", + 227: "F", + 228: "F", + 229: "I", + 230: "I", +} diff --git a/susyexists/src/seekpath/hpkot/spg_mapping.py b/susyexists/src/seekpath/hpkot/spg_mapping.py new file mode 100644 index 00000000..d871fe6b --- /dev/null +++ b/susyexists/src/seekpath/hpkot/spg_mapping.py @@ -0,0 +1,345 @@ +"""Tools to map a spagegroup to the crystal family or similar requirements.""" + + +def get_crystal_family(number): + """ + Given a spacegroup number, returns a string to identify its + crystal family (triclinic, monoclinic, ...). + + :param number: the spacegroup number, from 1 to 230 + """ + if not isinstance(number, int): + raise TypeError("number should be integer") + if number < 1: + raise ValueError("number should be >= 1") + if number <= 2: + return "a" # triclinic + if number <= 15: + return "m" # monoclinic + if number <= 74: + return "o" # orthorhombic + if number <= 142: + return "t" # tetragonal + if number <= 194: + return "h" # trigonal + hexagonal + if number <= 230: + return "c" # cubic + raise ValueError("number should be <= 230") + + +def pointgroup_has_inversion(number): + """ + Return True if the pointgroup with given number has inversion, + False otherwise. + + :param number: The integer number of the pointgroup, from 1 to 32. + """ + if number in [2, 5, 8, 11, 15, 17, 20, 23, 27, 29, 32]: + return True + if number in [ + 1, + 3, + 4, + 6, + 7, + 9, + 10, + 12, + 13, + 14, + 16, + 18, + 19, + 21, + 22, + 24, + 25, + 26, + 28, + 30, + 31, + ]: + return False + raise ValueError("number should be between 1 and 32") + + +def pgnum_from_pgint(pgint): + """ + Return the number of the pointgroup (from 1 to 32) from the + international pointgroup name. + """ + table = { + "C1": 1, + "C2": 3, + "C2h": 5, + "C2v": 7, + "C3": 16, + "C3h": 22, + "C3i": 17, + "C3v": 19, + "C4": 9, + "C4h": 11, + "C4v": 13, + "C6": 21, + "C6h": 23, + "C6v": 25, + "Ci": 2, + "Cs": 4, + "D2": 6, + "D2d": 14, + "D2h": 8, + "D3": 18, + "D3d": 20, + "D3h": 26, + "D4": 12, + "D4h": 15, + "D6": 24, + "D6h": 27, + "O": 30, + "Oh": 32, + "S4": 10, + "T": 28, + "Td": 31, + "Th": 29, + } + + return table[pgint] + + +def get_spgroup_data(): + """ + Return a dictionary that has the spacegroup number as key, and a tuple + as value, with content:: + + (crystal family letter, centering, has_inversion). + + It loads if from a table in the source code for efficiency. + """ + from .spg_db import spgroup_data + + return spgroup_data + + +def get_spgroup_data_realtime(): + """ + Return a dictionary that has the spacegroup number as key, and a tuple + as value, with content:: + + (crystal family letter, centering, has_inversion), + + got in real time using spglib methods. + """ + import json + import spglib + + info = {} + for hall_n in range(1, 531): + data = spglib.get_spacegroup_type(hall_n) + number = data["number"] + int_short = data["international_short"] + pg_int = data["pointgroup_international"] + + if number not in info: + info[int(number)] = ( + get_crystal_family(number), # get cyrstal family + # centering from the first letter of the first + # spacegroup that I encounter + int_short[0], + pointgroup_has_inversion( + pgnum_from_pgint(pg_int) + ), # pointgroup has inversion + ) + return info + + +def get_P_matrix(bravais_lattice): + r""" + Return a tuple of length 2 with the P matrix and its inverse:: + + (P, invP) + + with :math:`invP = P^{-1}`. + + These :math:`P` matrices are obtained from Table 3 of the HPKOT + paper. + + The P matrix is a :math:`3\times 3` matrix is the matrix that converts + the lattice vectors from crystallographic conventional + :math:`(a,b,c)` to crystallographic primitive :math:`(a_P, b_P, c_P)` + as follows: :math:`(a_P, b_P, c_P) = (a,b,c) P` + + The change of (real space) coordinate triples follows instead: + :math:`(x_P, y_P, z_P)^T = (P^{-1}) (x,y,z)^T` + + .. note:: the :math:`invP = P^{-1}` matrix is always integer (with values + only :math:`-1, 0, 1`) while :math:`P` is rational (non-integer values can be + :math:`\pm \frac 1 2` and :math:`\pm \frac 1 3`). + """ + import numpy as np + + if bravais_lattice in ["cP", "tP", "hP", "oP", "mP"]: + P = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) + invP = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) + elif bravais_lattice in ["cF", "oF"]: + P = 1.0 / 2.0 * np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]]) + invP = np.array([[-1, 1, 1], [1, -1, 1], [1, 1, -1]]) + elif bravais_lattice in ["cI", "tI", "oI"]: + P = 1.0 / 2.0 * np.array([[-1, 1, 1], [1, -1, 1], [1, 1, -1]]) + invP = np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]]) + elif bravais_lattice == "hR": + P = 1.0 / 3.0 * np.array([[2, -1, -1], [1, 1, -2], [1, 1, 1]]) + invP = np.array([[1, 0, 1], [-1, 1, 1], [0, -1, 1]]) + elif bravais_lattice == "oC": + P = 1.0 / 2.0 * np.array([[1, 1, 0], [-1, 1, 0], [0, 0, 2]]) + invP = np.array([[1, -1, 0], [1, 1, 0], [0, 0, 1]]) + elif bravais_lattice == "oA": + P = 1.0 / 2.0 * np.array([[0, 0, 2], [1, 1, 0], [-1, 1, 0]]) + invP = np.array([[0, 1, -1], [0, 1, 1], [1, 0, 0]]) + elif bravais_lattice == "mC": + P = 1.0 / 2.0 * np.array([[1, -1, 0], [1, 1, 0], [0, 0, 2]]) + invP = np.array([[1, 1, 0], [-1, 1, 0], [0, 0, 1]]) + elif bravais_lattice == "aP": + # For aP, I should have already obtained the primitive cell + P = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) + invP = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) + else: + raise ValueError("Invalid bravais_lattice {}".format(bravais_lattice)) + + return P, invP + + +def get_primitive(structure, bravais_lattice, wrap_to_zero_one=False): + """ + Return the primitive cell from a conventional crystallographic cell. + + :note: the input structure MUST be already standardized by spglib! + + :param structure: should be a tuple of the form + (lattice, positions, types) and it MUST be already a conventional + crystallographic cell (i.e. as returned by spglib with the ``std_`` + prefix). + + :param bravais_lattice: a string with the information of the + Bravais lattice of the input structure. + + :param wrap_to_zero_one: if True, wrap the scaled coordinates to the + :math:`[0,1[` interval. Otherwise, the scaled coordinates will not be + changed and can be outside of the :math:`[0,1[` range; the advantage is that + the Cartesian coordinates of each atom returned in the primitive + cell will match with one of the atoms in the input structure if this + variable is False. + + :return: a tuple of length three: the first element is the primitive + structure, also in the format (lattice, positions, types); the second + is a tuple with the ``(P, invP)`` matrices as returned by :py:func:`get_P_matrix`; the + third is an array with the mapping from the atoms in the conventional + cell to the atoms in the primitive cell (e.g. if the conventional cell + has four atoms and twice the volume than the primitive, and the first + and third atoms in the conventional map to the first of the primitive, + while the second and the fourth map to the second of the primitive, + this array will be :math:`[0,1,0,1]`). + """ + import numpy as np + from collections import Counter + + threshold = 1.0e-6 # Threshold for creation of primitive cell + + lattice, positions, types = structure + P, invP = get_P_matrix(bravais_lattice) + + volume_ratio = int(round(np.linalg.det(invP))) + + # (a_P, b_P, c_P) = (a,b,c) P + # a is the first ROW of lattice => I have to transpose lattice + prim_lattice = np.dot(np.array(np.array(lattice).T), P).T + # (x_P, y_P, z_P)^T = (P^-1) (x,y,z)^T + prim_positions = np.dot(invP, np.array(positions).T).T + + # Now I need to remove duplicates + # I get if the x coord is the same, modulo one + # I compare all with all + # (I will get a NxN matrix, where N = number of atoms) + # I shift by 1/2, do %1 and then shift back so that I get values between + # -0.5 and 0.5 rather than between 0 and 1, which would be problematic + # to find values close to zero + x_match = ( + np.abs( + ((prim_positions[:, 0] - prim_positions[:, 0][:, None] + 0.5) % 1.0) - 0.5 + ) + < threshold + ) + y_match = ( + np.abs( + ((prim_positions[:, 1] - prim_positions[:, 1][:, None] + 0.5) % 1.0) - 0.5 + ) + < threshold + ) + z_match = ( + np.abs( + ((prim_positions[:, 2] - prim_positions[:, 2][:, None] + 0.5) % 1.0) - 0.5 + ) + < threshold + ) + # To be the same, they should all match + all_match = np.logical_and(x_match, np.logical_and(y_match, z_match)) + + # list of ids, each row identifies a group of equivalent atoms + # I convert to tuple so they can become keys of a dict for counting + group_of_equivalent_atoms = [ + tuple(np.arange(all_match.shape[0])[row]) for row in all_match + ] + group_count = Counter(group_of_equivalent_atoms) + wrong_count = [group for group, cnt in group_count.items() if cnt != volume_ratio] + if wrong_count: + raise ValueError( + "Problem creating primitive cell, I found the " + "following group of atoms with len != {}: {}".format( + volume_ratio, ", ".join(str(_) for _ in wrong_count) + ) + ) + # These are the groups of equivalent atoms; values are the positions in + # the list from 0 to N-1 + groups = sorted(group_count.keys()) + # I check that the type is always the same + unique_types = [set(np.array(types)[np.array(group)]) for group in groups] + problematic_groups_idx = list( + group_idx + for group_idx, type_set in enumerate(unique_types) + if len(type_set) != 1 + ) + if problematic_groups_idx: + raise ValueError( + "The following ids of atoms go on top of each other, " + "but they are of different type! {}".format( + ", ".join( + [ + str(group) + for group_idx, group in enumerate(groups) + if group_idx in problematic_groups_idx + ] + ) + ) + ) + # All good, just return the first (no wrapping to [0..1[ yet) + chosen_idx = np.array([group[0] for group in groups]) + + # Create the list of mapped atoms + conv_prim_atoms_mapping = -1 * np.ones(len(positions), dtype=int) + for prim_idx, group in enumerate(groups): + for at_idx in group: + conv_prim_atoms_mapping[at_idx] = prim_idx + if -1 in conv_prim_atoms_mapping: + raise ValueError( + "Unable to recreate correctly the atom mapping! " + "{}".format(conv_prim_atoms_mapping) + ) + + prim_positions = prim_positions[chosen_idx] + prim_types = np.array(types)[chosen_idx] + + if wrap_to_zero_one: + prim_positions = prim_positions % 1.0 + + prim_structure = (prim_lattice, prim_positions, prim_types) + + return (prim_structure, (P, invP), conv_prim_atoms_mapping) diff --git a/susyexists/src/seekpath/hpkot/tools.py b/susyexists/src/seekpath/hpkot/tools.py new file mode 100644 index 00000000..bbcf433e --- /dev/null +++ b/susyexists/src/seekpath/hpkot/tools.py @@ -0,0 +1,367 @@ +"""Various utilities.""" +import numpy +import numpy.linalg +from math import sqrt + + +def eval_expr_simple(expr, kparam): # pylint=disable: too-many-return-statements + """ + To evaluate expressions tha only require kparams and not a, b, c, ... + """ + if expr == "0": + return 0.0 + if expr == "1/2": + return 1.0 / 2.0 + if expr == "1": + return 1.0 + if expr == "-1/2": + return -1.0 / 2.0 + if expr == "1/4": + return 1.0 / 4.0 + if expr == "3/8": + return 3.0 / 8.0 + if expr == "3/4": + return 3.0 / 4.0 + if expr == "5/8": + return 5.0 / 8.0 + if expr == "1/3": + return 1.0 / 3.0 + try: + return kparam[expr] + except KeyError as exc: + raise ValueError( + "Asking for evaluation of symbol '{}' in " + "eval_expr_simple but this has not been defined or not " + "yet computed".format(str(exc)) + ) + + +def extend_kparam(kparam): + """ + Extend the list of kparam with also expressions like :math:`1-x`, ... + + :param kparam: a dictionary where the key is the expression as a string and + the value is the numerical value + :return: a similar dictionary, extended with simple expressions + """ + kparam_extended = {} + for key, val in kparam.items(): + kparam_extended[key] = val + kparam_extended["-{}".format(key)] = -val + kparam_extended["1-{}".format(key)] = 1.0 - val + kparam_extended["-1+{}".format(key)] = -1.0 + val + kparam_extended["1/2-{}".format(key)] = 1.0 / 2.0 - val + kparam_extended["1/2+{}".format(key)] = 1.0 / 2.0 + val + + return kparam_extended + + +def eval_expr( # pylint: disable=too-many-return-statements,unused-argument + expr, a, b, c, cosalpha, cosbeta, cosgamma, kparam +): + r""" + Given a string expression as a function of the parameters ``a``, ``b``, ``c`` (lengths of the + cell lattice vectors) and ``cosalpha``, ``cosbeta``, ``cosgamma`` (the cosines of the three + angles between lattice vectors) returns the numerical value of the expression. + + :param a: length of the first lattice vector + :param b: length of the second lattice vector + :param c: length of the third lattice vector + :param cosalpha: cosine of the :math:`\alpha` angle (between lattice vectors 2 and 3) + :param cosbeta: cosine of the :math:`\beta` angle (between lattice vectors 1 and 3) + :param cosgamma: cosine of the :math:`\gamma` angle (between lattice vectors 1 and 2) + :param kparam: a dictionary that associates the value to expressions as a function + of the ``a, b, c, cosalpha, cosbeta, cosgamma`` parameters + + :return: the value of the expression for the given values of the cell parameters + + .. note:: To evaluate expressions, I hardcode a table of existing expressions in the + DB rather than parsing the string (to avoid additional dependencies and + avoid the use of ``eval``). + """ + from math import sqrt + + # sinalpha = sqrt(1.0 - cosalpha ** 2) + sinbeta = sqrt(1.0 - cosbeta**2) + # singamma = sqrt(1.0 - cosgamma ** 2) + + try: + if expr == "(a*a/b/b+(1+a/c*cosbeta)/sinbeta/sinbeta)/4": + return (a * a / b / b + (1.0 + a / c * cosbeta) / sinbeta / sinbeta) / 4.0 + if expr == "1-Z*b*b/a/a": + Z = kparam["Z"] + return 1.0 - Z * b * b / a / a + if expr == "1/2-2*Z*c*cosbeta/a": + Z = kparam["Z"] + return 1.0 / 2.0 - 2.0 * Z * c * cosbeta / a + if expr == "E/2+a*a/4/b/b+a*c*cosbeta/2/b/b": + E = kparam["E"] + return E / 2.0 + a * a / 4.0 / b / b + a * c * cosbeta / 2.0 / b / b + if expr == "2*F-Z": + F = kparam["F"] + Z = kparam["Z"] + return 2.0 * F - Z + if expr == "c/2/a/cosbeta*(1-4*U+a*a*sinbeta*sinbeta/b/b)": + U = kparam["U"] + return ( + c + / 2.0 + / a + / cosbeta + * (1.0 - 4.0 * U + a * a * sinbeta * sinbeta / b / b) + ) + if expr == "-1/4+W/2-Z*c*cosbeta/a": + W = kparam["W"] + Z = kparam["Z"] + return -1.0 / 4.0 + W / 2.0 - Z * c * cosbeta / a + if expr == "(2+a/c*cosbeta)/4/sinbeta/sinbeta": + return (2.0 + a / c * cosbeta) / 4.0 / sinbeta / sinbeta + if expr == "3/4-b*b/4/a/a/sinbeta/sinbeta": + return 3.0 / 4.0 - b * b / 4.0 / a / a / sinbeta / sinbeta + if expr == "S-(3/4-S)*a*cosbeta/c": + S = kparam["S"] + return S - (3.0 / 4.0 - S) * a * cosbeta / c + if expr == "(1+a*a/b/b)/4": + return (1.0 + a * a / b / b) / 4.0 + if expr == "-a*c*cosbeta/2/b/b": + return -a * c * cosbeta / 2.0 / b / b + if expr == "1+Z-2*M": + Z = kparam["Z"] + M = kparam["M"] + return 1.0 + Z - 2.0 * M + if expr == "X-2*D": + X = kparam["X"] + D = kparam["D"] + return X - 2 * D + if expr == "(1+a/c*cosbeta)/2/sinbeta/sinbeta": + return (1.0 + a / c * cosbeta) / 2.0 / sinbeta / sinbeta + if expr == "1/2+Y*c*cosbeta/a": + Y = kparam["Y"] + return 1.0 / 2.0 + Y * c * cosbeta / a + if expr == "a*a/4/c/c": + return a * a / 4.0 / c / c + if expr == "5/6-2*D": + D = kparam["D"] + return 5.0 / 6.0 - 2.0 * D + if expr == "1/3+D": + D = kparam["D"] + return 1.0 / 3.0 + D + if expr == "1/6-c*c/9/a/a": + return 1.0 / 6.0 - c * c / 9.0 / a / a + if expr == "1/2-2*Z": + Z = kparam["Z"] + return 1.0 / 2.0 - 2.0 * Z + if expr == "1/2+Z": + Z = kparam["Z"] + return 1.0 / 2.0 + Z + if expr == "(1+b*b/c/c)/4": + return (1.0 + b * b / c / c) / 4.0 + if expr == "(1+c*c/b/b)/4": + return (1.0 + c * c / b / b) / 4.0 + if expr == "(1+b*b/a/a)/4": + return (1.0 + b * b / a / a) / 4.0 + if expr == "(1+a*a/b/b-a*a/c/c)/4": + return (1.0 + a * a / b / b - a * a / c / c) / 4.0 + if expr == "(1+a*a/b/b+a*a/c/c)/4": + return (1.0 + a * a / b / b + a * a / c / c) / 4.0 + if expr == "(1+c*c/a/a-c*c/b/b)/4": + return (1.0 + c * c / a / a - c * c / b / b) / 4.0 + if expr == "(1+c*c/a/a+c*c/b/b)/4": + return (1.0 + c * c / a / a + c * c / b / b) / 4.0 + if expr == "(1+b*b/a/a-b*b/c/c)/4": + return (1.0 + b * b / a / a - b * b / c / c) / 4.0 + if expr == "(1+c*c/b/b-c*c/a/a)/4": + return (1.0 + c * c / b / b - c * c / a / a) / 4.0 + if expr == "(1+a*a/c/c)/4": + return (1.0 + a * a / c / c) / 4.0 + if expr == "(b*b-a*a)/4/c/c": + return (b * b - a * a) / 4.0 / c / c + if expr == "(a*a+b*b)/4/c/c": + return (a * a + b * b) / 4.0 / c / c + if expr == "(1+c*c/a/a)/4": + return (1.0 + c * c / a / a) / 4.0 + if expr == "(c*c-b*b)/4/a/a": + return (c * c - b * b) / 4.0 / a / a + if expr == "(b*b+c*c)/4/a/a": + return (b * b + c * c) / 4.0 / a / a + if expr == "(a*a-c*c)/4/b/b": + return (a * a - c * c) / 4.0 / b / b + if expr == "(c*c+a*a)/4/b/b": + return (c * c + a * a) / 4.0 / b / b + if expr == "a*a/2/c/c": + return a * a / 2.0 / c / c + raise ValueError( + "Unknown expression, define a new case:\n" + ' elif expr == "{0}":\n' + " return {0}".format(expr) + ) + except KeyError as exc: + raise ValueError( + "Asking for evaluation of symbol '{}' but this has " + "not been defined or not yet computed".format(str(exc)) + ) + + +def check_spglib_version(): + """ + Check the SPGLIB version and raise a ValueError if the version is + older than 1.9.4. + + Also raises an warning if the user has a version of SPGLIB that is + older than 1.13, because before then there were some bugs (e.g. + wrong treatment of oI, see e.g. issue ) + + Return the spglib module. + """ + try: + import spglib + except ImportError: + raise ValueError( + "spglib >= 1.9.4 is required for the creation " + "of the k-paths, but it could not be imported" + ) + + try: + version = spglib.__version__ + except NameError: + version = "1.8.0" # or older, version was introduced only recently + + try: + version_pieces = [int(_) for _ in version.split(".")] + if len(version_pieces) < 3: + raise ValueError + except ValueError: + raise ValueError("Unable to parse version number") + + if tuple(version_pieces[:2]) < (1, 9): + raise ValueError("Invalid spglib version, need >= 1.9.4") + + if version_pieces[:2] == (1, 9) and version_pieces[2] < 4: + raise ValueError("Invalid spglib version, need >= 1.9.4") + + if tuple(version_pieces[:2]) < (1, 13): + import warnings + + warnings.warn( + "You have a version of SPGLIB older than 1.13, " + "please consider upgrading to 1.13 or later since some bugs " + "have been fixed", + RuntimeWarning, + ) + + return spglib + + +def get_cell_params(cell): + r""" + Return (a,b,c,cosalpha,cosbeta,cosgamma) given a :math:`3\times 3` cell + + .. note:: Rows are vectors: ``v1 = cell[0]``, ``v2 = cell[1]``, ``v3 = cell[3]`` + """ + v1, v2, v3 = numpy.array(cell) + a = sqrt(sum(v1**2)) + b = sqrt(sum(v2**2)) + c = sqrt(sum(v3**2)) + cosalpha = numpy.dot(v2, v3) / b / c + cosbeta = numpy.dot(v1, v3) / a / c + cosgamma = numpy.dot(v1, v2) / a / b + + return (a, b, c, cosalpha, cosbeta, cosgamma) + + +def get_reciprocal_cell_rows(real_space_cell): + r""" + Given the cell in real space (3x3 matrix, vectors as rows, + return the reciprocal-space cell where again the G vectors are + rows, i.e. satisfying + ``dot(real_space_cell, reciprocal_space_cell.T)`` = :math:`2 \pi I`, + where :math:`I` is the :math:`3\times 3` identity matrix. + + :return: the :math:`3\times 3` list of reciprocal lattice vectors where each row is + one vector. + """ + reciprocal_space_columns = 2.0 * numpy.pi * numpy.linalg.inv(real_space_cell) + return (reciprocal_space_columns.T).tolist() + + +def get_real_cell_from_reciprocal_rows(reciprocal_space_rows): + r""" + Given the cell in reciprocal space (3x3 matrix, G vectors as rows, + return the real-space cell where again the R vectors are + rows, i.e. satisfying + ``dot(real_space_cell, reciprocal_space_cell.T)`` = :math:`2 \pi I`, + where :math:`I` is the :math:`3\times 3` identity matrix. + + .. note:: This is actually the same as :py:func:`get_reciprocal_cell_rows`. + + :return: the :math:`3\times 3` list of real lattice vectors where each row is + one vector. + """ + real_space_columns = 2.0 * numpy.pi * numpy.linalg.inv(reciprocal_space_rows) + return (real_space_columns.T).tolist() + + +def get_path_data(ext_bravais): + """ + Given an extended Bravais symbol among those defined in the HPKOT paper + (only first three characters, like cF1), return the points and the + suggested path. + + :param ext_bravais: a string among the allowed etended Bravais lattices + defined in HPKOT. + :return: a tuple ``(kparam_def, points_def, path)`` where the + first element is the list with the definition of the + k-point parameters, the second is the dictionary with the + definition of the k-points, and the third is the list + with the suggested paths. + + .. note:: ``kparam_def`` has to be a list and not a dictionary + because the order matters (later k-parameters can be defined + in terms of previous ones) + """ + import os + + # Get the data from the band_data folder + this_folder = os.path.split(os.path.abspath(__file__))[0] + folder = os.path.join(this_folder, "band_path_data", ext_bravais) + path_file = os.path.join(folder, "path.txt") + points_file = os.path.join(folder, "points.txt") + kparam_file = os.path.join(folder, "k_vector_parameters.txt") + with open(kparam_file) as f: + kparam_raw = [_.split() for _ in f.readlines() if _.strip()] + with open(points_file) as f: + points_raw = [_.split() for _ in f.readlines()] + with open(path_file) as f: + path_raw = [_.split() for _ in f.readlines()] + + # check + if any(len(_) != 2 for _ in kparam_raw): + raise ValueError("Invalid line length in {}".format(kparam_file)) + if any(len(_) != 2 for _ in path_raw): + raise ValueError("Invalid line length in {}".format(path_file)) + if any(len(_) != 4 for _ in points_raw): + raise ValueError("Invalid line length in {}".format(points_file)) + # order must be preserved here + kparam_def = [(_[0], _[1].strip()) for _ in kparam_raw] + points_def = {} + for label, kPx, kPy, kPz in points_raw: + if label in points_def: + raise ValueError( + "Internal error! Point {} defined multiple times " + "for Bravais lattice {}".format(label, ext_bravais) + ) + points_def[label] = (kPx, kPy, kPz) + path = [(_[0], _[1]) for _ in path_raw] + + # check path is valid + for p1, p2 in path: + if p1 not in points_def: + raise ValueError( + "Point {} found in path (for {}) but undefined!".format(p1, ext_bravais) + ) + if p2 not in points_def: + raise ValueError( + "Point {} found in path (for {}) but undefined!".format(p2, ext_bravais) + ) + + return (kparam_def, points_def, path) diff --git a/susyexists/src/seekpath/util.py b/susyexists/src/seekpath/util.py new file mode 100644 index 00000000..32eac07e --- /dev/null +++ b/susyexists/src/seekpath/util.py @@ -0,0 +1,116 @@ +"""Utilities (mapping of chemical elements to atomic number).""" + +atoms_num_dict = { + "H": 1, + "He": 2, + "Li": 3, + "Be": 4, + "B": 5, + "C": 6, + "N": 7, + "O": 8, + "F": 9, + "Ne": 10, + "Na": 11, + "Mg": 12, + "Al": 13, + "Si": 14, + "P": 15, + "S": 16, + "Cl": 17, + "Ar": 18, + "K": 19, + "Ca": 20, + "Sc": 21, + "Ti": 22, + "V": 23, + "Cr": 24, + "Mn": 25, + "Fe": 26, + "Co": 27, + "Ni": 28, + "Cu": 29, + "Zn": 30, + "Ga": 31, + "Ge": 32, + "As": 33, + "Se": 34, + "Br": 35, + "Kr": 36, + "Rb": 37, + "Sr": 38, + "Y": 39, + "Zr": 40, + "Nb": 41, + "Mo": 42, + "Tc": 43, + "Ru": 44, + "Rh": 45, + "Pd": 46, + "Ag": 47, + "Cd": 48, + "In": 49, + "Sn": 50, + "Sb": 51, + "Te": 52, + "I": 53, + "Xe": 54, + "Cs": 55, + "Ba": 56, + "La": 57, + "Ce": 58, + "Pr": 59, + "Nd": 60, + "Pm": 61, + "Sm": 62, + "Eu": 63, + "Gd": 64, + "Tb": 65, + "Dy": 66, + "Ho": 67, + "Er": 68, + "Tm": 69, + "Yb": 70, + "Lu": 71, + "Hf": 72, + "Ta": 73, + "W": 74, + "Re": 75, + "Os": 76, + "Ir": 77, + "Pt": 78, + "Au": 79, + "Hg": 80, + "Tl": 81, + "Pb": 82, + "Bi": 83, + "Po": 84, + "At": 85, + "Rn": 86, + "Fr": 87, + "Ra": 88, + "Ac": 89, + "Th": 90, + "Pa": 91, + "U": 92, + "Np": 93, + "Pu": 94, + "Am": 95, + "Cm": 96, + "Bk": 97, + "Cf": 98, + "Es": 99, + "Fm": 100, + "Md": 101, + "No": 102, + "Lr": 103, + "Rf": 104, + "Db": 105, + "Sg": 106, + "Bh": 107, + "Hs": 108, + "Mt": 109, + "Ds": 110, + "Rg": 111, + "Cn": 112, +} diff --git a/susyexists/src/structure.py b/susyexists/src/structure.py new file mode 100644 index 00000000..05d07392 --- /dev/null +++ b/susyexists/src/structure.py @@ -0,0 +1,338 @@ +from . import seekpath +from markupsafe import escape +import copy +import io +import json +import time +import traceback + +import numpy as np + +from ase.data import chemical_symbols +from tools_barebone import logme, get_tools_barebone_version +from tools_barebone.structure_importers import get_structure_tuple, UnknownFormatError + + + + +MAX_NUMBER_OF_ATOMS = 1000 + + +def get_json_for_visualizer( + cell, relcoords, atomic_numbers +): # pylint: disable=too-many-locals + from seekpath import hpkot, brillouinzone + hpkot = seekpath.hpkot + + system = (np.array(cell), np.array(relcoords), np.array(atomic_numbers)) + res = hpkot.get_path(system, with_time_reversal=False) + + real_lattice = res["primitive_lattice"] + # rec_lattice = np.linalg.inv(real_lattice).T # Missing 2pi! + rec_lattice = np.array(hpkot.tools.get_reciprocal_cell_rows(real_lattice)) + b1, b2, b3 = rec_lattice + faces_data = seekpath.brillouinzone.get_BZ(b1=b1, b2=b2, b3=b3) + + response = {} + response["faces_data"] = faces_data + response["b1"] = b1.tolist() + response["b2"] = b2.tolist() + response["b3"] = b3.tolist() + ## Convert to absolute + response["kpoints"] = { + k: (v[0] * b1 + v[1] * b2 + v[2] * b3).tolist() + for k, v in res["point_coords"].items() + } + response["kpoints_rel"] = { + k: [v[0], v[1], v[2]] for k, v in res["point_coords"].items() + } + response["path"] = res["path"] + + # It should use the same logic, so give the same cell as above + res_explicit = seekpath.get_explicit_k_path(system, with_time_reversal=False) + for k in res_explicit: + if k == "segments" or k.startswith("explicit_"): + if isinstance(res_explicit[k], np.ndarray): + response[k] = res_explicit[k].tolist() + else: + response[k] = res_explicit[k] + + if ( + np.sum( + np.abs( + np.array(res_explicit["reciprocal_primitive_lattice"]) + - np.array(res["reciprocal_primitive_lattice"]) + ) + ) + > 1.0e-7 + ): + raise AssertionError("Got different reciprocal cells...") + + # Response for JS, and path_results + return response, res + + +def process_structure_core( # pylint: disable=too-many-locals,too-many-statements,too-many-arguments + filecontent, + fileformat, + call_source="", + logger=None, + flask_request=None, +): + + start_time = time.time() + fileobject = io.StringIO(str(filecontent)) + # form_data = dict(flask_request.form) + form_data = None + try: + structure_tuple = get_structure_tuple( + fileobject, fileformat, extra_data=None + ) + except UnknownFormatError: + logme( + logger, + filecontent, + fileformat, + flask_request, + call_source, + reason="unknownformat", + extra={"form_data": form_data,}, + ) + raise FlaskRedirectException("Unknown format '{}'".format(fileformat)) + except Exception: + # There was an exception... + logme( + logger, + filecontent, + fileformat, + flask_request, + call_source, + reason="exception", + extra={"traceback": traceback.format_exc(), "form_data": form_data,}, + ) + raise FlaskRedirectException( + "I tried my best, but I wasn't able to load your " + "file in format '{}'...".format(fileformat) + ) + + if len(structure_tuple[1]) > MAX_NUMBER_OF_ATOMS: + ## Structure too big + logme( + logger, + filecontent, + fileformat, + flask_request, + call_source, + reason="toolarge", + extra={"number_of_atoms": len(structure_tuple[1]), "form_data": form_data,}, + ) + raise FlaskRedirectException( + "Sorry, this online visualizer is limited to {} atoms " + "in the input cell, while your structure has {} atoms." + "".format(MAX_NUMBER_OF_ATOMS, len(structure_tuple[1])) + ) + + # Log the content in case of valid structure + logme( + logger, + filecontent, + fileformat, + flask_request, + call_source, + reason="OK", + extra={"number_of_atoms": len(structure_tuple[1]), "form_data": form_data,}, + ) + + try: + in_json_data = { + "cell": structure_tuple[0], + "scaled_coords": structure_tuple[1], + "atomic_numbers": structure_tuple[2], + } + + out_json_data, path_results = get_json_for_visualizer( + in_json_data["cell"], + in_json_data["scaled_coords"], + in_json_data["atomic_numbers"], + ) + + raw_code_dict = copy.copy(out_json_data) + for k in list(raw_code_dict.keys()): + if k.startswith("explicit_"): + raw_code_dict.pop(k) + if k == "segments": + raw_code_dict.pop(k) + raw_code_dict.pop("faces_data") + raw_code_dict["primitive_lattice"] = path_results["primitive_lattice"].tolist() + raw_code_dict["primitive_positions"] = path_results[ + "primitive_positions" + ].tolist() + inputstructure_positions_cartesian = np.dot( + np.array(in_json_data["scaled_coords"]), np.array(in_json_data["cell"]), + ).tolist() + primitive_positions_cartesian = np.dot( + np.array(path_results["primitive_positions"]), + np.array(path_results["primitive_lattice"]), + ).tolist() + primitive_positions_cartesian_refolded = np.dot( + np.array(path_results["primitive_positions"]) % 1.0, + np.array(path_results["primitive_lattice"]), + ).tolist() + raw_code_dict["primitive_positions_cartesian"] = primitive_positions_cartesian + + # raw_code['primitive_types'] = path_results['primitive_types'] + primitive_symbols = [ + chemical_symbols[num] for num in path_results["primitive_types"] + ] + raw_code_dict["primitive_symbols"] = primitive_symbols + + raw_code = json.dumps(raw_code_dict, indent=2) + ## I manually escape it to then add
and pass it to a filter with + ## |safe. I have to 'unicode' it otherwise it keeps escaping also the + ## next replaces + raw_code = ( + str(escape(raw_code)).replace("\n", "
").replace(" ", " ") + ) + + kpoints = [ + [ + k, + out_json_data["kpoints"][k][0], + out_json_data["kpoints"][k][1], + out_json_data["kpoints"][k][2], + ] + for k in sorted(out_json_data["kpoints"]) + ] + kpoints_rel = [ + [ + k, + out_json_data["kpoints_rel"][k][0], + out_json_data["kpoints_rel"][k][1], + out_json_data["kpoints_rel"][k][2], + ] + for k in sorted(out_json_data["kpoints_rel"]) + ] + + inputstructure_cell_vectors = [ + [idx, coords[0], coords[1], coords[2]] + for idx, coords in enumerate(in_json_data["cell"], start=1) + ] + inputstructure_symbols = [ + chemical_symbols[num] for num in in_json_data["atomic_numbers"] + ] + inputstructure_atoms_scaled = [ + [label, coords[0], coords[1], coords[2]] + for label, coords in zip( + inputstructure_symbols, in_json_data["scaled_coords"] + ) + ] + inputstructure_atoms_cartesian = [ + [label, coords[0], coords[1], coords[2]] + for label, coords in zip( + inputstructure_symbols, inputstructure_positions_cartesian + ) + ] + + direct_vectors = [ + [idx, coords[0], coords[1], coords[2]] + for idx, coords in enumerate(path_results["primitive_lattice"], start=1) + ] + + reciprocal_primitive_vectors = [ + [idx, coords[0], coords[1], coords[2]] + for idx, coords in enumerate( + path_results["reciprocal_primitive_lattice"], start=1 + ) + ] + + atoms_scaled = [ + [label, str(coords[0]), str(coords[1]), str(coords[2])] + for label, coords in zip( + primitive_symbols, path_results["primitive_positions"] + ) + ] + + atoms_cartesian = [ + [label, coords[0], coords[1], coords[2]] + for label, coords in zip(primitive_symbols, primitive_positions_cartesian) + ] + + # Create extetically-nice looking path, with dashes and pipes + suggested_path = [] + if path_results["path"]: + suggested_path.append(path_results["path"][0][0]) + suggested_path.append("-") + suggested_path.append(path_results["path"][0][1]) + last = path_results["path"][0][1] + for p1, p2 in path_results["path"][1:]: + if p1 != last: + suggested_path.append("|") + suggested_path.append(p1) + suggested_path.append("-") + suggested_path.append(p2) + last = p2 + + primitive_lattice = path_results["primitive_lattice"] + xsfstructure = [] + xsfstructure.append("CRYSTAL") + xsfstructure.append("PRIMVEC") + for vector in primitive_lattice: + xsfstructure.append("{} {} {}".format(vector[0], vector[1], vector[2])) + xsfstructure.append("PRIMCOORD") + xsfstructure.append("{} 1".format(len(primitive_positions_cartesian_refolded))) + for atom_num, pos in zip( + path_results["primitive_types"], primitive_positions_cartesian_refolded + ): + xsfstructure.append("{} {} {} {}".format(atom_num, pos[0], pos[1], pos[2])) + xsfstructure = "\n".join(xsfstructure) + + compute_time = time.time() - start_time + except Exception: + logme( + logger, + filecontent, + fileformat, + flask_request, + call_source, + reason="codeexception", + extra={"traceback": traceback.extract_stack(), "form_data": form_data,}, + ) + raise + + return dict( + jsondata=json.dumps(out_json_data), + volume_ratio_prim=int(round(path_results["volume_original_wrt_prim"])), + raw_code=raw_code, + kpoints=kpoints, + kpoints_rel=kpoints_rel, + bravais_lattice=path_results["bravais_lattice"], + bravais_lattice_extended=path_results["bravais_lattice_extended"], + spacegroup_number=path_results["spacegroup_number"], + spacegroup_international=path_results["spacegroup_international"], + direct_vectors=direct_vectors, + inputstructure_cell_vectors=inputstructure_cell_vectors, + inputstructure_atoms_scaled=inputstructure_atoms_scaled, + inputstructure_atoms_cartesian=inputstructure_atoms_cartesian, + atoms_scaled=atoms_scaled, + with_without_time_reversal=( + "with" if path_results["has_inversion_symmetry"] else "without" + ), + atoms_cartesian=atoms_cartesian, + reciprocal_primitive_vectors=reciprocal_primitive_vectors, + primitive_vectors=primitive_lattice, + suggested_path=suggested_path, + ) + + +def primitive(fileContent,fileformat): + with open(fileContent) as file: + fileContent = file.read() + process_structure_core(filecontent=fileContent,fileformat=fileformat) + structure = process_structure_core(filecontent=fileContent,fileformat=fileformat) + lattice = (structure["primitive_vectors"].astype('str')).tolist() + atoms = structure["atoms_scaled"] + kpoints = structure['kpoints_rel'] + return (lattice,atoms,kpoints) + + + diff --git a/susyexists/src/utils.py b/susyexists/src/utils.py new file mode 100644 index 00000000..e6cf46df --- /dev/null +++ b/susyexists/src/utils.py @@ -0,0 +1,142 @@ +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import os +import re +import subprocess +import json +import qcelemental as qcel +import untangle + + +def make_monolayer(atoms): + df = pd.DataFrame() + atoms=np.array(atoms) + df['Atoms'] = atoms.T[0] + df['x'] = atoms.T[1].astype(float) + df['y'] = atoms.T[2].astype(float) + df['z'] = atoms.T[3].astype(float) + df = df.query('z<0.5') + df_shifted = pd.DataFrame() + df_shifted["Atoms"] = df['Atoms'].values + df_shifted["x"] = df['x'].values + df_shifted["y"] = df['y'].values + df_shifted["z"] = df['z'].values+0.25 + return df_shifted.values + + +def plot_sigma_energy(path): + out_files = os.listdir(path) + total_energy = [] + e_fermi = [] + for file in out_files: + temp_file = open(f'{path}/{file}', 'r').readlines() + for i in range(len(temp_file)): + if len(temp_file[i].split())>2: + if temp_file[i].split()[0]=='!': + temp_en=temp_file[i].split()[4] + # if temp_file[i].split()[0]=='the': + # temp_fermi=temp_file[i].split()[-2] + total_energy.append([float(temp_en),float(file[:-13])]) + # e_fermi.append([float(temp_fermi),float(file[:-13])]) + + tot_en = np.array(total_energy) + tot_en = tot_en[tot_en[:, 1].argsort()] + + + # e_f = np.array(e_fermi) + # e_f = e_f[e_f[:, 1].argsort()] + + fig = plt.figure(figsize=(8,6)) + plt.plot(tot_en.T[1],tot_en.T[0]) + plt.ylabel('Total Energy [Ry]',fontsize=20) + plt.xlabel('Smearing Value [Ry]',fontsize=20) + plt.xticks(fontsize=20) + plt.yticks(fontsize=20) + plt.savefig('total_sigma.png') + +def get_total_energy(path): + obj = untangle.parse(path) + en = float(obj.qes_espresso.output.total_energy.etot.cdata)*2 + # p = subprocess.Popen(f"grep '!' {path}", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + # line = p.stdout.readlines()[0].decode() + # en = float(re.findall(r"[-+]?(?:\d*\.*\d+)", line)[0]) + return(en) + +def configure(calculation,path="./config.json"): + with open(path) as f: + data = f.read() + config = json.loads(data) + return config[calculation] + +def afm_maker(atom,afm_matrix): + # afm_matrix = [['u','u','d','d'],['u','d','u','d'],['u','d','d','u']] + afm =[] + for i in range(len(afm_matrix)): + # print(f"AFM{i}") + afm.append(np.array(atom).copy()) + for j in range(4): + afm[i][j][0]=atom[j][0]+afm_matrix[i][j] + # print(afm[i][j][0]) + return afm + +def default_pseudo(atom): + atom_type = list(set([a[0] for a in atom])) + atom_array = [] + for i in atom_type: + temp_atom = {"atom":i,'mass':str(qcel.periodictable.to_mass(i)),'pseudopotential':f"{i}.UPF"} + atom_array.append(temp_atom) + # print(temp_atom) + # print(atom_array) + return atom_array + +def atom_type(atom): + num_type = len(list(set([a[0] for a in atom]))) + return num_type + + +def test_parameter(self,parameter_name,conv_thr,start,end,step,num_core,debug=False,out=False): + parameter = np.arange(start,end,step) + result = np.zeros(shape=(3,len(parameter))) + end=0 + for j,i in enumerate(parameter): + if parameter_name=="ecutwfc": + self.ecutwfc(i) + self.job_id=f"ecutwfc_{i}" + if parameter_name=="kpoints": + self.k_points(int(i)) + self.job_id=f"kpoints_{i}" + if debug==False: + self.scf(num_core) + path = f'./Projects/{self.project_id}/{self.job_id}/{self.job_id}.save/data-file-schema.xml' + temp_en = get_total_energy(path) + temp_time = get_time(path) + result[0][j]=i #parameters + result[1][j]=temp_en #energy + result[2][j]=temp_time #time + end+=1 + if j!=0: + if out==True: + print(f"{parameter_name}: {result[0][j]} DeltaE :{(result[1][j]-result[1][j-1])} Ry Time: {result[2][j]} seconds") + if abs(result[1][j-1] - result[1][j]) < conv_thr: + end=j + break + # print(result.T[:end+1].T) + return result.T[:end+1].T + + +def get_time(path): + obj = untangle.parse(path) + time = float(obj.qes_espresso.timing_info.total.wall.cdata) + return time + # with open(path, 'r') as data: + # data = data.read().split() + # counter = 0 + # for j,i in enumerate(data): + # # if i == "PWSCF": + # # counter += 1 + # # if counter ==3: + # # # print(f"CPU: {data[j+2]}, WALL: {data[j+4]}") + # # return (data[j+4]) + # if i=='End': + # return(data[j-2]) diff --git a/susyexists/src/writes.py b/susyexists/src/writes.py new file mode 100644 index 00000000..c3579f61 --- /dev/null +++ b/susyexists/src/writes.py @@ -0,0 +1,55 @@ +def write_atom_species(file,atomic_species): + with open(file, "a") as file_object: + file_object.write("ATOMIC_SPECIES \n") + for atom in atomic_species: + listed = list(atom.values()) + file_object.write(" ".join(listed)+'\n') + + +def write_atom_positions(file, positions): + with open(file, "a") as file_object: + file_object.write("ATOMIC_POSITIONS (crystal) \n") + for i in positions: + try: + file_object.write(" ".join(i)+'\n') + except: + try: + file_object.write(" ".join(i.astype(str))+'\n') + except: + file_object.write(" ".join(str(i))+'\n') + +def write_cell_parameters(file, cell): + with open(file, "a") as file_object: + file_object.write("CELL_PARAMETERS (angstrom) \n") + for i in cell: + try: + file_object.write(" ".join(i)+'\n') + except: + try: + file_object.write(" ".join(i.astype(str))+'\n') + except: + file_object.write(" ".join(str(i))+'\n') + # print(i.astype(str)) + + +def write_k_points(file, k): + with open(file, "a") as file_object: + file_object.write("K_POINTS automatic \n") + file_object.write(k+'\n') + +def write_k_points_bands(file,k): + with open(file, "a") as file_object: + file_object.write("K_POINTS crystal_b \n") + file_object.write(str(len(k))+'\n') + for point in k: + listed = list(point.values()) + file_object.write(" ".join(listed)+'\n') + +def write_k_points_matdyn(file,k): + with open(file, "a") as file_object: + file_object.write(str(len(k))+'\n') + for point in k: + listed = list(point.values()) + file_object.write(" ".join(listed)+'\n') + +