射线追踪和X射线区域中的波传播,主要用于模拟同步辐射源、束线和束线元件。包括一个图形用户界面,用于创建波束线并在三维中查看它。

xrt的Python项目详细描述


包xrt(xraytracer)是一个python软件库,用于x射线领域中的射线追踪和波的传播。它主要用于同步加速器源、束线和束线元件的建模。包括一个图形用户界面,用于创建
光束线并在3D中交互查看它。

xrt的功能
----

**光线和波*。经典射线追踪和波通过基尔霍夫积分的传播,也可以自由混合。没有进一步的近似,如薄透镜或近轴透镜。光学表面可能有图形误差,分析误差或测量误差
。在波传播中,部分相干辐射通过对每个电子产生的相干衍射场的非相干相加来处理。一维和二维位置直方图同时由色调和亮度编码。通常,颜色表示
能量,亮度表示光束强度。用户可以选择其他由颜色编码的
量:角度和位置分布,
各种偏振特性,光束类别,反射次数,
入射角等。亮度也可以对选定的
偏振和入射的部分通量进行编码或者吸收能量。出版物质量图由matplotlib提供,图像格式为png、postscript、pdf和svg。

**光线数量不限*。彩色直方图是*累加*。可以停止并恢复累积。


**并行执行*。xrt可以在多个线程中并行运行,也可以在
进程(可以选择)中并行运行,从而加速多核计算机上的执行。或者,xrt可以通过opencl使用gpu的能力来运行特殊任务,比如计算波动源,或者执行波传播。xrt可以在python脚本中运行,在改变几何或物理参数的情况下生成一系列
图像。图像
亮度和1d直方图可在整个系列中标准化为全局最大值


**同步辐射源*。在xrt内计算了弯曲磁铁、摆动器、波动器和椭圆波动器。还有一种传统的同步辐射源采样方法,使用xop包中的"ws"和"紧急"代码。请参阅"同步加速器源代码的比较"一节,了解实现之间的比较。如果光子源是同步辐射源之一,
光束中的总通量不仅以射线数表示,而且以ph/s的物理单位表示。
可以选择总功率或吸收功率而不是通量,并以w表示。功率密度可以用等值线表示。波荡器的磁隙可以变小。波动器可以在近场下计算。
也可以自定义磁场。波荡器可以在gpu上计算,
具有较高的计算速度增益,这对于逐渐变细和
近场计算非常重要。

**形状*。有几种预定义的光学元件形状被实现为python类。继承机制简化了其他
形状的创建。用户指定曲面高度和曲面
法线的方法。对于非对称晶体,可以另外给出垂直于原子平面的
。曲面和法线在局部
(x,y)坐标或用户定义的参数坐标中定义。参数化
表示启用闭合形状,如毛细血管或波导。它也使复杂形状(如对数螺线)的精确解不需要任何展开。找到射线与
表面交叉点的方法非常可靠,可以处理象尖锐的
表面扭结这样的病理病例。请注意,SE交叉点的拱形不涉及任何近似值,只有数值精度,默认值为1fm。任何表面都可以与(不同且可变
取向的)晶体结构和/或(可变)光栅矢量相结合。表面可以
分面。

**能量色散元件*。实现了动态
衍射中的晶体、光栅(也包括效率计算)、菲涅耳区
板、布拉格-菲涅耳光学和动态衍射中的多层膜。
晶体可以在布拉格或劳厄情况下工作,在反射或透射中,
两个场极化现象完全保留,也在
达尔文衍射平台内,因此能够对基于晶体的
相位延迟器进行光线跟踪。

**材料*。使用三种不同的
散射因子表,以不同的宽度和不同的
密集能量网格,将材料特性结合起来。根据散射系数计算折射率和吸收系数。两个表面物体,如平板或折射透镜,均经过折射和吸收处理。

**多次反射*。xrt可以在单个光学元件中跟踪多个反射。这很有用,例如在"窃窃私语画廊"光学系统中,或在蒙特尔或沃尔特反射镜中。

**非顺序光学系统*。xrt可以跟踪非连续光学系统,其中入射光束的不同部分会遇到不同的表面。这种光学的例子是多毛细血管和wolter镜。xrt正确地传播涡旋光束,可用于研究通过透射或反射光学产生涡旋光束。光学元件位于全局坐标系中。这对于模拟真正的同步加速器束线是很方便的。该系统中的坐标可以直接从cad
库中获取。光学表面在其本地系统中定义,以方便用户使用。xrt根据几个类别来区分光线:"好的"、"坏的"、"坏的"和"坏的"。这种区别简化了入口和出口缝的调整。如果死射线的分数
超过指定水平,则会触发警报。

**便携性*。xrt在windows和类unix的平台上运行,您可以在任何地方
运行python。

**示例*。XRT附带了许多示例;请参见库,链接位于顶部的栏中。


xrtqook——一个用于创建脚本的图形用户界面
这类
脚本的许多示例可以在提供的文件夹"examples"中找到。脚本导入xrt的
模块,实例化光束线部件,如同步加速器或几何
源、各种光学元件、光圈和屏幕,指定反射、折射或衍射所需的
材料,定义绘图并设置作业
参数。qt工具xrtqook采用了这些元素,并准备了一个可以在工具本身或外部python上下文中运行的随时可用的脚本。提供所用类的完整参数列表,
还包括来自父类的参数。xrtqook在xml文件中写入/读取波束线的配方。


xrtglow——一个交互式的3d波束线查看器
——它可以可视化光束、脚印、表面、光圈和
屏幕。亮度表示强度,颜色表示用户选择的辅助分布,典型能量。虚拟屏幕可以放在任何位置,用鼠标拖动,同时观察其上的光束分布。


xrtglow的主要目的是演示对齐的正确性,因为xrtqook可以自动计算多个位置。以及角度参数。


依赖项
----


numpy、scipy和matplotlib是必需的。如果在
gpu或cpu上使用opencl进行计算,则需要amd/nvidia驱动程序、``intel cpu only opencl runtime`
(这些是搜索关键字)、pytools和pyopencl。xrtqook需要pyqt4或pyqt5
。强烈建议使用Spyder(作为Spyder IDE的库),以便更好地查看XRTQook。xrtglow需要opengl。

python 2和3
----


代码可以在两个python分支中运行,无需任何修改。


get xrt
----

<;https://pypi.python.org/pypi/xrt>获得源代码分发;`来自"github
<;https://github.com/kklmn/xrt>;"。分发档案还包括测试、
和示例。完整的文档可在
`联机阅读文档<;http://xrt.read the docs.io>;``和脱机作为zip文件在
`github<;https://github.com/kklmn/xrt docs>;`.

获取帮助
——


若要获取帮助和/或报告错误,请使用"github xrt issues
<;https://github.com/kklmn/xrt/issues>;`。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring MVC 4.0 RequestMapping无值,基于methodname   java Samsung 10 plus不允许wifi p2p发现   春爪哇。伊奥。IOException:找不到文件   java JasperReport饼图示例   java我试图使用mockito注释来测试我的代码,但无法解决mockito异常   命令行界面Java:制作简单的交互式cli应用程序   java jdk1之间的区别是什么。7_9 9和jdk1。7_271   java重载一个被重写的、继承的方法   java LazyInitializationException春季启动   java Play Framework 2.2.1 3个表之间存在大量关系