phono3py/test/conftest.py

625 lines
16 KiB
Python
Raw Permalink Normal View History

2021-07-18 13:48:47 +08:00
"""Pytest conftest.py."""
2024-04-29 21:38:27 +08:00
import tarfile
2023-05-30 18:01:53 +08:00
from pathlib import Path
2021-10-23 10:35:40 +08:00
2022-08-28 18:00:58 +08:00
import numpy as np
2020-08-26 11:55:17 +08:00
import phonopy
2021-10-23 10:35:40 +08:00
import pytest
from phonopy import Phonopy
2021-01-24 08:00:34 +08:00
from phonopy.interface.phonopy_yaml import read_cell_yaml
2022-08-28 18:00:58 +08:00
from phonopy.structure.atoms import PhonopyAtoms
2021-01-24 08:00:34 +08:00
2021-10-23 10:35:40 +08:00
import phono3py
2023-05-30 18:01:53 +08:00
from phono3py import Phono3py
2020-08-22 19:54:11 +08:00
2023-05-30 18:01:53 +08:00
cwd = Path(__file__).parent
def pytest_addoption(parser):
2023-12-25 09:03:22 +08:00
"""Activate v2 emulation with --v2 option."""
parser.addoption(
2023-12-25 09:03:22 +08:00
"--v2",
action="store_true",
default=False,
help="Run with phono3py v2.x emulation.",
)
2020-08-23 09:42:49 +08:00
2020-08-22 19:54:11 +08:00
2021-10-15 15:49:41 +08:00
@pytest.fixture(scope="session")
2022-08-28 18:00:58 +08:00
def agno2_cell() -> PhonopyAtoms:
2021-07-18 13:48:47 +08:00
"""Return AgNO2 cell (Imm2)."""
2023-05-30 18:01:53 +08:00
cell = read_cell_yaml(cwd / "AgNO2_cell.yaml")
2021-01-24 08:00:34 +08:00
return cell
2022-08-28 18:00:58 +08:00
@pytest.fixture(scope="session")
def aln_cell() -> PhonopyAtoms:
"""Return AlN cell (P6_3mc)."""
a = 3.111
c = 4.978
lattice = [[a, 0, 0], [-a / 2, a * np.sqrt(3) / 2, 0], [0, 0, c]]
symbols = ["Al", "Al", "N", "N"]
positions = [
[1.0 / 3, 2.0 / 3, 0.0009488200000000],
[2.0 / 3, 1.0 / 3, 0.5009488200000001],
[1.0 / 3, 2.0 / 3, 0.6190511800000000],
[2.0 / 3, 1.0 / 3, 0.1190511800000000],
]
cell = PhonopyAtoms(cell=lattice, symbols=symbols, scaled_positions=positions)
return cell
2021-10-15 15:49:41 +08:00
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol(request) -> Phono3py:
2021-07-18 13:48:47 +08:00
"""Return Phono3py instance of Si 2x2x2.
* with symmetry
* full fc
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_si_pbesol.yaml"
forces_fc3_filename = cwd / "FORCES_FC3_si_pbesol"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
2021-10-15 15:49:41 +08:00
return phono3py.load(
yaml_filename,
forces_fc3_filename=forces_fc3_filename,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
2021-10-15 15:49:41 +08:00
log_level=1,
)
2020-08-25 06:24:35 +08:00
@pytest.fixture(scope="session")
def si_pbesol_without_forcesets(request) -> Phono3py:
"""Return Phono3py instance of Si 2x2x2 without force sets.
* with symmetry
"""
yaml_filename = cwd / "phono3py_si_pbesol.yaml"
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
make_r0_average=not enable_v2,
log_level=1,
)
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol_grg(request) -> Phono3py:
"""Return Phono3py instance of Si 2x2x2.
* with symmetry
* full fc
* GR-grid
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_si_pbesol.yaml"
forces_fc3_filename = cwd / "FORCES_FC3_si_pbesol"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
forces_fc3_filename=forces_fc3_filename,
use_grg=True,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
2021-10-15 15:49:41 +08:00
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol_nosym(request) -> Phono3py:
2021-07-18 13:48:47 +08:00
"""Return Phono3py instance of Si 2x2x2.
* without symmetry
* no fc
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_si_pbesol.yaml"
forces_fc3_filename = cwd / "FORCES_FC3_si_pbesol"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
2021-10-15 15:49:41 +08:00
return phono3py.load(
yaml_filename,
forces_fc3_filename=forces_fc3_filename,
is_symmetry=False,
produce_fc=False,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
2021-10-15 15:49:41 +08:00
log_level=1,
)
2021-10-15 15:49:41 +08:00
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol_nomeshsym(request) -> Phono3py:
2021-07-18 13:48:47 +08:00
"""Return Phono3py instance of Si 2x2x2.
* without mesh-symmetry
* no fc
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_si_pbesol.yaml"
forces_fc3_filename = cwd / "FORCES_FC3_si_pbesol"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
2021-10-15 15:49:41 +08:00
return phono3py.load(
yaml_filename,
forces_fc3_filename=forces_fc3_filename,
is_mesh_symmetry=False,
produce_fc=False,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
2021-10-15 15:49:41 +08:00
log_level=1,
)
2021-10-15 15:49:41 +08:00
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol_compact_fc(request) -> Phono3py:
2021-07-18 13:48:47 +08:00
"""Return Phono3py instance of Si 2x2x2.
* with symmetry
* compact fc
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_si_pbesol.yaml"
forces_fc3_filename = cwd / "FORCES_FC3_si_pbesol"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
2021-10-15 15:49:41 +08:00
return phono3py.load(
yaml_filename,
forces_fc3_filename=forces_fc3_filename,
is_compact_fc=True,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
2021-10-15 15:49:41 +08:00
log_level=1,
)
2021-01-27 15:05:08 +08:00
2021-10-15 15:49:41 +08:00
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol_111(request) -> Phono3py:
2021-07-18 13:48:47 +08:00
"""Return Phono3py instance of Si 1x1x1.
* with symmetry
* full fc
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_Si111.yaml"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
2021-10-15 15:49:41 +08:00
return phono3py.load(
yaml_filename,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
2021-10-15 15:49:41 +08:00
log_level=1,
)
2020-08-26 11:55:17 +08:00
@pytest.fixture(scope="session")
2024-06-19 14:05:39 +08:00
def si_pbesol_111_symfc(request) -> Phono3py:
"""Return Phono3py instance of Si 1x1x1.
* with symmetry
* full fc
2024-06-19 14:05:39 +08:00
* use symfc if available on test side
"""
2024-06-19 14:05:39 +08:00
pytest.importorskip("symfc")
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_Si111.yaml"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
2024-06-19 14:05:39 +08:00
fc_calculator="symfc",
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
2021-10-15 15:49:41 +08:00
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol_iterha_111() -> Phonopy:
2021-07-18 13:48:47 +08:00
"""Return Phono3py instance of Si 1x1x1.
* with symmetry
* no fc
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phonopy_params-Si111-iterha.yaml.gz"
2021-10-15 15:49:41 +08:00
return phonopy.load(yaml_filename, log_level=1, produce_fc=False)
2020-09-25 18:22:19 +08:00
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol_111_222_fd(request) -> Phono3py:
"""Return Phono3py instance of Si 1x1x1.
* with symmetry
* full fc
2024-06-19 14:05:39 +08:00
* use symfc if available on test side
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_Si-111-222.yaml"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
@pytest.fixture(scope="session")
2024-06-19 14:05:39 +08:00
def si_pbesol_111_222_symfc(request) -> Phono3py:
"""Return Phono3py instance of Si 1x1x1.
* with symmetry
* full fc
2024-06-19 14:05:39 +08:00
* use symfc if available on test side
"""
2024-06-19 14:05:39 +08:00
pytest.importorskip("symfc")
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_Si-111-222.yaml"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
2024-06-19 14:05:39 +08:00
fc_calculator="symfc",
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
@pytest.fixture(scope="session")
2024-06-19 14:05:39 +08:00
def si_pbesol_111_222_symfc_fd(request) -> Phono3py:
"""Return Phono3py instance of Si 1x1x1.
* with symmetry
* full fc
2024-06-19 14:05:39 +08:00
* use symfc for fc2 if available on test side
"""
2024-06-19 14:05:39 +08:00
pytest.importorskip("symfc")
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_Si-111-222.yaml"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
2024-06-19 14:05:39 +08:00
fc_calculator="symfc|",
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
@pytest.fixture(scope="session")
2024-06-19 14:05:39 +08:00
def si_pbesol_111_222_fd_symfc(request) -> Phono3py:
"""Return Phono3py instance of Si 1x1x1.
* with symmetry
* full fc
2024-06-19 14:05:39 +08:00
* use symfc for fc3 if available on test side
"""
2024-06-19 14:05:39 +08:00
pytest.importorskip("symfc")
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_Si-111-222.yaml"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
2024-06-19 14:05:39 +08:00
fc_calculator="|symfc",
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol_111_222_alm_cutoff(request) -> Phono3py:
"""Return Phono3py instance of Si 1x1x1.
* with symmetry
* full fc
* use alm if available on test side
* cutoff=3
"""
pytest.importorskip("alm")
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_Si-111-222.yaml"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
fc_calculator="alm",
fc_calculator_options="cutoff = 3",
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol_111_222_alm_cutoff_fc2(request) -> Phono3py:
"""Return Phono3py instance of Si 1x1x1.
* with symmetry
* full fc
* use alm if available on test side
* cutoff=3 only for fc2
"""
pytest.importorskip("alm")
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_Si-111-222.yaml"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
fc_calculator="alm",
fc_calculator_options="cutoff = 3|",
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def si_pbesol_111_222_alm_cutoff_fc3(request) -> Phono3py:
"""Return Phono3py instance of Si 1x1x1.
* with symmetry
* full fc
* use alm if available on test side
* cutoff=3 only for fc3
"""
pytest.importorskip("alm")
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_Si-111-222.yaml"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
fc_calculator="alm",
fc_calculator_options="|cutoff = 3",
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
2021-10-15 15:49:41 +08:00
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def nacl_pbe(request) -> Phono3py:
2021-07-18 13:48:47 +08:00
"""Return Phono3py instance of NaCl 2x2x2.
* with symmetry
* full fc
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_NaCl222.yaml.xz"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
return phono3py.load(
yaml_filename,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def nacl_pbe_compact_fc(request) -> Phono3py:
"""Return Phono3py instance of NaCl 2x2x2.
2021-07-18 13:48:47 +08:00
* with symmetry
* compact fc
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_NaCl222.yaml.xz"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
2021-10-15 15:49:41 +08:00
return phono3py.load(
yaml_filename,
is_compact_fc=True,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
2021-10-15 15:49:41 +08:00
log_level=1,
)
2021-02-22 15:02:01 +08:00
2021-10-15 15:49:41 +08:00
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def nacl_pbe_cutoff_fc3(request) -> Phono3py:
"""Return Phono3py instance of NaCl 2x2x2 with cutoff-pair-distance.
2021-07-18 13:48:47 +08:00
* cutoff pair with 5
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_NaCl222.yaml.xz"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
2021-10-15 15:49:41 +08:00
ph3 = phono3py.load(
yaml_filename,
produce_fc=False,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
2021-10-15 15:49:41 +08:00
log_level=1,
)
forces = ph3.forces
ph3.generate_displacements(cutoff_pair_distance=5)
dataset = ph3.dataset
2021-10-15 15:49:41 +08:00
dataset["first_atoms"][0]["forces"] = forces[0]
dataset["first_atoms"][1]["forces"] = forces[1]
count = 2
2021-10-15 15:49:41 +08:00
for first_atoms in dataset["first_atoms"]:
for second_atoms in first_atoms["second_atoms"]:
assert second_atoms["id"] == count + 1
second_atoms["forces"] = forces[count]
count += 1
ph3.dataset = dataset
ph3.produce_fc3()
return ph3
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def nacl_pbe_cutoff_fc3_all_forces(request) -> Phono3py:
"""Return Phono3py instance of NaCl 2x2x2 with cutoff-pair-distance.
* cutoff pair with 5
* All forces are set.
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_NaCl222.yaml.xz"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
ph3 = phono3py.load(
yaml_filename,
produce_fc=False,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
forces = ph3.forces
ph3.generate_displacements(cutoff_pair_distance=5)
ph3.forces = forces
ph3.produce_fc3()
return ph3
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def nacl_pbe_cutoff_fc3_compact_fc(request) -> Phono3py:
"""Return Phono3py instance of NaCl 2x2x2 with cutoff-pair-distance.
* cutoff pair with 5
* All forces are set.
* Compact FC
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_NaCl222.yaml.xz"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
ph3 = phono3py.load(
yaml_filename,
produce_fc=False,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
log_level=1,
)
forces = ph3.forces
ph3.generate_displacements(cutoff_pair_distance=5)
ph3.forces = forces
ph3.produce_fc3(is_compact_fc=True)
return ph3
2021-10-15 15:49:41 +08:00
@pytest.fixture(scope="session")
2023-05-30 18:01:53 +08:00
def aln_lda(request) -> Phono3py:
2021-07-18 13:48:47 +08:00
"""Return Phono3py instance of AlN 3x3x2.
* with symmetry
* full fc.
"""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phono3py_params_AlN332.yaml.xz"
2023-12-25 14:19:55 +08:00
enable_v2 = request.config.getoption("--v2")
2021-10-15 15:49:41 +08:00
return phono3py.load(
yaml_filename,
2023-12-25 14:19:55 +08:00
make_r0_average=not enable_v2,
2021-10-15 15:49:41 +08:00
log_level=1,
)
@pytest.fixture(scope="session")
def si_111_222_fd() -> Phono3py:
"""Return Phono3py class instance of Si-1x1x1-2x2x2 FD."""
yaml_filename = cwd / "phono3py_params_Si-111-222-fd.yaml.xz"
return phono3py.load(yaml_filename, produce_fc=False, log_level=1)
@pytest.fixture(scope="session")
def si_111_222_rd() -> Phono3py:
"""Return Phono3py class instance of Si-1x1x1-2x2x2 RD."""
yaml_filename = cwd / "phono3py_params_Si-111-222-rd.yaml.xz"
return phono3py.load(yaml_filename, produce_fc=False, log_level=1)
@pytest.fixture(scope="session")
def mgo_222rd_444rd() -> Phono3py:
"""Return Phono3py class instance of MgO-2x2x2-4x4x4 RD-RD.
4 and 400 supercells for fc2 and fc3, respectively.
"""
2024-06-28 14:45:12 +08:00
yaml_filename = cwd / "phono3py_params_MgO-222rd-444rd.yaml.xz"
return phono3py.load(yaml_filename, produce_fc=False, log_level=1)
@pytest.fixture(scope="session")
def ph_nacl() -> Phonopy:
"""Return Phonopy class instance of NaCl 2x2x2."""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phonopy_disp_NaCl.yaml"
force_sets_filename = cwd / "FORCE_SETS_NaCl"
born_filename = cwd / "BORN_NaCl"
return phonopy.load(
yaml_filename,
force_sets_filename=force_sets_filename,
born_filename=born_filename,
is_compact_fc=False,
log_level=1,
produce_fc=True,
)
2022-03-11 13:19:48 +08:00
@pytest.fixture(scope="session")
def ph_si() -> Phonopy:
"""Return Phonopy class instance of Si-prim 2x2x2."""
2023-05-30 18:01:53 +08:00
yaml_filename = cwd / "phonopy_params_Si.yaml"
2022-03-11 13:19:48 +08:00
return phonopy.load(
yaml_filename,
is_compact_fc=False,
log_level=1,
produce_fc=True,
)
2024-04-29 21:38:27 +08:00
@pytest.fixture(scope="session")
def si_111_222_fd_raw_data() -> tarfile.TarFile:
2024-04-29 21:38:27 +08:00
"""Return Si fc3 111 fc2 222 vasp inputs.
tar.getnames()
['Si-111-222-fd',
'Si-111-222-fd/vasprun-001.xml',
'Si-111-222-fd/vasprun-015.xml',
'Si-111-222-fd/vasprun-014.xml',
'Si-111-222-fd/vasprun-000.xml',
'Si-111-222-fd/vasprun-016.xml',
'Si-111-222-fd/vasprun-002.xml',
'Si-111-222-fd/vasprun-003.xml',
'Si-111-222-fd/vasprun-013.xml',
'Si-111-222-fd/vasprun-007.xml',
'Si-111-222-fd/vasprun-fc2-000.xml',
'Si-111-222-fd/vasprun-fc2-001.xml',
'Si-111-222-fd/vasprun-006.xml',
'Si-111-222-fd/vasprun-012.xml',
'Si-111-222-fd/vasprun-004.xml',
'Si-111-222-fd/vasprun-010.xml',
'Si-111-222-fd/vasprun-011.xml',
'Si-111-222-fd/vasprun-005.xml',
'Si-111-222-fd/phono3py_disp.yaml',
'Si-111-222-fd/vasprun-008.xml',
'Si-111-222-fd/vasprun-009.xml']
member = tar.getmember("Si-111-222-fd/phono3py_disp.yaml")
tar.extractfile(member) -> byte file object
"""
tar = tarfile.open(cwd / "Si-111-222-fd.tar.xz")
return tar
@pytest.fixture(scope="session")
def si_111_222_rd_raw_data() -> tarfile.TarFile:
2024-04-29 21:38:27 +08:00
"""Return Si fc3 111 fc2 222 vasp inputs.
tar.getnames()
['Si-111-222-rd',
'Si-111-222-rd/vasprun-001.xml',
'Si-111-222-rd/vasprun-015.xml',
'Si-111-222-rd/vasprun-014.xml',
'Si-111-222-rd/vasprun-000.xml',
'Si-111-222-rd/vasprun-016.xml',
'Si-111-222-rd/vasprun-002.xml',
'Si-111-222-rd/vasprun-003.xml',
'Si-111-222-rd/vasprun-017.xml',
'Si-111-222-rd/vasprun-013.xml',
'Si-111-222-rd/vasprun-007.xml',
'Si-111-222-rd/vasprun-fc2-000.xml',
'Si-111-222-rd/vasprun-fc2-001.xml',
'Si-111-222-rd/vasprun-006.xml',
'Si-111-222-rd/vasprun-012.xml',
'Si-111-222-rd/vasprun-004.xml',
'Si-111-222-rd/vasprun-010.xml',
'Si-111-222-rd/vasprun-fc2-002.xml',
'Si-111-222-rd/vasprun-011.xml',
'Si-111-222-rd/vasprun-005.xml',
'Si-111-222-rd/phono3py_disp.yaml',
'Si-111-222-rd/vasprun-020.xml',
'Si-111-222-rd/vasprun-008.xml',
'Si-111-222-rd/vasprun-009.xml',
'Si-111-222-rd/vasprun-019.xml',
'Si-111-222-rd/vasprun-018.xml']
member = tar.getmember("Si-111-222-rd/phono3py_disp.yaml")
tar.extractfile(member) -> byte file object
"""
tar = tarfile.open(cwd / "Si-111-222-fd.tar.xz")
return tar