In [1]:
"""
Example 3
- calculate brilliance curves of 4 different BLs for comparison
"""
import sys
isjupyter = "ipykernel" in sys.modules
import spectra
if isjupyter:
spectra.Start(mode="c")
import plotly.io as pio
pio.renderers.default = "notebook"
else:
spectra.Start(src="l")
spectra.Open("sample.json")
ublnames = ["SX-BL", "X-ray-BL"]
bmblnames = ["BM-BL", "Wiggler-BL"]
# brilliance curve for undulator beamlines
for ubl in ublnames:
spectra.SelectBL(ubl)
spectra.SelectCalculation("far", "Kvalue", "simpcalc", "allharm")
spectra.StartCalculation(folder="./output", prefix=ubl, serial=-1)
# spectrum for BM/Wiggler beamlines
for bmbl in bmblnames:
spectra.SelectBL(bmbl)
spectra.SelectCalculation("far", "energy", "simpcalc")
spectra.StartCalculation(prefix=bmbl, serial=-1)
# compare the brilliance
if isjupyter:
from IPython.display import display, HTML
display(HTML("<h2>Brilliance curves for different sources"))
spectra.ConfigurePlot(xscale="Logarithmic", yscale="Logarithmic")
spectra.PostProcessCLI.Plot(data=[*ublnames, *bmblnames], item="GA. Brilliance")
else:
spectra.ShowPostProcessor()
spectra.PostProcess.Plot("GA. Brilliance")
spectra.PostProcess.ComparativePlot(*ublnames, *bmblnames)
spectra.PostProcess.PlotScale(x="log", y="log")
if not isjupyter:
input("Completed. Press enter to exit. ")
spectra.Exit()
Brilliance curves for different sources
In [ ]: