def _set_c_nac_dynamical_matrix(self, q_red, q, factor): import phonopy._phonopy as phonoc fc = self._bare_force_constants.copy() vectors = self._smallest_vectors mass = self._pcell.get_masses() multiplicity = self._multiplicity size_prim = len(mass) size_super = fc.shape[0] dynamical_matrix_real = np.zeros((size_prim * 3, size_prim * 3), dtype='double') dynamical_matrix_image = np.zeros_like(dynamical_matrix_real) phonoc.nac_dynamical_matrix(dynamical_matrix_real, dynamical_matrix_image, fc, np.array(q_red, dtype='double'), vectors, multiplicity, mass, self._s2p_map, self._p2s_map, np.array(q, dtype='double'), self._born, factor) dm = dynamical_matrix_real + dynamical_matrix_image * 1j self._dynamical_matrix = (dm + dm.conj().transpose()) / 2
def _run_c_Wang_dynamical_matrix(self, q_red, q, factor): import phonopy._phonopy as phonoc fc = self._force_constants vectors = self._smallest_vectors mass = self._pcell.masses multiplicity = self._multiplicity size_prim = len(mass) dm = np.zeros((size_prim * 3, size_prim * 3), dtype=self._dtype_complex) if fc.shape[0] == fc.shape[1]: # full fc phonoc.nac_dynamical_matrix(dm.view(dtype='double'), fc, np.array(q_red, dtype='double'), vectors, multiplicity, mass, self._s2p_map, self._p2s_map, np.array(q, dtype='double'), self._born, factor) else: phonoc.nac_dynamical_matrix( dm.view(dtype='double'), fc, np.array(q_red, dtype='double'), vectors, multiplicity, mass, self._s2pp_map, np.arange(len(self._p2s_map), dtype='intc'), np.array(q, dtype='double'), self._born, factor) self._dynamical_matrix = dm
def _set_c_nac_dynamical_matrix(self, q_red, q, factor): import phonopy._phonopy as phonoc fc = self._bare_force_constants.copy() vectors = self._smallest_vectors mass = self._pcell.get_masses() multiplicity = self._multiplicity size_prim = len(mass) itemsize = self._force_constants.itemsize dm = np.zeros((size_prim * 3, size_prim * 3), dtype=("c%d" % (itemsize * 2))) phonoc.nac_dynamical_matrix(dm.view(dtype='double'), fc, np.array(q_red, dtype='double'), vectors, multiplicity, mass, self._s2p_map, self._p2s_map, np.array(q, dtype='double'), self._born, factor) self._dynamical_matrix = dm
def _set_c_Wang_dynamical_matrix(self, q_red, q, factor): import phonopy._phonopy as phonoc fc = self._force_constants vectors = self._smallest_vectors mass = self._pcell.get_masses() multiplicity = self._multiplicity size_prim = len(mass) itemsize = fc.itemsize dm = np.zeros((size_prim * 3, size_prim * 3), dtype=("c%d" % (itemsize * 2))) if fc.shape[0] == fc.shape[1]: # full fc phonoc.nac_dynamical_matrix(dm.view(dtype='double'), fc, np.array(q_red, dtype='double'), vectors, multiplicity, mass, self._s2p_map, self._p2s_map, np.array(q, dtype='double'), self._born, factor) else: phonoc.nac_dynamical_matrix(dm.view(dtype='double'), fc, np.array(q_red, dtype='double'), vectors, multiplicity, mass, self._s2pp_map, np.arange(len(self._p2s_map), dtype='intc'), np.array(q, dtype='double'), self._born, factor) self._dynamical_matrix = dm
def _set_c_nac_dynamical_matrix(self, q_red, q, factor): import phonopy._phonopy as phonoc fc = self._bare_force_constants.copy() vectors = self._smallest_vectors mass = self._pcell.get_masses() multiplicity = self._multiplicity size_prim = len(mass) itemsize = self._force_constants.itemsize dm = np.zeros((size_prim * 3, size_prim * 3), dtype=("c%d" % (itemsize * 2))) phonoc.nac_dynamical_matrix(dm.view(dtype='double'), fc, np.array(q_red, dtype='double'), vectors, multiplicity, mass, self._s2p_map, self._p2s_map, np.array(q, dtype='double'), self._born, factor) self._dynamical_matrix = dm