Merge branch 'develop' into publish-gh-pages

This commit is contained in:
Atsushi Togo 2024-02-02 12:17:38 +09:00
commit 84451d493e
77 changed files with 224 additions and 28 deletions

View File

@ -11,7 +11,7 @@ repos:
- id: check-added-large-files
- repo: https://github.com/pycqa/flake8
rev: 6.1.0
rev: 7.0.0
hooks:
- id: flake8
args:
@ -19,7 +19,7 @@ repos:
- "--ignore=E203,W503"
- repo: https://github.com/psf/black
rev: 23.12.0
rev: 24.1.1
hooks:
- id: black
args:

View File

@ -2,6 +2,10 @@
# Change Log
## Feb-2-2024: Version 2.9.2
- `boundary_mfp` value is stored in `kappa-*.hdf5` file when it is specified.
## Dec-26-2023: Version 2.9.1
- Release to build conda-forge package.

View File

@ -571,6 +571,8 @@ Then running with isotope calculation:
In the result hdf5 file, currently isotope scattering strength is not written
out, i.e., `gamma` is still imaginary part of self energy of ph-ph scattering.
(boundary_mfp_option)=
### `--boundary-mfp`, `--bmfp` (`BOUNDARY_MFP`)
A most simple phonon boundary scattering treatment is included. $v_g/L$ is just

View File

@ -1,4 +1,5 @@
"""Sphinx phono3py configuration file."""
#
# phono3py documentation build configuration file, created by
# sphinx-quickstart on Wed Jun 26 13:13:14 2013.
@ -59,7 +60,7 @@ copyright = "2015, Atsushi Togo"
# The short X.Y version.
version = "2.9"
# The full version, including alpha/beta/rc tags.
release = "2.9.1"
release = "2.9.2"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@ -123,8 +123,9 @@ The array shape is (irreducible q-point, phonon band).
(kappa_hdf5_file_gamma)=
### gamma
Imaginary part of self energy. The physical unit is THz, where THz
is in the ordinal frequency not the angular frequency.
Imaginary part of self energy of phonon bubble diagram (phonon-phonon
scattering). The physical unit is THz, where THz is in the ordinal frequency not
the angular frequency.
The array shape for all grid-points (irreducible q-points) is
(temperature, irreducible q-point, phonon band).
@ -262,9 +263,16 @@ P_{\mathbf{q}j} = \frac{1}{(3n_\mathrm{a})^2} \sum_{\lambda'\lambda''}
$$
This is not going to be calculated in the RTA thermal coductivity
calculation mode by default. To calculate this, `--full_pp` option
calculation mode by default. To calculate this, `--full-pp` option
has to be specified (see {ref}`full_pp_option`).
### boundary_mfp
A value specified by {ref}`boundary_mfp_option`. The physical unit is
micrometre.
When `--boundary-mfp` option is explicitly specified, its value is stored here.
### kappa_unit_conversion
This is used to convert the physical unit of lattice thermal

View File

@ -1,4 +1,5 @@
"""Example to run thermal conductivity of Si."""
import numpy as np
from phonopy.interface.vasp import read_vasp

View File

@ -1,4 +1,5 @@
"""Launch script of ZnTe AiiDA calculation using aiida-phononpy."""
from aiida.engine import submit
from aiida.manage.configuration import load_profile
from aiida.orm import Bool, Float, Str

View File

@ -1,4 +1,5 @@
"""Shortcuts to important classes, methods, and variables."""
# Copyright (C) 2019 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""API for isotope scattering."""
# Copyright (C) 2019 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""API for joint-density-of-states calculation."""
# Copyright (C) 2019 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Phono3py main class."""
# Copyright (C) 2016 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Thermal conductivity base class."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#
@ -375,6 +376,8 @@ class ConductivityBase(ABC):
volume = self._pp.primitive.volume
self._conversion_factor = unit_to_WmK / volume
self._averaged_pp_interaction = None
# `self._velocity_obj` is the instance of an inherited class of
# `GroupVelocity`. `self._init_velocity()` is the method setup the instance,
# which must be implmented in the inherited class of `ConductivityBase`.
@ -632,6 +635,11 @@ class ConductivityBase(ABC):
)
return self.averaged_pp_interaction
@property
def boundary_mfp(self) -> float:
"""Return boundary MFP."""
return self._boundary_mfp
def get_number_of_sampling_grid_points(self):
"""Return number of grid points.

View File

@ -1,4 +1,5 @@
"""Calculate lattice thermal conductivity by direct solution."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#
@ -108,7 +109,6 @@ class ConductivityLBTEBase(ConductivityBase):
self._init_velocity(gv_delta_q)
self._lang = lang
self._averaged_pp_interaction = None
self._collision_eigenvalues = None
self._is_reducible_collision_matrix = is_reducible_collision_matrix
self._solve_collective_phonon = solve_collective_phonon
@ -517,9 +517,9 @@ class ConductivityLBTEBase(ConductivityBase):
else:
i_data = 0
self._gamma[j, k, i_data] = self._collision.imag_self_energy
self._collision_matrix[
j, k, i_data
] = self._collision.get_collision_matrix()
self._collision_matrix[j, k, i_data] = (
self._collision.get_collision_matrix()
)
def _prepare_collision_matrix(self):
"""Collect pieces and construct collision matrix."""

