Esempio n. 1
0
    def specular_reflection_matrix(self, frequency, eps_1, eps_2, mu1, npol):
        """compute the reflection coefficients for an array of incidence angles (given by their cosine)
           in medium 1. Medium 2 is where the beam is transmitted.

        :param eps_1: permittivity of the medium where the incident beam is propagating.
        :param eps_2: permittivity of the other medium.
        :param mu1: array of cosine of incident angles.
        :param npol: number of polarization.

        :return: the reflection matrix
"""

        return fresnel_reflection_matrix(eps_1, eps_2, mu1, npol)
Esempio n. 2
0
    def specular_reflection_matrix(self, frequency, eps_1, eps_2, mu1, npol):
        """compute the reflection coefficients for an array of incidence angles (given by their cosine)
           in medium 1. Medium 2 is where the beam is transmitted.

        :param eps_1: permittivity of the medium where the incident beam is propagating.
        :param eps_2: permittivity of the other medium
        :param mu1: array of cosine of incident angles
        :param npol: number of polarization

        :return: the reflection matrix
"""
        k2 = (2 * np.pi * frequency / C_SPEED) ** 2 * abs2(eps_1)
        return fresnel_reflection_matrix(eps_1, eps_2, mu1, npol) * np.exp(-4 * k2 * self.roughness_rms**2 * mu1**2)    # Eq: 2.1.94 in Tsang 2001 Tome I
Esempio n. 3
0
    def specular_reflection_matrix(self, npol, frequency, eps_1, mu1,
                                   compute_coherent_only):
        """compute the specular reflection coefficients for an array of incidence angles (given by their cosine)
           in medium 1. Medium 2 is where the beam is transmitted.

        :param npol: number of polarization
        :param eps_1: permittivity of the medium where the incident beam is coming from.
        :param mu1: array of cosine of incident angles

        :return: the reflection matrix
"""
        eps_2 = self.permittivity(frequency)

        return fresnel_reflection_matrix(npol, eps_1, eps_2, mu1)
Esempio n. 4
0
    def specular_reflection_matrix(self, frequency, eps_1, mu1, npol):

        eps_2 = self.permittivity(frequency)

        reflection_coefficients = fresnel_reflection_matrix(
            eps_1, eps_2, mu1, npol)

        self.adjust(reflection_coefficients[1], reflection_coefficients[0],
                    mu1)

        if npol >= 3:
            # don't modify the third compoment... this is an approximation, as the third component should be affected by the roughness...
            # don't use this model for active mode
            pass
        if npol == 4:
            raise NotImplementedError(
                "to be implemented, the matrix is not diagonal anymore")

        return reflection_coefficients
Esempio n. 5
0
    def specular_reflection_matrix(self,
                                   frequency,
                                   eps_1,
                                   mu1,
                                   npol,
                                   compute_coherent_only=False):

        eps_2 = self.permittivity(frequency)

        reflection_coefficients = fresnel_reflection_matrix(
            eps_1, eps_2, mu1, npol, return_as_diagonal=True)

        self.adjust(reflection_coefficients[1::npol],
                    reflection_coefficients[0::npol], frequency, eps_1, mu1)

        if npol >= 3:
            # don't modify the third compoment... this is an approximation, as the third component should be affected by the roughness...
            # don't use this model for active mode
            pass
        if npol == 4:
            raise NotImplementedError(
                "to be implemented, the matrix is not diagonal anymore")

        return scipy.sparse.diags(reflection_coefficients, 0)