def __init__(self, thickness=0, interface=0, profile=None, tol=1e-3, magnetism=None, name=None, **kw): if not name: name = profile.__name__ if interface != 0: raise NotImplementedError("interface not yet supported") if profile is None: raise TypeError("Need profile") self.name = name self.thickness = Parameter.default(thickness, name=name + " thickness") self.interface = Parameter.default(interface, name=name + " interface") self.profile = profile self.tol = tol self.magnetism = magnetism # TODO: maybe make these lazy (and for magnetism below as well) rho_start = _LayerLimit(self, isend=False, isrho=True) irho_start = _LayerLimit(self, isend=False, isrho=False) rho_end = _LayerLimit(self, isend=True, isrho=True) irho_end = _LayerLimit(self, isend=True, isrho=False) self.start = SLD(name + " start", rho=rho_start, irho=irho_start) self.end = SLD(name + " end", rho=rho_end, irho=irho_end) self._parameters = _set_vars(self, name, profile, kw, self.RESERVED)
''' # Import data package import os import refl1d from refl1d.names import * from refl1d.material import Material, Vacuum, SLD from refl1d.model import Repeat, Slab, Stack, Layer from refl1d.anstodata import ANSTOData, load, Platypus from refl1d.probe import PolarizedNeutronProbe, PolarizedQProbe, PolarizedNeutronQProbe from refl1d.reflectivity import reflectivity, magnetic_reflectivity # Defining Materia LNO = SLD(name='LaNiO3', rho=6.359) LSMO = SLD(name='LaSrMnO3', rho=3.7) STO = SLD(name='SrTiO3', rho=3.54) # Defining Structure # Repeat structure threelayer = LSMO(34.1, 2) | LNO(11.5, 2) onelayer = LSMO(34.1, 2) | LNO(3.85, 2) #Rtriple5Model = STO(0,5) | threelayer*5 | onelayer*5 | threelayer*5 | air Ftriple5Model = STO(0, 1.5) | LSMO(34.1, 2) | LNO(11.5, 2) | LSMO( 34.1, 2) | LNO(11.5, 2) | LSMO(34.1, 2) | LNO(11.5, 2) | LSMO( 34.1, 2) | LNO(11.5, 2) | LSMO(34.1, 2) | LNO(11.5, 2) | LSMO( 34.1, 2) | LNO(3.85, 2) | LSMO(34.1, 2) | LNO(3.85, 2) | LSMO(
def OnInsert(self, event): slab = Slab(SLD(rho=1.0, name="layer"), thickness=100, interface=5) self.stack.insert(self.layer_num, slab) self.set_layer(self.layer_num)