View File

@ -1,4 +1,5 @@
"""Kubo thermal conductivity base class."""
# Copyright (C) 2022 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Lattice thermal conductivity calculation with RTA."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#
@ -97,7 +98,6 @@ class ConductivityRTABase(ConductivityBase):
self._gamma_detail_at_q = None
self._use_ave_pp = use_ave_pp
self._use_const_ave_pp = None
self._averaged_pp_interaction = None
self._num_ignored_phonon_modes = None
super().__init__(
@ -298,9 +298,9 @@ class ConductivityRTABase(ConductivityBase):
self._gamma_N[j, k, i] = g_N
self._gamma_U[j, k, i] = g_U
if self._is_gamma_detail:
self._gamma_detail_at_q[
k
] = self._collision.get_detailed_imag_self_energy()
self._gamma_detail_at_q[k] = (
self._collision.get_detailed_imag_self_energy()
)
def _set_gamma_at_sigmas_lowmem(self, i):
"""Calculate gamma without storing ph-ph interaction strength.

View File

@ -1,4 +1,5 @@
"""Utilities for lattice thermal conductivity calculation."""
# Copyright (C) 2022 Atsushi Togo
# All rights reserved.
#
@ -268,6 +269,7 @@ class ConductivityRTAWriter:
qpoints = br.qpoints
grid_points = br.grid_points
weights = br.grid_weights
boundary_mfp = br.boundary_mfp
for i, sigma in enumerate(sigmas):
if kappa is None:
@ -314,6 +316,7 @@ class ConductivityRTAWriter:
write_kappa_to_hdf5(
temperatures,
mesh,
boundary_mfp=boundary_mfp,
bz_grid=bz_grid,
frequency=frequencies,
group_velocity=gv,
@ -487,13 +490,13 @@ class ConductivityLBTEWriter:
@staticmethod
def write_kappa(
lbte: "cond_LBTE_type",
volume,
is_reducible_collision_matrix=False,
write_LBTE_solution=False,
pinv_solver=None,
compression="gzip",
filename=None,
log_level=0,
volume: float,
is_reducible_collision_matrix: bool = False,
write_LBTE_solution: bool = False,
pinv_solver: Optional[int] = None,
compression: str = "gzip",
filename: Optional[str] = None,
log_level: int = 0,
):
"""Write kappa related properties into a hdf5 file."""
from phono3py.conductivity.direct_solution import (
@ -546,6 +549,7 @@ class ConductivityLBTEWriter:
f_vector = lbte.get_f_vectors()
mode_cv = lbte.mode_heat_capacities
mfp = lbte.get_mean_free_path()
boundary_mfp = lbte.boundary_mfp
coleigs = lbte.get_collision_eigenvalues()
# After kappa calculation, the variable is overwritten by unitary matrix
@ -612,6 +616,7 @@ class ConductivityLBTEWriter:
write_kappa_to_hdf5(
temperatures,
mesh,
boundary_mfp=boundary_mfp,
bz_grid=bz_grid,
frequency=frequencies,
group_velocity=gv,

View File

@ -1,4 +1,5 @@
"""Wigner thermal conductivity base class."""
# Copyright (C) 2022 Michele Simoncelli
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Force constants calculation utilities for command line user interface."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Utilities of main CUI script."""
# Copyright (C) 2015 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Phono3py kaccum command line script."""
import argparse
import sys

View File

@ -1,4 +1,5 @@
"""Phono3py loader."""
# Copyright (C) 2019 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Phono3py command option argument parser."""
# Copyright (C) 2015 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Phono3py main command line script."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Phono3py command option and conf file parser."""
# Copyright (C) 2015 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Utilities to show various logs for main CUI script."""
# Copyright (C) 2015 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Show and write triplets information."""
# Copyright (C) 2015 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""File I/O methods."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#
@ -32,9 +33,12 @@
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
from __future__ import annotations
import os
import warnings
from collections.abc import Sequence
from typing import Optional, Union
import h5py
import numpy as np
@ -918,6 +922,7 @@ def write_collision_eigenvalues_to_hdf5(
def write_kappa_to_hdf5(
temperature,
mesh,
boundary_mfp: float = None,
bz_grid=None,
frequency=None,
group_velocity=None,
@ -1058,6 +1063,8 @@ def write_kappa_to_hdf5(
w.create_dataset("sigma_cutoff_width", data=sigma_cutoff)
if kappa_unit_conversion is not None:
w.create_dataset("kappa_unit_conversion", data=kappa_unit_conversion)
if boundary_mfp is not None:
w.create_dataset("boundary_mfp", data=boundary_mfp)
if verbose:
text = "Thermal conductivity related properties "
@ -1720,12 +1727,12 @@ def get_length_of_first_line(f):
def _get_filename_suffix(
mesh,
grid_point=None,
band_indices=None,
sigma=None,
sigma_cutoff=None,
temperature=None,
filename=None,
grid_point: Optional[int] = None,
band_indices: Optional[Union[np.ndarray, Sequence]] = None,
sigma: Optional[float] = None,
sigma_cutoff: Optional[float] = None,
temperature: Optional[float] = None,
filename: Optional[str] = None,
):
"""Return filename suffix corresponding to parameters."""
suffix = "-m%d%d%d" % tuple(mesh)

View File

@ -1,4 +1,5 @@
"""ALM interface for force constants calculation."""
# Copyright (C) 2016 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Utilities of calculator interfaces."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Interfaces for force constants calculators."""
# Copyright (C) 2019 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""phono3py_yaml reader and writer."""
# Copyright (C) 2016 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Isotope scattering calculation."""
# Copyright (C) 2015 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Calculated accumulated property with respect to other property."""
from typing import Optional
import numpy as np

View File

@ -1,4 +1,5 @@
"""Tetrahedron method python wrapper."""
# Copyright (C) 2021 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Mathematical functions."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Regular grid tools."""
# Copyright (C) 2021 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Calculate group velocity matrix."""
# Copyright (C) 2021 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Calculate group velocity matrix."""
# Copyright (C) 2021 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Create dynamical matrix and solve harmonic phonons on grid."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Velocity operator of Simoncelli, Marzari, and Mauri."""
# Copyright (C) 2013 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Calculate collision matrix of direct solution of LBTE."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Parse displacement dataset."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Procedures to handle atomic displacements for fc3."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Calculate fc3."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Calculation of mode Grueneisen parameters from fc3."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Calculation of imaginary-part of self-energy of bubble diagram."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Calculate ph-ph interaction and phonons on grid."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Joint-density of states calculation."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Calculate real-part of self-energy of bubble diagram."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Transform fc3 in real space to reciprocal space."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Transform fc3 in reciprocal space to phonon space."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Calculate spectral function due to bubble diagram."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Utilities to handle q-point triplets."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#

View File

@ -1,4 +1,5 @@
"""Define phono3py version."""
# Copyright (C) 2020 Atsushi Togo
# All rights reserved.
#
@ -33,4 +34,4 @@
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
__version__ = "2.9.1"
__version__ = "2.9.2"

View File

@ -7,6 +7,7 @@ To fully customize using site.cfg,
set PHONO3PY_USE_CMAKE=false to avoid running cmake.
"""
import os
import pathlib
import shutil

View File

@ -1,4 +1,5 @@
"""Tests of Phono3py API."""
from pathlib import Path
from phono3py import Phono3py

View File

@ -1,4 +1,5 @@
"""Tests for direct solution of LBTE."""
import numpy as np
from phono3py.api_phono3py import Phono3py

View File

@ -1,4 +1,5 @@
"""Tests for direct solution of LBTE."""
import numpy as np
import pytest

View File

@ -1,4 +1,5 @@
"""Test for Conductivity_RTA.py."""
import itertools
import numpy as np

View File

@ -1,4 +1,5 @@
"""Test for Conductivity_RTA.py."""
import itertools
import numpy as np

View File

@ -1,4 +1,5 @@
"""Pytest conftest.py."""
from pathlib import Path
import numpy as np

View File

@ -1,4 +1,5 @@
"""Tests of Phono3py API."""
from __future__ import annotations
import os

View File

@ -0,0 +1,95 @@
"""Tests of Phono3py API."""
import pathlib
from collections.abc import Sequence
from typing import Optional
import h5py
import numpy as np
from phono3py import Phono3py
from phono3py.file_IO import _get_filename_suffix
cwd = pathlib.Path(__file__).parent
cwd_called = pathlib.Path.cwd()
def test_kappa_filename():
"""Test _get_filename_suffix."""
mesh = [4, 4, 4]
grid_point = None
band_indices = None
sigma = None
sigma_cutoff = None
filename = None
suffix = _get_filename_suffix(
mesh,
grid_point=grid_point,
band_indices=band_indices,
sigma=sigma,
sigma_cutoff=sigma_cutoff,
filename=filename,
)
full_filename = "kappa" + suffix + ".hdf5"
assert full_filename == "kappa-m444.hdf5"
def test_kappa_hdf5_with_boundary_mpf(si_pbesol: Phono3py):
"""Test boundary_mfp in kappa-*.hdf5.
Remember to clean files created by
Phono3py.run_thermal_conductivity(write_kappa=True).
"""
key_ref = [
"boundary_mfp",
"frequency",
"gamma",
"grid_point",
"group_velocity",
"gv_by_gv",
"heat_capacity",
"kappa",
"kappa_unit_conversion",
"mesh",
"mode_kappa",
"qpoint",
"temperature",
"version",
"weight",
]
boundary_mfp = 10000.0
kappa_filename = _set_kappa(
si_pbesol, [4, 4, 4], write_kappa=True, boundary_mfp=boundary_mfp
)
file_path = pathlib.Path(cwd_called / kappa_filename)
with h5py.File(file_path, "r") as f:
np.testing.assert_almost_equal(f["boundary_mfp"][()], boundary_mfp)
assert set(list(f)) == set(key_ref)
if file_path.exists():
file_path.unlink()
def _set_kappa(
ph3: Phono3py,
mesh: Sequence,
is_isotope: bool = False,
is_full_pp: bool = False,
write_kappa: bool = False,
boundary_mfp: Optional[float] = None,
) -> str:
ph3.mesh_numbers = mesh
ph3.init_phph_interaction()
ph3.run_thermal_conductivity(
temperatures=[
300,
],
is_isotope=is_isotope,
is_full_pp=is_full_pp,
write_kappa=write_kappa,
boundary_mfp=boundary_mfp,
)
suffix = _get_filename_suffix(mesh)
return "kappa" + suffix + ".hdf5"

View File

@ -1,4 +1,5 @@
"""Tests of PhonopyYaml."""
from io import StringIO
from pathlib import Path

View File

@ -1,4 +1,5 @@
"""Tests for isotope scatterings."""
import numpy as np
import pytest

View File

@ -1,4 +1,5 @@
"""Test for kaccum.py."""
import numpy as np
from phono3py import Phono3py

View File

@ -1,4 +1,5 @@
"""Tests for grids."""
from __future__ import annotations
import numpy as np

View File

@ -1,4 +1,5 @@
"""Tests for velocity operator calculation."""
import numpy as np
from phonopy import Phonopy
from phonopy.units import THzToCm, VaspToTHz

View File

@ -1,4 +1,5 @@
"""Tests of displacements.py."""
import numpy as np
import phono3py

View File

@ -1,4 +1,5 @@
"""Tests for fc3."""
import numpy as np
import pytest

View File

@ -1,4 +1,5 @@
"""Test for imag_free_energy.py."""
import numpy as np
import pytest

View File

@ -1,4 +1,5 @@
"""Test Interaction class."""
from __future__ import annotations
from collections.abc import Sequence

View File

@ -1,4 +1,5 @@
"""Tests for joint-density-of-states."""
import numpy as np
import pytest

View File

@ -1,4 +1,5 @@
"""Test for real_self_energy.py."""
import numpy as np
from phono3py import Phono3py

View File

@ -1,4 +1,5 @@
"""Test spectral_function.py."""
import numpy as np
import pytest

View File

@ -1,4 +1,5 @@
"""Test for triplets.py."""
import numpy as np
import pytest
from phonopy import Phonopy

View File

@ -1,4 +1,5 @@
"""Tests for SSCHA routines."""
import numpy as np
import pytest
from phonopy.phonon.qpoints import QpointsPhonon