当前位置: 首页 > news >正文

发光太阳聚光器的蒙特卡洛光线追踪研究(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码及文章


💥1 概述

蒙特卡罗技术是一种通过统计方法模拟光子在系统中传播的方法。随机数、累积分布函数(CDF)和概率密度函数(PDF)被用来从函数或谱线(如太阳AM 1.5)中进行抽样。通过这种方式,随机数决定了光子的行进方式,从而避免了复杂的辐射传输方程。

如果x是从均匀分布[0,1]中抽取的随机数,那么CDF可以被设定为x,并可以重新排列以便获得需要随机选择的变量。通过这种方式,CDF下的面积将等于从均匀分布中选择的随机数下的面积,当足够多次地进行抽样选择时,随机选择的变量将能够重新创建原始的概率密度函数。

表面相互作用是该程序的核心。首先确定光子与LSC的哪个面进行相互作用,然后通过调用is_TIR函数检查光子是反射还是透射。如果光子完全内部反射,则根据光子在反射后是否在LSC内或是否与另一个边界相交来设置PH_ACTION的状态。
首先通过whichSurface()函数确定光子与哪个面相交,并返回面的编号。Which surface首先检查光子是否与一个平面相交,然后通过确定光子和平面的交点是否在LSC边界内进行第二次检查。

Is_TIR.m
确定面后,需要确定光子是否在空气/LSC边界发生反射或透射。在光子撞击LSC的一个面后,表面相互作用调用is_TIR函数来确定光子是否完全内部反射(total internal reflection)或透过表面传输。首先从主程序中获取全反射的临界角:

详细讲解见第4部分。

📚2 运行结果

部分代码:

%% Calculate the CDF of an emission spectrum 

A = csvread('LumRed305_Emission_Spectrum.csv');
wavelength = A(:,1);  % Reads wavelengths from first column 
em = A(:,2); % Reads extinction coef from second column
num = 0;
k = length(em);
sum_Em =0;

P = trapz(em)
 % Numerical integration using trapezoidal method

    for i=1:1:(k-1)
        sum_Em = sum_Em + 0.5*(em(i+1) +em(i))*(wavelength(i+1) - wavelength(i));
    end

    % sumEm is the numerical integral of Flux over all wavelengths
    % calculate CDF_em(i) the cumulative distribution function for any wavelength i
    % Divide C(i) by integral over all wavelengths to normalise the inegral of
    % C(i) to equal 1

    % The following for loop normalises the numerical integration 
    for i=(1:1:(k))
        num =0;
        for(j=1:1:(i-1))
        
            num = num + 0.5*(em(j+1) +em(j))*(wavelength(j+1) - wavelength(j));
        end
     
    CDF_Em(i) = num /sum_Em; % Cumulative distribution function of the Emission spectrum
   
    end
    
    plot(wavelength,CDF_Em) %Plots CDF of emission spectrum
    % The following for loop returns randomly selected emission wavelengths
    % based on the CDF calculated above. The number of randomly emitted photons
    % will equal the length of the vector QY_selected_lambdas
    
    % Save CDF as CSV file for use in photons_emitted function
    t = transpose(CDF_Em);
    w = transpose(wavelength);
    dataToSave = [ wavelength transpose(CDF_Em) ]
    csvwrite('CDF_Emission_Spectrum.csv',dataToSave)

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码及文章

http://www.lryc.cn/news/157403.html

相关文章:

  • (涨知识)-圣诞灯串类产品出口都需要做哪些认证?
  • ROS地图/像素坐标描点调试【Python源码实现】
  • 2023年7月京东笔记本电脑行业品牌销售排行榜(京东数据平台)
  • 用户忠诚度:小程序积分商城的用户保持方法
  • [前端] 使用lerna version更新版本号
  • winform嵌入浏览器 webView2
  • stm32---用外部中断实现红外接收器
  • Filter过滤器及HttpServletRequest和HttpServletResponse
  • 02-打包代码与依赖
  • Kotlin(五) 循环语句
  • 数字孪生产品:数字化时代的变革引擎
  • 对接西部数据Western Digital EDI 系统
  • ClickHouse进阶(十):Clickhouse数据查询-4
  • FPGA原理与结构——FIFO IP核的使用与测试
  • ABB CMA120 3DDE300400面板
  • 【代码随想录day25】动态规划:01背包理论基础
  • Python Opencv实践 - 轮廓检测
  • c#保留两位小数
  • [machineLearning]非监督学习unsupervised learning
  • C语言深入理解指针(非常详细)(四)
  • 知识库建设:从0到1搞定知识库建设的方法论分享
  • SpringBoot+Vue 的留守儿童系统的研究与实现,2.0 版本,附数据库、教程
  • 28.考试
  • 浏览器窗口间的通信
  • MATLAB 的 plot 绘图
  • SpringBoot项目--电脑商城【获取省市区列表】
  • 使用git把本地项目关联远程代码仓库,并推送到远程仓库
  • Spring+MyBatis使用collection标签的两种使用方法
  • k8s集群中集群方式安装nacos
  • 极客时间:数据结构与算法之美【学习笔记+思考实践】