reflec_transm

class cemd_metasurf.reflec_transm.reflec_transm.ReTr[source]
calc_rt_kxky(my_bloch=None, ind_ini=0, n=0, m=0)[source]

Calculates the reflectance (R) and transmitance (T) for a transverse electric (TE) or transverse magnetic (TM) incoming plane wave at all Bloch waves stored in array_k_gb.

If a my_bloch is given, R and T will be calculated over this values, by calculating first the depolarization Green function (gb). Consider that in this case, the value of ind_ini is set to the size of the previous self.array_k_gb.shape, in order of only calculating R and T for the given my_bloch. Also, clear.array_k_rt() and clear.array_k_gb() are called at the end if my_bloch is given.

The values are stored in “array_k_rt”, with dimension along “axis = 1” (columns) are:
  1. k

  2. kx

  3. ky

  4. n

  5. m

  6. r_tm

  7. r_te

  8. t_tm

  9. t_te

Parameters:
  • my_bloch (classes.BlochWavevector) – The object with the information of the wavevectos. By default it is not needed, using the wavevetors stored in self.array_k_gb. If a my_bloch is used, R and T would be calculated over these values.

  • ind_ini (Int) – From which value of the stored gb start to calculate R and T (try to generilized to a range). Only used is “my_bloch = None”.

  • n (Int) – Diffractive order along x-axis.

  • m (Int) – Diffractive order along the other axis defined by the lattice.

clear_array_k_rt()[source]

Clear the stored reflectance and transmitance.

clean_array_k_rt()[source]

Clean the stored reflectance and transmitance. Remove repeted rows and sort by k -> kx -> ky -> n -> m.

get_rt()[source]

Return reflectance and transmitance. For konwing “(k, kx, ky)” and “(n, m)” look self.array_k_rt.

Returns:

tuple with R and T

calc_rt_complex_kxky(my_bloch=None, ind_ini=0)[source]

Calculates the complex specular reflection (r) and transmissio (t) for a transverse electric (TE) or transverse magnetic (TM) incoming plane wave at all Bloch waves stored in array_k_gb.

If a my_bloch is given, r and t will be calculated over this values, by calculating first the depolarization Green function (gb). Consider that in this case, the value of ind_ini is set to the size of the previous self.array_k_gb.shape, in order of only calculating r and t for the given my_bloch. Also, clear.array_k_rt_complex() and clear.array_k_gb() are called at the end if my_bloch is given.

The values are stored in “array_k_rt_complex”, with dimension along “axis = 1” (columns) are:
  1. k

  2. kx

  3. ky

  4. r_tm

  5. r_te

  6. t_tm

  7. t_te

Parameters:
  • my_bloch (classes.BlochWavevector) – The object with the information of the wavevectos. By default it is not needed, using the wavevetors stored in self.array_k_gb. If a my_bloch is used, R and T would be calculated over these values.

  • ind_ini (Int) – From which value of the stored gb start to calculate R and T (try to generilized to a range). Only used is “my_bloch = None”.

  • n – Diffractive order along x-axis.

clear_array_k_rt_complex()[source]

Clear the stored reflectance and transmitance.

clean_array_k_rt_complex()[source]

Clean the stored reflectance and transmitance. Remove repeted rows and sort by k -> kx -> ky.

get_rt_complex()[source]

Return reflectance and transmitance. For konwing “(k, kx, ky)” look self.array_k_rt_complex.

Returns:

tuple with r and t

calc_rt_pol_kxky(my_bloch=None, ind_ini=0, pol_tm=1, pol_te=1j, n=0, m=0)[source]

Calculates the de reflectance (R) and transmitance (T) at all Bloch waves stored in array_k_gb for a incoming plane wave with polarization defiend by the parameters pol_tm and pol_te:

\(\phi_{0} = \phi_{TM}\mathrm{pol_tm} + \phi_{TE}\mathr{pol_te}\).

Thus, by default the incident is a circular polarized wave (pol_tm = 1, pol_te = 1j).

If a my_bloch is given, R and T will be calculated over this values, by calculating first the depolarization Green function (gb). Consider that in this case, the value of ind_ini is set to the size of the previous self.array_k_gb.shape, in order of only calculating R and T for the given my_bloch. Also, clear.array_k_rt_pol() and clear.array_k_gb() are called at the end if my_bloch is given.

The values are stored in “array_k_rt”, with dimension along “axis = 1” (columns) are:
  1. k

  2. kx

  3. ky

  4. pol_tm

  5. pot_te

  6. n

  7. m

  8. r_pol

  9. t_pol

Parameters:
  • my_bloch (classes.BlochWavevector) – The object with the information of the wavevectos. By default it is not needed, using the wavevetors stored in self.array_k_gb. If a my_bloch is used, R and T would be calculated over these values.

  • ind_ini (Int) – From which value of the stored gb start to calculate R and T (try to generilized to a range). Only used is “my_bloch = None”.

  • pol_tm (complex) – TM amplitude.

  • pol_te (complex) – TE amplitude.

  • n (Int) – Diffractive order along x-axis.

  • m (Int) – Diffractive order along the other axis defined by lattice.

clear_array_k_rt_pol()[source]

Clear the stored reflectance and transmitance.

clean_array_k_rt_pol()[source]

Clean the stored reflectance and transmitance. Remove repeted rows and sort by k -> kx -> ky -> pol_tm -> pol_te -> n -> m.

get_rt_pol()[source]

Return reflectance and transmitance. For konwing “(k, kx, ky)”, “(pol_tm, pol_te)” and “(n, m)” look self.array_k_rt_pol.

Returns:

tuple with R and T

Sub-functions

The file rt_functions.py contain all the functions needed to calculate the reflection and tranmision.

List of functions:
  • calc_rt_complex (reflectivity and transmitivity for TE and TM waves)

  • calc_rt (reflectance and transmitance for TE and TM waves)

  • calc_rt_pol (reflectance and transmitance for a given polarization)

cemd_metasurf.reflec_transm.rt_functions.calc_rt_complex(my_metasurface)[source]

Function that calculates complex amplitude specular reflection and transmission (r and t) for TE and TM incidence waves.

Parameters:

my_metasurface (classes.Metasurface) – Vacuum wavevector.

Returns:

array with complex amplitude specular reflection and transmissionat both polarizations

cemd_metasurf.reflec_transm.rt_functions.calc_rt(my_metasurface, n=0, m=0)[source]

Function that calculates reflectance and transmitance (R and T) for TE and TM incidence waves at different diffractive orders.

Parameters:
  • my_metasurface (classes.Metasurface) – Vacuum wavevector.

  • n (int) – Diffractive order along x-axis.

  • m (int) – Diffractive order along the other axis (y-axis for rectangular arrays).

Returns:

array with the reflectance and transmitance at both polarizations.

cemd_metasurf.reflec_transm.rt_functions.calc_rt_pol(my_metasurface, pol_tm=1, pol_te=1j, n=0, m=0)[source]

Function that calculates reflectance and transmitance (R and T) for a given incidence wave at different diffractive orders. By default is a circular polarized wave.

Parameters:
  • my_metasurface (classes.Metasurface) – Vacuum wavevector.

  • pol_tm (complex) – TM amplitude.

  • pol_te (complex) – TE amplitude.

  • n (int) – Diffractive order along x-axis.

  • m (int) – Diffractive order along the other axis (y-axis for rectangular arrays).

Returns:

array with the reflectance and transmitance.