kaccum normalization for gv_by_gv (--gv option) is changed to that without dividing by primitive cell volume

This commit is contained in:
Atsushi Togo 2017-06-23 16:17:25 +02:00
parent 8a02b3a264
commit 302aecdd24
2 changed files with 18 additions and 4 deletions

View File

@ -123,6 +123,13 @@ Number of points to be sampled in the x-axis.
``kaccum`` for tensor properties
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For cummulative 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 last value for gv_by_gv (--gv
option) was further divided by the primitive cell volume.
Number of columns of output data is 13 as explained above. With
``--average`` and ``--trace`` options, number of columns of output
data becomes 3.
@ -170,8 +177,11 @@ Output the traces of the tensors rather than the unique elements.
``kaccum`` for scalar properties
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For the following properties, those intensities are normalized by
the number of grid points. Number of columns of output data is three,
For the following properties, those values are normalized by the
number of full grid points. This is understood as normalized for one
primitive cell.
Number of columns of output data is three,
frequency, cumulative property, and derivative of cumulative property
such like DOS.

View File

@ -207,7 +207,6 @@ class KappaDOS(object):
# mode_kappa[temp, ir_gp, band, tensor_elem]
self._kdos[:, :, j] += np.transpose(
np.dot(iw, self._mode_kappa[:, i]), axes=(1, 0, 2))
self._kdos *= np.prod(mesh)
class GammaDOS(object):
def __init__(self,
@ -418,7 +417,7 @@ if __name__ == '__main__':
mesh,
ir_grid_points,
grid_address)
unit_conversion = primitive.get_volume() * np.prod(mesh)
unit_conversion = primitive.get_volume()
mode_prop = gv_sum2.reshape((1,) + gv_sum2.shape) / unit_conversion
else:
mode_prop = f['mode_kappa'][:]
@ -513,4 +512,9 @@ if __name__ == '__main__':
grid_mapping_table,
ir_grid_points,
args.num_sampling_points)
if not args.gv:
# Already mode_kappa is divided by num_mesh.
# But tetrahedron method divides it again. So it has to repair.
kdos *= np.prod(mesh)
show_tensor(kdos, temperatures, sampling_points, args)