Polarized neutrons. Fresnel coefficients and wave function

New in version 0.9.3.

Note

This module is experimental and will be updated in the next versions

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

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.polreftrans.polnreftrans_rm(name, p0, multilayer_obj ml, layidx, b_ext, poleff_i, poleff_f, source=None)

New in version 0.9.3.

Method for creating a functor to calculate the Fresnel reflection operator inside a layer with the index Layidx for the polarization state defined by the signs of poleff_i and poleff_f values. 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.

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

b_ext: list or tuple

External magnetic field components in Tesla. The components are in the sample coordinate system.

poleff_i: double or parameter_obj

Polarization efficiency of the incident beam.

poleff_f: double or parameter_obj

Polarization efficiency of the forthcoming beam.

Returns:

cplx_functor_obj instance

escape.scattering.polreftrans.polnreftrans_tm(name, p0, multilayer_obj ml, layidx, b_ext, poleff_i, poleff_f, source=None)

New in version 0.9.3.

Method which returns a functor instance to calculate the Fresnel transmission coefficient inside a layer with the index Layidx for the polarization state defined by the signs of poleff_i and poleff_f values. 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.

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

b_ext: list or tuple

External magnetic field components in Tesla. The components are in the sample coordinate system.

poleff_i: double or parameter_obj

Polarization efficiency of the incident beam.

poleff_f: double or parameter_obj

Polarization efficiency of the forthcoming beam.

Returns:

cplx_functor_obj instance

escape.scattering.polreftrans.polnreftrans_kz(name, p0, multilayer_obj ml, layidx, b_ext, poleff_i, poleff_f, source=None)

New in version 0.9.3.

Method which returns a functor to calculate the transverse component of the wave-vector inside a layer with the index Layidx for the polarization state defined by the signs of poleff_i and poleff_f values. 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.

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

b_ext: list or tuple

External magnetic field components in Tesla. The components are in the sample coordinate system.

poleff_i: double or parameter_obj

Polarization efficiency of the incident beam.

poleff_f: double or parameter_obj

Polarization efficiency of the forthcoming beam.

Returns:

cplx_functor_obj instance

escape.scattering.polreftrans.polnreftrans_sm(name, p0, z, multilayer_obj ml, b_ext, poleff_i, poleff_f, source=None)

New in version 0.9.3.

Method which returns a functor to calculate the propagation operator components 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 air/layer1 interface. The propagation matrix components are calculated using the following equation

\(\hat{S}(p0, z) = \hat{T}_m\exp(i\hat{p}_m(z-z_m))+\hat{R}_m\exp(-i\hat{p}_m(z-z_m))\),

where \(p_m\) - operator of Z-component of the wave-vector inside layer ‘m’, \(z_m\) - z - coordinate of the bottom interface of layer ‘m’ \(\hat{T}_m\), \(\hat{R}_m\) - Fresnel coefficients operators inside layer ‘m’

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

Parameters:
p0: variable_obj or functor_obj

Variable or functor, which represents transverse component of wave vector

z: variable_obj or functor_obj

Variable or functor, which represents Z-coordinate axis perpendicular to the sample normal.

ml: multilayer_obj

Sample description object

b_ext: list or tuple

External magnetic field components in Tesla. The components are in the sample coordinate system.

poleff_i: double or parameter_obj

Polarization efficiency of the incident beam.

poleff_f: double or parameter_obj

Polarization efficiency of the forthcoming beam.

Returns:

cplx_functor_obj instance

escape.scattering.polreftrans.polnreftrans_pd(name, p0, z, multilayer_obj ml, b_ext, poleff_i, poleff_f, source=None)

New in version 0.9.3.

Method which returns a functor to calculate the position probability density or simply \(\left|\psi(x, y, z)\right|^2\), for 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 air/layer1 interface.

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

Parameters:
p0: variable_obj or functor_obj

Variable or functor, which represents transverse component of wave vector

z: variable_obj or functor_obj

Variable or functor, which represents Z-coordinate axis perpendicular to the sample normal.

ml: multilayer_obj

Sample description object

b_ext: list or tuple

External magnetic field components in Tesla. The components are in the sample coordinate system.

poleff_i: double or parameter_obj

Polarization efficiency of the incident beam.

poleff_f: double or parameter_obj

Polarization efficiency of the forthcoming beam.

Returns:

cplx_functor_obj instance