Beispiel #1
0
 def __init__(self,
              phonon,
              phonon_plus,
              phonon_minus,
              mesh,
              shift=None,
              is_time_reversal=True,
              is_gamma_center=False,
              is_mesh_symmetry=True):
     self._mesh = mesh
     self._factor = phonon.get_unit_conversion_factor(),
     primitive = phonon.get_primitive()
     primitive_symmetry = phonon.get_primitive_symmetry()
     gruneisen = Gruneisen(phonon.get_dynamical_matrix(),
                           phonon_plus.get_dynamical_matrix(),
                           phonon_minus.get_dynamical_matrix(),
                           primitive.get_volume(),
                           phonon_plus.get_primitive().get_volume(),
                           phonon_minus.get_primitive().get_volume())
     self._qpoints, self._weights = get_qpoints(
         self._mesh,
         np.linalg.inv(primitive.get_cell()),
         q_mesh_shift=shift,
         is_time_reversal=is_time_reversal,
         is_gamma_center=is_gamma_center,
         rotations=primitive_symmetry.get_pointgroup_operations(),
         is_mesh_symmetry=is_mesh_symmetry)
     gruneisen.set_qpoints(self._qpoints)
     self._gamma = gruneisen.get_gruneisen()
     self._eigenvalues = gruneisen.get_eigenvalues()
     self._frequencies = np.sqrt(
         abs(self._eigenvalues)) * np.sign(self._eigenvalues) * self._factor
Beispiel #2
0
 def __init__(self,
              phonon,
              phonon_plus,
              phonon_minus,
              mesh,
              grid_shift=None,
              is_gamma_center=False,
              symprec=1e-5):
     self._mesh = mesh
     self._factor = phonon.get_unit_conversion_factor(),
     primitive = phonon.get_primitive()
     gruneisen = Gruneisen(phonon.get_dynamical_matrix(),
                           phonon_plus.get_dynamical_matrix(),
                           phonon_minus.get_dynamical_matrix(),
                           primitive.get_volume(),
                           phonon_plus.get_primitive().get_volume(),
                           phonon_minus.get_primitive().get_volume())
     self._qpoints, self._weights = get_qpoints(self._mesh,
                                                primitive,
                                                grid_shift,
                                                is_gamma_center,
                                                symprec=symprec)
     gruneisen.set_qpoints(self._qpoints)
     self._gamma = gruneisen.get_gruneisen()
     self._eigenvalues = gruneisen.get_eigenvalues()
     self._frequencies = np.sqrt(
         abs(self._eigenvalues)) * np.sign(self._eigenvalues) * self._factor
Beispiel #3
0
 def __init__(self,
              phonon,
              phonon_plus,
              phonon_minus,
              mesh,
              shift=None,
              is_time_reversal=True,
              is_gamma_center=False,
              is_mesh_symmetry=True):
     self._phonon = phonon
     self._mesh = np.array(mesh, dtype='intc')
     self._factor = phonon.get_unit_conversion_factor(),
     primitive = phonon.get_primitive()
     primitive_symmetry = phonon.get_primitive_symmetry()
     gruneisen = Gruneisen(phonon.get_dynamical_matrix(),
                           phonon_plus.get_dynamical_matrix(),
                           phonon_minus.get_dynamical_matrix())
     self._qpoints, self._weights = get_qpoints(
         self._mesh,
         np.linalg.inv(primitive.get_cell()),
         q_mesh_shift=shift,
         is_time_reversal=is_time_reversal,
         is_gamma_center=is_gamma_center,
         rotations=primitive_symmetry.get_pointgroup_operations(),
         is_mesh_symmetry=is_mesh_symmetry)
     gruneisen.set_qpoints(self._qpoints)
     self._gamma = gruneisen.get_gruneisen()
     self._gamma_prime = gruneisen.get_gamma_prime()
     self._eigenvalues = gruneisen.get_eigenvalues()
     self._frequencies = np.sqrt(
         abs(self._eigenvalues)) * np.sign(self._eigenvalues) * self._factor
