mirror of https://github.com/phonopy/phonopy.git
Separate writing supercell POSCARs and disp_fc3.yaml
This commit is contained in:
parent
dd7d2940a9
commit
98c9471919
|
@ -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')
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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'])
|
||||
|
|
200
scripts/phono3py
200
scripts/phono3py
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue