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

news2024/11/21 0:32:38

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

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

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

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

目录

💥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.coloradmin.cn/o/945459.html

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

相关文章

C++字符串详解

C 大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的 string 类。string 类处理起字符串来会方便很多,完全可以代替C语言中的字符数组或字符串指针。 string 是 C 中常用的一个类,它非常重要,我们…

uniapp 项目实践总结(一)uniapp 框架知识总结

导语:最近开发了一个基于 uniapp 框架的项目,有一些感触和体会,所以想记录以下一些技术和经验,在这里做一个系列总结,算是对自己做一个交代吧。 目录 简介全局文件全局组件常用 API条件编译插件开发 简介 uniapp 是…

Matlab(变量与文本读取)

目录 1.变量(数据)类型转换 1.1 字符 1.2 字符串 1.3 逻辑操作与赋值 2.Struct结构体数组 2.1函数的详细介绍: 2.1.1 cell2struct 2.1.1.1 垂直维度转换 2.1.1.2 水平维度转换 2.1.1.3 部分进行转换 2.1.2 rmfield 2.1.3 fieldnames(查…

Git分布式版本控制系统与github

第四阶段提升 时 间:2023年8月29日 参加人:全班人员 内 容: Git分布式版本控制系统与github 目录 一、案例概述 二、版本控制系统 (一) 本地版本控制 (二)集中化的版本控制系统 &…

C++day7(auto关键字、lambda表达式、C++中的数据类型转换、C++标准模板库(STL)、list、文件操作)

一、Xmind整理&#xff1a; 关键词总结&#xff1a; 二、上课笔记整理&#xff1a; 1.auto关键字 #include <iostream>using namespace std;int fun(int a, int b, float *c, char d, double *e,int f) {return 12; }int main() {//定义一个函数指针&#xff0c;指向fu…

【USRP】集成化仪器系列1 :信号源,基于labview实现

USRP 信号源 1、设备IP地址&#xff1a;默认为192.168.10.2&#xff0c;请勿 修改&#xff0c;运行阶段无法修改。 2、天线输出端口是TX1&#xff0c;请勿修改。 3、通道&#xff1a;0 对应RF A、1 对应 RF B&#xff0c;运行 阶段无法修改。 4、中心频率&#xff1a;当需要…

自然语言处理-NLP

目录 自然语言处理-NLP 致命密码&#xff1a;一场关于语言的较量 自然语言处理的发展历程 兴起时期 符号主义时期 连接主义时期 深度学习时期 自然语言处理技术面临的挑战 语言学角度 同义词问题 情感倾向问题 歧义性问题 对话/篇章等长文本处理问题 探索自然语言…

腾讯云学生免费服务器如何申请?

腾讯云学生免费服务器如何申请?学生机申请流程&#xff0c;腾讯云学生服务器优惠活动&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置84…

老年人跌倒智能识别算法 opencv

老年人跌倒智能识别算法通过opencvpython深度学习算法框架模型&#xff0c;老年人跌倒智能识别算法能够及时发现老年人跌倒情况&#xff0c;提供快速的援助和救援措施&#xff0c;保障老年人的安全。Python是一种由Guido van Rossum开发的通用编程语言&#xff0c;它很快就变得…

读书笔记——《万物有灵》

前言 上一本书是《走出荒野》&#xff0c;太平洋步道女王提到了这本书《万物有灵》&#xff0c;她同样是看一点撕一点的阅读。我想&#xff0c;在她穿越山河森林&#xff0c;听见鸟鸣溪流的旅行过程中&#xff0c;是不是看这本描写动物有如何聪明的书——《万物有灵》&#xf…

完善区域企业监测预警机制,助推区域产业可持续发展

“五度易链”产业大数据解决方案由产业经济、智慧招商、企业服务、数据服务四大应用解决方案组成&#xff0c;囊括了产业经济监测、产业诊断分析、企业监测预警、企业综合评估、大数据精准招商、招商智能管理、企业管理、企业培育、企业市场服务、企业金融服务、产业数据开放服…

流程解决方案公司:用低代码技术平台实现流程化办公!

很多粉丝朋友会询问道可以用什么样的软件平台实现流程化办公。作为提供流程解决方案公司&#xff0c;流辰信息专业研发低代码技术平台&#xff0c;并且一直保持自主研发的奋斗心态&#xff0c;针对不同行业的特性&#xff0c;提供专属的框架定制服务&#xff0c;为客户朋友实现…

微信小程序左上角home图标的解决方法之一 层级混乱导致的home图标显示的问题 自定义左上角左侧图标的返回路径

这个项目的编辑页在tabbar上 导致跳到tabbar得使用wx.switchTab 保存后返回原来的页面就出现了左上角的home图标 本来想通过自定义home图标的跳转路径来解决这个问题 没想到居然找不到相关内容 有清楚的朋友麻烦给我留个言不胜感激 那我写一下我的骚操作 app.js globalData: {…

移动端和PC端对比【组件库+调试vconsole +单位postcss-pxtorem+构建vite/webpack+可视化echarts/antv】

目录 组件库 移动端 vue vant PC端 react antd vue element 调试&#xff1a;vconsole vs dev tools中的控制台&#xff08;Console&#xff09; ​​​​​​​vconsole&#xff1a;在真机上调试 postcss-pxtorem&#xff1a;移动端不同的像素密度 构建工具 web…

基于变色龙算法优化的BP神经网络(预测应用) - 附代码

基于变色龙算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于变色龙算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.变色龙优化BP神经网络2.1 BP神经网络参数设置2.2 变色龙算法应用 4.测试结果&#xff1a;5.Matlab代…

JVM运行时参数查看

常用命令查找文档站点&#xff1a;https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html -XX:PrintFlagsInitial 输出所有参数的名称和默认值&#xff0c;默认不包括Diagnostic和Experimental的参数。可以配合 -XX:UnlockDiagnosticVMOptions和-XX:UnlockEx…

选择结构(个人学习笔记黑马学习)

if语句 单行if语句 用户输入分数&#xff0c;如果分数大于600&#xff0c;视为考上一本大学&#xff0c;在屏幕上输出 #include <iostream> using namespace std;int main() {int score 0;cout << "请用户输入分数" << endl;cin >> score;c…

three.js(五):canvas 的响应式布局

1-canvas 的响应式布局 canvas 画布的尺寸有两种&#xff1a; 像素尺寸&#xff0c;即canvas画布在高度和宽度上有多少个像素&#xff0c;默认是300*150css 尺寸&#xff0c;即css 里的width和height 在web前端&#xff0c;dom元素的响应式布局一般是通过css 实现的。而canvas…

CocosCreator3.8研究笔记(一)windows环境安装配置

一、安装Cocos 编辑器 &#xff08;1&#xff09;、下载Cocos Dashboard安装文件 Cocos 官方网站Cocos Dashboard下载地址 &#xff1a; https://www.cocos.com/creator-download9下载完成后会得到CocosDashboard-v2.0.1-win-082215.exe 安装文件&#xff0c;双击安装即可。 …

gitlab-runner安装和部署项目

目录 1.安装gitlab-runner 1.1 添加官方仓库 1.2.1 安装最新版本 1.2.2 安装指定版本&#xff08;可选&#xff09; 1.2.3 更新runner&#xff08;可选&#xff09; 1.3 随便点开gitlab上的一个项目 1.4 gitlab-runner的注册 2.配置gitlab-runner 3.runner一些命令 gi…