This notebook demonstrates the use of the FunctionalForm
model to describe an exponential increase/decay from one layer to the next. The code in functional.py
can be used as a starting point to change the exponential profile to a different analytic form.
# necessary imports
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from refnx.reflect import Slab, SLD, Structure
from functional import FunctionalForm
# some materials
si = SLD(2.07, 'Si')
poly1 = SLD(2.0, 'poly1')
poly2 = SLD(4.0, 'poly2')
d2o = SLD(6.36, 'd2o')
# increase from one to the other
poly1_l = poly1(100., 3.)
poly2_l = poly2(100., 3.)
ff = FunctionalForm(200., 30., 5., poly1_l, poly2_l)
struct = si | poly1_l| poly2_l | d2o(0, 3)
struct2 = si | poly1_l | ff | poly2_l | d2o(0, 3)
struct2.contract = 1.
plt.plot(*struct.sld_profile())
plt.plot(*struct2.sld_profile());
si = SLD(2.07, 'Si')
poly1 = SLD(4.0, 'poly1')
poly2 = SLD(2.0, 'poly2')
d2o = SLD(6.36, 'd2o')
# decay from one to the other
poly1_l = poly1(100., 3.)
poly2_l = poly2(100., 3.)
ff = FunctionalForm(200., 30., 3., poly1_l, poly2_l)
struct = si | poly1_l| poly2_l | d2o(0, 3)
struct2 = si | poly1_l | ff | poly2_l | d2o(0, 3)
struct2.contract = 1.
plt.plot(*struct.sld_profile())
plt.plot(*struct2.sld_profile());
si = SLD(2.07, 'Si')
poly1 = SLD(3.0, 'poly1')
d2o = SLD(6.36, 'd2o')
# decay to backing solvent
poly1_l = poly1(100., 3.)
d2o_l = d2o(0, 3)
ff = FunctionalForm(200., 30., 5., poly1_l, d2o_l)
struct = si | poly1_l | d2o(0, 3)
struct2 = si | poly1_l | ff | d2o_l
struct2.contract = 1.
plt.plot(*struct.sld_profile())
plt.plot(*struct2.sld_profile());
# use of the `reverse` keyword reverses the slab representation of
# this specific component
si = SLD(2.07, 'Si')
poly1 = SLD(1.0, 'poly1')
poly2 = SLD(4.0, 'poly2')
d2o = SLD(6.36, 'd2o')
# decay from one to the other
poly1_l = poly1(100., 3.)
poly2_l = poly2(100., 3.)
ff = FunctionalForm(200., 30., 3., poly1_l, poly2_l, reverse=True)
struct = si | poly1_l| poly2_l | d2o(0, 3)
struct2 = si | poly1_l | ff | poly2_l | d2o(0, 3)
struct2.contract = 1.
plt.plot(*struct.sld_profile())
plt.plot(*struct2.sld_profile());
# use of the `reverse` keyword reverses the slab representation of
# this specific component
si = SLD(2.07, 'Si')
poly1 = SLD(4.0, 'poly1')
poly2 = SLD(1.5, 'poly2')
d2o = SLD(6.36, 'd2o')
# decay from one to the other
poly1_l = poly1(100., 3.)
poly2_l = poly2(100., 3.)
ff = FunctionalForm(200., 30., 3., poly1_l, poly2_l, reverse=True)
struct = si | poly1_l| poly2_l | d2o(0, 3)
struct2 = si | poly1_l | ff | poly2_l | d2o(0, 3)
struct2.contract = 1.
plt.plot(*struct.sld_profile())
plt.plot(*struct2.sld_profile());