Separate writing supercell POSCARs and disp_fc3.yaml

This commit is contained in:
Atsushi Togo 2014-01-31 18:40:19 +09:00
parent dd7d2940a9
commit 98c9471919
4 changed files with 161 additions and 264 deletions

View File

@ -12,13 +12,7 @@ from phonopy.file_IO import write_FORCE_SETS_vasp, read_force_constant_vasprun_x
#
###########
def write_supercells_with_displacements(supercell,
dataset,
create_POSCARs=True,
filename='disp_fc3.yaml'):
lattice = supercell.get_cell()
# YAML
def write_disp_fc3_yaml(supercell, dataset, filename='disp_fc3.yaml'):
w = open(filename, 'w')
w.write("natom: %d\n" % dataset['natom'])
@ -47,17 +41,6 @@ def write_supercells_with_displacements(supercell,
count2 = num_first + 1
for disp1 in dataset['first_atoms']:
disp_cart1 = disp1['displacement']
if create_POSCARs:
positions = supercell.get_positions()
positions[disp1['number']] += disp_cart1
atoms = Atoms(numbers=supercell.get_atomic_numbers(),
masses=supercell.get_masses(),
positions=positions,
cell=lattice,
pbc=True)
vasp.write_vasp('POSCAR-%05d' % count1, atoms, direct=True)
# YAML
w.write("- number: %5d\n" % (disp1['number'] + 1))
w.write(" displacement:\n")
w.write(" [%20.16f,%20.16f,%20.16f ] # %05d\n" %
@ -65,45 +48,29 @@ def write_supercells_with_displacements(supercell,
w.write(" second_atoms:\n")
count1 += 1
atom_indices = np.unique(
[disp2['number'] for disp2 in disp1['second_atoms']])
for atom2 in atom_indices:
included = None
distance = 0.0
displacements = []
for disp2 in disp1['second_atoms']:
if disp2['number'] == atom2:
displacements.append(disp2['displacement'])
if 'included' in disp2:
included = disp2['included']
pair_distance = disp2['pair_distance']
w.write(" - number: %5d\n" % (atom2 + 1))
w.write(" distance: %f\n" % pair_distance)
if included is not None:
if included:
w.write(" included: %s\n" % "true")
else:
w.write(" included: %s\n" % "false")
w.write(" displacements:\n")
for disp_cart2 in displacements:
if create_POSCARs and (included or included is None):
positions = supercell.get_positions()
positions[disp1['number']] += disp_cart1
positions[atom2] += disp_cart2
atoms = Atoms(numbers=supercell.get_atomic_numbers(),
masses=supercell.get_masses(),
positions=positions,
cell=lattice,
pbc=True)
vasp.write_vasp('POSCAR-%05d' % count2, atoms, direct=True)
# YAML
w.write(" - [%20.16f,%20.16f,%20.16f ] # %05d\n" %
(disp_cart2[0], disp_cart2[1], disp_cart2[2], count2))
count2 += 1
included = None
distance = 0.0
atom2 = -1
displacements = []
for disp2 in disp1['second_atoms']:
if atom2 != disp2['number']:
atom2 = disp2['number']
if 'included' in disp2:
included = disp2['included']
pair_distance = disp2['pair_distance']
w.write(" - number: %5d\n" % (atom2 + 1))
w.write(" distance: %f\n" % pair_distance)
if included is not None:
if included:
w.write(" included: %s\n" % "true")
else:
w.write(" included: %s\n" % "false")
w.write(" displacements:\n")
disp_cart2 = disp2['displacement']
w.write(" - [%20.16f,%20.16f,%20.16f ] # %05d\n" %
(disp_cart2[0], disp_cart2[1], disp_cart2[2], count2))
count2 += 1
w.write("lattice:\n")
for axis in supercell.get_cell():
@ -125,7 +92,7 @@ def write_supercells_with_displacements_from_direction_dataset(
cutoff_distance=None,
filename='disp_fc3.yaml'):
"""
This is the disp_fc3.yaml write previously used (version < 0.8.2).
This is the disp_fc3.yaml writer previously used (version < 0.8.2).
"""
# YAML
w = open(filename, 'w')

View File

@ -1,6 +1,8 @@
import numpy as np
from phonopy.structure.symmetry import Symmetry
from phonopy.structure.cells import get_supercell, get_primitive
from phonopy.structure.atoms import Atoms
from phonopy.units import VaspToTHz
from anharmonic.phonon3.imag_self_energy import get_imag_self_energy, \
write_imag_self_energy, get_linewidth, write_linewidth
from anharmonic.phonon3.frequency_shift import FrequencyShift
@ -16,7 +18,6 @@ from phonopy.harmonic.force_constants import get_fc2, set_permutation_symmetry,
set_translational_invariance
from anharmonic.phonon3.fc3 import get_fc3, set_permutation_symmetry_fc3, \
set_translational_invariance_fc3, cutoff_fc3_by_zero
from phonopy.units import VaspToTHz
class Phono3py:
def __init__(self,
@ -67,6 +68,10 @@ class Phono3py:
self._search_primitive_symmetry()
self._search_phonon_supercell_symmetry()
# Displacements and supercells
self._supercells_with_displacements = None
self._displacement_dataset = None
# Thermal conductivity
self._thermal_conductivity = None # conductivity_RTA object
@ -122,6 +127,22 @@ class Phono3py:
frequency_scale_factor=frequency_scale_factor)
self._interaction.set_nac_q_direction(nac_q_direction=nac_q_direction)
def generate_displacements(self,
distance=0.01,
cutoff_pair_distance=None,
is_plusminus='auto',
is_diagonal=True):
direction_dataset = get_third_order_displacements(
self._supercell,
self._symmetry,
is_plusminus=is_plusminus,
is_diagonal=is_diagonal)
self._displacement_dataset = direction_to_displacement(
direction_dataset,
distance,
self._supercell,
cutoff_distance=cutoff_pair_distance)
def produce_fc2(self,
forces_fc2,
disp_dataset,
@ -200,22 +221,6 @@ class Phono3py:
if self._fc3 is not None:
set_translational_invariance_fc3(self._fc3)
def generate_displacements(self,
distance=0.01,
cutoff_pair_distance=None,
is_plusminus='auto',
is_diagonal=True):
direction_dataset = get_third_order_displacements(
self._supercell,
self._symmetry,
is_plusminus=is_plusminus,
is_diagonal=is_diagonal)
self._displacement_dataset = direction_to_displacement(
direction_dataset,
distance,
self._supercell,
cutoff_distance=cutoff_pair_distance)
def get_interaction_strength(self):
return self._interaction
@ -261,6 +266,11 @@ class Phono3py:
def get_displacement_dataset(self):
return self._displacement_dataset
def get_supercells_with_displacements(self):
if self._supercells_with_displacements is None:
self._build_supercells_with_displacements()
return self._supercells_with_displacements
def run_imag_self_energy(self,
grid_points,
@ -408,21 +418,6 @@ class Phono3py:
self._supercell_matrix,
self._symprec)
def _build_supercells_with_displacements(self):
supercells = []
for disp in self._displacements:
positions = self._supercell.get_positions()
positions[disp[0]] += disp[1:4]
supercells.append(Atoms(
numbers=self._supercell.get_atomic_numbers(),
masses=self._supercell.get_masses(),
magmoms=self._supercell.get_magnetic_moments(),
positions=positions,
cell=self._supercell.get_cell(),
pbc=True))
self._supercells_with_displacements = supercells
def _build_primitive_cell(self):
"""
primitive_matrix:
@ -458,6 +453,46 @@ class Phono3py:
self._phonon_supercell_matrix,
self._primitive_matrix)
def _build_supercells_with_displacements(self):
supercells = []
magmoms = self._supercell.get_magnetic_moments()
masses = self._supercell.get_masses()
numbers = self._supercell.get_atomic_numbers()
lattice = self._supercell.get_cell()
for disp1 in self._displacement_dataset['first_atoms']:
disp_cart1 = disp1['displacement']
positions = self._supercell.get_positions()
positions[disp1['number']] += disp_cart1
supercells.append(
Atoms(numbers=numbers,
masses=masses,
magmoms=magmoms,
positions=positions,
cell=lattice,
pbc=True))
for disp1 in self._displacement_dataset['first_atoms']:
for disp2 in disp1['second_atoms']:
if 'included' in disp2:
included = disp2['included']
else:
included = True
if included:
positions = self._supercell.get_positions()
positions[disp1['number']] += disp_cart1
positions[disp2['number']] += disp2['displacement']
supercells.append(Atoms(numbers=numbers,
masses=masses,
magmoms=magmoms,
positions=positions,
cell=lattice,
pbc=True))
else:
supercells.append(None)
self._supercells_with_displacements = supercells
def _get_primitive_cell(self, supercell, supercell_matrix, primitive_matrix):
inv_supercell_matrix = np.linalg.inv(supercell_matrix)
if primitive_matrix is None:

View File

@ -5,7 +5,6 @@ class Phono3pySettings(Settings):
def __init__(self):
Settings.__init__(self)
self._band_indices = None
self._coarse_mesh_shifts = None
self._cutoff_fc3_distance = None
self._cutoff_pair_distance = None
@ -19,7 +18,6 @@ class Phono3pySettings(Settings):
self._mass_variances = None
self._max_freepath = None
self._mesh_divisors = None
self._multiple_sigmas = None
self._no_kappa_stars = False
self._read_amplitude = False
self._read_gamma = False
@ -28,12 +26,6 @@ class Phono3pySettings(Settings):
self._write_amplitude = False
self._write_gamma = False
def set_band_indices(self, band_indices):
self._band_indices = band_indices
def get_band_indices(self):
return self._band_indices
def set_coarse_mesh_shifts(self, coarse_mesh_shifts):
self._coarse_mesh_shifts = coarse_mesh_shifts
@ -112,12 +104,6 @@ class Phono3pySettings(Settings):
def get_mesh_divisors(self):
return self._mesh_divisors
def set_multiple_sigmas(self, multiple_sigmas):
self._multiple_sigmas = multiple_sigmas
def get_multiple_sigmas(self):
return self._multiple_sigmas
def set_no_kappa_stars(self, no_kappa_stars):
self._no_kappa_stars = no_kappa_stars
@ -177,10 +163,6 @@ class Phono3pyConfParser(ConfParser):
self._confs['dim_extra'] = \
self._options.supercell_dimension_extra
if opt.dest == 'band_indices':
if self._options.band_indices is not None:
self._confs['band_indices'] = self._options.band_indices
if opt.dest == 'cutoff_fc3_distance':
if self._options.cutoff_fc3_distance is not None:
self._confs['cutoff_fc3_distance'] = \
@ -233,10 +215,6 @@ class Phono3pyConfParser(ConfParser):
if self._options.mesh_divisors is not None:
self._confs['mesh_divisors'] = self._options.mesh_divisors
if opt.dest == 'multiple_sigmas':
if self._options.multiple_sigmas is not None:
self._confs['multiple_sigmas'] = self._options.multiple_sigmas
if opt.dest == 'no_kappa_stars':
if self._options.no_kappa_stars:
self._confs['no_kappa_stars'] = '.true.'
@ -283,12 +261,6 @@ class Phono3pyConfParser(ConfParser):
else:
self.set_parameter('dim_extra', matrix)
if conf_key == 'band_indices':
vals = []
for sum_set in confs['band_indices'].split(','):
vals.append([int(x) - 1 for x in sum_set.split()])
self.set_parameter('band_indices', vals)
if conf_key == 'cutoff_fc3_distance':
self.set_parameter('cutoff_fc3_distance',
float(confs['cutoff_fc3_distance']))
@ -353,13 +325,6 @@ class Phono3pyConfParser(ConfParser):
else:
self.setting_error("Mesh divisors are incorrectly set.")
if conf_key == 'multiple_sigmas':
vals = [fracval(x) for x in confs['multiple_sigmas'].split()]
if len(vals) < 1:
self.setting_error("Mutiple sigmas are incorrectly set.")
else:
self.set_parameter('multiple_sigmas', vals)
if conf_key == 'no_kappa_stars':
if confs['no_kappa_stars'] == '.true.':
self.set_parameter('no_kappa_stars', True)
@ -396,10 +361,6 @@ class Phono3pyConfParser(ConfParser):
if params.has_key('dim_extra'):
self._settings.set_phonon_supercell_matrix(params['dim_extra'])
# Sets of band indices that are summed
if params.has_key('band_indices'):
self._settings.set_band_indices(params['band_indices'])
# Cutoff distance of third-order force constants. Elements where any
# pair of atoms has larger distance than cut-off distance are set zero.
if params.has_key('cutoff_fc3_distance'):
@ -454,10 +415,6 @@ class Phono3pyConfParser(ConfParser):
self._settings.set_coarse_mesh_shifts(
params['mesh_divisors'][3:])
# Multiple sigmas
if params.has_key('multiple_sigmas'):
self._settings.set_multiple_sigmas(params['multiple_sigmas'])
# Read phonon-phonon interaction amplitudes from hdf5
if params.has_key('read_amplitude'):
self._settings.set_read_amplitude(params['read_amplitude'])

View File

@ -39,7 +39,7 @@ import sys
import numpy as np
from optparse import OptionParser
from phonopy.interface.vasp import read_vasp
from phonopy.interface.vasp import read_vasp, write_vasp
from phonopy.structure.cells import print_cell
from phonopy.harmonic.force_constants import show_drift_force_constants
from phonopy.file_IO import parse_BORN
@ -49,7 +49,7 @@ from anharmonic.file_IO import parse_disp_fc2_yaml, parse_disp_fc3_yaml, \
parse_FORCES_FC2, parse_FORCES_FC3, write_FORCES_FC3, \
write_fc3_to_hdf5, write_fc2_to_hdf5, read_fc3_from_hdf5, \
read_fc2_from_hdf5, write_ir_grid_points, write_grid_address, \
write_supercells_with_displacements
write_disp_fc3_yaml
from anharmonic.phonon3.triplets import get_coarse_ir_grid_points
from anharmonic.settings import Phono3pyConfParser
from anharmonic.phonon3 import Phono3py, Phono3pyJointDos, IsotopeScattering, \
@ -141,7 +141,6 @@ parser.set_defaults(band_indices=None,
mass_variances=None,
mesh_numbers=None,
mesh_divisors=None,
multiple_sigmas=None,
no_kappa_stars=False,
q_direction=None,
primitive_axis=None,
@ -169,24 +168,18 @@ parser.set_defaults(band_indices=None,
write_grid_points=False)
parser.add_option("--amplitude", dest="displacement_distance", type="float",
help="Distance of displacements")
parser.add_option("--bi", "--band_indices", dest="band_indices",
type="string",
parser.add_option("--bi", "--band_indices", dest="band_indices", type="string",
help="Band indices where life time is calculated")
parser.add_option("--band", dest="band_paths",
action="store", type="string",
parser.add_option("--band", dest="band_paths", action="store", type="string",
help="Band structure paths calculated for Gruneisen parameter")
parser.add_option("--band_points", dest="band_points",
type="int",
parser.add_option("--band_points", dest="band_points", type="int",
help="Number of points calculated on a band segment in the band structure Gruneisen parameter calculation")
parser.add_option("--br", "--bterta", dest="is_bterta",
action="store_true",
parser.add_option("--br", "--bterta", dest="is_bterta", action="store_true",
help="Calculate thermal conductivity in BTE-RTA")
parser.add_option("-c", "--cell", dest="cell_poscar",
action="store", type="string",
help="Read unit cell", metavar="FILE")
parser.add_option("-c", "--cell", dest="cell_poscar", action="store",
type="string", help="Read unit cell", metavar="FILE")
parser.add_option("--cutfc3", "--cutoff_fc3_distance",
dest="cutoff_fc3_distance",
type="float",
dest="cutoff_fc3_distance", type="float",
help="Cutoff distance of third-order force constants. Elements where any pair of atoms has larger distance than cut-off distance are set zero.")
parser.add_option("--cutfreq", "--cutoff_frequency", dest="cutoff_frequency",
type="float",
@ -195,47 +188,29 @@ parser.add_option("--cutlt", "--cutoff_lifetime", dest="cutoff_lifetime",
type="float",
help="Cutoff lifetime in second used for thermal conductivity calculation")
parser.add_option("--cutpair", "--cutoff_pair_distance",
dest="cutoff_pair_distance",
type="float",
dest="cutoff_pair_distance", type="float",
help="Cutoff distance between pairs of displaced atoms used for supercell creation with displacements and making third-order force constants")
parser.add_option("-d", "--disp", dest="is_displacement",
action="store_true",
parser.add_option("-d", "--disp", dest="is_displacement", action="store_true",
help="As first stage, get least displacements")
parser.add_option("--decay", dest="is_decay_channel",
action="store_true", help="Calculate decay channels")
parser.add_option("--dim",
dest="supercell_dimension",
type="string",
parser.add_option("--dim", dest="supercell_dimension", type="string",
help="Supercell dimension")
parser.add_option("--dim2",
dest="supercell_dimension_extra",
type="string",
help="Supercell dimension for extra fc2")
parser.add_option("--cf3", "--create_f3",
dest="forces_third_mode",
action="store_true",
help="Create FORCES_THIRD")
parser.add_option("--cdfc2", "--create_delta_fc2",
dest="delta_fc2_sets_mode",
action="store_true",
help="Create DELTA_FC2_SETS")
parser.add_option("--dfc2", "--delta_fc2",
dest="read_delta_fc2",
action="store_true",
help="Read DELTA_FC2_SETS")
parser.add_option("--dim2", dest="supercell_dimension_extra",
type="string", help="Supercell dimension for extra fc2")
parser.add_option("--cf3", "--create_f3", dest="forces_third_mode",
action="store_true", help="Create FORCES_THIRD")
parser.add_option("--cdfc2", "--create_delta_fc2", dest="delta_fc2_sets_mode",
action="store_true", help="Create DELTA_FC2_SETS")
parser.add_option("--dfc2", "--delta_fc2", dest="read_delta_fc2",
action="store_true", help="Read DELTA_FC2_SETS")
parser.add_option("--factor", dest="factor", type="float",
help="Conversion factor to favorite frequency unit")
parser.add_option("--fc2",
dest="read_fc2",
action="store_true",
parser.add_option("--fc2", dest="read_fc2", action="store_true",
help="Read second order force constants")
parser.add_option("--fc2_extra",
dest="read_fc2_extra",
action="store_true",
parser.add_option("--fc2_extra", dest="read_fc2_extra", action="store_true",
help="Read extra second order force constants")
parser.add_option("--fc3",
dest="read_fc3",
action="store_true",
parser.add_option("--fc3", dest="read_fc3", action="store_true",
help="Read third order force constants")
parser.add_option("--freepath", dest="max_freepath", type="float",
help="Maximum mean free path of phonon in meter")
@ -245,98 +220,66 @@ parser.add_option("--freq_pitch", dest="frequency_pitch", type="float",
help="Pitch in frequency for spectrum")
parser.add_option("--gamma_option", dest="gamma_option", type="int",
help="Option for the test of imaginary part of self energy")
parser.add_option("--gp", "--grid_points",
dest="grid_points", type="string",
parser.add_option("--gp", "--grid_points", dest="grid_points", type="string",
help="Fixed grid points where damping functions are calculated ")
parser.add_option("--gruneisen", dest="is_gruneisen",
action="store_true",
parser.add_option("--gruneisen", dest="is_gruneisen", action="store_true",
help="Calculate phonon Gruneisen parameter")
parser.add_option("--gv_delta_q", dest="gv_delta_q", type="float",
help="Delta-q distance used for group velocity calculation")
parser.add_option("-i", dest="input_filename",
type="string",
parser.add_option("-i", dest="input_filename", type="string",
help="Input filename extension")
parser.add_option("--io", dest="input_output_filename",
type="string",
parser.add_option("--io", dest="input_output_filename", type="string",
help="Input and output filename extension")
parser.add_option("--ion_clamped", dest="ion_clamped",
action="store_true",
parser.add_option("--ion_clamped", dest="ion_clamped", action="store_true",
help="Atoms are clamped under applied strain in Gruneisen parameter calculation")
parser.add_option("--isotope", dest="is_isotope",
action="store_true",
parser.add_option("--isotope", dest="is_isotope", action="store_true",
help="Isotope scattering lifetime")
parser.add_option("--jdos",
dest="is_joint_dos",
action="store_true",
parser.add_option("--jdos", dest="is_joint_dos", action="store_true",
help="Calculate joint density of states")
parser.add_option("--lw", "--linewidth",
dest="is_linewidth",
action="store_true",
help="Calculate linewidths")
parser.add_option("--fst", "--frequency_shift",
dest="is_frequency_shift",
action="store_true",
help="Calculate frequency shifts")
parser.add_option("--md", "--mesh_divisors",
dest="mesh_divisors",
type="string",
parser.add_option("--lw", "--linewidth", dest="is_linewidth",
action="store_true", help="Calculate linewidths")
parser.add_option("--fst", "--frequency_shift", dest="is_frequency_shift",
action="store_true", help="Calculate frequency shifts")
parser.add_option("--md", "--mesh_divisors", dest="mesh_divisors", type="string",
help="Divisors for mesh numbers")
parser.add_option("--mesh",
dest="mesh_numbers",
type="string",
parser.add_option("--mesh", dest="mesh_numbers", type="string",
help="Mesh numbers")
parser.add_option("--multiple_sigmas", dest="multiple_sigmas",
type="string",
help="Multiple sigmas for smearing width used for limited functions")
parser.add_option("--sigma", dest="sigma", type="string",
help="A sigma value or multiple sigma values (separated by space) for smearing width used for limited functions")
parser.add_option("--mv", "--mass_variances", dest="mass_variances",
type="string",
help="Mass variance parameters for isotope scattering")
parser.add_option("--nac", dest="is_nac",
action="store_true",
parser.add_option("--nac", dest="is_nac", action="store_true",
help="Non-analytical term correction")
parser.add_option("--nodiag", dest="is_nodiag",
action="store_true",
parser.add_option("--nodiag", dest="is_nodiag", action="store_true",
help="Set displacements parallel to axes")
parser.add_option("--noks", "--no_kappa_stars", dest="no_kappa_stars",
action="store_true",
help="Deactivate summation of partial kappa at q-stars"),
parser.add_option("--nosym", dest="is_nosym",
action="store_true",
parser.add_option("--nosym", dest="is_nosym", action="store_true",
help="No symmetrization of triplets")
parser.add_option("-o", dest="output_filename",
type="string",
parser.add_option("-o", dest="output_filename", type="string",
help="Output filename extension")
parser.add_option("--pa", "--primitive_axis", dest="primitive_axis",
action="store", type="string",
help="Same as PRIMITIVE_AXIS tags")
parser.add_option("--pm", dest="is_plusminus_displacements",
action="store_true",
parser.add_option("--pm", dest="is_plusminus_displacements", action="store_true",
help="Set plus minus displacements")
parser.add_option("--qpoints", dest="qpoints", type="string",
help="Calculate at specified q-points")
parser.add_option("--q_direction",
dest="q_direction",
type="string",
parser.add_option("--q_direction", dest="q_direction", type="string",
help="q-vector direction at q->0 for non-analytical term correction")
parser.add_option("-q", "--quiet", dest="quiet",
action="store_true",
parser.add_option("-q", "--quiet", dest="quiet", action="store_true",
help="Print out smallest information")
parser.add_option("--read_amplitude", dest="read_amplitude",
action="store_true",
parser.add_option("--read_amplitude", dest="read_amplitude", action="store_true",
help="Read phonon-phonon interaction amplitudes")
parser.add_option("--read_gamma", dest="read_gamma",
action="store_true",
parser.add_option("--read_gamma", dest="read_gamma", action="store_true",
help="Read Gammas from files")
parser.add_option("--sigma", dest="sigma", type="float",
help="Smearing width for DOS")
parser.add_option("--sym_fc2", dest="is_symmetrize_fc2",
action="store_true",
parser.add_option("--sym_fc2", dest="is_symmetrize_fc2", action="store_true",
help="Symmetrize fc2 by index exchange")
parser.add_option("--sym_fc3r", dest="is_symmetrize_fc3_r",
action="store_true",
parser.add_option("--sym_fc3r", dest="is_symmetrize_fc3_r", action="store_true",
help="Symmetrize fc3 in real space by index exchange")
parser.add_option("--sym_fc3q", dest="is_symmetrize_fc3_q",
action="store_true",
parser.add_option("--sym_fc3q", dest="is_symmetrize_fc3_q", action="store_true",
help="Symmetrize fc3 in reciprocal space by index exchange")
parser.add_option("--tmax", dest="tmax", type="string",
help="Maximum calculated temperature")
@ -349,28 +292,21 @@ parser.add_option("--tsym", dest="is_translational_symmetry",
help="Impose translational invariance condition")
parser.add_option("--tolerance", dest="symprec", type="float",
help="Symmetry tolerance to search")
parser.add_option("-v", "--verbose", dest="verbose",
action="store_true",
parser.add_option("-v", "--verbose", dest="verbose", action="store_true",
help="Detailed run-time information is displayed")
parser.add_option("--loglevel", dest="log_level", type="int",
help="Log level")
parser.add_option("--loglevel", dest="log_level", type="int", help="Log level")
parser.add_option("--thm", "--tetrahedron_method", dest="is_tetrahedron_method",
action="store_true",
help="Use tetrahedron method")
parser.add_option("--ts", dest="temperatures",
type="string", help="Temperatures for damping functions")
parser.add_option("--uplo",
dest="uplo",
type="string",
help="Lapack zheev UPLO")
action="store_true", help="Use tetrahedron method")
parser.add_option("--ts", dest="temperatures", type="string",
help="Temperatures for damping functions")
parser.add_option("--uplo", dest="uplo", type="string", help="Lapack zheev UPLO")
parser.add_option("--wgp", "--write_grid_points", dest="write_grid_points",
action="store_true",
help="Write grid address of irreducible grid points for specified mesh numbers to ir_grid_address.yaml")
parser.add_option("--write_amplitude", dest="write_amplitude",
action="store_true",
help="Write phonon-phonon interaction amplitudes")
parser.add_option("--write_gamma", dest="write_gamma",
action="store_true",
parser.add_option("--write_gamma", dest="write_gamma", action="store_true",
help="Write gamma")
(options, args) = parser.parse_args()
option_list = parser.option_list
@ -462,10 +398,12 @@ if options.is_displacement:
else:
filename = 'disp_fc3.' + output_filename + '.yaml'
num_disps, num_disp_files = write_supercells_with_displacements(
supercell,
dds,
filename=filename)
num_disps, num_disp_files = write_disp_fc3_yaml(supercell,
dds,
filename=filename)
for i, dcell in enumerate(phono3py.get_supercells_with_displacements()):
if dcell is not None:
write_vasp('POSCAR-%05d' % (i + 1), dcell, direct=True)
if log_level:
print "Total number of displacements:", num_disps
@ -485,13 +423,13 @@ mesh_divs = settings.get_mesh_divisors()
grid_points = settings.get_grid_points()
band_indices = settings.get_band_indices()
cutoff_frequency = settings.get_cutoff_frequency()
if settings.get_multiple_sigmas() is None:
if settings.get_sigma():
sigmas = [settings.get_sigma()]
else:
sigmas = []
sigma = settings.get_sigma()
if sigma is None:
sigmas = []
elif isinstance(sigma, float):
sigmas = [sigma]
else:
sigmas = settings.get_multiple_sigmas()
sigmas = sigma
if settings.get_is_tetrahedron_method():
sigmas = [None] + sigmas
if settings.get_temperatures() is None: