Merge branch 'develop' into rc

This commit is contained in:
Atsushi Togo 2025-02-07 19:12:37 +09:00
commit 398acb1dc7
61 changed files with 317 additions and 229 deletions

View File

@ -1,45 +1,55 @@
# See https://pre-commit.com for more informatio
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
exclude: ^example/AlN-LDA/
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
exclude: ^example/AlN-LDA/
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.4
hooks:
- id: ruff
args: [ "--fix", "--show-fixes" ]
- id: ruff-format
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.4
hooks:
- id: ruff
args: [ "--fix", "--show-fixes" ]
- id: ruff-format
- repo: https://github.com/Takishima/cmake-pre-commit-hooks
rev: v1.9.6
hooks:
- id: clang-format
args:
- '-B_build-pre-commit'
- '-DWITH_Fortran=ON'
- '-DWITH_TESTS=ON'
- '-i'
stages: [manual]
- id: clang-tidy
args:
- '-B_build-pre-commit'
- '-DWITH_Fortran=ON'
- '-DWITH_TESTS=ON'
# - '--'
# - '-I/Users/togo/.miniforge/envs/dev/include'
# - '-I/Users/togo/.miniforge/envs/dev/include/python3.10'
# - '-I/Users/togo/.miniforge/envs/dev/lib/python3.10/site-packages/numpy/core/include'
stages: [manual]
- repo: https://github.com/Takishima/cmake-pre-commit-hooks
rev: v1.9.6
hooks:
- id: clang-format
args:
- "-B_build-pre-commit"
- "-DWITH_Fortran=ON"
- "-DWITH_TESTS=ON"
- "-i"
stages: [manual]
- id: clang-tidy
args:
- "-B_build-pre-commit"
- "-DWITH_Fortran=ON"
- "-DWITH_TESTS=ON"
# "- --"
# "- -I/Users/togo/.miniforge/envs/dev/include"
# "- -I/Users/togo/.miniforge/envs/dev/include/python3.10"
# "- -I/Users/togo/.miniforge/envs/dev/lib/python3.10/site-packages/numpy/core/include"
stages: [manual]
- repo: https://github.com/cheshirekow/cmake-format-precommit
rev: v0.6.13
hooks:
- id: cmake-format
- id: cmake-lint
- repo: https://github.com/cheshirekow/cmake-format-precommit
rev: v0.6.13
hooks:
- id: cmake-format
- id: cmake-lint
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
- id: codespell
stages: [pre-commit, commit-msg]
args:
- --ignore-words-list
- "te,groth,skelton,inout,mater"
- --check-filenames

View File

