电子束与材料相互作用Matlab代码

news2024/9/29 23:37:48

标题

  • 1 题目
  • 2 实验原理
    • 2.1 蒙特卡洛模拟的基本思想
    • 2.2 电子散射的基本概念
  • 3 代码

1 题目

扫描透射电镜(STEM)的基本原理是用极细的扫描电子束透射样品,透射电子直接被具有一定张角的接收器所接收,透射电流的强度直接反应了样品的质量厚度。
对于一定厚度的样品,采用蒙特卡洛方法模拟电子在样品中的散射过程,分析投射样品的电子的角度分布,计算散射角小于接收器张角的电子数目,电子透过率为 。
任务:扫描透射电子显微镜电子透过率的计算
在这里插入图片描述
任务1:模拟电子在Al材料中的运动过程。
任务2:计算不同能量的入射电子穿透不同厚度后,一定接受角对应的电子透过率。

2 实验原理

2.1 蒙特卡洛模拟的基本思想

对求解问题本身就具有概率性和统计性的情况,例如中子在介质中传播,核衰变过程等,我们可以使用直接蒙特卡洛模拟方法。该方法是按照实际问题所遵循的概率规律统计规律,用电子计算机进行直接的抽样试验,然后计算其统计参数。直接蒙特卡洛模拟法最充分体现出蒙特卡洛方法无可比拟的特殊性和优越性,因为在物理学的各种各样问题中得到广泛的应用。该方法也就是通常所说的“计算机实验”。

2.2 电子散射的基本概念

一定能量的电子(大于数10eV)与材料原子发生相互作用所产生动量和能量变化的过程(俗称碰撞)。
电子散射可以分为两大类:弹性散射和非弹性散射,其区别在于散射过程中原电子的能量是否发生变化。
自由程:当一个电子在材料中运动时,会以一定的几率与材料原子发生散射。可以认为散射发生在一个点上,而在连续的两次散射之间,电子作自由(匀速直线运动)。其中电子在连续两次散射之间运动的路程为自由程。

3 代码

E0=300; 
alpha=0.1;
alpha1=0.05; 
I0 = 50000;
i = 0;
y = zeros(1,16);
y1 = zeros(1,16);
H = 0*10^-6:1*10^-6:15*10^-6;
for  h=0*10^-6:1*10^-6:15*10^-6
    i = i+1;
    number=calc(E0,alpha,h,I0);
    y(i)=number/I0;  
    number1=calc(E0,alpha1,h,I0);
    y1(i)=number1/I0; 
   
end
semilogy(H,y,'-r',Marker="square");
hold on;
semilogy(H,y1,'-g',Marker='o');
xlabel('材料厚度(m)')
ylabel('I/I0')
text(10*10^-6,0.45,'100mrad')
text(10*10^-6,0.2,'45mrad')

clc
clear
d=5*10^-6; %厚度设置为5微米
alpha=0.1;%角度
alpha1=0.045;
I0 = 20000;%总发射电子数
y_r = [];
y1_r = [];
for  E0=100:20:500 %入射电子能量范围
    number=calc(E0,alpha,d,I0);%100mrad
    y=number/I0;  %透过率
    number1=calc(E0,alpha1,d,I0);%45mrad
    y1=number1/I0; %计算不同张角下的透过率 
    y_r = [y_r,y];
    y1_r = [y1_r,y1];
end
E0=100:20:500;
semilogy(E0,y_r,'-r',Marker="square");
hold on;
semilogy(E0,y1_r,'-g',Marker='o');
xlim([0 500])
xlabel('电子能量(keV)')
ylabel('I/I0')
text(250,0.6,'100mrad')
text(250,0.25,'50mrad')

function [It]=calc(E0,alpha,T,I0)
%E0电子入射能量,alpha角度,T厚度
keV = 1.6*10^-16;%能量,千电子伏,与E0相乘得到初始能量
eV = 1.6*10^-19;%电子电量
Z = 13;%原子序数
h = 6.626*10^-34;%普朗克常量
c = 3*10^8;%光速
a0 = 0.0529*10^-9;%波尔半径
m0 = 9.11*10^-31;%电子质量
%N = 7.5*10^28;%材料电子密度
N = 6*10^28;%单位体积靶原子个数
%T = 100*10^-6;%材料厚度(m)

phi0 = 0.117*Z^(1/3)/(E0)^0.5;
nuR = h/(2*m0*eV*(1+eV/(2*m0*c^2)))^0.5;
sigma = nuR^4*Z^2/(16*pi^3*a0^2*(phi0/2)^2*(1+(phi0/2)^2));

nu = 1/(N*sigma);%平均自由程
nu = nu+556*10^-9;%实际上应该是这个数量级

%I0 = 100;%总发射电子数
It = 0;%接收区内电子数
RAD = alpha;%接收角度

