Phase transitions

SecondOrderTransition profiles with annotated top / bulk / bottom and decay lengths \(\tau_\mathrm{top}\), \(\tau_\mathrm{bottom}\). Drive orientation (\(\gamma\)), Mix composition (\(\phi\)), \(\langle\cos^2\gamma\rangle\), or free optical diagonals (delta_o / delta_e / …) with the same form object.

Shared preamble:

from refloxide.model import MaterialSLD, FreeUniTensor, Mix, ReflectModel
from refloxide.profiles import (
    Diffusion,
    SecondOrderTransition,
    DepthProfile,
    Spline,
    Polynomial,
    CallableField,
    CallableDepthProfile,
)

vac = MaterialSLD("", 0, name="vacuum")(0, 0)
si = MaterialSLD("Si", 2.33, name="si")(0, 3.0)
mat = FreeUniTensor(energies=[284.4], name="film")
mat_a = FreeUniTensor(energies=[284.4], name="a")
mat_b = FreeUniTensor(energies=[284.4], name="b")
mat_c = FreeUniTensor(energies=[284.4], name="c")

Orientation (gamma)

Builder: case_second_order_gamma

eta = SecondOrderTransition(
    thickness=320.0,
    bulk=0.40,
    top=0.15,
    bottom=0.90,
    tau_top=28.0,
    tau_bottom=55.0,
)
layer = DepthProfile(material=mat, thickness=320.0, roughness=2.0, gamma=eta)
stack = vac | layer | si

second-order gamma depth

second-order gamma reflectivity

Composition (phi)

Builder: case_second_order_phi

Same annotated constants, driving Mix volume fraction. Depth/reflectivity use the profile-variant template (\(n_o\)/\(n_e\), birefringence, \(\phi\); sharp | broadened).

eta = SecondOrderTransition(
    thickness=220.0,
    bulk=0.5,
    top=0.9,
    bottom=0.1,
    tau_top=20.0,
    tau_bottom=40.0,
)
layer = DepthProfile(
    material=Mix([mat_a, mat_b], rule="linear"),
    thickness=220.0,
    phi=eta,
)
stack = vac | layer | si

second-order phi depth

second-order phi reflectivity

Order parameter (<cos^2 gamma>)

Builder: case_second_order_cos2

eta = SecondOrderTransition(
    thickness=320.0,
    bulk=0.70,
    top=0.95,
    bottom=0.20,
    tau_top=28.0,
    tau_bottom=55.0,
)
layer = DepthProfile(material=mat, thickness=320.0, cos2_gamma=eta)
stack = vac | layer | si

second-order cos2 depth

second-order cos2 reflectivity

Stacking

Builder: case_second_order_short_stack

Orientation SecondOrderTransition over a homogeneous film whose constant \(\gamma\) equals the bottom pin (\(\gamma_\mathrm{bottom}\)), so the transition settles into that orientation rather than an unrelated slab.

eta = SecondOrderTransition(
    thickness=220.0,
    bulk=0.40,
    top=0.15,
    bottom=0.90,
    tau_top=28.0,
    tau_bottom=55.0,
)
orientation = DepthProfile(material=mat, thickness=220.0, roughness=2.0, gamma=eta)
# Homogeneous film at the same gamma as the bottom pin (lab diagonals via
# the same orientation map as DepthProfile with constant gamma=0.90).
pinned = DepthProfile(material=mat, thickness=120.0, gamma=0.90)
stack = vac | orientation | pinned | si
model = ReflectModel(stack, energies=[284.4], parallel=False)

second-order gamma stack depth

second-order gamma stack reflectivity