diff --git a/Sample/Interface/AutocorrelationModels.h b/Sample/Interface/AutocorrelationModels.h index c32d32c70ce55dee53b9a16ed6e043f0faea1dbe..55b269eb0fdc57ee5aff0d1329b9b5e25e131f4e 100644 --- a/Sample/Interface/AutocorrelationModels.h +++ b/Sample/Interface/AutocorrelationModels.h @@ -44,7 +44,7 @@ protected: //! 14472-14478 (1993) class K_CorrelationModel : public AutocorrelationModel { public: - K_CorrelationModel(double sigma = 0, double hurst = 0.7, double lateralCorrLength = 25, + K_CorrelationModel(double sigma, double hurst, double lateralCorrLength, double maxSpatFrequency = 0.5); std::string className() const override { return "K_CorrelationModel"; } std::vector<ParaMeta> parDefs() const final; diff --git a/Sample/Multilayer/Layer.cpp b/Sample/Multilayer/Layer.cpp index 58880f2d976bcecc05d3ef3fd3ddd0083a88615f..555be9f02fe38683f927a73f81963463a891d3c6 100644 --- a/Sample/Multilayer/Layer.cpp +++ b/Sample/Multilayer/Layer.cpp @@ -22,7 +22,7 @@ namespace { LayerRoughness* zeroRoughness() { - K_CorrelationModel autocorr(0); + K_CorrelationModel autocorr(0, 0.7, 25); ErfInterlayer interlayer; return new LayerRoughness(&autocorr, &interlayer); } diff --git a/Sample/StandardSample/FeNiBilayerBuilder.cpp b/Sample/StandardSample/FeNiBilayerBuilder.cpp index c6c161ea610d577c4d9d18bb0fbf1f0298b33e59..ef4c99bc8d6be3634843c8563e9d90f70312cb25 100644 --- a/Sample/StandardSample/FeNiBilayerBuilder.cpp +++ b/Sample/StandardSample/FeNiBilayerBuilder.cpp @@ -110,7 +110,7 @@ std::unique_ptr<Sample> FeNiBilayer::constructSample() auto m_Ni = MaterialBySLD("Ni", sldNi.real(), sldNi.imag()); auto m_Substrate = MaterialBySLD("Au", sldAu.real(), sldAu.imag()); - K_CorrelationModel autocorrelation(sigmaRoughness); + K_CorrelationModel autocorrelation(sigmaRoughness, 0.7, 25); LayerRoughness roughness{&autocorrelation, interlayerModel.get()}; Layer l_Fe{m_Fe, thicknessFe, &roughness}; diff --git a/Sample/StandardSample/MagneticLayersBuilder.cpp b/Sample/StandardSample/MagneticLayersBuilder.cpp index b3da64131ab5426b1ae16a4186db42b62398e86c..4a24d22928ca3d2d15d8e0dcd063ec093e5df8cb 100644 --- a/Sample/StandardSample/MagneticLayersBuilder.cpp +++ b/Sample/StandardSample/MagneticLayersBuilder.cpp @@ -135,7 +135,7 @@ Sample* ExemplarySamples::createSimpleMagneticRotationWithRoughness(const std::s Material substrate_material = RefractiveMaterial("Substrate", 7e-6, 2e-8, substr_field); Material layer_material = RefractiveMaterial("MagLayer", 6e-4, 2e-8, layer_field); - K_CorrelationModel autocorrelation(sigmaRoughness); + K_CorrelationModel autocorrelation(sigmaRoughness, 0.7, 25); auto roughness = LayerRoughness(&autocorrelation, interlayerModel.get()); Layer vacuum_layer(vacuum_material); diff --git a/auto/Examples/fit/specular/Honeycomb_fit.py b/auto/Examples/fit/specular/Honeycomb_fit.py index 4aa383b2c1ed942a086b9b5503ad98e93c56da09..0e3a5e0541c1bab13e68152ef87049169fda2c3d 100755 --- a/auto/Examples/fit/specular/Honeycomb_fit.py +++ b/auto/Examples/fit/specular/Honeycomb_fit.py @@ -8,7 +8,7 @@ data without spin-flip for performance reasons. """ import bornagain as ba, numpy as np, os, matplotlib.pyplot as plt, scipy -from bornagain import angstrom, sample_tools as st +from bornagain import nm, sample_tools as st from bornagain.numpyutil import Arrayf64Converter as dac datadir = os.getenv('BA_DATA_DIR', '') @@ -46,11 +46,11 @@ def get_sample(P, sign, T): interlayer_model = ba.ErfInterlayer() - rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*angstrom) - rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*angstrom) - rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*angstrom) - rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*angstrom) - rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*angstrom) + rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*nm, 0.7, 25*nm) + rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*nm, 0.7, 25*nm) + rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*nm, 0.7, 25*nm) + rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*nm, 0.7, 25*nm) + rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*nm, 0.7, 25*nm) rPyOx = ba.LayerRoughness(rPyOx_autocorr, interlayer_model) rPy2 = ba.LayerRoughness(rPy2_autocorr, interlayer_model) @@ -59,10 +59,10 @@ def get_sample(P, sign, T): rSi = ba.LayerRoughness(rSi_autocorr, interlayer_model) l_Air = ba.Layer(material_Air) - l_PyOx = ba.Layer(material_PyOx, P["t_PyOx"]*angstrom, rPyOx) - l_Py2 = ba.Layer(material_Py2, P["t_Py2"]*angstrom, rPy2) - l_Py1 = ba.Layer(material_Py1, P["t_Py1"]*angstrom, rPy1) - l_SiO2 = ba.Layer(material_SiO2, P["t_SiO2"]*angstrom, rSiO2) + l_PyOx = ba.Layer(material_PyOx, P["t_PyOx"]*nm, rPyOx) + l_Py2 = ba.Layer(material_Py2, P["t_Py2"]*nm, rPy2) + l_Py1 = ba.Layer(material_Py1, P["t_Py1"]*nm, rPy1) + l_SiO2 = ba.Layer(material_SiO2, P["t_SiO2"]*nm, rSiO2) l_Si = ba.Layer(material_Si, rSi) sample = ba.Sample() @@ -164,10 +164,10 @@ if __name__ == '__main__': # We start with rather good values so that the example takes not too much time startPnB = { "intensity": (0.5, 0.4, 0.6), - "t_PyOx": (77, 60, 100), - "t_Py2": (56, 46, 66), - "t_Py1": (56, 46, 66), - "t_SiO2": (22, 15, 29), + "t_PyOx": (7.7, 6.0, 10.0), + "t_Py2": (5.6, 4.6, 6.6), + "t_Py1": (5.6, 4.6, 6.6), + "t_SiO2": (2.2, 1.5, 2.9), } # For fixed parameters, bounds are ignored. We leave them here just @@ -185,11 +185,11 @@ if __name__ == '__main__': "sld_PyOx_real": (1.995, 1.92, 2.07), "sld_Py2_real": (5, 4.7, 5.3), "sld_Py1_real": (4.62, 4.32, 4.92), - "rPyOx": (27, 15, 35), - "rPy2": (12, 2, 20), - "rPy1": (12, 2, 20), - "rSiO2": (15, 5, 25), - "rSi": (15, 5, 25), + "rPyOx": (2.7, 1.5, 3.5), + "rPy2": (1.2, .2, 2.0), + "rPy1": (1.2, .2, 2.0), + "rSiO2": (1.5, .5, 2.5), + "rSi": (1.5, .5, 2.5), "msld_PyOx": (0.25, 0, 1), "msld_Py2": (0.63, 0, 1), "msld_Py1": (0.64, 0, 1), diff --git a/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py b/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py index 620160d0ad1baa63fefb3d1d90ba32ec9b1cdc95..7b90a24fbd198fb8b5c896958725f0517c52edca 100755 --- a/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py +++ b/auto/Examples/fit/specular/PolarizedSpinAsymmetry.py @@ -12,7 +12,7 @@ demonstration without the magnetically dead layer. import os import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from bornagain.numpyutil import Arrayf64Converter as dac # q-range on which the simulation and fitting are to be performed @@ -46,8 +46,8 @@ def get_sample(P): material_layer = ba.MaterialBySLD("(Mg,Al,Fe)3O4", P["rho_Mafo"]*1e-6, 0, B) material_substrate = ba.MaterialBySLD("MgAl2O4", *sldMao) - r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom) - r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom) + r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*nm, 0.7, 25*nm) + r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() @@ -55,7 +55,7 @@ def get_sample(P): r_substrate = ba.LayerRoughness(r_substrate_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom, r_Mafo) + layer = ba.Layer(material_layer, P["t_Mafo"]*nm, r_Mafo) substrate_layer = ba.Layer(material_substrate, r_substrate) sample = ba.Sample() @@ -200,9 +200,9 @@ if __name__ == '__main__': 'q_offset': 7.971243487467318e-05, 'rho_Mafo': 6.370140108715461, 'rhoM_Mafo': 0.27399566816062926, - 't_Mafo': 137.46913056084736, - 'r_Mao': 8.60487712674644, - 'r_Mafo': 3.7844265311293483 + 't_Mafo': 13.746913056084736, + 'r_Mao': 0.860487712674644, + 'r_Mafo': 0.37844265311293483 } def run_Simulation_pp(qzs, P): diff --git a/auto/Examples/fit/specular/PolarizedSpinAsymmetryFit.py b/auto/Examples/fit/specular/PolarizedSpinAsymmetryFit.py index 12abd08485d1dd3797a6e0bb533491acab1f5f4a..1102cf911bc4c38bfb10a0af2fdf09c9fae92a90 100755 --- a/auto/Examples/fit/specular/PolarizedSpinAsymmetryFit.py +++ b/auto/Examples/fit/specular/PolarizedSpinAsymmetryFit.py @@ -58,9 +58,9 @@ if __name__ == '__main__': "q_offset": (0, -0.002, 0.002), "rho_Mafo": (6.3649, 2, 7), "rhoM_Mafo": (0, 0, 2), - "t_Mafo": (150, 60, 180), - "r_Mao": (1, 0, 12), - "r_Mafo": (1, 0, 12), + "t_Mafo": (15, 6, 18), + "r_Mao": (0.1, 0, 1.2), + "r_Mafo": (0.1, 0, 1.2), } PInitial = {d: v[0] for d, v in startParams.items()} diff --git a/auto/Examples/fit/specular/Pt_layer_fit.py b/auto/Examples/fit/specular/Pt_layer_fit.py index 56edceb5767bfb368b769abcf00228f28b44c466..4a3abd3db4445aee4a1c6a33e8eac9d28eb0ea0b 100755 --- a/auto/Examples/fit/specular/Pt_layer_fit.py +++ b/auto/Examples/fit/specular/Pt_layer_fit.py @@ -9,7 +9,7 @@ band of roughly 4-7 Ã… in 100 steps of 2theta. """ import bornagain as ba, numpy as np, os, matplotlib.pyplot as plt -from bornagain import angstrom +from bornagain import nm from bornagain.numpyutil import Arrayf64Converter as dac datadir = os.getenv('BA_DATA_DIR', '') @@ -32,14 +32,14 @@ def get_sample(P): interlayer = ba.TanhInterlayer() - si_autocorr = ba.K_CorrelationModel(P["r_si/nm"]) - pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"]) + si_autocorr = ba.K_CorrelationModel(P["r_si/nm"]*nm, 0.7, 25*nm) + pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"]*nm, 0.7, 25*nm) r_si = ba.LayerRoughness(si_autocorr, interlayer) r_pt = ba.LayerRoughness(pt_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_pt/nm"], r_pt) + layer = ba.Layer(material_layer, P["t_pt/nm"]*nm, r_pt) substrate_layer = ba.Layer(material_substrate, r_si) sample = ba.Sample() diff --git a/auto/Examples/fit/specular/TREFF_Ni_film.py b/auto/Examples/fit/specular/TREFF_Ni_film.py index 2a613fc1e434cd2a59e9fc3eab7612eba34e25c0..682511f59b1750a1f210003649367ae4e87f4a77 100755 --- a/auto/Examples/fit/specular/TREFF_Ni_film.py +++ b/auto/Examples/fit/specular/TREFF_Ni_film.py @@ -28,10 +28,10 @@ def get_sample(P): # Layers and interfaces interlayer = ba.TanhInterlayer() - Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"]) + Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"], 0.7, 25*nm) roughness_Ni = ba.LayerRoughness(Ni_autocorr, interlayer) - sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"]) + sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"], 0.7, 25*nm) roughness_Substrate = ba.LayerRoughness(sub_autocorr, interlayer) layer_Ni = ba.Layer(material_Ni_58, P["thickness"], roughness_Ni) diff --git a/auto/Examples/specular/MagneticLayerImperfect.py b/auto/Examples/specular/MagneticLayerImperfect.py index 918c4dca34c1c063cb03ee9ec6041aed7c4b1ee8..2b5abd8bdfaef3a1393bccf493f7b1fda98cee62 100755 --- a/auto/Examples/specular/MagneticLayerImperfect.py +++ b/auto/Examples/specular/MagneticLayerImperfect.py @@ -6,7 +6,7 @@ similar to Devishvili et al., Rev. Sci. Instrum. 84, 025112 (2013). """ import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from math import sin, cos def get_sample(): @@ -19,14 +19,14 @@ def get_sample(): material_Fe = ba.MaterialBySLD("Fe", 8.0241e-06, 6.0448e-10, B) material_substrate = ba.MaterialBySLD("MgO", 5.9803e-06, 9.3996e-12) - autocorr = ba.K_CorrelationModel(20*angstrom) + autocorr = ba.K_CorrelationModel(2*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() roughness = ba.LayerRoughness(autocorr, interlayer) # Layers layer_vacuum = ba.Layer(vacuum) - layer_Pd = ba.Layer(material_Pd, 120*angstrom, roughness) - layer_Fe = ba.Layer(material_Fe, 1000*angstrom, roughness) + layer_Pd = ba.Layer(material_Pd, 12*nm, roughness) + layer_Fe = ba.Layer(material_Fe, 100*nm, roughness) layer_substrate = ba.Layer(material_substrate, roughness) # Multilayer diff --git a/auto/Examples/specular/PolarizedSpinAsymmetry.py b/auto/Examples/specular/PolarizedSpinAsymmetry.py index 2410578dc111e8b6cc22a6dc494a24d9ed5c6ce5..0e0261ae2f0ef008559241ac540ce101e423c329 100755 --- a/auto/Examples/specular/PolarizedSpinAsymmetry.py +++ b/auto/Examples/specular/PolarizedSpinAsymmetry.py @@ -12,7 +12,7 @@ demonstration without the magnetically dead layer. import os import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from bornagain.numpyutil import Arrayf64Converter as dac @@ -47,8 +47,8 @@ def get_sample(P): material_layer = ba.MaterialBySLD("(Mg,Al,Fe)3O4", P["rho_Mafo"]*1e-6, 0, B) material_substrate = ba.MaterialBySLD("MgAl2O4", *sldMao) - r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom) - r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom) + r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*nm, 0.7, 25*nm) + r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() @@ -56,7 +56,7 @@ def get_sample(P): r_substrate = ba.LayerRoughness(r_sub_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom, r_Mafo) + layer = ba.Layer(material_layer, P["t_Mafo"]*nm, r_Mafo) substrate_layer = ba.Layer(material_substrate, r_substrate) sample = ba.Sample() @@ -201,9 +201,9 @@ if __name__ == '__main__': 'q_offset': 7.971243487467318e-05, 'rho_Mafo': 6.370140108715461, 'rhoM_Mafo': 0.27399566816062926, - 't_Mafo': 137.46913056084736, - 'r_Mao': 8.60487712674644, - 'r_Mafo': 3.7844265311293483 + 't_Mafo': 13.746913056084736, + 'r_Mao': 0.860487712674644, + 'r_Mafo': 0.37844265311293483 } def run_Simulation_pp(qzs, P): diff --git a/auto/Examples/specular/RoughnessModel.py b/auto/Examples/specular/RoughnessModel.py index df5342a2bc9a96ea283ee2da81dde4dc86e58cc0..745a79a7fbc4afb5344e4015e19a7c81c21c775f 100755 --- a/auto/Examples/specular/RoughnessModel.py +++ b/auto/Examples/specular/RoughnessModel.py @@ -5,7 +5,7 @@ tanh and Nevot-Croce roughness model using BornAgain. """ import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg +from bornagain import angstrom, nm, ba_plot as bp, deg def get_sample(interlayer): @@ -16,13 +16,13 @@ def get_sample(interlayer): material_substrate = ba.MaterialBySLD("SiSubstrate", 2.0704e-06, 0) # Roughness - autocorr = ba.K_CorrelationModel(10*angstrom) + autocorr = ba.K_CorrelationModel(1*nm, 0.7, 25*nm) roughness = ba.LayerRoughness(autocorr, interlayer) # create layers ambient_layer = ba.Layer(vacuum) - ti_layer = ba.Layer(material_ti, 30*angstrom, roughness) - ni_layer = ba.Layer(material_ni, 70*angstrom, roughness) + ti_layer = ba.Layer(material_ti, 3*nm, roughness) + ni_layer = ba.Layer(material_ni, 7*nm, roughness) substrate_layer = ba.Layer(material_substrate, roughness) # create periodic stack diff --git a/auto/Examples/specular/SpecularSimulationWithRoughness.py b/auto/Examples/specular/SpecularSimulationWithRoughness.py index 845bd4f47ee372dd159e78bc4b4b0f9a43465248..ea29ced604bfdc1a586ef62bcdb4a0339a4c6d1d 100755 --- a/auto/Examples/specular/SpecularSimulationWithRoughness.py +++ b/auto/Examples/specular/SpecularSimulationWithRoughness.py @@ -5,7 +5,7 @@ with a rough sample using BornAgain. """ import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, nm +from bornagain import nm, ba_plot as bp, deg, nm def get_sample(): @@ -16,14 +16,14 @@ def get_sample(): material_substrate = ba.MaterialBySLD("SiSubstrate", 2.0704e-06, 0) # roughness - autocorr = ba.K_CorrelationModel(1*nm) + autocorr = ba.K_CorrelationModel(1*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() roughness = ba.LayerRoughness(autocorr, interlayer) # Layers ambient_layer = ba.Layer(vacuum) - ti_layer = ba.Layer(material_ti, 30*angstrom, roughness) - ni_layer = ba.Layer(material_ni, 70*angstrom, roughness) + ti_layer = ba.Layer(material_ti, 3*nm, roughness) + ni_layer = ba.Layer(material_ni, 7*nm, roughness) substrate_layer = ba.Layer(material_substrate, roughness) # Periodic stack @@ -44,7 +44,7 @@ def get_sample(): def get_simulation(sample): n = 500 scan = ba.AlphaScan(n, 2*deg/n, 2*deg) - scan.setWavelength(1.54*angstrom) + scan.setWavelength(0.154*nm) return ba.SpecularSimulation(scan, sample) diff --git a/auto/FigExamples/fit/specular/Honeycomb_fit.py b/auto/FigExamples/fit/specular/Honeycomb_fit.py index fee2317e0356eac81bd6a69f13c2d80a43535aa4..fe04348a1e4b6a2deda9f3cba43f2c4f355d4ac5 100755 --- a/auto/FigExamples/fit/specular/Honeycomb_fit.py +++ b/auto/FigExamples/fit/specular/Honeycomb_fit.py @@ -8,7 +8,7 @@ data without spin-flip for performance reasons. """ import bornagain as ba, numpy as np, os, matplotlib.pyplot as plt, scipy -from bornagain import angstrom, sample_tools as st +from bornagain import nm, sample_tools as st from bornagain.numpyutil import Arrayf64Converter as dac datadir = os.getenv('BA_DATA_DIR', '') @@ -46,11 +46,11 @@ def get_sample(P, sign, T): interlayer_model = ba.ErfInterlayer() - rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*angstrom) - rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*angstrom) - rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*angstrom) - rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*angstrom) - rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*angstrom) + rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*nm, 0.7, 25*nm) + rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*nm, 0.7, 25*nm) + rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*nm, 0.7, 25*nm) + rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*nm, 0.7, 25*nm) + rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*nm, 0.7, 25*nm) rPyOx = ba.LayerRoughness(rPyOx_autocorr, interlayer_model) rPy2 = ba.LayerRoughness(rPy2_autocorr, interlayer_model) @@ -59,10 +59,10 @@ def get_sample(P, sign, T): rSi = ba.LayerRoughness(rSi_autocorr, interlayer_model) l_Air = ba.Layer(material_Air) - l_PyOx = ba.Layer(material_PyOx, P["t_PyOx"]*angstrom, rPyOx) - l_Py2 = ba.Layer(material_Py2, P["t_Py2"]*angstrom, rPy2) - l_Py1 = ba.Layer(material_Py1, P["t_Py1"]*angstrom, rPy1) - l_SiO2 = ba.Layer(material_SiO2, P["t_SiO2"]*angstrom, rSiO2) + l_PyOx = ba.Layer(material_PyOx, P["t_PyOx"]*nm, rPyOx) + l_Py2 = ba.Layer(material_Py2, P["t_Py2"]*nm, rPy2) + l_Py1 = ba.Layer(material_Py1, P["t_Py1"]*nm, rPy1) + l_SiO2 = ba.Layer(material_SiO2, P["t_SiO2"]*nm, rSiO2) l_Si = ba.Layer(material_Si, rSi) sample = ba.Sample() @@ -162,10 +162,10 @@ if __name__ == '__main__': # We start with rather good values so that the example takes not too much time startPnB = { "intensity": (0.5, 0.4, 0.6), - "t_PyOx": (77, 60, 100), - "t_Py2": (56, 46, 66), - "t_Py1": (56, 46, 66), - "t_SiO2": (22, 15, 29), + "t_PyOx": (7.7, 6.0, 10.0), + "t_Py2": (5.6, 4.6, 6.6), + "t_Py1": (5.6, 4.6, 6.6), + "t_SiO2": (2.2, 1.5, 2.9), } # For fixed parameters, bounds are ignored. We leave them here just @@ -183,11 +183,11 @@ if __name__ == '__main__': "sld_PyOx_real": (1.995, 1.92, 2.07), "sld_Py2_real": (5, 4.7, 5.3), "sld_Py1_real": (4.62, 4.32, 4.92), - "rPyOx": (27, 15, 35), - "rPy2": (12, 2, 20), - "rPy1": (12, 2, 20), - "rSiO2": (15, 5, 25), - "rSi": (15, 5, 25), + "rPyOx": (2.7, 1.5, 3.5), + "rPy2": (1.2, .2, 2.0), + "rPy1": (1.2, .2, 2.0), + "rSiO2": (1.5, .5, 2.5), + "rSi": (1.5, .5, 2.5), "msld_PyOx": (0.25, 0, 1), "msld_Py2": (0.63, 0, 1), "msld_Py1": (0.64, 0, 1), diff --git a/auto/FigExamples/fit/specular/PolarizedSpinAsymmetry.py b/auto/FigExamples/fit/specular/PolarizedSpinAsymmetry.py index b80b6280d028b83839cfed34f9f77dca3cfe6766..86c264e9b68c1e19ec10ec307628fd7c822dbba7 100755 --- a/auto/FigExamples/fit/specular/PolarizedSpinAsymmetry.py +++ b/auto/FigExamples/fit/specular/PolarizedSpinAsymmetry.py @@ -12,7 +12,7 @@ demonstration without the magnetically dead layer. import os import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from bornagain.numpyutil import Arrayf64Converter as dac # q-range on which the simulation and fitting are to be performed @@ -46,8 +46,8 @@ def get_sample(P): material_layer = ba.MaterialBySLD("(Mg,Al,Fe)3O4", P["rho_Mafo"]*1e-6, 0, B) material_substrate = ba.MaterialBySLD("MgAl2O4", *sldMao) - r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom) - r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom) + r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*nm, 0.7, 25*nm) + r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() @@ -55,7 +55,7 @@ def get_sample(P): r_substrate = ba.LayerRoughness(r_substrate_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom, r_Mafo) + layer = ba.Layer(material_layer, P["t_Mafo"]*nm, r_Mafo) substrate_layer = ba.Layer(material_substrate, r_substrate) sample = ba.Sample() @@ -202,9 +202,9 @@ if __name__ == '__main__': 'q_offset': 7.971243487467318e-05, 'rho_Mafo': 6.370140108715461, 'rhoM_Mafo': 0.27399566816062926, - 't_Mafo': 137.46913056084736, - 'r_Mao': 8.60487712674644, - 'r_Mafo': 3.7844265311293483 + 't_Mafo': 13.746913056084736, + 'r_Mao': 0.860487712674644, + 'r_Mafo': 0.37844265311293483 } def run_Simulation_pp(qzs, P): diff --git a/auto/FigExamples/fit/specular/PolarizedSpinAsymmetryFit.py b/auto/FigExamples/fit/specular/PolarizedSpinAsymmetryFit.py index 5bee9fca96ee8343bf3d7b43d078b03190151ad0..227ebbb3d5bb2c19ae2e05d2ad79f56e07cd7668 100755 --- a/auto/FigExamples/fit/specular/PolarizedSpinAsymmetryFit.py +++ b/auto/FigExamples/fit/specular/PolarizedSpinAsymmetryFit.py @@ -58,9 +58,9 @@ if __name__ == '__main__': "q_offset": (0, -0.002, 0.002), "rho_Mafo": (6.3649, 2, 7), "rhoM_Mafo": (0, 0, 2), - "t_Mafo": (150, 60, 180), - "r_Mao": (1, 0, 12), - "r_Mafo": (1, 0, 12), + "t_Mafo": (15, 6, 18), + "r_Mao": (0.1, 0, 1.2), + "r_Mafo": (0.1, 0, 1.2), } PInitial = {d: v[0] for d, v in startParams.items()} diff --git a/auto/FigExamples/fit/specular/Pt_layer_fit.py b/auto/FigExamples/fit/specular/Pt_layer_fit.py index 24bf5f3aa85e2a0e5d3568f612482eb2808d3d86..f7b5fc034a53437244c372641cbd2b3ced960897 100755 --- a/auto/FigExamples/fit/specular/Pt_layer_fit.py +++ b/auto/FigExamples/fit/specular/Pt_layer_fit.py @@ -9,7 +9,7 @@ band of roughly 4-7 Ã… in 100 steps of 2theta. """ import bornagain as ba, numpy as np, os, matplotlib.pyplot as plt -from bornagain import angstrom +from bornagain import nm from bornagain.numpyutil import Arrayf64Converter as dac datadir = os.getenv('BA_DATA_DIR', '') @@ -32,14 +32,14 @@ def get_sample(P): interlayer = ba.TanhInterlayer() - si_autocorr = ba.K_CorrelationModel(P["r_si/nm"]) - pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"]) + si_autocorr = ba.K_CorrelationModel(P["r_si/nm"]*nm, 0.7, 25*nm) + pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"]*nm, 0.7, 25*nm) r_si = ba.LayerRoughness(si_autocorr, interlayer) r_pt = ba.LayerRoughness(pt_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_pt/nm"], r_pt) + layer = ba.Layer(material_layer, P["t_pt/nm"]*nm, r_pt) substrate_layer = ba.Layer(material_substrate, r_si) sample = ba.Sample() diff --git a/auto/FigExamples/fit/specular/TREFF_Ni_film.py b/auto/FigExamples/fit/specular/TREFF_Ni_film.py index 69b801eabc7b93562385198ac160057fab7dba35..8f47984d1286faebdba03b7e536b140252b434e1 100755 --- a/auto/FigExamples/fit/specular/TREFF_Ni_film.py +++ b/auto/FigExamples/fit/specular/TREFF_Ni_film.py @@ -28,10 +28,10 @@ def get_sample(P): # Layers and interfaces interlayer = ba.TanhInterlayer() - Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"]) + Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"], 0.7, 25*nm) roughness_Ni = ba.LayerRoughness(Ni_autocorr, interlayer) - sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"]) + sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"], 0.7, 25*nm) roughness_Substrate = ba.LayerRoughness(sub_autocorr, interlayer) layer_Ni = ba.Layer(material_Ni_58, P["thickness"], roughness_Ni) diff --git a/auto/FigExamples/specular/MagneticLayerImperfect.py b/auto/FigExamples/specular/MagneticLayerImperfect.py index edced923301ef14b517446d1d573325cac5ac503..8a65a11c227af45588a98a7b3ab9341a71fd2726 100755 --- a/auto/FigExamples/specular/MagneticLayerImperfect.py +++ b/auto/FigExamples/specular/MagneticLayerImperfect.py @@ -6,7 +6,7 @@ similar to Devishvili et al., Rev. Sci. Instrum. 84, 025112 (2013). """ import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from math import sin, cos def get_sample(): @@ -19,14 +19,14 @@ def get_sample(): material_Fe = ba.MaterialBySLD("Fe", 8.0241e-06, 6.0448e-10, B) material_substrate = ba.MaterialBySLD("MgO", 5.9803e-06, 9.3996e-12) - autocorr = ba.K_CorrelationModel(20*angstrom) + autocorr = ba.K_CorrelationModel(2*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() roughness = ba.LayerRoughness(autocorr, interlayer) # Layers layer_vacuum = ba.Layer(vacuum) - layer_Pd = ba.Layer(material_Pd, 120*angstrom, roughness) - layer_Fe = ba.Layer(material_Fe, 1000*angstrom, roughness) + layer_Pd = ba.Layer(material_Pd, 12*nm, roughness) + layer_Fe = ba.Layer(material_Fe, 100*nm, roughness) layer_substrate = ba.Layer(material_substrate, roughness) # Multilayer diff --git a/auto/FigExamples/specular/PolarizedSpinAsymmetry.py b/auto/FigExamples/specular/PolarizedSpinAsymmetry.py index 51a7201e6bab67a2eba0719c62bad91e0488d0f7..55dba54082c812904d38c7980905265ada4a1666 100755 --- a/auto/FigExamples/specular/PolarizedSpinAsymmetry.py +++ b/auto/FigExamples/specular/PolarizedSpinAsymmetry.py @@ -12,7 +12,7 @@ demonstration without the magnetically dead layer. import os import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from bornagain.numpyutil import Arrayf64Converter as dac @@ -47,8 +47,8 @@ def get_sample(P): material_layer = ba.MaterialBySLD("(Mg,Al,Fe)3O4", P["rho_Mafo"]*1e-6, 0, B) material_substrate = ba.MaterialBySLD("MgAl2O4", *sldMao) - r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom) - r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom) + r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*nm, 0.7, 25*nm) + r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() @@ -56,7 +56,7 @@ def get_sample(P): r_substrate = ba.LayerRoughness(r_sub_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom, r_Mafo) + layer = ba.Layer(material_layer, P["t_Mafo"]*nm, r_Mafo) substrate_layer = ba.Layer(material_substrate, r_substrate) sample = ba.Sample() @@ -203,9 +203,9 @@ if __name__ == '__main__': 'q_offset': 7.971243487467318e-05, 'rho_Mafo': 6.370140108715461, 'rhoM_Mafo': 0.27399566816062926, - 't_Mafo': 137.46913056084736, - 'r_Mao': 8.60487712674644, - 'r_Mafo': 3.7844265311293483 + 't_Mafo': 13.746913056084736, + 'r_Mao': 0.860487712674644, + 'r_Mafo': 0.37844265311293483 } def run_Simulation_pp(qzs, P): diff --git a/auto/FigExamples/specular/RoughnessModel.py b/auto/FigExamples/specular/RoughnessModel.py index 72a3a1342d1a895c4f87a86824a068c664dce4c1..93ddc33ae7a0b018fedfc7724d5110a708eb70e9 100755 --- a/auto/FigExamples/specular/RoughnessModel.py +++ b/auto/FigExamples/specular/RoughnessModel.py @@ -5,7 +5,7 @@ tanh and Nevot-Croce roughness model using BornAgain. """ import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg +from bornagain import angstrom, nm, ba_plot as bp, deg def get_sample(interlayer): @@ -16,13 +16,13 @@ def get_sample(interlayer): material_substrate = ba.MaterialBySLD("SiSubstrate", 2.0704e-06, 0) # Roughness - autocorr = ba.K_CorrelationModel(10*angstrom) + autocorr = ba.K_CorrelationModel(1*nm, 0.7, 25*nm) roughness = ba.LayerRoughness(autocorr, interlayer) # create layers ambient_layer = ba.Layer(vacuum) - ti_layer = ba.Layer(material_ti, 30*angstrom, roughness) - ni_layer = ba.Layer(material_ni, 70*angstrom, roughness) + ti_layer = ba.Layer(material_ti, 3*nm, roughness) + ni_layer = ba.Layer(material_ni, 7*nm, roughness) substrate_layer = ba.Layer(material_substrate, roughness) # create periodic stack diff --git a/auto/FigExamples/specular/SpecularSimulationWithRoughness.py b/auto/FigExamples/specular/SpecularSimulationWithRoughness.py index 92323c2379a8f2232f28058c0c40000489f6a12e..250b1546e5e56f4965eff4b7cad3d9105377479f 100755 --- a/auto/FigExamples/specular/SpecularSimulationWithRoughness.py +++ b/auto/FigExamples/specular/SpecularSimulationWithRoughness.py @@ -5,7 +5,7 @@ with a rough sample using BornAgain. """ import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, nm +from bornagain import nm, ba_plot as bp, deg, nm def get_sample(): @@ -16,14 +16,14 @@ def get_sample(): material_substrate = ba.MaterialBySLD("SiSubstrate", 2.0704e-06, 0) # roughness - autocorr = ba.K_CorrelationModel(1*nm) + autocorr = ba.K_CorrelationModel(1*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() roughness = ba.LayerRoughness(autocorr, interlayer) # Layers ambient_layer = ba.Layer(vacuum) - ti_layer = ba.Layer(material_ti, 30*angstrom, roughness) - ni_layer = ba.Layer(material_ni, 70*angstrom, roughness) + ti_layer = ba.Layer(material_ti, 3*nm, roughness) + ni_layer = ba.Layer(material_ni, 7*nm, roughness) substrate_layer = ba.Layer(material_substrate, roughness) # Periodic stack @@ -44,7 +44,7 @@ def get_sample(): def get_simulation(sample): n = 500 scan = ba.AlphaScan(n, 2*deg/n, 2*deg) - scan.setWavelength(1.54*angstrom) + scan.setWavelength(0.154*nm) return ba.SpecularSimulation(scan, sample) diff --git a/auto/MiniExamples/fit/specular/Honeycomb_fit.py b/auto/MiniExamples/fit/specular/Honeycomb_fit.py index fee2317e0356eac81bd6a69f13c2d80a43535aa4..fe04348a1e4b6a2deda9f3cba43f2c4f355d4ac5 100755 --- a/auto/MiniExamples/fit/specular/Honeycomb_fit.py +++ b/auto/MiniExamples/fit/specular/Honeycomb_fit.py @@ -8,7 +8,7 @@ data without spin-flip for performance reasons. """ import bornagain as ba, numpy as np, os, matplotlib.pyplot as plt, scipy -from bornagain import angstrom, sample_tools as st +from bornagain import nm, sample_tools as st from bornagain.numpyutil import Arrayf64Converter as dac datadir = os.getenv('BA_DATA_DIR', '') @@ -46,11 +46,11 @@ def get_sample(P, sign, T): interlayer_model = ba.ErfInterlayer() - rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*angstrom) - rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*angstrom) - rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*angstrom) - rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*angstrom) - rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*angstrom) + rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*nm, 0.7, 25*nm) + rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*nm, 0.7, 25*nm) + rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*nm, 0.7, 25*nm) + rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*nm, 0.7, 25*nm) + rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*nm, 0.7, 25*nm) rPyOx = ba.LayerRoughness(rPyOx_autocorr, interlayer_model) rPy2 = ba.LayerRoughness(rPy2_autocorr, interlayer_model) @@ -59,10 +59,10 @@ def get_sample(P, sign, T): rSi = ba.LayerRoughness(rSi_autocorr, interlayer_model) l_Air = ba.Layer(material_Air) - l_PyOx = ba.Layer(material_PyOx, P["t_PyOx"]*angstrom, rPyOx) - l_Py2 = ba.Layer(material_Py2, P["t_Py2"]*angstrom, rPy2) - l_Py1 = ba.Layer(material_Py1, P["t_Py1"]*angstrom, rPy1) - l_SiO2 = ba.Layer(material_SiO2, P["t_SiO2"]*angstrom, rSiO2) + l_PyOx = ba.Layer(material_PyOx, P["t_PyOx"]*nm, rPyOx) + l_Py2 = ba.Layer(material_Py2, P["t_Py2"]*nm, rPy2) + l_Py1 = ba.Layer(material_Py1, P["t_Py1"]*nm, rPy1) + l_SiO2 = ba.Layer(material_SiO2, P["t_SiO2"]*nm, rSiO2) l_Si = ba.Layer(material_Si, rSi) sample = ba.Sample() @@ -162,10 +162,10 @@ if __name__ == '__main__': # We start with rather good values so that the example takes not too much time startPnB = { "intensity": (0.5, 0.4, 0.6), - "t_PyOx": (77, 60, 100), - "t_Py2": (56, 46, 66), - "t_Py1": (56, 46, 66), - "t_SiO2": (22, 15, 29), + "t_PyOx": (7.7, 6.0, 10.0), + "t_Py2": (5.6, 4.6, 6.6), + "t_Py1": (5.6, 4.6, 6.6), + "t_SiO2": (2.2, 1.5, 2.9), } # For fixed parameters, bounds are ignored. We leave them here just @@ -183,11 +183,11 @@ if __name__ == '__main__': "sld_PyOx_real": (1.995, 1.92, 2.07), "sld_Py2_real": (5, 4.7, 5.3), "sld_Py1_real": (4.62, 4.32, 4.92), - "rPyOx": (27, 15, 35), - "rPy2": (12, 2, 20), - "rPy1": (12, 2, 20), - "rSiO2": (15, 5, 25), - "rSi": (15, 5, 25), + "rPyOx": (2.7, 1.5, 3.5), + "rPy2": (1.2, .2, 2.0), + "rPy1": (1.2, .2, 2.0), + "rSiO2": (1.5, .5, 2.5), + "rSi": (1.5, .5, 2.5), "msld_PyOx": (0.25, 0, 1), "msld_Py2": (0.63, 0, 1), "msld_Py1": (0.64, 0, 1), diff --git a/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py b/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py index b80b6280d028b83839cfed34f9f77dca3cfe6766..86c264e9b68c1e19ec10ec307628fd7c822dbba7 100755 --- a/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py +++ b/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetry.py @@ -12,7 +12,7 @@ demonstration without the magnetically dead layer. import os import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from bornagain.numpyutil import Arrayf64Converter as dac # q-range on which the simulation and fitting are to be performed @@ -46,8 +46,8 @@ def get_sample(P): material_layer = ba.MaterialBySLD("(Mg,Al,Fe)3O4", P["rho_Mafo"]*1e-6, 0, B) material_substrate = ba.MaterialBySLD("MgAl2O4", *sldMao) - r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom) - r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom) + r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*nm, 0.7, 25*nm) + r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() @@ -55,7 +55,7 @@ def get_sample(P): r_substrate = ba.LayerRoughness(r_substrate_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom, r_Mafo) + layer = ba.Layer(material_layer, P["t_Mafo"]*nm, r_Mafo) substrate_layer = ba.Layer(material_substrate, r_substrate) sample = ba.Sample() @@ -202,9 +202,9 @@ if __name__ == '__main__': 'q_offset': 7.971243487467318e-05, 'rho_Mafo': 6.370140108715461, 'rhoM_Mafo': 0.27399566816062926, - 't_Mafo': 137.46913056084736, - 'r_Mao': 8.60487712674644, - 'r_Mafo': 3.7844265311293483 + 't_Mafo': 13.746913056084736, + 'r_Mao': 0.860487712674644, + 'r_Mafo': 0.37844265311293483 } def run_Simulation_pp(qzs, P): diff --git a/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetryFit.py b/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetryFit.py index 5bee9fca96ee8343bf3d7b43d078b03190151ad0..227ebbb3d5bb2c19ae2e05d2ad79f56e07cd7668 100755 --- a/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetryFit.py +++ b/auto/MiniExamples/fit/specular/PolarizedSpinAsymmetryFit.py @@ -58,9 +58,9 @@ if __name__ == '__main__': "q_offset": (0, -0.002, 0.002), "rho_Mafo": (6.3649, 2, 7), "rhoM_Mafo": (0, 0, 2), - "t_Mafo": (150, 60, 180), - "r_Mao": (1, 0, 12), - "r_Mafo": (1, 0, 12), + "t_Mafo": (15, 6, 18), + "r_Mao": (0.1, 0, 1.2), + "r_Mafo": (0.1, 0, 1.2), } PInitial = {d: v[0] for d, v in startParams.items()} diff --git a/auto/MiniExamples/fit/specular/Pt_layer_fit.py b/auto/MiniExamples/fit/specular/Pt_layer_fit.py index 24bf5f3aa85e2a0e5d3568f612482eb2808d3d86..f7b5fc034a53437244c372641cbd2b3ced960897 100755 --- a/auto/MiniExamples/fit/specular/Pt_layer_fit.py +++ b/auto/MiniExamples/fit/specular/Pt_layer_fit.py @@ -9,7 +9,7 @@ band of roughly 4-7 Ã… in 100 steps of 2theta. """ import bornagain as ba, numpy as np, os, matplotlib.pyplot as plt -from bornagain import angstrom +from bornagain import nm from bornagain.numpyutil import Arrayf64Converter as dac datadir = os.getenv('BA_DATA_DIR', '') @@ -32,14 +32,14 @@ def get_sample(P): interlayer = ba.TanhInterlayer() - si_autocorr = ba.K_CorrelationModel(P["r_si/nm"]) - pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"]) + si_autocorr = ba.K_CorrelationModel(P["r_si/nm"]*nm, 0.7, 25*nm) + pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"]*nm, 0.7, 25*nm) r_si = ba.LayerRoughness(si_autocorr, interlayer) r_pt = ba.LayerRoughness(pt_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_pt/nm"], r_pt) + layer = ba.Layer(material_layer, P["t_pt/nm"]*nm, r_pt) substrate_layer = ba.Layer(material_substrate, r_si) sample = ba.Sample() diff --git a/auto/MiniExamples/fit/specular/TREFF_Ni_film.py b/auto/MiniExamples/fit/specular/TREFF_Ni_film.py index ed8088a84f77c807e257746e5119c9aaec7a3906..6ac5f481d56f5486528eed503b80f724d5c21c23 100755 --- a/auto/MiniExamples/fit/specular/TREFF_Ni_film.py +++ b/auto/MiniExamples/fit/specular/TREFF_Ni_film.py @@ -28,10 +28,10 @@ def get_sample(P): # Layers and interfaces interlayer = ba.TanhInterlayer() - Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"]) + Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"], 0.7, 25*nm) roughness_Ni = ba.LayerRoughness(Ni_autocorr, interlayer) - sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"]) + sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"], 0.7, 25*nm) roughness_Substrate = ba.LayerRoughness(sub_autocorr, interlayer) layer_Ni = ba.Layer(material_Ni_58, P["thickness"], roughness_Ni) diff --git a/auto/MiniExamples/specular/MagneticLayerImperfect.py b/auto/MiniExamples/specular/MagneticLayerImperfect.py index edced923301ef14b517446d1d573325cac5ac503..8a65a11c227af45588a98a7b3ab9341a71fd2726 100755 --- a/auto/MiniExamples/specular/MagneticLayerImperfect.py +++ b/auto/MiniExamples/specular/MagneticLayerImperfect.py @@ -6,7 +6,7 @@ similar to Devishvili et al., Rev. Sci. Instrum. 84, 025112 (2013). """ import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from math import sin, cos def get_sample(): @@ -19,14 +19,14 @@ def get_sample(): material_Fe = ba.MaterialBySLD("Fe", 8.0241e-06, 6.0448e-10, B) material_substrate = ba.MaterialBySLD("MgO", 5.9803e-06, 9.3996e-12) - autocorr = ba.K_CorrelationModel(20*angstrom) + autocorr = ba.K_CorrelationModel(2*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() roughness = ba.LayerRoughness(autocorr, interlayer) # Layers layer_vacuum = ba.Layer(vacuum) - layer_Pd = ba.Layer(material_Pd, 120*angstrom, roughness) - layer_Fe = ba.Layer(material_Fe, 1000*angstrom, roughness) + layer_Pd = ba.Layer(material_Pd, 12*nm, roughness) + layer_Fe = ba.Layer(material_Fe, 100*nm, roughness) layer_substrate = ba.Layer(material_substrate, roughness) # Multilayer diff --git a/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py b/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py index 51a7201e6bab67a2eba0719c62bad91e0488d0f7..55dba54082c812904d38c7980905265ada4a1666 100755 --- a/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py +++ b/auto/MiniExamples/specular/PolarizedSpinAsymmetry.py @@ -12,7 +12,7 @@ demonstration without the magnetically dead layer. import os import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from bornagain.numpyutil import Arrayf64Converter as dac @@ -47,8 +47,8 @@ def get_sample(P): material_layer = ba.MaterialBySLD("(Mg,Al,Fe)3O4", P["rho_Mafo"]*1e-6, 0, B) material_substrate = ba.MaterialBySLD("MgAl2O4", *sldMao) - r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom) - r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom) + r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*nm, 0.7, 25*nm) + r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() @@ -56,7 +56,7 @@ def get_sample(P): r_substrate = ba.LayerRoughness(r_sub_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom, r_Mafo) + layer = ba.Layer(material_layer, P["t_Mafo"]*nm, r_Mafo) substrate_layer = ba.Layer(material_substrate, r_substrate) sample = ba.Sample() @@ -203,9 +203,9 @@ if __name__ == '__main__': 'q_offset': 7.971243487467318e-05, 'rho_Mafo': 6.370140108715461, 'rhoM_Mafo': 0.27399566816062926, - 't_Mafo': 137.46913056084736, - 'r_Mao': 8.60487712674644, - 'r_Mafo': 3.7844265311293483 + 't_Mafo': 13.746913056084736, + 'r_Mao': 0.860487712674644, + 'r_Mafo': 0.37844265311293483 } def run_Simulation_pp(qzs, P): diff --git a/auto/MiniExamples/specular/RoughnessModel.py b/auto/MiniExamples/specular/RoughnessModel.py index 49deb3d398ea75baf09b8286963644b88e6d7386..2157b328dab968beb38953ff84de052aef8a6f33 100755 --- a/auto/MiniExamples/specular/RoughnessModel.py +++ b/auto/MiniExamples/specular/RoughnessModel.py @@ -5,7 +5,7 @@ tanh and Nevot-Croce roughness model using BornAgain. """ import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg +from bornagain import angstrom, nm, ba_plot as bp, deg def get_sample(interlayer): @@ -16,13 +16,13 @@ def get_sample(interlayer): material_substrate = ba.MaterialBySLD("SiSubstrate", 2.0704e-06, 0) # Roughness - autocorr = ba.K_CorrelationModel(10*angstrom) + autocorr = ba.K_CorrelationModel(1*nm, 0.7, 25*nm) roughness = ba.LayerRoughness(autocorr, interlayer) # create layers ambient_layer = ba.Layer(vacuum) - ti_layer = ba.Layer(material_ti, 30*angstrom, roughness) - ni_layer = ba.Layer(material_ni, 70*angstrom, roughness) + ti_layer = ba.Layer(material_ti, 3*nm, roughness) + ni_layer = ba.Layer(material_ni, 7*nm, roughness) substrate_layer = ba.Layer(material_substrate, roughness) # create periodic stack diff --git a/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py b/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py index 5c4fc002d6378eae2040786b2b8ccf3c30019647..7876785f6eb2edf45f0a0b154ad3e3e7c68e448a 100755 --- a/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py +++ b/auto/MiniExamples/specular/SpecularSimulationWithRoughness.py @@ -5,7 +5,7 @@ with a rough sample using BornAgain. """ import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, nm +from bornagain import nm, ba_plot as bp, deg, nm def get_sample(): @@ -16,14 +16,14 @@ def get_sample(): material_substrate = ba.MaterialBySLD("SiSubstrate", 2.0704e-06, 0) # roughness - autocorr = ba.K_CorrelationModel(1*nm) + autocorr = ba.K_CorrelationModel(1*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() roughness = ba.LayerRoughness(autocorr, interlayer) # Layers ambient_layer = ba.Layer(vacuum) - ti_layer = ba.Layer(material_ti, 30*angstrom, roughness) - ni_layer = ba.Layer(material_ni, 70*angstrom, roughness) + ti_layer = ba.Layer(material_ti, 3*nm, roughness) + ni_layer = ba.Layer(material_ni, 7*nm, roughness) substrate_layer = ba.Layer(material_substrate, roughness) # Periodic stack @@ -44,7 +44,7 @@ def get_sample(): def get_simulation(sample): n = 50 scan = ba.AlphaScan(n, 2*deg/n, 2*deg) - scan.setWavelength(1.54*angstrom) + scan.setWavelength(0.154*nm) return ba.SpecularSimulation(scan, sample) diff --git a/auto/Wrap/libBornAgainSample.py b/auto/Wrap/libBornAgainSample.py index ffd2e351953f0185b67955028c5ab047ca23d1b6..1ca96dcab97475edcf99f603931806604a74eba6 100644 --- a/auto/Wrap/libBornAgainSample.py +++ b/auto/Wrap/libBornAgainSample.py @@ -3912,8 +3912,8 @@ class K_CorrelationModel(AutocorrelationModel): thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") __repr__ = _swig_repr - def __init__(self, sigma=0, hurst=0.7, lateralCorrLength=25, maxSpatFrequency=0.5): - r"""__init__(K_CorrelationModel self, double sigma=0, double hurst=0.7, double lateralCorrLength=25, double maxSpatFrequency=0.5) -> K_CorrelationModel""" + def __init__(self, sigma, hurst, lateralCorrLength, maxSpatFrequency=0.5): + r"""__init__(K_CorrelationModel self, double sigma, double hurst, double lateralCorrLength, double maxSpatFrequency=0.5) -> K_CorrelationModel""" _libBornAgainSample.K_CorrelationModel_swiginit(self, _libBornAgainSample.new_K_CorrelationModel(sigma, hurst, lateralCorrLength, maxSpatFrequency)) def className(self): diff --git a/auto/Wrap/libBornAgainSample_wrap.cpp b/auto/Wrap/libBornAgainSample_wrap.cpp index 658835f88154bd9da036fff2501370aa57b81e29..79ec3e111d377d16c24670fd998ff2a51b01e89d 100644 --- a/auto/Wrap/libBornAgainSample_wrap.cpp +++ b/auto/Wrap/libBornAgainSample_wrap.cpp @@ -45486,96 +45486,6 @@ fail: } -SWIGINTERN PyObject *_wrap_new_K_CorrelationModel__SWIG_2(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) { - PyObject *resultobj = 0; - double arg1 ; - double arg2 ; - double val1 ; - int ecode1 = 0 ; - double val2 ; - int ecode2 = 0 ; - K_CorrelationModel *result = 0 ; - - (void)self; - if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; - ecode1 = SWIG_AsVal_double(swig_obj[0], &val1); - if (!SWIG_IsOK(ecode1)) { - SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_K_CorrelationModel" "', argument " "1"" of type '" "double""'"); - } - arg1 = static_cast< double >(val1); - ecode2 = SWIG_AsVal_double(swig_obj[1], &val2); - if (!SWIG_IsOK(ecode2)) { - SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_K_CorrelationModel" "', argument " "2"" of type '" "double""'"); - } - arg2 = static_cast< double >(val2); - { - try { - result = (K_CorrelationModel *)new K_CorrelationModel(arg1,arg2); - } catch (const bug& ex) { - SWIG_exception(SWIG_RuntimeError, bug_msg(ex).c_str()); - } catch (const std::exception& ex) { - SWIG_exception(SWIG_RuntimeError, exception_msg(ex).c_str()); - } - } - resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_K_CorrelationModel, SWIG_POINTER_NEW | 0 ); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_new_K_CorrelationModel__SWIG_3(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) { - PyObject *resultobj = 0; - double arg1 ; - double val1 ; - int ecode1 = 0 ; - K_CorrelationModel *result = 0 ; - - (void)self; - if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; - ecode1 = SWIG_AsVal_double(swig_obj[0], &val1); - if (!SWIG_IsOK(ecode1)) { - SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_K_CorrelationModel" "', argument " "1"" of type '" "double""'"); - } - arg1 = static_cast< double >(val1); - { - try { - result = (K_CorrelationModel *)new K_CorrelationModel(arg1); - } catch (const bug& ex) { - SWIG_exception(SWIG_RuntimeError, bug_msg(ex).c_str()); - } catch (const std::exception& ex) { - SWIG_exception(SWIG_RuntimeError, exception_msg(ex).c_str()); - } - } - resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_K_CorrelationModel, SWIG_POINTER_NEW | 0 ); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_new_K_CorrelationModel__SWIG_4(PyObject *self, Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { - PyObject *resultobj = 0; - K_CorrelationModel *result = 0 ; - - (void)self; - if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; - { - try { - result = (K_CorrelationModel *)new K_CorrelationModel(); - } catch (const bug& ex) { - SWIG_exception(SWIG_RuntimeError, bug_msg(ex).c_str()); - } catch (const std::exception& ex) { - SWIG_exception(SWIG_RuntimeError, exception_msg(ex).c_str()); - } - } - resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_K_CorrelationModel, SWIG_POINTER_NEW | 0 ); - return resultobj; -fail: - return NULL; -} - - SWIGINTERN PyObject *_wrap_new_K_CorrelationModel(PyObject *self, PyObject *args) { Py_ssize_t argc; PyObject *argv[5] = { @@ -45584,35 +45494,6 @@ SWIGINTERN PyObject *_wrap_new_K_CorrelationModel(PyObject *self, PyObject *args if (!(argc = SWIG_Python_UnpackTuple(args, "new_K_CorrelationModel", 0, 4, argv))) SWIG_fail; --argc; - if (argc == 0) { - return _wrap_new_K_CorrelationModel__SWIG_4(self, argc, argv); - } - if (argc == 1) { - int _v = 0; - { - int res = SWIG_AsVal_double(argv[0], NULL); - _v = SWIG_CheckState(res); - } - if (_v) { - return _wrap_new_K_CorrelationModel__SWIG_3(self, argc, argv); - } - } - if (argc == 2) { - int _v = 0; - { - int res = SWIG_AsVal_double(argv[0], NULL); - _v = SWIG_CheckState(res); - } - if (_v) { - { - int res = SWIG_AsVal_double(argv[1], NULL); - _v = SWIG_CheckState(res); - } - if (_v) { - return _wrap_new_K_CorrelationModel__SWIG_2(self, argc, argv); - } - } - } if (argc == 3) { int _v = 0; { @@ -45668,10 +45549,7 @@ fail: SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_K_CorrelationModel'.\n" " Possible C/C++ prototypes are:\n" " K_CorrelationModel::K_CorrelationModel(double,double,double,double)\n" - " K_CorrelationModel::K_CorrelationModel(double,double,double)\n" - " K_CorrelationModel::K_CorrelationModel(double,double)\n" - " K_CorrelationModel::K_CorrelationModel(double)\n" - " K_CorrelationModel::K_CorrelationModel()\n"); + " K_CorrelationModel::K_CorrelationModel(double,double,double)\n"); return 0; } @@ -66172,7 +66050,7 @@ static PyMethodDef SwigMethods[] = { { "AutocorrelationModel_parDefs", _wrap_AutocorrelationModel_parDefs, METH_O, "AutocorrelationModel_parDefs(AutocorrelationModel self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"}, { "delete_AutocorrelationModel", _wrap_delete_AutocorrelationModel, METH_O, "delete_AutocorrelationModel(AutocorrelationModel self)"}, { "AutocorrelationModel_swigregister", AutocorrelationModel_swigregister, METH_O, NULL}, - { "new_K_CorrelationModel", _wrap_new_K_CorrelationModel, METH_VARARGS, "K_CorrelationModel(double sigma=0, double hurst=0.7, double lateralCorrLength=25, double maxSpatFrequency=0.5)"}, + { "new_K_CorrelationModel", _wrap_new_K_CorrelationModel, METH_VARARGS, "K_CorrelationModel(double sigma, double hurst, double lateralCorrLength, double maxSpatFrequency=0.5)"}, { "K_CorrelationModel_className", _wrap_K_CorrelationModel_className, METH_O, "K_CorrelationModel_className(K_CorrelationModel self) -> std::string"}, { "K_CorrelationModel_parDefs", _wrap_K_CorrelationModel_parDefs, METH_O, "K_CorrelationModel_parDefs(K_CorrelationModel self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"}, { "K_CorrelationModel_validate", _wrap_K_CorrelationModel_validate, METH_O, "K_CorrelationModel_validate(K_CorrelationModel self) -> std::string"}, diff --git a/rawEx/fit/specular/Honeycomb_fit.py b/rawEx/fit/specular/Honeycomb_fit.py index bcf4127182c87f040c61ab34f035115afe77dddd..8d8ceb653587fdb496e45ed518fb533d8764fcaf 100755 --- a/rawEx/fit/specular/Honeycomb_fit.py +++ b/rawEx/fit/specular/Honeycomb_fit.py @@ -8,7 +8,7 @@ data without spin-flip for performance reasons. """ import bornagain as ba, numpy as np, os, matplotlib.pyplot as plt, scipy -from bornagain import angstrom, sample_tools as st +from bornagain import nm, sample_tools as st from bornagain.numpyutil import Arrayf64Converter as dac datadir = os.getenv('BA_DATA_DIR', '') @@ -46,11 +46,11 @@ def get_sample(P, sign, T): interlayer_model = ba.ErfInterlayer() - rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*angstrom) - rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*angstrom) - rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*angstrom) - rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*angstrom) - rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*angstrom) + rPyOx_autocorr = ba.K_CorrelationModel(P["rPyOx"]*nm, 0.7, 25*nm) + rPy2_autocorr = ba.K_CorrelationModel(P["rPy2"]*nm, 0.7, 25*nm) + rPy1_autocorr = ba.K_CorrelationModel(P["rPy1"]*nm, 0.7, 25*nm) + rSiO2_autocorr = ba.K_CorrelationModel(P["rSiO2"]*nm, 0.7, 25*nm) + rSi_autocorr = ba.K_CorrelationModel(P["rSi"]*nm, 0.7, 25*nm) rPyOx = ba.LayerRoughness(rPyOx_autocorr, interlayer_model) rPy2 = ba.LayerRoughness(rPy2_autocorr, interlayer_model) @@ -59,10 +59,10 @@ def get_sample(P, sign, T): rSi = ba.LayerRoughness(rSi_autocorr, interlayer_model) l_Air = ba.Layer(material_Air) - l_PyOx = ba.Layer(material_PyOx, P["t_PyOx"]*angstrom, rPyOx) - l_Py2 = ba.Layer(material_Py2, P["t_Py2"]*angstrom, rPy2) - l_Py1 = ba.Layer(material_Py1, P["t_Py1"]*angstrom, rPy1) - l_SiO2 = ba.Layer(material_SiO2, P["t_SiO2"]*angstrom, rSiO2) + l_PyOx = ba.Layer(material_PyOx, P["t_PyOx"]*nm, rPyOx) + l_Py2 = ba.Layer(material_Py2, P["t_Py2"]*nm, rPy2) + l_Py1 = ba.Layer(material_Py1, P["t_Py1"]*nm, rPy1) + l_SiO2 = ba.Layer(material_SiO2, P["t_SiO2"]*nm, rSiO2) l_Si = ba.Layer(material_Si, rSi) sample = ba.Sample() @@ -170,10 +170,10 @@ if __name__ == '__main__': # We start with rather good values so that the example takes not too much time startPnB = { "intensity": (0.5, 0.4, 0.6), - "t_PyOx": (77, 60, 100), - "t_Py2": (56, 46, 66), - "t_Py1": (56, 46, 66), - "t_SiO2": (22, 15, 29), + "t_PyOx": (7.7, 6.0, 10.0), + "t_Py2": (5.6, 4.6, 6.6), + "t_Py1": (5.6, 4.6, 6.6), + "t_SiO2": (2.2, 1.5, 2.9), } # For fixed parameters, bounds are ignored. We leave them here just @@ -191,11 +191,11 @@ if __name__ == '__main__': "sld_PyOx_real": (1.995, 1.92, 2.07), "sld_Py2_real": (5, 4.7, 5.3), "sld_Py1_real": (4.62, 4.32, 4.92), - "rPyOx": (27, 15, 35), - "rPy2": (12, 2, 20), - "rPy1": (12, 2, 20), - "rSiO2": (15, 5, 25), - "rSi": (15, 5, 25), + "rPyOx": (2.7, 1.5, 3.5), + "rPy2": (1.2, .2, 2.0), + "rPy1": (1.2, .2, 2.0), + "rSiO2": (1.5, .5, 2.5), + "rSi": (1.5, .5, 2.5), "msld_PyOx": (0.25, 0, 1), "msld_Py2": (0.63, 0, 1), "msld_Py1": (0.64, 0, 1), diff --git a/rawEx/fit/specular/PolarizedSpinAsymmetry.py b/rawEx/fit/specular/PolarizedSpinAsymmetry.py index ebde5a32c15dbc87de626486ed449e6f7d28e8d0..4adcb72c5d03dcdd973862c16a6f20aa2adab2f6 100755 --- a/rawEx/fit/specular/PolarizedSpinAsymmetry.py +++ b/rawEx/fit/specular/PolarizedSpinAsymmetry.py @@ -12,7 +12,7 @@ demonstration without the magnetically dead layer. import os import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from bornagain.numpyutil import Arrayf64Converter as dac # q-range on which the simulation and fitting are to be performed @@ -46,8 +46,8 @@ def get_sample(P): material_layer = ba.MaterialBySLD("(Mg,Al,Fe)3O4", P["rho_Mafo"]*1e-6, 0, B) material_substrate = ba.MaterialBySLD("MgAl2O4", *sldMao) - r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom) - r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom) + r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*nm, 0.7, 25*nm) + r_substrate_autocorr = ba.K_CorrelationModel(P["r_Mao"]*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() @@ -55,7 +55,7 @@ def get_sample(P): r_substrate = ba.LayerRoughness(r_substrate_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom, r_Mafo) + layer = ba.Layer(material_layer, P["t_Mafo"]*nm, r_Mafo) substrate_layer = ba.Layer(material_substrate, r_substrate) sample = ba.Sample() @@ -206,9 +206,9 @@ if __name__ == '__main__': 'q_offset': 7.971243487467318e-05, 'rho_Mafo': 6.370140108715461, 'rhoM_Mafo': 0.27399566816062926, - 't_Mafo': 137.46913056084736, - 'r_Mao': 8.60487712674644, - 'r_Mafo': 3.7844265311293483 + 't_Mafo': 13.746913056084736, + 'r_Mao': 0.860487712674644, + 'r_Mafo': 0.37844265311293483 } def run_Simulation_pp(qzs, P): diff --git a/rawEx/fit/specular/PolarizedSpinAsymmetryFit.py b/rawEx/fit/specular/PolarizedSpinAsymmetryFit.py index ef4459ab14b3357941431b308c190630a8530910..9a997bc3322939e90eaa7e2f84305b1c64a00b70 100755 --- a/rawEx/fit/specular/PolarizedSpinAsymmetryFit.py +++ b/rawEx/fit/specular/PolarizedSpinAsymmetryFit.py @@ -58,9 +58,9 @@ if __name__ == '__main__': "q_offset": (0, -0.002, 0.002), "rho_Mafo": (6.3649, 2, 7), "rhoM_Mafo": (0, 0, 2), - "t_Mafo": (150, 60, 180), - "r_Mao": (1, 0, 12), - "r_Mafo": (1, 0, 12), + "t_Mafo": (15, 6, 18), + "r_Mao": (0.1, 0, 1.2), + "r_Mafo": (0.1, 0, 1.2), } PInitial = {d: v[0] for d, v in startParams.items()} diff --git a/rawEx/fit/specular/Pt_layer_fit.py b/rawEx/fit/specular/Pt_layer_fit.py index 76da673f4818f762366aa6842461cfe644c8d8ff..7c15cc20783cad9308dfa729e53f306e029332c3 100755 --- a/rawEx/fit/specular/Pt_layer_fit.py +++ b/rawEx/fit/specular/Pt_layer_fit.py @@ -9,7 +9,7 @@ band of roughly 4-7 Ã… in 100 steps of 2theta. """ import bornagain as ba, numpy as np, os, matplotlib.pyplot as plt -from bornagain import angstrom +from bornagain import nm from bornagain.numpyutil import Arrayf64Converter as dac datadir = os.getenv('BA_DATA_DIR', '') @@ -32,14 +32,14 @@ def get_sample(P): interlayer = ba.TanhInterlayer() - si_autocorr = ba.K_CorrelationModel(P["r_si/nm"]) - pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"]) + si_autocorr = ba.K_CorrelationModel(P["r_si/nm"]*nm, 0.7, 25*nm) + pt_autocorr = ba.K_CorrelationModel(P["r_pt/nm"]*nm, 0.7, 25*nm) r_si = ba.LayerRoughness(si_autocorr, interlayer) r_pt = ba.LayerRoughness(pt_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_pt/nm"], r_pt) + layer = ba.Layer(material_layer, P["t_pt/nm"]*nm, r_pt) substrate_layer = ba.Layer(material_substrate, r_si) sample = ba.Sample() diff --git a/rawEx/fit/specular/TREFF_Ni_film.py b/rawEx/fit/specular/TREFF_Ni_film.py index d99dc2b8a9de8b3d27d630a019413f0a2cd70dd7..5f437c91d8b55669d29568d8633aeb0f44a157f7 100755 --- a/rawEx/fit/specular/TREFF_Ni_film.py +++ b/rawEx/fit/specular/TREFF_Ni_film.py @@ -28,10 +28,10 @@ def get_sample(P): # Layers and interfaces interlayer = ba.TanhInterlayer() - Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"]) + Ni_autocorr = ba.K_CorrelationModel(P["sigma_Ni"], 0.7, 25*nm) roughness_Ni = ba.LayerRoughness(Ni_autocorr, interlayer) - sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"]) + sub_autocorr = ba.K_CorrelationModel(P["sigma_Substrate"], 0.7, 25*nm) roughness_Substrate = ba.LayerRoughness(sub_autocorr, interlayer) layer_Ni = ba.Layer(material_Ni_58, P["thickness"], roughness_Ni) diff --git a/rawEx/specular/MagneticLayerImperfect.py b/rawEx/specular/MagneticLayerImperfect.py index 892cddd12692fd9b6cf6aac3d2371c54a0f12eb5..95ac6267d0983f8fa410a17615b21daff61b5de0 100755 --- a/rawEx/specular/MagneticLayerImperfect.py +++ b/rawEx/specular/MagneticLayerImperfect.py @@ -6,7 +6,7 @@ similar to Devishvili et al., Rev. Sci. Instrum. 84, 025112 (2013). """ import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from math import sin, cos def get_sample(): @@ -19,14 +19,14 @@ def get_sample(): material_Fe = ba.MaterialBySLD("Fe", 8.0241e-06, 6.0448e-10, B) material_substrate = ba.MaterialBySLD("MgO", 5.9803e-06, 9.3996e-12) - autocorr = ba.K_CorrelationModel(20*angstrom) + autocorr = ba.K_CorrelationModel(2*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() roughness = ba.LayerRoughness(autocorr, interlayer) # Layers layer_vacuum = ba.Layer(vacuum) - layer_Pd = ba.Layer(material_Pd, 120*angstrom, roughness) - layer_Fe = ba.Layer(material_Fe, 1000*angstrom, roughness) + layer_Pd = ba.Layer(material_Pd, 12*nm, roughness) + layer_Fe = ba.Layer(material_Fe, 100*nm, roughness) layer_substrate = ba.Layer(material_substrate, roughness) # Multilayer diff --git a/rawEx/specular/PolarizedSpinAsymmetry.py b/rawEx/specular/PolarizedSpinAsymmetry.py index 1297a8969d9c087f4ec859c43086a5ef89d13378..0ea01ac6bec1ad0dff4d58828b5656017144e838 100755 --- a/rawEx/specular/PolarizedSpinAsymmetry.py +++ b/rawEx/specular/PolarizedSpinAsymmetry.py @@ -12,7 +12,7 @@ demonstration without the magnetically dead layer. import os import numpy import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, R3 +from bornagain import nm, ba_plot as bp, deg, R3 from bornagain.numpyutil import Arrayf64Converter as dac @@ -47,8 +47,8 @@ def get_sample(P): material_layer = ba.MaterialBySLD("(Mg,Al,Fe)3O4", P["rho_Mafo"]*1e-6, 0, B) material_substrate = ba.MaterialBySLD("MgAl2O4", *sldMao) - r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*angstrom) - r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*angstrom) + r_Mafo_autocorr = ba.K_CorrelationModel(P["r_Mafo"]*nm, 0.7, 25*nm) + r_sub_autocorr = ba.K_CorrelationModel(P["r_Mao"]*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() @@ -56,7 +56,7 @@ def get_sample(P): r_substrate = ba.LayerRoughness(r_sub_autocorr, interlayer) ambient_layer = ba.Layer(vacuum) - layer = ba.Layer(material_layer, P["t_Mafo"]*angstrom, r_Mafo) + layer = ba.Layer(material_layer, P["t_Mafo"]*nm, r_Mafo) substrate_layer = ba.Layer(material_substrate, r_substrate) sample = ba.Sample() @@ -207,9 +207,9 @@ if __name__ == '__main__': 'q_offset': 7.971243487467318e-05, 'rho_Mafo': 6.370140108715461, 'rhoM_Mafo': 0.27399566816062926, - 't_Mafo': 137.46913056084736, - 'r_Mao': 8.60487712674644, - 'r_Mafo': 3.7844265311293483 + 't_Mafo': 13.746913056084736, + 'r_Mao': 0.860487712674644, + 'r_Mafo': 0.37844265311293483 } def run_Simulation_pp(qzs, P): diff --git a/rawEx/specular/RoughnessModel.py b/rawEx/specular/RoughnessModel.py index 90905aa67c65cb9563fdc8ae6a5e1b97a711170d..1a98b14dadfada6a841f37940b8841eae2cd29ca 100755 --- a/rawEx/specular/RoughnessModel.py +++ b/rawEx/specular/RoughnessModel.py @@ -5,7 +5,7 @@ tanh and Nevot-Croce roughness model using BornAgain. """ import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg +from bornagain import angstrom, nm, ba_plot as bp, deg def get_sample(interlayer): @@ -16,13 +16,13 @@ def get_sample(interlayer): material_substrate = ba.MaterialBySLD("SiSubstrate", 2.0704e-06, 0) # Roughness - autocorr = ba.K_CorrelationModel(10*angstrom) + autocorr = ba.K_CorrelationModel(1*nm, 0.7, 25*nm) roughness = ba.LayerRoughness(autocorr, interlayer) # create layers ambient_layer = ba.Layer(vacuum) - ti_layer = ba.Layer(material_ti, 30*angstrom, roughness) - ni_layer = ba.Layer(material_ni, 70*angstrom, roughness) + ti_layer = ba.Layer(material_ti, 3*nm, roughness) + ni_layer = ba.Layer(material_ni, 7*nm, roughness) substrate_layer = ba.Layer(material_substrate, roughness) # create periodic stack diff --git a/rawEx/specular/SpecularSimulationWithRoughness.py b/rawEx/specular/SpecularSimulationWithRoughness.py index 1cd1319c263ca6a4b035da5819bf8592ee26250a..60d59fbb9275d83da76751129b63df001a5f9562 100755 --- a/rawEx/specular/SpecularSimulationWithRoughness.py +++ b/rawEx/specular/SpecularSimulationWithRoughness.py @@ -5,7 +5,7 @@ with a rough sample using BornAgain. """ import bornagain as ba -from bornagain import angstrom, ba_plot as bp, deg, nm +from bornagain import nm, ba_plot as bp, deg, nm def get_sample(): @@ -16,14 +16,14 @@ def get_sample(): material_substrate = ba.MaterialBySLD("SiSubstrate", 2.0704e-06, 0) # roughness - autocorr = ba.K_CorrelationModel(1*nm) + autocorr = ba.K_CorrelationModel(1*nm, 0.7, 25*nm) interlayer = ba.TanhInterlayer() roughness = ba.LayerRoughness(autocorr, interlayer) # Layers ambient_layer = ba.Layer(vacuum) - ti_layer = ba.Layer(material_ti, 30*angstrom, roughness) - ni_layer = ba.Layer(material_ni, 70*angstrom, roughness) + ti_layer = ba.Layer(material_ti, 3*nm, roughness) + ni_layer = ba.Layer(material_ni, 7*nm, roughness) substrate_layer = ba.Layer(material_substrate, roughness) # Periodic stack @@ -44,7 +44,7 @@ def get_sample(): def get_simulation(sample): n = <%= test_mode ? 50 : 500 %> scan = ba.AlphaScan(n, 2*deg/n, 2*deg) - scan.setWavelength(1.54*angstrom) + scan.setWavelength(0.154*nm) return ba.SpecularSimulation(scan, sample)