Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
    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