Layers

Layers#

Similar to a range of different materials, there are a few different ways that a layer can be defined in easyreflectometry.

Layer#

The Layer is the simplest possible type of layer, taking a Material and two floats associated with the thickness and upper (that is closer to the source of the incident radiation) roughness. So we construct a Layer as follows for a 100 Å thick layer of boron with a roughness of 10 Å.

from easyreflectometry.sample import Material
from easyreflectometry.sample import Layer

boron = Material(
    sld=6.908,
    isld=-0.278,
    name='Boron'
)
boron_layer = Layer(
    material=boron,
    thickness=100,
    roughness=10,
    name='Boron Layer'
)

This type of layer is used extensively in the tutorials

To create a semi-infinite layer one needs to set the thickness to 0 and the roughness to 0.

from easyreflectometry.sample import Material
from easyreflectometry.sample import Layer

si = Material(
    sld=2.07,
    isld=0,
    name='Si'
)
semi_infinite_layer = Layer(
    material=si,
    thickness=0,
    roughness=0,
    name='Si layer'
)

LayerAreaPerMolecule#

The LayerAreaPerMolecule layer type is the fundation of the SurfactantLayer assemblies type (further information on this can be found in the assemblies library). The purpose of the LayerAreaPerMolecule is to allow a layer to be defined in terms of the chemical formula of the material and the area per molecule of the layer. The area per molecule is a common description of surface density in the surfactant monolayer and bilayer community.

We can construct a 10 Å thick LayerAreaPerMolecule of phosphatidylcholine, with an area per molecule of 48 Å squared and a roughness of 3 Å that has 20 % solvent surface coverage with D2O using the following.

from easyreflectometry.sample import Material
from easyreflectometry.sample import LayerAreaPerMolecule

d2o = Material(
    sld=6.36,
    isld=0,
    name='D2O'
)
molecular_formula = 'C10H18NO8P'
pc = LayerAreaPerMolecule(
    molecular_formula=molecular_formula,
    thickness=10,
    solvent=d2o,
    solvent_fraction=.2,
    area_per_molecule=48,
    roughness=3,
    name='PC Layer'
)

It is expected that the typical user will not interface directly with the LayerAreaPerMolecule assembly type, but instead the SurfactantLayer assemblies library will be used instead.