Esempio n. 1
0
    def _op_self(self,
                 waves: np.ndarray,
                 id: int,
                 corr_wave: Optional[np.ndarray] = None) -> np.ndarray:
        """The operator of the Raman effect for the considered wave."""
        square_mod = waves[id] * np.conj(waves[id])

        return (1j * FFT.conv_to_fft(self._h_R_op, square_mod))
Esempio n. 2
0
    def op(self,
           waves: Array[cst.NPFT],
           id: int,
           corr_wave: Optional[Array[cst.NPFT]] = None) -> Array[cst.NPFT]:
        """The non approximated operator of the Raman effect."""
        square_mod = waves[id] * np.conj(waves[id])

        return (1j * FFT.conv_to_fft(self.h_R, square_mod))  #, self._fft_h_R))
Esempio n. 3
0
    def _op_cross(self,
                  waves: np.ndarray,
                  id: int,
                  corr_wave: Optional[np.ndarray] = None) -> np.ndarray:
        """The cross terms of the Raman effect."""
        square_mod = np.zeros(waves[id].shape, dtype=cst.NPFT)
        for i in range(len(waves)):
            if (i != id):
                square_mod += waves[i] * np.conj(waves[i])

        return (1j * FFT.conv_to_fft(self._h_R_op, square_mod))