Reflection and transmission coefficients and wave function, zero order diffraction

New in version 0.9.1.

This module is a collection of functors to calculate Reflection and Transmission coefficients and scattering wave function inside multilayer samples. The calculation is made by means of matrix formalism and is valid for non-polarized neutrons and X-rays.

Functors provided by this module can be used for modelling of grazing incidence small angle scattering, standing waves applications, like searching of resonance conditions or emission of Gammas, etc.

escape.scattering.reftrans.reftrans_rm(name, p0, multilayer_obj ml, layidx, source=None)

Method for creating a functor to calculate the Fresnel reflection coefficient inside a layer with the index Layidx. The layer index starts with 0 for the air/sample interface and ends at N+1, where N is the number of layers in the ml sample.

New in version 0.9.1.

layers with gradients.

Parameters:
p0: variable_obj or functor_obj

Variable or functor, which represents z-component of wave vector

ml: multilayer_obj

Sample description object

‘layidx’: int or int_setting_obj

Index of the layer

source: source_obj

Source description object

Returns:

cplx_functor_obj instance

escape.scattering.reftrans.reftrans_tm(name, p0, multilayer_obj ml, layidx, source=None)

Method for creating a functor to calculate the Fresnel transmission coefficient inside a layer with the index Layidx. The layer index starts with 0 for the air/sample interface and ends at N+1, where N is the number of layers in the ml sample.

New in version 0.9.1.

layers with gradients.

Parameters:
p0: variable_obj or functor_obj

Variable or functor, which represents z-component of wave vector

ml: multilayer_obj

Sample description object

Layidx: int or int_setting_obj

Index of the layer

source: source_obj

Source description object

Returns:

cplx_functor_obj instance

escape.scattering.reftrans.reftrans_kz(name, p0, multilayer_obj ml, layidx, source=None)

Method for creating a functor to calculate the transverse component of the wave-vector inside a layer with the index Layidx. The layer index starts with 0 for the air/sample interface and ends at N+1, where N is the number of layers in the ml sample.

New in version 0.9.1.

layers with gradients.

Parameters:
p0: variable_obj or functor_obj

Variable or functor, which represents z-component of wave vector

ml: multilayer_obj

Sample description object

Layidx: int or int_setting_obj

Index of the layer

source: source_obj

Source description object

Returns:

cplx_functor_obj instance

escape.scattering.reftrans.reftrans_wf(name, p0, z, multilayer_obj ml, source=None)

Method for creating a functor to calculate the wave-function in the sample ml for given transverse wave-vector component p0 in vacuum and z coordinate inside the sample.

Z-axis is normal to sample surface and directed inside the multilayer with 0 at the ait/layer1 interface. The wave function is calculated using the following equation:

\(\psi(p0, z) = T_m\exp(ip_m(z-z_m))+R_m\exp(-ip_m(z-z_m))\),

where \(p_m\) - Z-component of wave-vector inside layer ‘m’, \(z_m\) - z - coordinate of the bottom interface of layer ‘m’ \(T_m\), \(R_m\) - Fresnel coefficients inside layer ‘m’

The corresponding layer ‘m’ is found using value of Z coordinate.

New in version 0.9.1.

Parameters:
p0: variable_obj or functor_obj

Variable or functor, which represents z-component of wave vector

ml: multilayer_obj

Sample description object

source: source_obj

Source description object

Returns:

cplx_functor_obj instance