In order to support a wide range of applications (and to build complex assemblies) there are a few different types of material that can be utilised in easyreflectometry. These can include constraints or enabel the user to define the material based on chemical or physical properties. Full API documentation for the easyreflectometry.sample.elements.material mdoule is also available, but here we will give some simple uses for them.


The simplest type of material that is available is the Material. This allows the user to define a single type of material, with a real and imaginary component to the scattering length density. The construction of a Material is achieved as shown below.

from easyreflectometry.sample import Material

boron = Material(

The above object will have the properties of sld and isld, which will have values of 6.908 1 / angstrom ** 2 and -0.278 1 / angstrom ** 2 respectively. As is shown in the tutorials, a material can be used to construct a Layer from which slab models are created.


In addition to defining a material by its scattering length density, it may be useful to define a material by the mass density and chemical formula. This is possible with the MaterialDensity material type, which uses the scattering length and atomic mass from the chemical formula and the density to determine the scattering length density. It is then possible to vary the density, which defines the scattering length density in turn. The MaterialDensity material can be create as follows.

from easyreflectometry.sample import MaterialDensity

chemical_structure = 'SiO2'
si = MaterialDensity(
    name='SiO2 Material'

The density should be in units of grams per cubic centimeter and the scattering length is calculated from 'SiO2'.


Sometimes it is desirable to have a layer that consists of a material and a solvent in some ratio. An example of this is shown in the solvation tutorial, where a polymer film solvated with D2O is modelled. To produce a material that is described by such a mixture, there is MaterialSolvated. This is constructed from two constituent Materials and the fractional amount of the material in the solvent. So to produce a MaterialSolvated that is 20 % D2O in a polymer, the following is used.

from easyreflectometry.sample import Material
from easyreflectometry.sample import MaterialSolvated

polymer = Material(
d2o = Material(

solvated_polymer = MaterialSolvated(
    name='Solvated Polymer'

For the solvated_polymer object, the sld will be 2.872 1 / angstrom ** 2 (the weighted average of the two scattering length densities). The MaterialSolvated includes a constraint such that if the value of either constituent scattering length densities (both real and imaginary components) or the fraction changes, then the resulting material sld and isld will change appropriately.