仪器信息网APP
选仪器、听讲座、看资讯

用TOPAS校正XRD高角峰被Knife edge阻挡后的强度和峰形

X射线衍射仪(XRD)

  • 在XRD谱图中,低角(<5度)的背景常常很高。这部分强度计数主要是来源于空气散射。
    <---比如网上的这张XRD谱图, 低角背景很高,影响了Bragg峰的测量
    为了扣除空气散射,布鲁克Bruker开发了一种Motorised Knife Edge,其原理是悬在平板样品上刀片随着2theta逐渐升高。这个自动刀片的高度通过严格的几何公式计算,由程序控制,以保证不会阻挡入射X光束和反射X光束,只阻挡空气散射。

    但是,不是人人都买了这个先进设备的。。。以前大多数用户用的是手动调节高度的fix Knife edge。只扫低角的就把刀片调低点,需要扫到高角就把刀片调高点。(仔细点的用户会用点高中几何公式来计算不同狭缝宽度在某2tehta下的入射束高度。但毕竟是很麻烦的事情,不是每个XRD用户都关心仪器设置的。):

    现在的问题是虽然Fix knife edge低角的背景扣除确实很给力,但是它不会自动升起,在高角有可能阻挡Bragg信号。
    那么高角被阻挡的Bragg信号怎么校正呢?
    有两方面校正需要考虑到:一是当刀片阻挡入射束以后,样品受照面积下降,以至于Bragg峰强度下降。二是平板样品受照长度的减小使平板样品峰形非对称程度减小。所以,强度和峰形都要校正。
    哈哈, 又到了TOPAS 大显神通的地方了,我计算了入射束高度随2theta的变化,并把这个公式写成TOPAS macro。
    -------------论坛吃回车---手动分割线------------
    使用固定发散狭缝模式的用户可以使用这两个校正macro (只需要给这两个macro两个参数:1)发散狭缝divang;2)固定刀片高度keh):
    'Fix_Divergence_Shape_Correction: divang = divergence angle (EDFA); keh = knife edge height;
    macro Fix_Divergence_Shape_with_knife_edge(divang, keh)
    {one_on_x_conv = If(Rs Sin(divang/2 Deg) / Cos(Th - divang/2 Deg) < keh, -(Deg/2)/Tan(Th) divang^2, -2 keh^2 (Cos(Th))^3/Sin(Th) Rad/Rs^2);}
    -------------论坛吃回车---手动分割线------------
    'Fix_Divergence_Intensity_Correction: divang = divergence angle (EDFA); keh = knife edge height;
    macro Fix_Divergence_Intensity_with_knife_edge(divang, keh)
    {scale_pks = If(Rs Sin(divang/2 Deg) / Cos(Th - divang/2 Deg) < keh, 1, 2 keh Cos(Th)/Deg/divang/Rs);}
    -------------论坛吃回车---手动分割线------------
    使用渐开发散狭缝模式的用户可以使用这两个校正macro:(渐开狭缝是保证样品受照长度v不随2theta变化的扫描模式)(只需要给这两个macro两个参数:1)样品固定受照长度v;2)固定刀片高度keh):
    'Variable_Divergence_Shape_Correction: v = footprint (EDFL); keh = knife edge height;
    macro Variable_Divergence_Shape_with_knife_edge(v, keh)
    {one_on_x_conv = If(Th < 2*ArcTan(2keh/v), -v^2 Sin(2 Th) Rad/(4 Rs^2), -2 keh^2 (Cos(Th))^3/Sin(Th) Rad/Rs^2);}
    -------------论坛吃回车---手动分割线------------
    'Variable_Divergence_Intensity_Correction: v = footprint (EDFL); keh = knife edge height;
    macro Variable_Divergence_Intensity_with_knife_edge(v, keh)
    {scale_pks = If(Th < 2*ArcTan(2keh/v), Sin(Th), 2 keh/v Cos(Th));}
    -------------论坛吃回车---手动分割线------------
    TOPAS 用户只需要把上面两段macro,复制到TOPAS安装文件夹下的local.inc中,就可以在自己的inp 文件中使用了。
    欢迎大家使用,在楼下给出宝贵意见。
    -------------论坛吃回车---手动分割线------------
    又及:各位看官可能会问,以前不是在探测器端有Anti-scattering slit吗?
    对!但那是为闪烁计数器等0维探测器准备的,在那个时代,最好是用Motorised Anti-scattering Slit,跟Motorised Divergence Slit配合使用,可得到非常低的低角背景。 但自从1维 高速线性探测器盛行以来,Motorised Anti-scattering Slit会阻挡大部分1维线性探测器的通道,降低探测器效率,所以在用了1维探测器的设备上,扣除空气散射的任务最好是由Knife edge完成。
    +关注 私聊
  • 大陆

    第1楼2015/08/18

    赞!有个小问题,Fix_Divergence_Shape_with_knife_edge 程序是topas自带的,还是版主自己写的?