@ -162,7 +162,7 @@ void grg_get_double_grid_address(int64_t address_double[3],
/* -------------------------------------------------------*/
/* Get address in single grid from address in double grid */
/* -------------------------------------------------------*/
/* This function shifts double-grid adress by PS and divides it by 2. */
/* This function shifts double-grid address by PS and divides it by 2. */
/* No modulo operation is applied to returned single-grid address. */
/* address : Single grid address. */
/* address_double : Double grid address. */

View File

@ -266,7 +266,7 @@ int64_t gridsys_get_thm_relative_grid_address(
return thm_get_relative_grid_address(relative_grid_addresses, rec_lattice);
}
/* relative_grid_addresses are given as P multipled with those from */
/* relative_grid_addresses are given as P multiplied with those from */
/* dataset, i.e., */
/* np.dot(relative_grid_addresses, P.T) */
int64_t gridsys_get_integration_weight(

View File

@ -140,7 +140,7 @@ int64_t gridsys_get_reciprocal_point_group(int64_t rec_rotations[48][3][3],
/**
* @brief Return D, P, Q of Smith normal form of A.
*
* @param D_diag Diagonal elements of diagnoal matrix D
* @param D_diag Diagonal elements of diagonal matrix D
* @param P Unimodular matrix P
* @param Q Unimodular matrix Q
* @param A Integer matrix
@ -157,7 +157,7 @@ int64_t gridsys_get_snf3x3(int64_t D_diag[3], int64_t P[3][3], int64_t Q[3][3],
* {tilde-R^T}
* @param rotations Original rotations matrices in reciprocal space {R^T}
* @param num_rot Number of rotation matrices
* @param D_diag Diagonal elements of diagnoal matrix D of Smith normal form
* @param D_diag Diagonal elements of diagonal matrix D of Smith normal form
* @param Q Unimodular matrix Q of Smith normal form
* @return int64_t
*/
@ -174,7 +174,7 @@ int64_t gridsys_transform_rotations(int64_t (*transformed_rots)[3][3],
* array size of prod(D_diag)
* @param rotations Transformed rotation matrices in reciprocal space
* @param num_rot Number of rotation matrices
* @param D_diag Diagonal elements of diagnoal matrix D of Smith normal form
* @param D_diag Diagonal elements of diagonal matrix D of Smith normal form
* @param PS Shift in GR-grid
*/
void gridsys_get_ir_grid_map(int64_t *ir_grid_map,
@ -193,7 +193,7 @@ void gridsys_get_ir_grid_map(int64_t *ir_grid_map,
* @param bzg2grg Mapping table of bz_grid_addresses to gr_grid_addresses. In
* type-II, len(bzg2grg) == len(bz_grid_addresses) <= (D_diag[0] + 1) *
* (D_diag[1] + 1) * (D_diag[2] + 1).
* @param D_diag Diagonal elements of diagnoal matrix D of Smith normal form
* @param D_diag Diagonal elements of diagonal matrix D of Smith normal form
* @param Q Unimodular matrix Q of Smith normal form
* @param PS Shift in GR-grid
* @param rec_lattice Reduced reciprocal basis vectors in column vectors
@ -211,7 +211,7 @@ int64_t gridsys_get_bz_grid_addresses(
*
* @param bz_grid_index BZ grid point index
* @param rotation Transformed rotation in reciprocal space tilde-R^T
* @param bz_grid_addresses BZ grid point adddresses
* @param bz_grid_addresses BZ grid point addresses
* @param bz_map List of accumulated numbers of BZ grid points from the
* first GR grid point to the last grid point. In type-II, [0, 1, 3, 4, ...]
* means multiplicities of [1, 2, 1, ...], with len(bz_map)=product(D_diag) + 1.
@ -234,7 +234,7 @@ int64_t gridsys_rotate_bz_grid_index(
* @param map_q Mapping table from all grid points to grid point indices of
* irreducible q-points under the stabilizer subgroup of q
* @param grid_index Grid point index of q in GR-grid
* @param D_diag Diagonal elements of diagnoal matrix D of Smith normal form
* @param D_diag Diagonal elements of diagonal matrix D of Smith normal form
* @param is_time_reversal With (1) or without (0) time reversal symmetry
* @param num_rot Number of rotation matrices
* @param rec_rotations Transformed rotation matrices in reciprocal space
@ -262,7 +262,7 @@ int64_t gridsys_get_triplets_at_q(int64_t *map_triplets, int64_t *map_q,
* @param map_triplets Mapping table from all grid points to grid points of
* independent q'
* @param num_map_triplets First dimension of map_triplets
* @param D_diag Diagonal elements of diagnoal matrix D of Smith normal form
* @param D_diag Diagonal elements of diagonal matrix D of Smith normal form
* @param Q Unimodular matrix Q of Smith normal form
* @param bz_grid_type Data structure type I (old and sparse) or II (new and
* dense, recommended) of bz_map

View File

@ -115,7 +115,7 @@ void ise_get_imag_self_energy_with_g(
/**
* g_pos contains the indices of g that are known non-zeros in series.
*
* ise_set_g_pos works for frquency points as bands.
* ise_set_g_pos works for frequency points as bands.
* set_g_pos_frequency_point works for frequency sampling mode.
*/
g_pos = (int64_t(*)[4])malloc(sizeof(int64_t[4]) * num_band_prod);

View File

@ -435,7 +435,7 @@ int64_t ph3py_get_BZ_triplets_at_q(
return num_ir;
}
/* relative_grid_addresses are given as P multipled with those from dataset,
/* relative_grid_addresses are given as P multiplied with those from dataset,
* i.e.,
* np.dot(relative_grid_addresses, P.T) */
int64_t ph3py_get_integration_weight(
@ -601,7 +601,7 @@ void ph3py_get_relative_grid_address(int64_t relative_grid_address[24][4][3],
/* tpi_get_neighboring_grid_points around multiple grid points for using
* openmp
*
* relative_grid_addresses are given as P multipled with those from dataset,
* relative_grid_addresses are given as P multiplied with those from dataset,
* i.e.,
* np.dot(relative_grid_addresses, P.T) */
int64_t ph3py_get_neighboring_gird_points(
@ -644,7 +644,7 @@ int64_t ph3py_get_neighboring_gird_points(
/* thm_get_integration_weight at multiple grid points for using openmp
*
* relative_grid_addresses are given as P multipled with those from dataset,
* relative_grid_addresses are given as P multiplied with those from dataset,
* i.e.,
* np.dot(relative_grid_addresses, P.T) */
int64_t ph3py_get_thm_integration_weights_at_grid_points(

View File

@ -198,7 +198,7 @@ int64_t recgrid_get_reciprocal_point_group(int64_t rec_rotations[48][3][3],
/**
* @brief Return D, P, Q of Smith normal form of A.
*
* @param D_diag Diagonal elements of diagnoal matrix D
* @param D_diag Diagonal elements of diagonal matrix D
* @param P Unimodular matrix P
* @param Q Unimodular matrix Q
* @param A Integer matrix
@ -215,7 +215,7 @@ int64_t recgrid_get_snf3x3(int64_t D_diag[3], int64_t P[3][3], int64_t Q[3][3],
* {tilde-R^T}
* @param rotations Original rotations matrices in reciprocal space {R^T}
* @param num_rot Number of rotation matrices
* @param D_diag Diagonal elements of diagnoal matrix D of Smith normal form
* @param D_diag Diagonal elements of diagonal matrix D of Smith normal form
* @param Q Unimodular matrix Q of Smith normal form
* @return int64_t
*/
@ -232,7 +232,7 @@ int64_t recgrid_transform_rotations(int64_t (*transformed_rots)[3][3],
* array size of prod(D_diag)
* @param rotations Transformed rotation matrices in reciprocal space
* @param num_rot Number of rotation matrices
* @param D_diag Diagonal elements of diagnoal matrix D of Smith normal form
* @param D_diag Diagonal elements of diagonal matrix D of Smith normal form
* @param PS Shift in GR-grid
* @return int64_t Number of ir_grid_points.
*/
@ -252,7 +252,7 @@ int64_t recgrid_get_ir_grid_map(int64_t *ir_grid_map,
* @param bzg2grg Mapping table of bz_grid_addresses to gr_grid_addresses. In
* type-II, len(bzg2grg) == len(bz_grid_addresses) <= (D_diag[0] + 1) *
* (D_diag[1] + 1) * (D_diag[2] + 1).
* @param D_diag Diagonal elements of diagnoal matrix D of Smith normal form
* @param D_diag Diagonal elements of diagonal matrix D of Smith normal form
* @param Q Unimodular matrix Q of Smith normal form
* @param PS Shift in GR-grid
* @param rec_lattice Reduced reciprocal basis vectors in column vectors
@ -270,7 +270,7 @@ int64_t recgrid_get_bz_grid_addresses(
*
* @param bz_grid_index BZ grid point index
* @param rotation Transformed rotation in reciprocal space tilde-R^T
* @param bz_grid_addresses BZ grid point adddresses
* @param bz_grid_addresses BZ grid point addresses
* @param bz_map List of accumulated numbers of BZ grid points from the
* first GR grid point to the last grid point. In type-II, [0, 1, 3, 4, ...]
* means multiplicities of [1, 2, 1, ...], with len(bz_map)=product(D_diag) + 1.

View File

@ -84,7 +84,7 @@ void reciprocal_to_normal_squared(
double *inv_sqrt_masses;
lapack_complex_double *e0, *e1, *e2;
/* Inverse sqrt mass is multipled with eigenvectors to reduce number
/* Inverse sqrt mass is multiplied with eigenvectors to reduce number
* of */
/* operations in get_fc3_sum. Three eigenvector matrices are looped
* by */

View File

@ -1,7 +1,7 @@
/* Copyright (C) 2015 Atsushi Togo */
/* All rights reserved. */
/* These codes were originally parts of spglib, but only develped */
/* These codes were originally parts of spglib, but only developed */
/* and used for phono3py. Therefore these were moved from spglib to */
/* phono3py. This file is part of phonopy. */

View File

@ -1,7 +1,7 @@
/* Copyright (C) 2015 Atsushi Togo */
/* All rights reserved. */
/* Some of these codes were originally parts of spglib, but only develped */
/* Some of these codes were originally parts of spglib, but only developed */
/* and used for phono3py. Therefore these were moved from spglib to */
/* phono3py. This file is part of phonopy. */

View File

@ -1,7 +1,7 @@
/* Copyright (C) 2015 Atsushi Togo */
/* All rights reserved. */
/* These codes were originally parts of spglib, but only develped */
/* These codes were originally parts of spglib, but only developed */
/* and used for phono3py. Therefore these were moved from spglib to */
/* phono3py. This file is part of phonopy. */

View File

@ -1,7 +1,7 @@
/* Copyright (C) 2015 Atsushi Togo */
/* All rights reserved. */
/* These codes were originally parts of spglib, but only develped */
/* These codes were originally parts of spglib, but only developed */
/* and used for phono3py. Therefore these were moved from spglib to */
/* phono3py. This file is part of phonopy. */

View File

@ -195,7 +195,7 @@ void tpi_get_integration_weight_with_sigma(
}
/**
* @brief Return grid points of relative grid adddresses in BZ-grid
* @brief Return grid points of relative grid addresses in BZ-grid
*
* @param neighboring_grid_points Grid points of relative grid addresses in
* BZ-grid.

View File

@ -4,30 +4,33 @@ This directory contains python-sphinx documentation source.
## How to compile
```
```bash
make html
```
## Source files
* `conf.py` contains the sphinx setting confiuration.
* `conf.py` contains the sphinx setting configuration.
* `*.rst` are the usual sphinx documentation source and the filenames without `.rst` are the keys to link from toctree mainly in `index.rst`.
## How to publish
Web page files are copied to `gh-pages` branch. At the phono3py github top directory,
```
```bash
git checkout gh-pages
rm -r .buildinfo .doctrees *
```
From the directory the sphinx doc is complied,
```
```bash
rsync -avh _build/ <phono3py-repository-directory>/
```
Again, at the phono3py github top directory,
```
```bash
git add .
git commit -a -m "Update documentation ..."
git push

View File

@ -102,7 +102,7 @@ Number of points to be sampled in the x-axis.
### Options for tensor properties
For cummulative thermal conductivity, the last value is given as the thermal
For cumulative thermal conductivity, the last value is given as the thermal
conductivity in W/mK. For the other properties, the last value is effectively
the sum of values on all mesh grids divided by number of mesh grids. This is
understood as normalized for one primitive cell. Before version 1.11.13.1, the

View File

@ -2,6 +2,10 @@
# Change Log
## Feb-7-2025: Version 3.14.0
- Release to follow the change of phonopy
## Feb-5-2025: Version 3.13.0
- Release to follow the change of phonopy
@ -151,7 +155,7 @@ This is a major version release. There are backward-incompatible changes.
- Calculation method to transform supercell third-order force constants fc3 in
real to reciprocal space was changed as described at {ref}`changelog_v290`.
This results in the change of results with respect to those obtained by
phono3py version 2. To emulate v2 behaviour, use `--v2` option in phono3py
phono3py version 2. To emulate v2 behavior, use `--v2` option in phono3py
command line script. For `Phono3py` class , `make_r0_average=True` (default)
when instantiating it, and similarly for `phono3py.load` function.
- Completely dropped support of `disp_fc3.yaml` and `disp_fc2.yaml`.
@ -179,7 +183,7 @@ This is a major version release. There are backward-incompatible changes.
## Dec-25-2023: Version 2.9.0
- Pre-release of version 3.0.
- `--v3` option enables phono3py version 3 behaviour. In phono3py-v3, it is
- `--v3` option enables phono3py version 3 behavior. In phono3py-v3, it is
planned to replace $\sum_{l'l''}\Phi_{\alpha\beta\gamma}(0\kappa, l'\kappa',
l''\kappa'') \cdots$ in Eq.(41) of
<https://journals.jps.jp/doi/10.7566/JPSJ.92.012001> by
@ -239,7 +243,7 @@ This is a major version release. There are backward-incompatible changes.
- Installation using `setup.py` now requires creating `site.cfg` file. See
<https://phonopy.github.io/phono3py/install.html> and
[PR #59](https://github.com/phonopy/phono3py/pull/59).
- Dorp python 3.6 support, and dependencies of numpy and matplotlib versions are
- Drop python 3.6 support, and dependencies of numpy and matplotlib versions are
updated:
- Python >= 3.7
@ -269,9 +273,9 @@ This is a major version release. There are some backward-incompatible changes.
from `dtype='intc'`.
3. Python 3.5 or later is required.
To emulate the version 1.x behaviour in `phono3py` command, try `--v1` option.
To emurate the version 1.x behaviour in API, specify `store_dense_gp_map=False`
and `store_dense_svecs=False` in instatiation of `Phono3py` class or phon3py
To emulate the version 1.x behavior in `phono3py` command, try `--v1` option.
To emurate the version 1.x behavior in API, specify `store_dense_gp_map=False`
and `store_dense_svecs=False` in instantiation of `Phono3py` class or phono3py
loader.
## Mar-17-2021: Version 1.22.3
@ -285,7 +289,7 @@ loader.
## Feb-21-2021: Version 1.22.1
- `phono3py` command didn't work. This was fixed.
- Fix behaviour when specifying `--thm` and `--sigma` simultaneously.
- Fix behavior when specifying `--thm` and `--sigma` simultaneously.
## Jan-29-2021: Version 1.22.0
@ -370,7 +374,7 @@ loader.
- Update to work with phonopy v1.14.2.
- Ph-ph interaction can be read (`--read-pp`) and write (`--write-pp`) in RTA
thermal conductivity calculation, too. Mind that the data stored are different
with and without `--full-pp`. Wihtout `--full-pp` the data are stored in
with and without `--full-pp`. Without `--full-pp` the data are stored in
complicated way to save data side, so it is not considered readable by usual
users.
@ -399,7 +403,7 @@ loader.
- `--sym-fc` option is added. This is just an alias to specify both `--sym-fc3r`
and `--sym-fc2` together.
- Documentation on `--write-phonon` and `--read-phonon` options is written.
These options are used to save harmonic phonon infromation on strage.
These options are used to save harmonic phonon information on storage.
## Nov-22-2017: version 1.12.5
@ -414,7 +418,7 @@ loader.
(3) happens when the primitive cell is relatively large. Number of triplets
can be shown using `--stp` option. A race condition of OpenMP multithreading
is the source of the bug. Therefore, if it occurs, the same calculation comes
up with the different thermal conductivity value in every run time, for whcih
up with the different thermal conductivity value in every run time, for which
it behaves like randomly.
- RTA thermal conductivity with smearing method (`--sigma`) is made to run with
@ -470,7 +474,7 @@ loader.
## Apr-16-2016: version 1.10.7
- API example is prepared and it is found in `Si` example. No doucment yet.
- API example is prepared and it is found in `Si` example. No documentation yet.
- Si pwscf example was placed in `example-phono3py` directory.
- User interface bug fix.
@ -482,10 +486,10 @@ loader.
to phonopy-1.10.4.
- Python3 support
- For the RTA thermal conductivity calculation mode with using the linear
tetrahedron method, only necessary part of phonon-phonon interaction strengh
among phonons. This improves lifetime calculation performance, but as the
drawback, averaged ph-ph interaction strength can not be given. See
{ref}`full_pp_option`.
tetrahedron method, only necessary part of phonon-phonon interaction strength
among phonons is calculated. This improves lifetime calculation performance,
but as the drawback, averaged ph-ph interaction strength can not be given.
See {ref}`full_pp_option`.
- Pwscf interface ({ref}`calculator_interfaces`)
## Oct-10-2015: version 0.9.14
@ -582,7 +586,7 @@ loader.
## Changes in version 0.8.0
- `--q_direction` didn't work. Fix it.
- Implementation of tetrahedron method whcih is activated by `--thm`.
- Implementation of tetrahedron method which is activated by `--thm`.
- Grid addresses are written out by `--wgp` option.
## Changes in version 0.7.6
@ -596,8 +600,9 @@ loader.
that needed for creating fc3 if index permutation symmetry is considered.
Therefore using index permutation symmetry, some elements of fc3 can be
recovered even if some of supercell force calculations are missing. In
paticular, all pair distances among triplet atoms are larger than cutoff pair
distance, any fc3 elements are not recovered, i.e., the element will be zero.
particular, all pair distances among triplet atoms are larger than cutoff
pair distance, any fc3 elements are not recovered, i.e., the element will be
zero.
## Changes in version 0.7.2

View File

@ -377,7 +377,7 @@ To use different force constants calculators for fc2 and fc3
% phono3py-load --fc-calc "symfc|" ...
```
Those for fc2 and fc3 are seprated by `|` such as `symfc|` . Blank means to
Those for fc2 and fc3 are separated by `|` such as `symfc|` . Blank means to
employ the finite difference method for systematic displacements generated by
the option `-d`.
@ -721,7 +721,7 @@ out, i.e., `gamma` is still imaginary part of self energy of ph-ph scattering.
A most simple phonon boundary scattering treatment is included. $v_g/L$ is just
used as the scattering rate, where $v_g$ is the group velocity and $L$ is the
boundary mean free path. The value is given in micrometre. The default value, 1
boundary mean free path. The value is given in micrometer. The default value, 1
metre, is just used to avoid divergence of phonon lifetime and the contribution
to the thermal conductivity is considered negligible.
@ -804,7 +804,7 @@ $\Gamma^\text{U}_\lambda(\omega_\lambda)$ processes. The sum of them is usual
$\Gamma_\lambda(\omega_\lambda) =
\Gamma^\text{N}_\lambda(\omega_\lambda) +
\Gamma^\text{U}_\lambda(\omega_\lambda)$
and this is used to calcualte thermal conductivity in single-mode RTA. The
and this is used to calculate thermal conductivity in single-mode RTA. The
separation, i.e., the choice of G-vector, is made based on the first Brillouin
zone.
@ -1051,7 +1051,7 @@ See also {ref}`reference papers <spectral_function_reference>`.
Spectral function of self energy $A_\lambda(\omega)$ is calculated with respect
to frequency $\omega$, where $\omega$ is sampled following
{ref}`freq_sampling_option`. First, imaginary part of self-energy is calculated
and then the real part is calculatd using the KramersKronig relation. The
and then the real part is calculated using the KramersKronig relation. The
output of $A_\lambda(\omega)$ is written to `spectral-mxxx-gx(-sx)-tx-bx.dat` in
THz (without $2\pi$) with respect to samplied frequency points of $\omega$ in
THz (without $2\pi$), and `spectral-mxxx-gx.hdf5`.
@ -1210,7 +1210,7 @@ information.
```{table}
| dataset | Array shape |
|-----------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| gamma_detail for `--ise` | (temperature, sampling frequency point, symmetry reduced set of triplets at a grid point, band1, band2, band3) in THz (without $2\pi$) |
| gamma_detail for `--br` | (temperature, symmetry reduced set of triplets at a grid point, band1, band2, band3) in THz (without $2\pi$) |
| mesh | Numbers of sampling mesh along reciprocal axes. |
@ -1259,7 +1259,7 @@ grid_address = ph['grid_address'][:]
q_triplets = grid_address[triplets] / mesh.astype('double')
# Phonons of triplets[2]
phonon_tp = [(ph['frequency'][i], ph['eigenvector'][i]) for i in triplets[2]]
# Fractions of contributions of tripltes at this grid point and temperture index 30
# Fractions of contributions of triplets at this grid point and temperature index 30
gamma_sum_over_bands = np.dot(weight, gd['gamma_detail'][30].sum(axis=-1).sum(axis=-1).sum(axis=-1))
contrib_tp = [gd['gamma_detail'][30, i].sum() / gamma_sum_over_bands for i in range(len(weight))]
np.dot(weight, contrib_tp) # is one

View File

@ -58,9 +58,9 @@ copyright = "2015, Atsushi Togo"
# built documents.
#
# The short X.Y version.
version = "3.13"
version = "3.14"
# The full version, including alpha/beta/rc tags.
release = "3.13.0"
release = "3.14.0"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@ -142,7 +142,7 @@ pygments_style = "sphinx"
# # Allow a separate homepage from the master_doc
# "homepage": "index",
# # Allow the project link to be overriden to a custom URL.
# # Allow the project link to be overridden to a custom URL.
# "projectlink": "http://myproject.url",
# # Visible levels of the global TOC; -1 means unlimited

View File

@ -25,7 +25,7 @@ In phono3py, to obtain supercell-fc3,
$\Phi_{\alpha\beta\gamma}(jl, j'l', j''l'')$, forces in many
supercells having different pairs of displaced atoms are computed
using some force-calculator such as ab-initio code. In the phono3py
default behaviour, full elements of supercell-fc3 are computed. In
default behavior, full elements of supercell-fc3 are computed. In
this case, though depending on the number of atoms in the supercell
and the crystal symmetry, the number of atomic-pair configuration can
be huge and beyond our computational resource.

View File

@ -253,10 +253,10 @@ contained.
:width: 50%
:name: coleigplot
Eigenvalues are plotted in log scale (Si-PBEsol exmaple with
Eigenvalues are plotted in log scale (Si-PBEsol example with
15x15x15 mesh). The number in x-axis is just the index where each
eigenvalue is stored. Normally the eigenvalues are stored ascending
order. The bule points show the positive values, and
order. The blue points show the positive values, and
the red points show the negative values as positive values
(absolute values) to be able to plot in log scale. In this plot, we
can see the gap between $10^{-4}$ and $10^{-16}$, which

View File

@ -269,7 +269,7 @@ has to be specified (see {ref}`full_pp_option`).
### boundary_mfp
A value specified by {ref}`boundary_mfp_option`. The physical unit is
micrometre.
micrometer.
When `--boundary-mfp` option is explicitly specified, its value is stored here.
@ -316,7 +316,7 @@ array([ 1.02050201e+03, 1.02050201e+03, 1.02050201e+03,
## How to know grid point index number corresponding to grid address
Runngin with `--write-gamma`, hdf5 files are written out with file names
Running with `--write-gamma`, hdf5 files are written out with file names
such as `kappa-m202020-g4448.hdf5`. You may want to know the grid point
index number with given grid address. This is done as follows:

View File

@ -6,7 +6,7 @@ the supercell approach. For example, the following physical values are obtained:
- {ref}`Lattice thermal conductivity by relaxation time approximation
and direct-solution of phonon Boltzmann equation and
the Wigner transport equation <LTC_options>`
- {ref}`Cummulative lattice thermal conductivity and related properties <auxiliary_tools_kaccum>`
- {ref}`Cumulative lattice thermal conductivity and related properties <auxiliary_tools_kaccum>`
- {ref}`self_energy_options` (Phonon lifetime/linewidth)
- {ref}`jdos_option`
- {ref}`spectral_function_option`

View File

@ -9,7 +9,7 @@ over many different force calculators. Once `phono3py_disp.yaml` is created, the
following operations will be the same using this command.
This is used almost in the same way as `phono3py` command, e.g., but there are
some differences. The following default behaviours are different from that of
some differences. The following default behaviors are different from that of
those of `phono3py` command:
1. `phono3py_xxx.yaml` type file is always necessary in either of two ways:

View File

@ -22,7 +22,7 @@ The option `--rd NUM` is used instead of `-d` in generating displacements as fol
`NUM` means the number of supercells with random directional displacements. This
must be specified, and the initial guess may be from around the number of
supecells generated for the systematic displacements by `-d`. In the case of the
supercells generated for the systematic displacements by `-d`. In the case of the
`NaCl-rd` example, 146 supercells are generated with `-d`, so similar
number `--rd 100` was chosen here.

View File

@ -1,12 +1,13 @@
(tips)=
# Tips
```{contents}
:depth: 2
:local:
```
(brillouinzone_sum)=
## Brillouin zone summation
Brillouin zone (BZ) summations appear at different two points in
@ -97,6 +98,7 @@ the displacement distance by the {ref}`amplitude option <amplitude_option>` redu
higher order anharmonicity is involved (renormalized) into fc3 and fc2.
(file_format_compatibility)=
## File format compatibility with phonopy
- `FORCES_FC3` and `FORCES_FC2` are not
@ -108,4 +110,4 @@ higher order anharmonicity is involved (renormalized) into fc3 and fc2.
- `fc2.hdf5` can be used in phonopy in the `hdf5` mode when it is
renamed to `force_constants.hdf5`. In the previous combinations of
phonopy and phono3py, depending on the physical unit of force
constants of calculators, the direct compatibility is not guranteed.
constants of calculators, the direct compatibility is not guaranteed.

View File

@ -1,6 +1,6 @@
This is the example of NaCl calculation. Since all atoms are displaced, to
obtain force constants, an external force constants calculator is necessary,
i.e., build-in force constants calculator has no ability to compute force
i.e., built-in force constants calculator has no ability to compute force
constants for such dataset. In this example, ALM is used. See
https://phonopy.github.io/phonopy/setting-tags.html#alm. The easiest way to
install ALM is to use conda.

View File

@ -267,7 +267,7 @@ class Phono3pyJointDos:
print("Smearing method with sigma=%s is used." % sigma)
print(
f"Calculations at {len(self._frequency_points)} "
f"frequency points are devided into {len(batches)} batches."
f"frequency points are divided into {len(batches)} batches."
)
for i_t, temperature in enumerate(temperatures):
self._jdos.temperature = temperature

View File

@ -335,8 +335,8 @@ class Phono3py:
"""Setter and getter of third order force constants (fc3).
ndarray
fc3 shape is either (supercell, supecell, supercell, 3, 3, 3) or
(primitive, supercell, supecell, 3, 3, 3),
fc3 shape is either (supercell, supercell, supercell, 3, 3, 3) or
(primitive, supercell, supercell, 3, 3, 3),
where 'supercell' and 'primitive' indicate number of atoms in
these cells.
@ -352,8 +352,8 @@ class Phono3py:
"""Setter and getter of second order force constants (fc2).
ndarray
fc2 shape is either (supercell, supecell, 3, 3) or
(primitive, supecell, 3, 3),
fc2 shape is either (supercell, supercell, 3, 3) or
(primitive, supercell, 3, 3),
where 'supercell' and 'primitive' indicate number of atoms in
these cells.
@ -1105,7 +1105,7 @@ class Phono3py:
Ph-ph interaction strength array is replaced by a scalar value.
Default is None, which means this feature is not used.
frequency_scale_factor : float, optional
All phonon frequences are scaled by this value. Default is None,
All phonon frequencies are scaled by this value. Default is None,
which means phonon frequencies are not scaled.
symmetrize_fc3q : bool, optional
fc3 in phonon space is symmetrized by permutation symmetry.
@ -1378,7 +1378,7 @@ class Phono3py:
Note
----
is_diagonal=False is chosen as the default setting intentionally to be
consistent to the first displacements of the fc3 pair displacemets in
consistent to the first displacements of the fc3 pair displacements in
supercell.
Parameters
@ -1390,7 +1390,7 @@ class Phono3py:
replace generated random distances smaller than this value by this
value.
is_plusminus : True, False, or 'auto', optional
With True, atomis are displaced in both positive and negative
With True, atoms are displaced in both positive and negative
directions. With False, only one direction. With 'auto', mostly
equivalent to is_plusminus=True, but only one direction is chosen
when the displacements in both directions are symmetrically
@ -1475,8 +1475,8 @@ class Phono3py:
False.
is_compact_fc : bool, optional
fc3 shape is
False: (supercell, supercell, supecell, 3, 3, 3) True:
(primitive, supercell, supecell, 3, 3, 3)
False: (supercell, supercell, supercell, 3, 3, 3) True:
(primitive, supercell, supercell, 3, 3, 3)
where 'supercell' and 'primitive' indicate number of atoms in these
cells. Default is False.
fc_calculator : str, optional
@ -1500,11 +1500,10 @@ class Phono3py:
)
else:
if "displacements" in self._dataset:
msg = (
"fc_calculator has to be set to produce force "
"constans from this dataset."
raise ForceCalculatorRequiredError(
"fc_calculator has to be set to produce force constants from this "
"dataset."
)
raise ForceCalculatorRequiredError(msg)
fc2, fc3 = get_phono3py_fc3(
self._supercell,
self._primitive,
@ -1561,8 +1560,8 @@ class Phono3py:
calculator such as ALM. Default is False.
is_compact_fc : bool
fc2 shape is
False: (supercell, supecell, 3, 3)
True: (primitive, supecell, 3, 3)
False: (supercell, supercell, 3, 3)
True: (primitive, supercell, 3, 3)
where 'supercell' and 'primitive' indicate number of atoms in these
cells. Default is False.
fc_calculator : str or None
@ -1792,7 +1791,7 @@ class Phono3py:
Temperatures where real part of self-energies are calculated.
dtype=float, shape=(temperatures,)
frequency_points_at_bands : bool, optional
With False, frequency shifts are calculated at frquency sampling
With False, frequency shifts are calculated at frequency sampling
points. When True, they are done at the phonon frequencies.
Default is False.
frequency_points : array_like, optional
@ -1948,7 +1947,7 @@ class Phono3py:
is_isotope: bool = False,
mass_variances: Optional[Sequence] = None,
grid_points: Optional[Sequence[int]] = None,
boundary_mfp: Optional[float] = None, # in micrometre
boundary_mfp: Optional[float] = None, # in micrometer
solve_collective_phonon: bool = False,
use_ave_pp: bool = False,
is_reducible_collision_matrix: bool = False,
@ -1997,8 +1996,8 @@ class Phono3py:
calculated. With None, all the grid points that are necessary
for thermal conductivity are set internally.
shape(num_grid_points, ), dtype='int64'.
boundary_mfp : float, optiona, default is None
Mean free path in micrometre to calculate simple boundary
boundary_mfp : float, optional, default is None
Mean free path in micrometer to calculate simple boundary
scattering contribution to thermal conductivity.
None ignores this contribution.
solve_collective_phonon : bool, optional, default is False
@ -2237,7 +2236,7 @@ class Phono3py:
Parameters for developing MLP. Default is None. When dict is given,
PypolymlpParams instance is created from the dict.
test_size : float, optional
Training and test data are splitted by this ratio. test_size=0.1
Training and test data are split by this ratio. test_size=0.1
means the first 90% of the data is used for training and the rest
is used for test. Default is 0.1.
@ -2301,7 +2300,7 @@ class Phono3py:
Parameters for developing MLP. Default is None. When dict is given,
PypolymlpParams instance is created from the dict.
test_size : float, optional
Training and test data are splitted by this ratio. test_size=0.1
Training and test data are split by this ratio. test_size=0.1
means the first 90% of the data is used for training and the rest
is used for test. Default is 0.1.

View File

@ -211,7 +211,7 @@ class ConductivityMixIn(HeatCapacityMixIn):
unique_gps = np.unique(gps_rotated)
gvs = {}
for bz_gp in unique_gps.tolist(): # To conver to int type.
for bz_gp in unique_gps.tolist(): # To convert to int type.
self._velocity_obj.run([self._get_qpoint_from_gp_index(bz_gp)])
gvs[bz_gp] = self._velocity_obj.group_velocities[
0, self._pp.band_indices, :
@ -298,13 +298,13 @@ class ConductivityBase(ABC):
Mass variances for isotope scattering calculation. When None,
the values stored in phono3py are used with `is_isotope=True`.
shape(atoms_in_primitive, ), dtype='double'.
boundary_mfp : float, optiona, default is None
Mean free path in micrometre to calculate simple boundary
boundary_mfp : float, optional, default is None
Mean free path in micrometer to calculate simple boundary
scattering contribution to thermal conductivity.
None ignores this contribution.
is_kappa_star : bool, optional
When True, reciprocal space symmetry is used to calculate
lattice thermal conductivity. This calculation is peformed
lattice thermal conductivity. This calculation is performed
iterating over specific grid points. With `is_kappa_star=True`
and `grid_points=None`, ir-grid points are used for the iteration.
Default is True.
@ -385,7 +385,7 @@ class ConductivityBase(ABC):
# `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`.
# which must be implemented in the inherited class of `ConductivityBase`.
self._velocity_obj: GroupVelocity
self._init_velocity(gv_delta_q)
@ -626,11 +626,11 @@ class ConductivityBase(ABC):
@property
def grid_point_count(self):
"""Return interator count of self."""
"""Return iterator count of self."""
return self._grid_point_count
def get_grid_point_count(self):
"""Return interator count of self."""
"""Return iterator count of self."""
warnings.warn(
"Use attribute, Conductivity.grid_point_count "
"instead of Conductivity.get_grid_point_count().",
@ -729,7 +729,7 @@ class ConductivityBase(ABC):
def _run_at_grid_point(self):
"""Run at conductivity calculation at specified grid point.
Should be implementated in Conductivity* class.
Should be implemented in Conductivity* class.
"""
raise NotImplementedError()
@ -738,7 +738,7 @@ class ConductivityBase(ABC):
def _allocate_values(self):
"""Allocate necessary data arrays.
Should be implementated in Conductivity* class.
Should be implemented in Conductivity* class.
"""
raise NotImplementedError()
@ -747,16 +747,16 @@ class ConductivityBase(ABC):
def _set_velocities(self, i_gp, i_data):
"""Set velocities at grid point and at data location.
Should be implementated in Conductivity*MixIn.
Should be implemented in Conductivity*MixIn.
"""
raise NotImplementedError()
@abstractmethod
def _init_velocity(self, gv_delta_q):
"""Initialize velocitiy class instance.
"""Initialize velocity class instance.
Should be implementated in Conductivity*MixIn.
Should be implemented in Conductivity*MixIn.
"""
raise NotImplementedError()
@ -765,7 +765,7 @@ class ConductivityBase(ABC):
def _set_cv(self, i_gp, i_data):
"""Set heat capacity at grid point and at data location.
Should be implementated in Conductivity*MixIn.
Should be implemented in Conductivity*MixIn.
"""
raise NotImplementedError()
@ -921,12 +921,12 @@ class ConductivityBase(ABC):
if self._boundary_mfp is not None:
if self._boundary_mfp > 1000:
print(
"Boundary mean free path (millimetre): %.3f"
"Boundary mean free path (millimeter): %.3f"
% (self._boundary_mfp / 1000.0)
)
else:
print(
"Boundary mean free path (micrometre): %.5f"
"Boundary mean free path (micrometer): %.5f"
% self._boundary_mfp
)
if self._is_isotope:

View File

@ -77,11 +77,11 @@ class ConductivityLBTEBase(ConductivityBase):
sigma_cutoff=None,
is_isotope=False,
mass_variances=None,
boundary_mfp=None, # in micrometre
boundary_mfp=None, # in micrometer
solve_collective_phonon=False,
is_reducible_collision_matrix=False,
is_kappa_star=True,
gv_delta_q=None, # finite difference for group veolocity
gv_delta_q=None, # finite difference for group velocity
is_full_pp=False,
read_pp=False,
pp_filename=None,
@ -728,7 +728,7 @@ class ConductivityLBTEBase(ConductivityBase):
sys.stdout.flush()
def _average_collision_matrix_by_degeneracy(self):
"""Average symmetrically equivalent elemetns of collision matrix."""
"""Average symmetrically equivalent elements of collision matrix."""
start = time.time()
# Average matrix elements belonging to degenerate bands
@ -939,8 +939,8 @@ class ConductivityLBTEBase(ConductivityBase):
if (np.abs(r_sum) < 1e-10).all():
return None
# Same as np.kron(np.eye(size), r_sum), but writen as below
# to be sure the values in memory C-congiguous with 'double'.
# Same as np.kron(np.eye(size), r_sum), but written as below
# to be sure the values in memory C-contiguous with 'double'.
I_mat = np.zeros((3 * size, 3 * size), dtype="double", order="C")
for i in range(size):
I_mat[(i * 3) : ((i + 1) * 3), (i * 3) : ((i + 1) * 3)] = r_sum
@ -1700,7 +1700,7 @@ def get_thermal_conductivity_LBTE(
is_isotope=False,
mass_variances=None,
grid_points=None,
boundary_mfp=None, # in micrometre
boundary_mfp=None, # in micrometer
solve_collective_phonon=False,
is_reducible_collision_matrix=False,
is_kappa_star=True,
@ -1731,7 +1731,7 @@ def get_thermal_conductivity_LBTE(
if sigmas is None:
sigmas = []
if log_level:
print("-" * 19 + " Lattice thermal conducitivity (LBTE) " + "-" * 19)
print("-" * 19 + " Lattice thermal conductivity (LBTE) " + "-" * 19)
print(
"Cutoff frequency of pseudo inversion of collision matrix: %s" % pinv_cutoff
)

View File

@ -76,7 +76,7 @@ class ConductivityRTABase(ConductivityBase):
sigma_cutoff=None,
is_isotope=False,
mass_variances=None,
boundary_mfp=None, # in micrometre
boundary_mfp=None, # in micrometer
use_ave_pp=False,
is_kappa_star=True,
gv_delta_q=None,
@ -161,7 +161,7 @@ class ConductivityRTABase(ConductivityBase):
@abstractmethod
def set_kappa_at_sigmas(self):
"""Must be implementated in the inherited class."""
"""Must be implemented in the inherited class."""
raise NotImplementedError()
def _allocate_values(self):
@ -539,7 +539,7 @@ class ConductivityRTA(ConductivityMixIn, ConductivityRTABase):
sigma_cutoff=None,
is_isotope=False,
mass_variances=None,
boundary_mfp=None, # in micrometre
boundary_mfp=None, # in micrometer
use_ave_pp=False,
is_kappa_star=True,
gv_delta_q=None,
@ -669,7 +669,7 @@ class ConductivityWignerRTA(ConductivityWignerMixIn, ConductivityRTABase):
sigma_cutoff=None,
is_isotope=False,
mass_variances=None,
boundary_mfp=None, # in micrometre
boundary_mfp=None, # in micrometer
use_ave_pp=False,
is_kappa_star=True,
gv_delta_q=None,
@ -867,7 +867,7 @@ class ConductivityKuboRTA(ConductivityKuboMixIn, ConductivityRTABase):
sigma_cutoff=None,
is_isotope=False,
mass_variances=None,
boundary_mfp=None, # in micrometre
boundary_mfp=None, # in micrometer
use_ave_pp=False,
is_kappa_star=True,
gv_delta_q=None,
@ -1010,7 +1010,7 @@ def get_thermal_conductivity_RTA(
mass_variances=None,
grid_points=None,
is_isotope=False,
boundary_mfp=None, # in micrometre
boundary_mfp=None, # in micrometer
use_ave_pp=False,
is_kappa_star=True,
gv_delta_q=None,
@ -1046,7 +1046,7 @@ def get_thermal_conductivity_RTA(
if log_level:
print(
"-------------------- Lattice thermal conducitivity (RTA) "
"-------------------- Lattice thermal conductivity (RTA) "
"--------------------"
)

View File

@ -846,7 +846,7 @@ class ShowCalcProgress:
@staticmethod
def kappa_RTA(br: "ConductivityRTA", log_level):
"""Show RTA calculation progess."""
"""Show RTA calculation progress."""
temperatures = br.temperatures
sigmas = br.sigmas
kappa = br.kappa
@ -885,7 +885,7 @@ class ShowCalcProgress:
@staticmethod
def kappa_Wigner_RTA(br: "ConductivityWignerRTA", log_level):
"""Show Wigner-RTA calculation progess."""
"""Show Wigner-RTA calculation progress."""
temperatures = br.temperatures
sigmas = br.sigmas
kappa_TOT_RTA = br.kappa_TOT_RTA

View File

@ -109,7 +109,7 @@ def create_phono3py_force_constants(
'phonopy-load' command.
"""
# Only for build-in fc calculator.
# Only for built-in fc calculator.
# These are not applied to external fc calculators.
symmetrize_fc3r = settings.is_symmetrize_fc3_r or settings.fc_symmetry
symmetrize_fc2 = settings.is_symmetrize_fc2 or settings.fc_symmetry
@ -267,14 +267,15 @@ def parse_forces(
filename_read_from = force_filename
# Units of displacements and forces are converted. If forces don't
# exist, the convesion will not be performed for forces.
# exist, the conversion will not be performed for forces.
if calculator is not None:
_convert_unit_in_dataset(
dataset,
distance_to_A=physical_units["distance_to_A"],
force_to_eVperA=physical_units["force_to_eVperA"],
)
assert dataset is not None
if dataset is None:
raise RuntimeError("Dataset is not found.")
if "natom" in dataset and dataset["natom"] != natom:
raise RuntimeError(

View File

@ -115,7 +115,7 @@ def load(
When force_sets_filename and force_constants_filename are not given,
'FORCES_FC3' and 'FORCES_FC2' are looked for in the current directory as the
default behaviour. When 'FORCES_FC3' ('FORCES_FC2') is given in the type-1
default behavior. When 'FORCES_FC3' ('FORCES_FC2') is given in the type-1
format, 'phono3py_disp.yaml' is also necessary and read.
Crystal structure
@ -140,7 +140,7 @@ def load(
also searched in current directory. When 'FORCES_FC2' is not found,
'FORCES_FC3' is used to create fc2.
Parameters for non-analytical term correctiion (NAC)
Parameters for non-analytical term correction (NAC)
----------------------------------------------------
Optional. Means to provide NAC parameters and their priority:
1. born_filename
@ -166,10 +166,10 @@ def load(
given, the centring type ('F', 'I', 'A', 'C', 'R', or primitive 'P') is
automatically chosen. Default is 'auto'.
phonon_supercell_matrix : array_like, optional
Supercell matrix used for fc2. In phono3py, supercell matrix for fc3 and
fc2 can be different to support longer range interaction of fc2 than
Supercell matrix used for fc2. In phono3py, supercell matrix for fc3
and fc2 can be different to support longer range interaction of fc2 than
that of fc3. Unless setting this, supercell_matrix is used. This is only
valide when unitcell or unitcell_filename is given. Default is None.
valid when unitcell or unitcell_filename is given. Default is None.
is_nac : bool, optional
If True, look for 'BORN' file. If False, NAS is turned off. Default is
True.
@ -181,7 +181,7 @@ def load(
Input unit cell. Default is None.
supercell : PhonopyAtoms, optional
Input supercell. With given, default value of primitive_matrix is set to
'auto' (can be overwitten). supercell_matrix is ignored. Default is
'auto' (can be overwritten). supercell_matrix is ignored. Default is
None.
nac_params : dict, optional
Parameters required for non-analytical term correction. Default is None.
@ -189,7 +189,7 @@ def load(
(array_like, shape=(primitive cell atoms, 3, 3), dtype=float),
'dielectric': Dielectric constant matrix
(array_like, shape=(3, 3), dtype=float),
'factor': unit conversion facotr (float)}
'factor': unit conversion factor (float)}
unitcell_filename : os.PathLike, optional
Input unit cell filename. Default is None.
supercell_filename : os.PathLike, optional
@ -217,7 +217,7 @@ def load(
fc_calculator_options : str, optional
Optional parameters that are passed to the external fc-calculator. This
is given as one text string. How to parse this depends on the
fc-calculator. For alm, each parameter is splitted by comma ',', and
fc-calculator. For alm, each parameter is split by comma ',', and
each set of key and value pair is written in 'key = value'.
factor : float, optional
Phonon frequency unit conversion factor. Unless specified, default unit
@ -236,10 +236,10 @@ def load(
True.
is_compact_fc : bool, optional
fc3 are created in the array whose shape is
True: (primitive, supercell, supecell, 3, 3, 3) False: (supercell,
supercell, supecell, 3, 3, 3)
True: (primitive, supercell, supercell, 3, 3, 3) False: (supercell,
supercell, supercell, 3, 3, 3)
and for fc2
True: (primitive, supecell, 3, 3) False: (supercell, supecell, 3, 3)
True: (primitive, supercell, 3, 3) False: (supercell, supercell, 3, 3)
where 'supercell' and 'primitive' indicate number of atoms in these
cells. Default is False.
use_pypolymlp : bool, optional

View File

@ -105,7 +105,7 @@ def get_parser(fc_symmetry=False, is_nac=False, load_phono3py_yaml=False):
type=float,
default=None,
help=(
"Boundary mean free path in micrometre for thermal conductivity calculation"
"Boundary mean free path in micrometer for thermal conductivity calculation"
),
)
parser.add_argument(
@ -264,7 +264,7 @@ def get_parser(fc_symmetry=False, is_nac=False, load_phono3py_yaml=False):
# dest="emulate_v2",
# action="store_true",
# default=False,
# help="Emulate v2.x behaviour.",
# help="Emulate v2.x behavior.",
# )
parser.add_argument(
"--factor",
@ -770,6 +770,14 @@ def get_parser(fc_symmetry=False, is_nac=False, load_phono3py_yaml=False):
default=None,
help="Use symfc for generating force constants",
)
if load_phono3py_yaml:
parser.add_argument(
"--symfc-memshow",
dest="show_symfc_memory_usage",
action="store_true",
default=None,
help="Show symfc memory usage with respect to cutoff distance",
)
parser.add_argument(
"--spf",
dest="is_spectral_function",

View File

@ -95,6 +95,7 @@ from phono3py.file_IO import (
write_fc3_to_hdf5,
write_phonon_to_hdf5,
)
from phono3py.interface.fc_calculator import estimate_symfc_memory_usage
from phono3py.interface.phono3py_yaml import Phono3pyYaml
from phono3py.phonon.grid import get_grid_point_from_address, get_ir_grid_points
from phono3py.phonon3.dataset import forces_in_dataset
@ -680,7 +681,7 @@ def _show_fc_calculator_not_found(log_level):
print("")
print(
"Built-in force constants calculator doesn't support the "
"dispalcements-forces dataset. "
"displacements-forces dataset. "
"An external force calculator, e.g., symfc (--symfc_ or ALM (--alm), "
"has to be used to compute force constants."
)
@ -1042,6 +1043,30 @@ def main(**argparse_control):
"and supercell structures."
)
###############################
# Memory estimation for symfc #
###############################
if settings.show_symfc_memory_usage and load_phono3py_yaml:
print("Quick estimation of memory size required for solving fc3 by symfc")
vecs, _ = ph3py.primitive.get_smallest_vectors()
dists = np.unique(
np.round(np.linalg.norm(vecs @ ph3py.primitive.cell, axis=-1), decimals=1)
)
print("cutoff memsize")
print("------ -------")
for cutoff in dists[1:] + 0.1:
memsize, memsize2 = estimate_symfc_memory_usage(
ph3py.supercell, ph3py.symmetry, cutoff
)
print(
f"{cutoff:5.1f} {memsize + memsize2:6.2f} GB "
f"({memsize:.2f}+{memsize2:.2f})"
)
if log_level:
print_end_phono3py()
sys.exit(0)
##################
# Check settings #
##################

View File

@ -42,7 +42,7 @@ class Phono3pySettings(Settings):
"""Setting parameter container."""
_default = {
# In micrometre. The default value is just set to avoid divergence.
# In micrometer. The default value is just set to avoid divergence.
"boundary_mfp": 1.0e6,
"conductivity_type": None,
"constant_averaged_pp_interaction": None,
@ -95,6 +95,7 @@ class Phono3pySettings(Settings):
"sigma_cutoff_width": None,
"solve_collective_phonon": False,
"emulate_v2": False,
"show_symfc_memory_usage": False,
"subtract_forces": None,
"subtract_forces_fc2": None,
"temperatures": None,
@ -323,6 +324,10 @@ class Phono3pySettings(Settings):
"""Set solve_collective_phonon."""
self._v["solve_collective_phonon"] = val
def set_show_symfc_memory_usage(self, val):
"""Set show_symfc_memory_usage."""
self._v["show_symfc_memory_usage"] = val
def set_subtract_forces(self, val):
"""Set subtract_forces."""
self._v["subtract_forces"] = val
@ -615,6 +620,10 @@ class Phono3pyConfParser(ConfParser):
if self._args.solve_collective_phonon:
self._confs["collective_phonon"] = ".true."
if "show_symfc_memory_usage" in self._args:
if self._args.show_symfc_memory_usage:
self._confs["show_symfc_memory_usage"] = ".true."
if "subtract_forces" in self._args:
if self._args.subtract_forces:
self._confs["subtract_forces"] = self._args.subtract_forces
@ -695,6 +704,7 @@ class Phono3pyConfParser(ConfParser):
"N_U",
"spectral_function",
"reducible_collision_matrix",
"show_symfc_memory_usage",
"symmetrize_fc2",
"symmetrize_fc3_q",
"symmetrize_fc3_r",
@ -879,7 +889,7 @@ class Phono3pyConfParser(ConfParser):
if "cutoff_pair_distance" in params:
self._settings.set_cutoff_pair_distance(params["cutoff_pair_distance"])
# Emulate v2.x behaviour
# Emulate v2.x behavior
if "emulate_v2" in params:
self._settings.set_emulate_v2(params["emulate_v2"])
@ -1035,6 +1045,12 @@ class Phono3pyConfParser(ConfParser):
if "scattering_event_class" in params:
self._settings.set_scattering_event_class(params["scattering_event_class"])
# Show symfc memory usage
if "show_symfc_memory_usage" in params:
self._settings.set_show_symfc_memory_usage(
params["show_symfc_memory_usage"]
)
# Cutoff width of smearing function (ratio to sigma value)
if "sigma_cutoff_width" in params:
self._settings.set_sigma_cutoff_width(params["sigma_cutoff_width"])

View File

@ -613,7 +613,7 @@ def write_real_self_energy_to_hdf5(
frequencies=None,
filename=None,
):
"""Wirte real part of self energy (currently only bubble) in hdf5.
"""Write real part of self energy (currently only bubble) in hdf5.
deltas : ndarray
Real part of self energy.
@ -702,7 +702,7 @@ def write_spectral_function_to_hdf5(
all_band_exist=False,
filename=None,
):
"""Wirte spectral functions (currently only bubble) in hdf5.
"""Write spectral functions (currently only bubble) in hdf5.
spectral_functions : ndarray
Spectral functions.
@ -792,7 +792,7 @@ def write_collision_to_hdf5(
text = "Collisions "
if grid_point is not None:
text += "at grid adress %d " % grid_point
text += "at grid address %d " % grid_point
if sigma is not None:
if grid_point is not None:
text += "and "
@ -827,7 +827,7 @@ def write_unitary_matrix_to_hdf5(
):
"""Write eigenvectors of collision matrices at temperatures.
Depending on the choice of the solver, eigenvectors are sotred in
Depending on the choice of the solver, eigenvectors are stored in
either column-wise or row-wise.
"""
@ -1697,7 +1697,7 @@ def get_length_of_first_line(f):
f.seek(0)
return len(line.split())
raise RuntimeError("File doesn't contain relevant infomration.")
raise RuntimeError("File doesn't contain relevant information.")
def _get_filename_suffix(

View File

@ -39,6 +39,7 @@ from __future__ import annotations
from typing import Optional, Union
import numpy as np
from phonopy.interface.symfc import SymfcFCSolver
from phonopy.structure.atoms import PhonopyAtoms
from phonopy.structure.cells import Primitive
from phonopy.structure.symmetry import Symmetry
@ -173,3 +174,21 @@ def update_cutoff_fc_calculator_options(
fc_calc_opts = f"cutoff = {cutoff_pair_distance}"
return fc_calc_opts
def estimate_symfc_memory_usage(
supercell: PhonopyAtoms, symmetry: Symmetry, cutoff: float, batch_size: int = 100
):
"""Estimate memory usage to run symfc for fc3 with cutoff.
Total memory usage is memsize + memsize2. These are separated because
they behave differently with respect to cutoff distance.
batch_size is hardcoded to 100 because it is so in symfc.
"""
symfc_solver = SymfcFCSolver(supercell, symmetry, options={"cutoff": {3: cutoff}})
basis_size = symfc_solver.estimate_basis_size(orders=[3])[3]
memsize = basis_size**2 * 3 * 8 / 10**9
memsize2 = len(supercell) * 3 * batch_size * basis_size * 8 / 10**9
return memsize, memsize2

View File

@ -84,7 +84,7 @@ class BZGrid:
The grid systems with (BZ-grid, BZG) and without (GR-grid, GRG) BZ surface
are mutually related up to modulo D_diag. More precisely the conversion
of grid adresses are performed as follows:
of grid addresses are performed as follows:
From BZG to GRG
gr_gp = get_grid_point_from_address(bz_grid.addresses[bz_gp], D_diag)
@ -103,12 +103,12 @@ class BZGrid:
Recovering reduced coordinates
------------------------------
q-points with respect to the original recirpocal
q-points with respect to the original reciprocal
basis vectors are given by
q = np.dot(Q, addresses[gp] / D_diag.astype('double'))
for the Gamma cetnred grid. With shifted, where only half grid shifts
for the Gamma centred grid. With shifted, where only half grid shifts
that satisfy the symmetry are considered,
q = np.dot(Q, (addresses[gp] + np.dot(P, s)) / D_diag.astype('double'))
@ -806,7 +806,7 @@ class GridMatrix:
):
"""Return grid matrix.
Grid is generated by the distance `length`. `coordinates` is used eighter
Grid is generated by the distance `length`. `coordinates` is used either
the grid is defined by supercell in real space or mesh grid in reciprocal
space.
@ -1125,7 +1125,7 @@ def _relocate_BZ_grid_address(
The translationally equivalent grid points corresponding to one grid point
on BZ surface are stored in continuously. If the multiplicity (number of
equivalent grid points) is 1, 2, 1, 4, ... for the grid points,
``bz_map`` stores the multiplicites and the index positions of the first
``bz_map`` stores the multiplicities and the index positions of the first
grid point of the equivalent grid points, i.e.,
bz_map[:] = [0, 1, 3, 4, 8...]

View File

@ -42,7 +42,7 @@ from phonopy.utils import similarity_transformation
class GroupVelocityMatrix(GroupVelocity):
"""Class to calculate group velocities matricies of phonons.
"""Class to calculate group velocities matrices of phonons.
v_qjj' = 1/(2*sqrt(omega_qj*omega_qj')) * <e(q,j)|dD/dq|e(q,j')>

View File

@ -51,11 +51,11 @@ def run_phonon_solver_c(
nac_q_direction=None, # in reduced coordinates
lapack_zheev_uplo="L",
):
"""Bulid and solve dynamical matrices on grid in C-API.
"""Build and solve dynamical matrices on grid in C-API.
Note
----
When LAPACKE is linked in C, `phononcalc.phonons_at_gridpoints` constucts
When LAPACKE is linked in C, `phononcalc.phonons_at_gridpoints` constructs
and solves dynamical matrices on grid points. Otherwise, it only constructs
dynamical matrices and solves them in python.
@ -73,7 +73,7 @@ def run_phonon_solver_c(
QDinv : ndarray
See BZGrid.QDinv.
frequency_conversion_factor : float, optional
Frequency convertion factor that is multiplied with sqrt or eigenvalue
Frequency conversion factor that is multiplied with sqrt or eigenvalue
of dynamical matrix. Default is VaspToTHz.
nac_q_direction : array_like, optional
See Interaction.nac_q_direction. Default is None.
@ -194,7 +194,7 @@ def run_phonon_solver_py(
frequency_conversion_factor,
lapack_zheev_uplo,
):
"""Bulid and solve dynamical matrices on grid in python."""
"""Build and solve dynamical matrices on grid in python."""
gp = grid_point
if phonon_done[gp] == 0:
phonon_done[gp] = 1

View File

@ -143,7 +143,7 @@ class VelocityOperator(GroupVelocity):
# computed along several directions
ddms = self._get_dsqrtD_FD(np.array(q))
#
# ddms[0] cointains the FD derivative in the direction in which the velocity
# ddms[0] contains the FD derivative in the direction in which the velocity
# operator is diagonalized
for id_dir in range(0, 3):
gv_operator[:, :, id_dir] = (

View File

@ -251,7 +251,7 @@ class CollisionMatrix(ImagSelfEnergy):
"""Return mapping table from grid point index to triplet index.
triplets_map_at_q contains index mapping of q1 in (q0, q1, q2) to
independet q1 under q0+q1+q2=G with a fixed q0.
independent q1 under q0+q1+q2=G with a fixed q0.
Note
----

View File

@ -133,7 +133,7 @@ def direction_to_displacement(
def get_third_order_displacements(
cell: PhonopyAtoms, symmetry: Symmetry, is_plusminus="auto", is_diagonal=False
):
"""Create dispalcement dataset.
"""Create displacement dataset.
Note
----
@ -143,7 +143,7 @@ def get_third_order_displacements(
between Atoms 1, 2, and 3 is calculated.
Atom 2: The second displaced atom. Second order force constant
between Atoms 2 and 3 is calculated.
Atom 3: Force is mesuared on this atom.
Atom 3: Force is measured on this atom.
Parameters
----------

View File

@ -122,7 +122,7 @@ def run_gruneisen_parameters(
class Gruneisen:
"""Calculat mode Grueneisen parameters from fc3."""
"""Calculate mode Grueneisen parameters from fc3."""
def __init__(
self,

View File

@ -288,7 +288,7 @@ class ImagSelfEnergy:
self._temperature = float(temperature)
def set_temperature(self, temperature):
"""Set temperatures where calculation will be peformed."""
"""Set temperatures where calculation will be performed."""
warnings.warn(
"Use attribute, ImagSelfEnergy.temperature "
"instead of ImagSelfEnergy.set_temperature().",
@ -1052,7 +1052,7 @@ def run_ise_at_frequency_points_batch(
if log_level:
print(
"Calculations at %d frequency points are devided into "
"Calculations at %d frequency points are divided into "
"%d batches." % (len(_frequency_points), len(batches))
)

View File

@ -157,7 +157,7 @@ class Interaction:
self._g_zero = None
self._phonon_done = None
self._done_nac_at_gamma = False # Phonon at Gamma is calculatd with NAC.
self._done_nac_at_gamma = False # Phonon at Gamma is calculated with NAC.
self._frequencies = None
self._eigenvectors = None
self._frequencies_at_gamma = None
@ -428,7 +428,7 @@ class Interaction:
shape=(num_bz_grid, num_band, num_band),
dtype="c%d" % (np.dtype('double').itemsize * 2), order='C'
phonon_done : ndarray
1 if phonon at a grid point is calcualted, otherwise 0.
1 if phonon at a grid point is calculated, otherwise 0.
shape=(num_bz_grid, ), dtype='byte'
"""
@ -626,7 +626,7 @@ class Interaction:
self.run_phonon_solver_at_gamma()
else:
msg = (
"Phonons at Gamma has been calcualted with NAC, "
"Phonons at Gamma has been calculated with NAC, "
"but ph-ph interaction is expected to calculate at "
"non-Gamma point. Setting Interaction.nac_q_direction = "
"None, can avoid raising this exception to re-run phonon "
@ -693,12 +693,12 @@ class Interaction:
"""Set phonons on grid."""
if bz_grid_addresses.shape != self._bz_grid.addresses.shape:
raise RuntimeError(
"Input grid address size is inconsistent. Setting phonons faild."
"Input grid address size is inconsistent. Setting phonons failed."
)
if (self._bz_grid.addresses - bz_grid_addresses).all():
raise RuntimeError(
"Input grid addresses are inconsistent. Setting phonons faild."
"Input grid addresses are inconsistent. Setting phonons failed."
)
else:
self._phonon_done[:] = 1

View File

@ -103,7 +103,7 @@ class JointDos:
self._tetrahedron_method = None
self._phonon_done = None
self._done_nac_at_gamma = False # Phonon at Gamma is calculatd with NAC.
self._done_nac_at_gamma = False # Phonon at Gamma is calculated with NAC.
self._frequencies = None
self._eigenvectors = None
@ -255,7 +255,7 @@ class JointDos:
self._phonon_done[gamma_gp] = 0
else:
msg = (
"Phonons at Gamma has been calcualted with NAC, "
"Phonons at Gamma has been calculated with NAC, "
"but ph-ph interaction is expected to calculate at "
"non-Gamma point. Setting Interaction.nac_q_direction = "
"None, can avoid raising this exception to re-run phonon "

View File

@ -63,9 +63,9 @@ class RealSelfEnergy:
How to test epsilon
-------------------
At a sampling mesh, choose one band and calcualte frequency shifts at
various epsilon values and plot over the epsilons. Decreasing epsinon,
at some point, discontinous change may be found.
At a sampling mesh, choose one band and calculate frequency shifts at
various epsilon values and plot over the epsilons. Decreasing epsilon,
at some point, discontinuous change may be found.
"""

View File

@ -41,7 +41,7 @@ class ReciprocalToNormal:
"""Class to transform fc3 in reciprocal space to phonon space.
This is an implementation in python for prototyping and the test.
Equivalent routine is implementated in C, and this is what usually
Equivalent routine is implemented in C, and this is what usually
we use.
"""

View File

@ -71,7 +71,7 @@ def get_triplets_at_q(
is_time_reversal : bool, optional
Inversion symemtry is added if it doesn't exist. Default is True.
swappable : bool, optional
q1 and q2 among (q0, q1, q2) can be swapped. Deafult is True.
q1 and q2 among (q0, q1, q2) can be swapped. Default is True.
Returns
-------

View File

@ -64,7 +64,7 @@ def plot_one_file(ax, args):
temperatures = f["temperature"][:]
plot_one(ax, coleigs, temperatures, args)
else:
print("File %s doens't exist." % filename)
print("File %s doesn't exist." % filename)
sys.exit(1)
@ -86,7 +86,7 @@ def plot_more_files(ax, args):
coleigs.append(f["collision_eigenvalues"][:])
temperatures.append(f["temperature"][:])
else:
print("File %s doens't exist." % filename)
print("File %s doesn't exist." % filename)
sys.exit(1)
plot_more(ax, coleigs, temperatures, args)

View File

@ -260,7 +260,7 @@ def main(args):
if os.path.isfile(args.filenames[0]):
f = h5py.File(args.filenames[0], "r")
else:
print("File %s doens't exist." % args.filenames[0])
print("File %s doesn't exist." % args.filenames[0])
sys.exit(1)
if args.title:

View File

@ -34,4 +34,4 @@
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
__version__ = "3.13.0"
__version__ = "3.14.0"

View File

@ -16,7 +16,7 @@ dependencies = [
"matplotlib",
"h5py",
"spglib",
"phonopy>=2.36,<2.37",
"phonopy>=2.37,<2.38",
]
license = { file = "LICENSE" }

View File

@ -8,7 +8,7 @@ from phono3py.api_phono3py import Phono3py
@pytest.mark.skipif(
not phono3c.include_lapacke(), reason="test for phono3py compliled with lapacke"
not phono3c.include_lapacke(), reason="test for phono3py compiled with lapacke"
)
@pytest.mark.parametrize("pinv_solver", [1, 2, 6])
def test_kappa_LBTE_126(si_pbesol: Phono3py, pinv_solver: int):
@ -41,7 +41,7 @@ def _test_kappa_LBTE(si_pbesol: Phono3py, pinv_solver: int):
@pytest.mark.skipif(
phono3c.include_lapacke(), reason="test for phono3py compliled without lapacke"
phono3c.include_lapacke(), reason="test for phono3py compiled without lapacke"
)
@pytest.mark.parametrize("pinv_solver", [1, 2])
def test_kappa_LBTE_witout_lapacke(si_pbesol: Phono3py, pinv_solver: int):

View File

@ -36,7 +36,7 @@ def test_cutoff_fc3_all_forces(
By definition, displacement datasets are kept unchanged when
cutoff-pair-distance is specified.
This test checkes only supercell forces that satisfy specified cutoff pairs
This test checks only supercell forces that satisfy specified cutoff pairs
are chosen properly.
"""
@ -259,7 +259,7 @@ def test_phonon_smat_alm_cutoff_fc3(si_pbesol_111_222_alm_cutoff_fc3: Phono3py):
@pytest.mark.skipif(
not phono3c.include_lapacke(), reason="requires to complile with lapacke"
not phono3c.include_lapacke(), reason="requires to compile with lapacke"
)
def test_fc3_lapacke_solver(si_pbesol_111: Phono3py):
"""Test fc3 with Si PBEsol 1x1x1 using lapacke solver."""
@ -298,7 +298,7 @@ def test_fc3_lapacke_solver(si_pbesol_111: Phono3py):
def test_fc3_symfc(si_pbesol_111_symfc: Phono3py):
"""Test fc3 with Si PBEsol 1x1x1 calcualted using symfc."""
"""Test fc3 with Si PBEsol 1x1x1 calculated using symfc."""
ph = si_pbesol_111_symfc
fc3_ref = [
[

View File

@ -840,7 +840,7 @@ def test_imag_self_energy_npoints_with_sigma(si_pbesol: Phono3py):
def test_imag_self_energy_detailed(si_pbesol: Phono3py):
"""Imaginary part of self energy spectrum of Si.
* specified frquency points
* specified frequency points
* contribution from each triplet is returned.
"""
@ -914,7 +914,7 @@ def test_imag_self_energy_detailed(si_pbesol: Phono3py):
def test_imag_self_energy_scat_classes(si_pbesol: Phono3py, scattering_class: int):
"""Imaginary part of self energy spectrum of Si.
* specified frquency points
* specified frequency points
* scattering event class 1
"""

View File

@ -248,10 +248,10 @@ def test_interaction_nac_direction_phonon_NaCl_second_no_error(nacl_pbe: Phono3p
def test_interaction_run_phonon_solver_at_gamma_NaCl(nacl_pbe: Phono3py):
"""Test run_phonon_solver_at_gamma with nac_q_direction on NaCl.
Phonon calculation at Gamma without NAC is peformed at itr.init_dynamical_matrix().
Phonon calculation at Gamma without NAC is performed at itr.init_dynamical_matrix().
The phonons at Gamma without NAC are saved in dedicated variables.
Phonon calculation at Gamma with NAC is peformed at itr.set_grid_point(0) and
Phonon calculation at Gamma with NAC is performed at itr.set_grid_point(0) and
stored in phonon variables on grid.
itr.run_phonon_solver_at_gamma() stored phonons at Gamma without NAC are copied

View File

@ -67,7 +67,7 @@ def test_real_self_energy_with_band_indices(si_pbesol: Phono3py):
def test_real_self_energy_with_frequency_points(si_pbesol: Phono3py):
"""Real part of self energy spectrum of Si.
* specified frquency points
* specified frequency points
"""
if si_pbesol._make_r0_average: