Crystal and amorphous materials¶
The escape.scattering.material module provides methods to create instances of material_obj for two types of materials: amorphous and crystal.
- escape.scattering.material.unitcell(name, a, b, c, adeg, bdeg, gdeg)¶
Returns unitcell object for crystal material. Any physical property of unitcell can be a functor representing a gradient change of this property. This functor should be a function of one variable, which will take values in the range of [0; 1].
- Returns:
Instance of unitcell_obj
- escape.scattering.material.strained_unitcell(name, strain, unitcell_obj refucell)¶
Returns strained unitcell object for crystal material. Strain can be also a functor representing a gradient change of strain in depth. This functor should be a function of one variable, which will take values in the range of [0; 1].
- Parameters:
- strain: parameter_obj, double or functor_obj
Strain parameter
- ‘refucell’: unitcell_obj
Reference unitcell obj, normally substrate.
- Returns:
Instance of unitcell_obj
- escape.scattering.material.amorphous(name, sld0_re, sld0_im, sldm=None, zvar=None, numslices=None)¶
Returns amorphous material object. SLDs arguments can have a parameter_obj/value type or can be functors representing a gradient change of the corresponding property with z(depth)-variable or property which depends on wave vector components. In the former case z-variable must be provided togehter with a number of gradient slices.
- Parameters:
- sld0_re: parameter_obj, double value or functor_obj
Scattering length density, real part
- sld0_im: parameter_obj, double value or functor_obj
Scattering length density, imaginary (absorption) part
- sldm: parameter_obj, double value or functor_obj
Magnetic scattering length density
- zvar: variable_obj
Variable which indicates Z-axis, i.e. normal to the sample surface This variable should be in the domains of all provided functors. Internally it will take values in the range from 0 to 1, indicating upper and lower interfaces of the gradient layer.
- numslices: positive integer
Number of slices for all gradient arguments
- Returns:
instance of material_obj
- escape.scattering.material.crystal(name, sld0_re, sld0_im, sldh_re, sldh_im, sldh_phd, sldm=None, unitcell_obj ucell=None, numslices=None)¶
Returns crystal material object. Any physical property of material can be a functor representing a gradient change of this property. This functor should be a function of one variable, which will take values in the range of [0; 1].
- Parameters:
- sld0_re: parameter_obj, double value or functor_obj
Scattering length density, real part
- sld0_im: parameter_obj, double value or functor_obj
Scattering length density, imaginary (absorption) part
- sldh_re: parameter_obj, double value or functor_obj
An absolute value of a real part of the Bragg diffraction susceptibility multiplied by \(\pi/\lambda^2\)
- sldh_im: parameter_obj, double value or functor_obj
An absolute value of an imaginary part of the Bragg diffraction susceptibility multiplied by \(\pi/\lambda^2\)
- ‘sldh_phd’: double value
Phase difference / \(\pi\) between sldh_re and sldh_im
- sldm: parameter_obj, double value or functor_obj
Magnetic scattering length density
- ‘ucell’: unitcell_obj
Unicell object
- ‘numslices’: positive integer
Number of slices for all gradient properties
- Returns:
instance of material_obj
- class escape.scattering.material.unitcell_obj¶
Container for unitcell parameters.
- name¶
- Returns:
Object name.
- num_of_params¶
- Returns:
Number of parameters.
- parameter(self, size_t i)¶
- class escape.scattering.material.material_obj¶
Container for material parameters. This class can also represent a material with gradient properties. In this case it consist of slices which you can access using ‘at’ method.
- at(self, size_t idx)¶
- Returns:
Material slice if class instance represent a material with gradient properties.
- name¶
- num_of_params¶
- numslices¶
- Returns:
Number of slices if material has gradient properties.
- parameter(self, size_t i)¶