0
    +关注 私聊
  • iangie

    第2楼2015/08/19

    应助达人

    呵呵, 当然是自己写的~
    以第一个macro为例:
    'Fix_Divergence_Shape_Correction: divang = divergence angle (EDFA); keh = knife edge height;
    macro Fix_Divergence_Shape_with_knife_edge(divang, keh)
    {one_on_x_conv = If(Rs Sin(divang/2 Deg) / Cos(Th - divang/2 Deg) < keh, -(Deg/2)/Tan(Th) divang^2, -2 keh^2 (Cos(Th))^3/Sin(Th) Rad/Rs^2);}
    以prime '开头的都是comments
    macro 表示Variable_Divergence_Shape_with_knife_edge为宏名, divang与keh为宏参数
    宏{}中只有一个语句one_on_x_conv 是调整峰形非对称的卷积,后面的If( , , )是条件语句,即在临界角度之前用常规的平板样品卷积-(Deg/2)/Tan(Th) divang^2, 在临界角度之后用被knife edge阻挡后的平板样品卷积-2 keh^2 (Cos(Th))^3/Sin(Th) Rad/Rs^2
    临界条件Rs Sin(divang/2 Deg) / Cos(Th - divang/2 Deg) = keh 中Deg表示Pi/180, Th=θ,divang表示α 很容易通过基本几何得到。

    大陆(handsomeland) 发表:赞!有个小问题,Fix_Divergence_Shape_with_knife_edge 程序是topas自带的,还是版主自己写的?

0
    +关注 私聊
  • 大陆

    第3楼2015/08/19

    再赞一次!

    iangie(iangie) 发表:呵呵, 当然是自己写的~

0
    +关注 私聊
  • 七月

    第4楼2015/09/09

    我可以称你为高级玩家吗?这是程序猿的工作吧

0
    +关注 私聊
  • iangie

    第5楼2015/09/10

    应助达人

    本科生以上都学过C语言的
    TOPAS的公式与C语言相比简单多了
    正如minecraft这个游戏为什么这么火一样,就是因为它提供了一个平台,让玩家实现自己的各种自动化设想。
    同样,
    TOPAS是唯一允许用户自己定制精修模型的Rietveld软件,不火都不行:(以国际晶体学联合会的八本权威杂志为例)


    七月(shadow_hlr) 发表:我可以称你为高级玩家吗?这是程序猿的工作吧

0
    +关注 私聊
  • 七月

    第6楼2015/09/10

    iangie(iangie) 发表:本科生以上都学过C语言的
    TOPAS的公式与C语言相比简单多了
    正如minecraft这个游戏为什么这么火一样,就是因为它提供了一个平台,让玩家实现自己的各种自动化设想。
    同样,
    TOPAS是唯一允许用户自己定制精修模型的Rietveld软件,不火都不行:(以国际晶体学联合会的八本权威杂志为例)



    我只学过最基础的VB语言·····
    允许修改之后,当然更应该关注用户自己的修正方案是否合适吧,而关于这点有没相应的评价方式?

0
    +关注 私聊
  • iangie

    第7楼2015/09/11

    应助达人

    在创造了一个自动化的装置之后 minecraft并不会给玩家评价 “你的模型是对的”或者“你的模型不对”。
    只要能实现你想达到的功能,任何模型都是对的!
    同样在TOPAS中,只要你自定义的精修模型能够得到更好的拟合水平(即更小的残差Rwp),并且模型产生的结果符合物理意义。
    那么你模型就是对的,并且你创造的这个模型是可发表的。
    对于没信心创造进修模型的XRD的初学者,可以使用TOPAS的GUI (Graphic User Interface) 模式,里面所有常用模型都是表格化的(这是给初学者使用的),正如minecraft为玩家准备了 生存模式 一样。

    七月(shadow_hlr) 发表:

0
    +关注 私聊
  • 七月

    第8楼2015/09/11

    谢谢楼主深入解析。

    iangie(iangie) 发表:在创造了一个自动化的装置之后 minecraft并不会给玩家评价 “你的模型是对的”或者“你的模型不对”。
    只要能实现你想达到的功能,任何模型都是对的!
    同样在TOPAS中,只要你自定义的精修模型能够得到更好的拟合水平(即更小的残差Rwp),并且模型产生的结果符合物理意义。
    那么你模型就是对的,并且你创造的这个模型是可发表的。
    对于没信心创造进修模型的XRD的初学者,可以使用TOPAS的GUI (Graphic User Interface) 模式,里面所有常用模型都是表格化的(这是给初学者使用的),正如minecraft为玩家准备了 生存模式 一样。

0
    +关注 私聊
  • pertplus

    第9楼2015/09/27

    正在学习Topas, 这个之前都做背低拟合了,现在可以试试搂主的程序

0
    +关注 私聊
  • iangie

    第10楼2015/09/27

    应助达人

    本文的两个macro都是对峰的校正,一个校正峰强,一个校正峰形。跟背景没有关系。

    pertplus(pertplus) 发表:正在学习Topas, 这个之前都做背低拟合了,现在可以试试搂主的程序

0
查看更多
猜你喜欢最新推荐热门推荐更多推荐
举报帖子

执行举报

点赞用户
好友列表
加载中...
正在为您切换请稍后...