for i=1:1:I0%总运算次数(发射电子个数)
    r0 = [0,0,0];%初始位置(前一时刻)
    n0 = [0,0,1];%初始方向
    r1 = [0,0,0];%后一时刻
    n1 = [0,0,0];
    rad = 0;
    for j=1:1:10000%计算单个粒子,单次计算最多10000步
       
        if r0(3)>T%材料厚度,大于厚度就算打穿,进入角度判定
            if rad<=RAD
            It = It+1;
            end
            break;
        elseif r0(3)<0%小于0了,就视为反射出材料
            break;
        end
        %初始方向计算两个角度
        cos_k1=n0(3);
        sin_k1 = sqrt(1-cos_k1^2);
        if sin_k1==0
            sin_kk1 = 0;
        else
            sin_kk1 = n0(2)/sin_k1;
        end
        cos_kk1 = sqrt(1-sin_kk1^2);
        
        %散射角
        r = rand(1);
        cos_k = 1-(r*phi0^2)/2/(1+phi0^2/4-r);
        sin_k = sqrt(1-cos_k^2);
        %方位角
        rr = rand(1);
        kk = 2*pi*rr;
        cos_kk=cos(kk);
        sin_kk=sin(kk);
        %单程s
        rrr = rand(1);
        s = -nu*log(rrr);
        %新的运动方向
        nn = [cos_k1*cos_kk1,-sin_kk1,sin_k1*cos_kk1;
            cos_k1*sin_kk1,cos_kk1,sin_k1*sin_kk1;
            -sin_k1,0,cos_k1];
        n2 = [sin_k*cos_kk,sin_k*sin_kk,cos_k];
        n1 = (nn*n2')';
        n0 = n1;
        %电子行进
        r1 = r0+s*n1;
        r0 = r1;
        rad=(n1(1)^2+n1(2)^2)^0.5/(n1(1)^2+n1(2)^2+n1(3)^2)^0.5;%小角度近似,计算方向角度
    end
end
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试官:一千万的数据,你是怎么查询的?

面试官&#xff1a;一千万的数据&#xff0c;你是怎么查询的&#xff1f; 1 先给结论 对于1千万的数据查询&#xff0c;主要关注分页查询过程中的性能 针对偏移量大导致查询速度慢&#xff1a; 先对查询的字段创建唯一索引 根据业务需求&#xff0c;先定位查询范围&#xff08…

23Java面试专题 八股文面试全套真题(含大厂高频面试真题)

准备篇-01-企业简历筛选规则 准备篇-02-简历注意事项 等写简历的时候看02和04... 准备篇-03-应届生该如何找到合适的练手项目 &#xff01;准备篇-04-Java程序员的面试过程 Redis篇-01-redis开篇 感觉有点难 Redis篇-02-redis使用场景-缓存-缓存穿透 Redis篇-03-redis使用场景-…

一日一题:第十题---并查集(集合合并)and 二叉树遍历

​作者&#xff1a;小妮无语 专栏&#xff1a;一日一题 &#x1f6b6;‍♀️✌️道阻且长&#xff0c;不要放弃✌️&#x1f3c3;‍♀️ 今天来更前几天做的&#xff0c;怕忘记了hh 目录 并查集题目描述(集合合并)代码对路径压缩的解释 二叉树遍历题目描述代码 并查集 ​​​…

【JavaEE】死锁是什么?如何避免死锁(保姆级讲解)

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 本篇文章将介绍什么是死锁&#xff0c;死锁的四大必要条件&#xff0c;如何去避免死锁~~~ 目录 一、死锁是什么&#xff1f; 二、关于死锁的情况 2.1 一个线程的情况 2.2 两个线程的情…

javaweb家具购物商城的电商设计与实现

目 录 1 绪论 1 1.1 项目背景 1 1.2 研究意义 1 1.3 本系统概述 2 2系统分析 3 2.1 系统需求分析 3 2.1.1 功能需求 3 2.1.2 性能需求 4 2.2 系统可行性分析 4 2.2.1 技术及开发方法可行性 4 2.2.2 管理可行性 4 2.2.3 经济可行性 5 2.3 业…

CPU的一、二、三级缓存

在Java并发编程中&#xff0c;我们经常会遇到共享变量的读写问题&#xff0c;关于这类问题我们经常会说到原子性、可见性、有序性这三大特性&#xff0c;再进一步会了解到总线和CPU的一、二、三级缓存。关于这三个级别的缓存网上文章介绍比较多&#xff0c;今天我们这篇文章&am…

Django REST Framework(DRF)框架之其他常用API的使用

DRF之其他常用API的使用 限流Throttling限流类设置全局默认限流策略基于类视图限流定义限流频次自定义限流类 过滤Filtering查询集过滤查询参数过滤使用过滤器组件使用过滤器字段过滤字段排序 分页Pagination常用分页类全局与局部的使用自定义分页类 异常处理Exceptions常见异常…

Docder 安装——Windows版

Docder 安装——Windows版 docder 下载地址 https://smartidedl.blob.core.chinacloudapi.cn/docker/20210926/Docker-win.exe 1、使用 PowerShell 启用 Hyper-V 以管理员身份打开 PowerShell 控制台&#xff0c;运行以下命令&#xff1a; Enable-WindowsOptionalFeature -On…

在flowforge中使用模版配置来自定义node-red实例

添加模版设置 在FlowForge中,每个项目都是从模板创建的。模板为项目定义了一组预配置的选项。这包括运行时设置- 比较常见就是 Node-RED settings.js文件中设置的值。 模板还定义了项目可以自定义哪些选项。 本篇文章就来解释一下如何向模板对象中添加新的Node-RED运行时选项…

365天深度学习打卡 YOLOv5白皮书-第Y4周:common.py文件解读

YOLOv5白皮书-第Y4周&#xff1a;common.py文件解读 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 文件位置&#xff1a;./models/common.py 该文件是实现YOLO算法中各个模块的地方&#…

【Cpp】手撕搜索二叉树(KV模型)

文章目录 二叉搜索树的应用搜索二叉树(KV模型)代码:二叉搜索树的性能分析 二叉搜索树的应用 K模型&#xff1a;K模型即只有key作为关键码&#xff0c;结构中只需要存储Key即可&#xff0c;关键码即为需要搜索到的值。 比如&#xff1a;给一个单词word&#xff0c;判断该单词是…

水果FL Studio21最新中文完整版下载更新及内容介绍

简单总结一下&#xff0c;本次小版本更新最重要的内容&#xff0c;我个人认为是对于M1芯片的适配。其余的比如EQ2&#xff0c;3x这些我们很熟悉的插件虽说也有更新&#xff0c;但是估计并没有特别大的改动。我个人的话会先放一段时间&#xff0c;等下次有其他更让我感兴趣的内容…

吃透SpringMVC面试八股文

说说你对 SpringMVC 的理解 SpringMVC是一种基于 Java 的实现MVC设计模型的请求驱动类型的轻量级Web框架&#xff0c;属于Spring框架的一个模块。 它通过一套注解&#xff0c;让一个简单的Java类成为处理请求的控制器&#xff0c;而无须实现任何接口。同时它还支持RESTful编程…

【智能电网】智能电网中针对DOS和FDIA的弹性分布式EMA(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

burpsuite的基本使用

一&#xff0c;Proxy&#xff08;代理&#xff09; 目录 一&#xff0c;Proxy&#xff08;代理&#xff09; 1.1 intercept &#xff08;拦截&#xff09; 1.2 HTTP history&#xff08;HTTP历史记录&#xff09; 1.3 WebSockets history 1.4 options&#xff08;选项&am…

转换CAJ到PDF: 教你如何转换这两种文件格式

在现代信息化社会中&#xff0c;我们常常需要处理各种文件格式&#xff0c;例如常见的文本文档、PDF、图片、视频等等。其中&#xff0c;学术界或者专业人士常常会接触到一种叫做CAJ格式的文件&#xff0c;而这个格式在阅读、编辑以及分享方面可能存在一些限制。为了解决这个问…

影响LED显示屏使用的因素

LED显示屏和其他物品一样&#xff0c;在使用中不免遇到这样或那样的问题。在使用LED显示屏的时候&#xff0c;可能会因散热设计、混灯八个问题&#xff0c;导致困难或影响LED显示屏的使用。而为能使LED显示屏的后期使用效能稳定&#xff0c;首先要做的就是预防它的老化。下面为…

Python OpenCV3 计算机视觉秘籍:6~9

原文&#xff1a;OpenCV 3 Computer Vision with Python Cookbook 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 计算机视觉 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 当别人说你没有底线的时候&…

一文搞懂新型IO调度器BFQ简介

Linux io调度器有很多种&#xff0c;大多数调度器都经受住了各种市场环境的长时间验证&#xff0c;稳定性、性能得到各种用户的认可&#xff0c;但新的调度器依然展露头角&#xff0c;在4.12内核中出现了一个新的bfq调度器&#xff0c;这个调度器将取代曾经的辉煌的cfq调度器。…

Python3使用sys.argv和os.system 从一个程序调用另一个程序,并将参数传递

由于实验需要&#xff0c;需要从A.py 调用另一个B.py&#xff0c;并将A.py中的参数mean、max、min三个值传递给B。 这里参考了其他人的文章 http://t.csdn.cn/cQKio http://t.csdn.cn/QNqml http://t.csdn.cn/yEJeD 参考其他人的程序&#xff0c;发现其实很简单&#xff0c;…