def tmms(polP1, polP2, polGen, process):
    wlP1 = 700e-9
    wlP2 = 1500e-9
    I0P1 = 1.0
    I0P2 = 2.0
    dValues = {"d11": 1e-12, "d22": 2e-12, "d33": 3e-12, "d12": 4e-12, "d23": 5e-12}
    
    chi2 = LabPy.Chi2Tensor(**dValues)
    prism = LabPy.Material("Static", n = 1.5)
    metal = LabPy.Material("main/Ag/Johnson")
    crystal = LabPy.Material("special/gaussian_test")
    dielectric = LabPy.Material("Static", n = 1.0)
    crystalD = 1000e-6
    metalD = 5e-9
    
    tmmPy = LabPy.SecondOrderNLTmm(wlP1 = wlP1, wlP2 = wlP2, \
        polP1 = polP1, polP2 = polP2, polGen = polGen, \
        I0P1 = I0P1, I0P2 = I0P2, process = process)
    
    tmmPy.AddLayer(float("inf"), prism)
    tmmPy.AddLayer(metalD, metal)
    tmmPy.AddLayer(crystalD, crystal, chi2)
    tmmPy.AddLayer(float("inf"), dielectric)
    
    # C++
    prismCpp = Material.FromLabPy(prism)
    metalCpp = Material.FromLabPy(metal)
    crystalCpp = Material.FromLabPy(crystal)
    dielectricCpp = Material.FromLabPy(dielectric)
    crystalCpp.chi2.Update(**dValues)
    
    tmmCpp = SecondOrderNLTMM(process)
    tmmCpp.P1.SetParams(wl = wlP1, pol = polP1, I0 = I0P1)
    tmmCpp.P2.SetParams(wl = wlP2, pol = polP2, I0 = I0P2)
    tmmCpp.Gen.SetParams(pol = polGen)
    
    tmmCpp.AddLayer(float("inf"), prismCpp)
    tmmCpp.AddLayer(metalD, metalCpp)
    tmmCpp.AddLayer(crystalD, crystalCpp)
    tmmCpp.AddLayer(float("inf"), dielectricCpp)
    
    return tmmPy, tmmCpp
示例#2
0
def GetTMMs(wl, pol, I0, prism, metal, dielectric, metalD, overrideE0):
    # C++ TMM
    tmmCpp = TMM()
    tmmCpp.SetParams(wl = wl, pol = pol, I0 = I0)
    
    if overrideE0 is not None:
        tmmCpp.SetParams(overrideE0 = True, E0 = overrideE0)
    
    tmmCpp.AddLayer(float("inf"), Material.FromLabPy(prism))
    tmmCpp.AddLayer(metalD, Material.FromLabPy(metal))
    tmmCpp.AddLayer(float("inf"), Material.FromLabPy(dielectric))
    

    # Python TMM
    tmmPy = LabPy._Tmm._NonlinearTmm._NonlinearTmm(wl = wl, pol = pol, I0 = I0, mode = "incident", overrideE0 = overrideE0) # @UndefinedVariable
    tmmPy.AddLayer(float("inf"), prism)
    tmmPy.AddLayer(metalD, metal)
    tmmPy.AddLayer(float("inf"), dielectric)
    tmmPy.SetParams(beta = 0.0)
    
    return tmmCpp, tmmPy
示例#3
0
def chi2s():
    dValues = {
        "d11": 1e-12,
        "d22": 2e-12,
        "d33": 3e-12,
        "d12": 4e-12,
        "d23": 5e-12
    }
    materialCpp = Material.FromLabPy(LabPy.Material("Static", n=1.0))
    chi2Cpp = materialCpp.chi2
    chi2Cpp.Update(**dValues)
    chi2Py = LabPy.Chi2Tensor(**dValues)
    return chi2Cpp, chi2Py
示例#4
0
def materials(request):
    labpyMaterial = LabPy.Material(request.param)
    tmmMaterial = Material.FromLabPy(labpyMaterial)
    return (tmmMaterial, labpyMaterial)