Beispiel #4
0
    def __init__(self,
                 phonon,
                 phonon_plus,
                 phonon_minus,
                 paths,
                 num_points):
        self._num_points = num_points
        
        primitive = phonon.get_primitive()
        gruneisen = Gruneisen(phonon.get_dynamical_matrix(),
                              phonon_plus.get_dynamical_matrix(),
                              phonon_minus.get_dynamical_matrix(),
                              primitive.get_volume(),
                              phonon_plus.get_primitive().get_volume(),
                              phonon_minus.get_primitive().get_volume(),
                              is_band_connection=True)
        rec_vectors = np.linalg.inv(primitive.get_cell())
        factor = phonon.get_unit_conversion_factor(),
        distance_shift = 0.0

        self._paths = []
        
        for path in paths:
            qpoints, distances = _get_band_qpoints(path[0],
                                                   path[1],
                                                   rec_vectors,
                                                   num_points=num_points)
            gruneisen.set_qpoints(qpoints)
            gamma = gruneisen.get_gruneisen()
            eigenvalues = gruneisen.get_eigenvalues()
            frequencies = np.sqrt(abs(eigenvalues)) * np.sign(eigenvalues) * factor
            
            distances_with_shift = distances + distance_shift

            self._paths.append([qpoints,
                                distances,
                                gamma,
                                eigenvalues,
                                frequencies,
                                distances_with_shift])

            distance_shift = distances_with_shift[-1]
Beispiel #5
0
    def __init__(self, phonon, phonon_plus, phonon_minus, paths, num_points):
        self._num_points = num_points

        primitive = phonon.get_primitive()
        gruneisen = Gruneisen(phonon.get_dynamical_matrix(),
                              phonon_plus.get_dynamical_matrix(),
                              phonon_minus.get_dynamical_matrix(),
                              is_band_connection=True)
        rec_vectors = np.linalg.inv(primitive.get_cell())
        factor = phonon.get_unit_conversion_factor(),
        distance_shift = 0.0

        self._paths = []

        for path in paths:
            qpoints, distances = _get_band_qpoints(path[0],
                                                   path[1],
                                                   rec_vectors,
                                                   num_points=num_points)
            gruneisen.set_qpoints(qpoints)
            gamma = gruneisen.get_gruneisen()
            eigenvalues = gruneisen.get_eigenvalues()
            frequencies = np.sqrt(
                abs(eigenvalues)) * np.sign(eigenvalues) * factor

            distances_with_shift = distances + distance_shift

            self._paths.append([
                qpoints, distances, gamma, eigenvalues, frequencies,
                distances_with_shift
            ])

            distance_shift = distances_with_shift[-1]
Beispiel #6
0
 def __init__(self,
              phonon,
              phonon_plus,
              phonon_minus,
              mesh,
              grid_shift=None,
              is_gamma_center=False,
              symprec=1e-5):
     self._mesh = mesh
     self._factor = phonon.get_unit_conversion_factor(),
     primitive = phonon.get_primitive()
     gruneisen = Gruneisen(phonon.get_dynamical_matrix(),
                           phonon_plus.get_dynamical_matrix(),
                           phonon_minus.get_dynamical_matrix(),
                           primitive.get_volume(),
                           phonon_plus.get_primitive().get_volume(),
                           phonon_minus.get_primitive().get_volume())
     self._qpoints, self._weights = get_qpoints(self._mesh,
                                                primitive,
                                                grid_shift,
                                                is_gamma_center,
                                                symprec=symprec)
     gruneisen.set_qpoints(self._qpoints)
     self._gamma = gruneisen.get_gruneisen()
     self._eigenvalues = gruneisen.get_eigenvalues()
     self._frequencies = np.sqrt(abs(self._eigenvalues)) * np.sign(
         self._eigenvalues) * self._factor