辐射换热仿真-主题070_热光伏系统辐射分析-主题070_热光伏系统辐射分析
主题070:热光伏系统辐射分析
摘要
热光伏(Thermophotovoltaic, TPV)技术是一种将热能直接转换为电能的新型能量转换技术,其核心原理是利用热辐射器发出的热辐射驱动光伏电池产生电能。本主题深入讲解热光伏系统的辐射分析理论与方法,包括热辐射器的光谱特性设计、光伏电池的带隙匹配、系统效率优化以及选择性辐射表面的应用。通过建立完整的辐射传递模型,分析影响TPV系统性能的关键因素,为高效热光伏系统的设计提供理论指导。
关键词: 热光伏、TPV、选择性辐射、带隙匹配、转换效率、热辐射器、光伏电池、光谱控制





1. 引言
1.1 热光伏技术的发展背景
随着全球能源危机和环境问题的日益严峻,开发高效、清洁的能源转换技术成为当务之急。热光伏(Thermophotovoltaic, TPV)技术作为一种新型的能量转换方式,近年来受到了广泛关注。TPV系统的基本原理是利用高温热辐射器发出的热辐射,通过光伏电池将其转换为电能。这种技术具有能量转换效率高、燃料适应性强、系统结构紧凑等优点,在军事、航天、工业余热回收等领域具有广阔的应用前景。
热光伏技术的概念最早可以追溯到20世纪60年代,但由于当时光伏电池效率低下、材料成本高昂,TPV技术的发展受到了很大限制。进入21世纪后,随着低带隙半导体材料(如GaSb、InGaAs)的突破、纳米光子学的发展以及选择性辐射表面技术的进步,TPV技术的转换效率得到了显著提升,重新成为研究热点。
1.2 热光伏系统的基本组成
一个典型的热光伏系统主要由以下几个部分组成:
(1)热源: 提供高温热能的装置,可以是燃烧器、放射性同位素、太阳能聚光器或工业余热等。热源的温度通常在1000-2000K范围内,是TPV系统能量输入的源头。
(2)热辐射器: 位于热源附近的高温表面,吸收热源的热量并以热辐射的形式向外发射电磁波。辐射器的光谱特性对TPV系统的效率具有决定性影响。
(3)光伏电池: 接收热辐射并将其转换为电能的核心器件。TPV电池通常采用低带隙半导体材料,如GaSb(带隙约0.67eV)、InGaAs(带隙可调至0.5-0.74eV)、Ge(带隙约0.67eV)等,以匹配热辐射的光谱分布。
(4)光谱滤波器: 位于辐射器和电池之间,用于反射低于电池带隙能量的光子回辐射器,提高系统效率。光谱滤波器可以是介质膜滤波器、光子晶体或金属-介质复合结构。
(5)冷却系统: 用于维持光伏电池在适宜的工作温度(通常低于100°C),防止电池过热导致效率下降或损坏。
1.3 热光伏技术的优势与挑战
热光伏技术相比传统能量转换技术具有以下优势:
(1)理论效率高: 基于热力学分析,TPV系统的理论转换效率可达50%以上,远高于传统热机(如斯特林发动机、热电转换器)的效率。
(2)无运动部件: TPV系统没有机械运动部件,运行安静、可靠性高、维护成本低,特别适用于航天和偏远地区供电。
(3)燃料适应性强: TPV系统可以使用多种燃料(天然气、氢气、生物质燃料等),也可以利用工业余热、太阳能等可再生能源。
(4)模块化设计: TPV系统可以灵活组合,适应不同功率需求,从瓦级到千瓦级应用均可实现。
(5)环境友好: TPV系统运行时污染物排放少,噪声低,符合环保要求。
然而,TPV技术也面临一些挑战:
(1)材料成本: 低带隙光伏电池和高温辐射器材料的成本较高,限制了TPV技术的大规模商业化应用。
(2)高温稳定性: 辐射器需要在高温下长期稳定工作,对材料的高温抗氧化性、机械强度提出了很高要求。
(3)光谱匹配: 实现辐射器发射光谱与光伏电池带隙的精确匹配是提高效率的关键,但技术难度较大。
(4)热管理: 光伏电池在工作时会产生大量废热,有效的热管理对于维持电池效率至关重要。
1.4 本主题的研究内容
本主题将系统介绍热光伏系统的辐射分析理论与方法,主要内容包括:
(1)热光伏系统的基本原理与能量转换机制
(2)热辐射器的光谱特性设计与优化
(3)光伏电池的辐射响应与效率分析
(4)选择性辐射表面的理论与应用
(5)TPV系统效率的理论极限与优化策略
(6)近场热光伏系统的辐射特性
(7)典型TPV系统案例分析与数值仿真
通过本主题的学习,读者将掌握热光伏系统辐射分析的核心方法,能够设计和优化高效的TPV系统。
2. 热光伏系统的基本原理
2.1 能量转换过程
热光伏系统的能量转换过程可以分为以下几个步骤:
(1)热能输入: 热源(如燃烧器)将化学能或热能传递给热辐射器,使辐射器温度升高至1000-2000K。
(2)热辐射发射: 高温辐射器根据普朗克黑体辐射定律向外发射热辐射。辐射的光谱分布取决于辐射器的温度和表面发射率特性。
(3)光谱滤波: 热辐射经过光谱滤波器,只有能量高于光伏电池带隙的光子(短波长)透过滤波器到达电池,能量低于带隙的光子(长波长)被反射回辐射器。
(4)光电转换: 光伏电池吸收高能光子,产生电子-空穴对,在内建电场作用下分离形成光生电流,输出电能。
(5)废热排出: 未被利用的光子能量(低于带隙的光子和高能光子的多余能量)以及电池内部的焦耳热需要通过冷却系统排出。
2.2 热力学分析
从热力学角度分析,TPV系统可以看作是一个热机,其效率受热力学第二定律的限制。根据卡诺定理,在两个温度分别为T_H(热辐射器温度)和T_C(光伏电池温度)的热源之间工作的热机,其最大效率为卡诺效率:
ηCarnot=1−TCTH\eta_{Carnot} = 1 - \frac{T_C}{T_H}ηCarnot=1−THTC
然而,TPV系统的实际效率远低于卡诺效率,主要原因包括:
(1)光谱失配损失: 热辐射的光谱分布很宽,而光伏电池只能利用能量高于带隙的光子,且每个光子只能产生一个电子-空穴对,多余能量以热的形式损失。
(2)电压因子损失: 光伏电池的开路电压V_oc小于带隙电压E_g/q,导致能量损失。
(3)填充因子损失: 由于电池的内阻和漏电流,实际输出功率小于理想值。
(4)光学损失: 包括反射损失、透射损失和遮挡损失等。
2.3 辐射能量平衡
在TPV系统中,能量平衡是分析系统性能的基础。考虑一个简化的TPV系统模型,包括热辐射器和光伏电池两个主要部件。
热辐射器的能量平衡:
热辐射器从热源吸收的热量等于辐射器向外辐射的能量损失:
Qin=Qrad+Qcond+QconvQ_{in} = Q_{rad} + Q_{cond} + Q_{conv}Qin=Qrad+Qcond+Qconv
其中,QinQ_{in}Qin为热源输入功率,QradQ_{rad}Qrad为辐射热损失,QcondQ_{cond}Qcond为传导热损失,QconvQ_{conv}Qconv为对流热损失。在高温真空环境下,辐射热损失是主要的能量损失机制。
辐射热损失可以表示为:
Qrad=Ar∫0∞ϵ(λ)⋅Mbb(λ,Tr)⋅dλQ_{rad} = A_r \int_0^{\infty} \epsilon(\lambda) \cdot M_{bb}(\lambda, T_r) \cdot d\lambdaQrad=Ar∫0∞ϵ(λ)⋅Mbb(λ,Tr)⋅dλ
其中,ArA_rAr为辐射器面积,ϵ(λ)\epsilon(\lambda)ϵ(λ)为辐射器的光谱发射率,Mbb(λ,Tr)M_{bb}(\lambda, T_r)Mbb(λ,Tr)为温度为TrT_rTr的黑体光谱辐射出射度(普朗克定律):
Mbb(λ,T)=2πhc2λ5⋅1exp(hcλkBT)−1M_{bb}(\lambda, T) = \frac{2\pi h c^2}{\lambda^5} \cdot \frac{1}{\exp(\frac{hc}{\lambda k_B T}) - 1}Mbb(λ,T)=λ52πhc2⋅exp(λkBThc)−11
光伏电池的能量平衡:
光伏电池接收的辐射功率等于输出的电功率加上各种损失功率:
Qabs=Pelec+Qcell,lossQ_{abs} = P_{elec} + Q_{cell,loss}Qabs=Pelec+Qcell,loss
其中,QabsQ_{abs}Qabs为电池吸收的辐射功率,PelecP_{elec}Pelec为输出电功率,Qcell,lossQ_{cell,loss}Qcell,loss为电池的热损失(包括非辐射复合、欧姆热等)。
电池吸收的辐射功率为:
Qabs=Ac∫λgap∞α(λ)⋅Mincident(λ)⋅dλQ_{abs} = A_c \int_{\lambda_{gap}}^{\infty} \alpha(\lambda) \cdot M_{incident}(\lambda) \cdot d\lambdaQabs=Ac∫λgap∞α(λ)⋅Mincident(λ)⋅dλ
其中,AcA_cAc为电池面积,α(λ)\alpha(\lambda)α(λ)为电池的光谱吸收率,Mincident(λ)M_{incident}(\lambda)Mincident(λ)为入射光谱辐射出射度,λgap\lambda_{gap}λgap为带隙对应波长。
2.4 光谱匹配原理
光谱匹配是TPV系统设计的核心问题。理想情况下,热辐射器应该只在光伏电池可利用的波段(λ<λgap\lambda < \lambda_{gap}λ<λgap)发射辐射,而在其他波段(λ>λgap\lambda > \lambda_{gap}λ>λgap)不发射辐射。这样可以最大限度地减少光谱失配损失。
带隙能量与波长的关系:
光伏电池的带隙能量EgE_gEg与截止波长λgap\lambda_{gap}λgap的关系为:
λgap=hcEg=1.24Eg(eV)(μm)\lambda_{gap} = \frac{hc}{E_g} = \frac{1.24}{E_g(eV)} \quad (\mu m)λgap=Eghc=Eg(eV)1.24(μm)
例如,对于GaSb电池(Eg=0.67E_g = 0.67Eg=0.67 eV),λgap≈1.85\lambda_{gap} \approx 1.85λgap≈1.85 μm;对于InGaAs电池(Eg=0.60E_g = 0.60Eg=0.60 eV),λgap≈2.07\lambda_{gap} \approx 2.07λgap≈2.07 μm。
选择性辐射表面:
为了实现理想的光谱匹配,需要设计选择性辐射表面。选择性辐射表面在短波波段(λ<λgap\lambda < \lambda_{gap}λ<λgap)具有高发射率,在长波波段(λ>λgap\lambda > \lambda_{gap}λ>λgap)具有低发射率。这种选择性可以通过多种方式实现:
(1)本征选择性材料: 某些材料(如稀土氧化物)在特定波段具有本征发射峰。
(2)微结构表面: 利用表面微结构(如光栅、光子晶体)调控发射光谱。
(3)薄膜干涉: 利用多层介质膜的干涉效应实现选择性发射。
(4)超材料: 利用人工设计的亚波长结构实现超常规的光谱选择性。
2.5 系统效率定义
TPV系统的总效率定义为输出的电功率与输入的热功率之比:
ηTPV=PelecQin=ηrad⋅ηspec⋅ηcell⋅ηcoupling\eta_{TPV} = \frac{P_{elec}}{Q_{in}} = \eta_{rad} \cdot \eta_{spec} \cdot \eta_{cell} \cdot \eta_{coupling}ηTPV=QinPelec=ηrad⋅ηspec⋅ηcell⋅ηcoupling
其中:
- ηrad\eta_{rad}ηrad:辐射效率,表示热源能量转化为辐射能的比例
- ηspec\eta_{spec}ηspec:光谱效率,表示辐射能量中可被电池利用的部分所占比例
- ηcell\eta_{cell}ηcell:电池效率,表示入射辐射能转换为电能的效率
- ηcoupling\eta_{coupling}ηcoupling:耦合效率,表示光学系统的传输效率
光谱效率可以进一步表示为:
ηspec=∫0λgapM(λ)dλ∫0∞M(λ)dλ\eta_{spec} = \frac{\int_0^{\lambda_{gap}} M(\lambda) d\lambda}{\int_0^{\infty} M(\lambda) d\lambda}ηspec=∫0∞M(λ)dλ∫0λgapM(λ)dλ
对于黑体辐射器,光谱效率的理论极限为:
ηspec,BB=∫0λgapMbb(λ,Tr)dλσTr4\eta_{spec,BB} = \frac{\int_0^{\lambda_{gap}} M_{bb}(\lambda, T_r) d\lambda}{\sigma T_r^4}ηspec,BB=σTr4∫0λgapMbb(λ,Tr)dλ
其中,σ\sigmaσ为斯特藩-玻尔兹曼常数。
电池效率可以表示为:
ηcell=FF⋅Voc⋅Jsc∫0λgapM(λ)dλ\eta_{cell} = \frac{FF \cdot V_{oc} \cdot J_{sc}}{\int_0^{\lambda_{gap}} M(\lambda) d\lambda}ηcell=∫0λgapM(λ)dλFF⋅Voc⋅Jsc
其中,FFFFFF为填充因子,VocV_{oc}Voc为开路电压,JscJ_{sc}Jsc为短路电流密度。
3. 热辐射器的光谱特性设计
3.1 理想辐射器模型
理想的热辐射器应该具有阶跃式的光谱发射率:
ϵideal(λ)={1,λ≤λgap0,λ>λgap\epsilon_{ideal}(\lambda) = \begin{cases} 1, & \lambda \leq \lambda_{gap} \\ 0, & \lambda > \lambda_{gap} \end{cases}ϵideal(λ)={1,0,λ≤λgapλ>λgap
这种理想的选择性辐射器可以将所有能量集中在光伏电池可利用的波段,实现100%的光谱效率。然而,实际中很难实现如此理想的光谱特性,但可以通过各种技术手段逼近这一理想模型。
3.2 黑体辐射器
最简单的热辐射器是黑体辐射器,其光谱发射率在所有波段都等于1。黑体辐射器的光谱分布由普朗克定律决定,呈宽谱分布特征。
黑体辐射器的总辐射功率由斯特藩-玻尔兹曼定律给出:
Prad=AσT4P_{rad} = A \sigma T^4Prad=AσT4
黑体辐射器的峰值波长由维恩位移定律决定:
λmax=2898T(K)(μm)\lambda_{max} = \frac{2898}{T(K)} \quad (\mu m)λmax=T(K)2898(μm)
例如,对于T = 1500 K的辐射器,λmax≈1.93\lambda_{max} \approx 1.93λmax≈1.93 μm,接近GaSb电池的带隙波长(1.85 μm)。
黑体辐射器的光谱效率较低,因为大量辐射能量分布在长波波段(λ>λgap\lambda > \lambda_{gap}λ>λgap),无法被光伏电池利用。例如,对于T = 1500 K和λgap\lambda_{gap}λgap = 1.85 μm,黑体辐射器的光谱效率仅为约40%。
3.3 灰体辐射器
灰体辐射器的光谱发射率在所有波段为常数ϵ<1\epsilon < 1ϵ<1。灰体辐射器的光谱分布与黑体相同,只是总辐射功率按ϵ\epsilonϵ比例减小。
灰体辐射器的优点是结构简单、成本低,但光谱效率与黑体相同,无法解决光谱失配问题。因此,灰体辐射器通常不用于高效TPV系统,但在一些低成本应用中仍有使用。
3.4 选择性辐射器
选择性辐射器的光谱发射率随波长变化,是实现高效TPV系统的关键。根据选择性辐射器的光谱特性,可以分为以下几类:
(1)短波通选择性辐射器:
在短波波段(λ<λc\lambda < \lambda_cλ<λc)具有高发射率,在长波波段(λ>λc\lambda > \lambda_cλ>λc)具有低发射率。这种特性与TPV系统的需求相匹配。
(2)带通选择性辐射器:
只在特定波段具有高发射率,其他波段发射率很低。这种辐射器可以实现更高的光谱效率,但设计难度较大。
(3)多波段选择性辐射器:
在多个离散波段具有高发射率,适用于多结光伏电池的TPV系统。
3.5 选择性辐射表面的实现技术
3.5.1 稀土氧化物选择性辐射器
稀土氧化物(如Er₂O₃、Ho₂O₃、Yb₂O₃等)在红外波段具有本征的选择性发射特性,这是由于稀土离子的4f电子跃迁产生的尖锐发射峰。这些发射峰的位置与稀土元素的种类有关,可以通过选择合适的稀土元素来匹配不同带隙的光伏电池。
例如,Er₂O₃在1.5-1.6 μm波段具有强发射峰,适合匹配GaSb电池;Yb₂O₃在1.0-1.1 μm波段具有发射峰,适合匹配Si电池。
稀土氧化物选择性辐射器的优点是:
- 高温稳定性好,可在1500°C以上长期工作
- 发射峰尖锐,光谱选择性好
- 制备工艺成熟,成本相对较低
缺点是:
- 发射峰位置固定,难以调节
- 发射峰宽度较窄,可能无法覆盖整个可利用波段
- 发射峰之间的波谷发射率较低,影响总功率
3.5.2 光子晶体选择性辐射器
光子晶体是人工设计的周期性介电结构,具有光子带隙特性,可以调控材料的光学性质。利用光子晶体可以实现高品质的选择性热辐射。
一维光子晶体辐射器:
由交替沉积的高、低折射率介质层组成,通过调整层厚和周期数,可以在特定波段实现高反射(低发射)或高透射(高发射)。一维光子晶体的设计相对简单,制备工艺成熟,是目前研究最多的TPV选择性辐射器。
二维光子晶体辐射器:
在平板材料上制备周期性孔洞或柱阵列,利用光子带隙效应和表面等离子体激元增强辐射。二维光子晶体可以实现更强的光谱选择性和方向选择性。
三维光子晶体辐射器:
具有三维周期性结构,如蛋白石结构、反蛋白石结构等,可以实现全方向的光子带隙。
光子晶体选择性辐射器的优点是:
- 光谱特性可设计性强,可以精确匹配电池带隙
- 可以实现窄带选择性发射
- 与微纳加工工艺兼容
缺点是:
- 高温稳定性需要特别设计
- 大面积制备难度较大
- 对入射角度敏感
3.5.3 超材料选择性辐射器
超材料是人工设计的亚波长结构材料,具有自然界材料所不具备的奇异电磁性质。利用超材料可以实现突破传统极限的光谱选择性。
金属-介质多层超材料:
通过交替沉积纳米级厚度的金属和介质层,可以实现超常规的光学性质,如负折射率、超分辨率成像等。在TPV应用中,金属-介质多层结构可以实现宽带高吸收/发射。
超表面选择性辐射器:
在金属或介质表面制备亚波长尺度的图案结构(如天线、开口谐振环等),可以强烈调控表面的光学响应。超表面可以实现亚波长尺度的光场调控,具有设计灵活、厚度薄、损耗低等优点。
** epsilon-near-zero (ENZ) 材料:**
当材料的介电常数接近零时,会出现强烈的非线性光学响应和场增强效应。ENZ材料可以用作选择性辐射器,实现窄带发射。
超材料选择性辐射器的优点是:
- 可以实现极端的光谱选择性
- 结构紧凑,厚度可以薄至亚波长尺度
- 设计自由度高
缺点是:
- 高温稳定性差,金属结构在高温下容易氧化或熔化
- 制备工艺复杂,成本高
- 大面积均匀制备困难
3.5.4 纳米结构选择性辐射器
利用各种纳米结构(纳米线、纳米孔、纳米颗粒等)可以调控材料的热辐射特性。
纳米线阵列辐射器:
在基底上生长垂直排列的纳米线阵列,利用纳米线的共振效应和光子晶体效应实现选择性发射。纳米线阵列具有大比表面积,可以增强辐射功率。
多孔结构辐射器:
利用阳极氧化、刻蚀等方法在金属或半导体表面制备多孔结构,通过调控孔径和孔深实现选择性发射。
纳米颗粒复合辐射器:
将金属或介质纳米颗粒分散在基底材料中,利用颗粒的局域表面等离子体共振实现选择性吸收/发射。
纳米结构选择性辐射器的优点是:
- 可以显著增强辐射强度
- 可以实现宽角度选择性
- 与现有材料体系兼容
缺点是:
- 高温稳定性需要验证
- 结构均匀性控制困难
- 长期可靠性有待研究
3.6 辐射器材料的选择
TPV辐射器材料需要满足以下要求:
(1)高温稳定性:
辐射器工作温度通常在1000-2000K,材料需要具有良好的高温抗氧化性、抗热震性和机械强度。常用的耐高温材料包括:
- 陶瓷材料:SiC、Al₂O₃、ZrO₂、稀土氧化物等
- 难熔金属:W、Mo、Ta、Nb等
- 高温合金:镍基合金、钴基合金等
(2)合适的发射率:
根据设计要求,辐射器材料应具有合适的发射率特性。对于选择性辐射器,材料本身可以具有本征选择性(如稀土氧化物),也可以通过表面微结构实现选择性。
(3)热导率:
辐射器需要有效地将热量从热源传递到辐射表面,因此需要具有一定的热导率。但过高的热导率可能导致热量向支撑结构散失,需要权衡设计。
(4)热膨胀系数:
辐射器材料的热膨胀系数应与基底材料和支撑结构相匹配,防止热应力导致开裂或脱落。
(5)化学稳定性:
辐射器在工作环境中应具有良好的化学稳定性,不与燃料、氧化剂等发生反应。
3.7 辐射器设计优化
3.7.1 温度优化
辐射器温度是影响TPV系统效率的关键参数。提高辐射器温度可以增加辐射功率(按T4T^4T4关系增长),但同时也会使光谱分布向短波方向移动,可能超出电池的响应范围。
对于给定的电池带隙,存在一个最优的辐射器温度,使得系统输出功率最大。最优温度可以通过数值优化方法确定。
3.7.2 面积比优化
TPV系统中,辐射器面积ArA_rAr与电池面积AcA_cAc的比值(几何聚光比C=Ar/AcC = A_r/A_cC=Ar/Ac)影响系统的功率密度和效率。
增大聚光比可以提高电池的入射功率密度,但也会增加电池的热负荷和串联电阻损失。最优聚光比需要综合考虑电池特性、冷却能力和系统效率。
3.7.3 视角因子优化
辐射器与电池之间的视角因子决定了辐射能量的传输效率。优化辐射器和电池的几何形状和相对位置,可以提高视角因子,减少辐射损失。
常见的TPV系统构型包括:
- 平面构型:辐射器和电池平行放置,结构简单但视角因子较低
- 圆柱构型:辐射器为圆柱形,电池围绕在周围,视角因子接近1
- 球形构型:辐射器为球形,电池包围在外,视角因子为1
4. 光伏电池的辐射响应与效率分析
4.1 光伏电池的工作原理
光伏电池是基于半导体p-n结的光电转换器件。当光子入射到电池表面时,如果光子能量hνh\nuhν大于半导体材料的带隙能量EgE_gEg,光子会被吸收并产生电子-空穴对。在p-n结内建电场的作用下,电子和空穴分离并向相反方向运动,形成光生电压和电流。
4.2 光伏电池的主要参数
(1)带隙能量EgE_gEg:
带隙能量是半导体材料的关键参数,决定了电池可以响应的光谱范围。只有能量hν≥Egh\nu \geq E_ghν≥Eg的光子才能产生电子-空穴对。
(2)开路电压VocV_{oc}Voc:
开路电压是电池在开路条件下的输出电压,与带隙能量和电池温度有关:
Voc=kBTcqln(JscJ0+1)V_{oc} = \frac{k_B T_c}{q} \ln\left(\frac{J_{sc}}{J_0} + 1\right)Voc=qkBTcln(J0Jsc+1)
其中,TcT_cTc为电池温度,JscJ_{sc}Jsc为短路电流密度,J0J_0J0为反向饱和电流密度。
开路电压的理论极限为:
Voc,max=Egq(1−TcTr)V_{oc,max} = \frac{E_g}{q} \left(1 - \frac{T_c}{T_r}\right)Voc,max=qEg(1−TrTc)
其中,TrT_rTr为辐射器温度。
(3)短路电流密度JscJ_{sc}Jsc:
短路电流密度是电池在短路条件下的输出电流密度,与入射光子通量和电池的量子效率有关:
Jsc=q∫λgap∞ηQE(λ)⋅Φ(λ)⋅dλJ_{sc} = q \int_{\lambda_{gap}}^{\infty} \eta_{QE}(\lambda) \cdot \Phi(\lambda) \cdot d\lambdaJsc=q∫λgap∞ηQE(λ)⋅Φ(λ)⋅dλ
其中,ηQE(λ)\eta_{QE}(\lambda)ηQE(λ)为量子效率,Φ(λ)\Phi(\lambda)Φ(λ)为入射光子通量谱。
(4)填充因子FF:
填充因子是电池实际输出功率与理想输出功率(Voc×JscV_{oc} \times J_{sc}Voc×Jsc)的比值,反映了电池的内阻特性:
FF=PmaxVoc⋅JscFF = \frac{P_{max}}{V_{oc} \cdot J_{sc}}FF=Voc⋅JscPmax
填充因子的理论极限约为0.89(单结电池)。
(5)转换效率ηcell\eta_{cell}ηcell:
电池的转换效率定义为最大输出功率与入射光功率之比:
ηcell=PmaxPin=FF⋅Voc⋅JscPin\eta_{cell} = \frac{P_{max}}{P_{in}} = \frac{FF \cdot V_{oc} \cdot J_{sc}}{P_{in}}ηcell=PinPmax=PinFF⋅Voc⋅Jsc
4.3 TPV电池的材料选择
TPV系统通常使用低带隙半导体材料,以匹配热辐射的光谱分布(峰值波长在1-3 μm范围)。常用的TPV电池材料包括:
(1)GaSb(锑化镓):
- 带隙:0.67 eV(室温)
- 截止波长:~1.85 μm
- 优点:晶格匹配衬底(GaSb)、高载流子迁移率、成熟的生长工艺
- 缺点:衬底成本高、机械强度相对较低
- 效率记录:>30%(实验室)
(2)InGaAs(铟镓砷):
- 带隙:0.5-0.74 eV可调(通过改变In组分)
- 截止波长:1.67-2.48 μm
- 优点:带隙可调、与InP衬底晶格匹配(特定组分)、高效率
- 缺点:大面积均匀生长困难、成本高
- 效率记录:>30%(实验室)
(3)Ge(锗):
- 带隙:0.67 eV
- 截止波长:~1.85 μm
- 优点:成本低、机械强度高、与GaAs工艺兼容
- 缺点:吸收系数较低、需要较厚吸收层
- 效率记录:~20%
(4)InAs(砷化铟):
- 带隙:0.36 eV
- 截止波长:~3.4 μm
- 优点:带隙很低,适合低温TPV系统
- 缺点:暗电流大、效率较低
(5)PbS/PbSe(硫化铅/硒化铅):
- 带隙:0.4-0.6 eV
- 优点:成本低、可溶液加工
- 缺点:稳定性差、效率低
(6)量子阱/量子点电池:
利用量子限制效应调节有效带隙,可以实现带隙可调、多带隙吸收等特性。量子阱电池(如InGaAs/GaAs、InGaAsP/InP)在TPV应用中显示出潜力。
4.4 电池的辐射响应模型
4.4.1 详细平衡极限
根据细致平衡原理,光伏电池的转换效率存在理论极限。Shockley和Queisser在1961年提出了单结太阳能电池的理论效率极限(SQ极限)。
对于TPV电池,SQ极限效率可以表示为:
ηSQ=Voc⋅Jsc⋅FFPin\eta_{SQ} = \frac{V_{oc} \cdot J_{sc} \cdot FF}{P_{in}}ηSQ=PinVoc⋅Jsc⋅FF
其中,各参数的理论极限值为:
Jsc=q∫Eg/ℏ∞Ω4π2ℏ3c2⋅E2exp(E/kBTr)−1⋅dEJ_{sc} = q \int_{E_g/\hbar}^{\infty} \frac{\Omega}{4\pi^2 \hbar^3 c^2} \cdot \frac{E^2}{\exp(E/k_B T_r) - 1} \cdot dEJsc=q∫Eg/ℏ∞4π2ℏ3c2Ω⋅exp(E/kBTr)−1E2⋅dE
Voc=kBTcqln(JscJ0+1)V_{oc} = \frac{k_B T_c}{q} \ln\left(\frac{J_{sc}}{J_0} + 1\right)Voc=qkBTcln(J0Jsc+1)
J0=q∫Eg/ℏ∞Ω4π2ℏ3c2⋅E2exp(E/kBTc)−1⋅dEJ_0 = q \int_{E_g/\hbar}^{\infty} \frac{\Omega}{4\pi^2 \hbar^3 c^2} \cdot \frac{E^2}{\exp(E/k_B T_c) - 1} \cdot dEJ0=q∫Eg/ℏ∞4π2ℏ3c2Ω⋅exp(E/kBTc)−1E2⋅dE
其中,Ω\OmegaΩ为接收立体角(对于平面电池,Ω=π\Omega = \piΩ=π)。
4.4.2 非理想因素
实际TPV电池的效率受到多种非理想因素的影响:
(1)非辐射复合:
电子-空穴对通过非辐射复合(如缺陷复合、俄歇复合)损失,导致量子效率降低和暗电流增加。
(2)串联电阻:
电池的串联电阻(包括接触电阻、体电阻等)导致欧姆损失,降低填充因子。
(3)表面复合:
表面态和界面态导致的复合损失,特别是对于薄层电池更为严重。
(4)光子回收:
电池内部发射的光子被重新吸收,可以提高有效载流子浓度,但也增加了复杂性。
4.5 电池的温度效应
光伏电池的性能对温度非常敏感。电池温度升高会导致:
(1)开路电压下降:
dVocdT≈−2 mV/°C\frac{dV_{oc}}{dT} \approx -2 \text{ mV/°C}dTdVoc≈−2 mV/°C
开路电压随温度升高而线性下降,这是温度效应的主要影响。
(2)带隙减小:
半导体带隙随温度升高而略微减小,导致吸收边红移。
(3)短路电流略微增加:
由于带隙减小,可吸收的光子范围略微扩大,短路电流略有增加。
(4)填充因子下降:
由于VocV_{oc}Voc下降和串联电阻效应,填充因子随温度升高而下降。
总体而言,电池效率随温度升高而显著下降:
dηdT≈−0.05% to −0.1% /°C\frac{d\eta}{dT} \approx -0.05\% \text{ to } -0.1\% \text{ /°C}dTdη≈−0.05% to −0.1% /°C
因此,TPV系统中电池的冷却至关重要。通常需要将电池温度控制在100°C以下,以维持较高的转换效率。
4.6 多结TPV电池
多结电池由多个不同带隙的子电池串联组成,可以更充分地利用宽谱热辐射,提高转换效率。
双结TPV电池:
通常由宽带隙电池(如GaAs,Eg=1.4E_g = 1.4Eg=1.4 eV)和窄带隙电池(如GaSb,Eg=0.67E_g = 0.67Eg=0.67 eV)串联组成。宽带隙电池吸收短波光子,窄带隙电池透射长波光子。
三结及以上TPV电池:
可以进一步细分光谱利用范围,理论效率更高。但多结电池的制备工艺复杂,成本较高,且电流匹配要求严格。
多结电池的设计需要考虑:
- 各子电池的带隙匹配
- 晶格匹配和材料兼容性
- 隧穿结的优化
- 电流匹配和电压叠加
5. 光谱滤波器与光子回收
5.1 光谱滤波器的作用
在TPV系统中,光谱滤波器位于辐射器和电池之间,具有以下功能:
(1)带通滤波:
透射能量高于电池带隙的光子,反射能量低于带隙的光子。
(2)光子回收:
被反射的低能光子返回辐射器,重新被吸收加热辐射器,提高系统效率。
(3)角度选择:
某些滤波器还具有角度选择性,可以优化辐射传输。
5.2 光谱滤波器的类型
5.2.1 介质膜滤波器
由多层高低折射率介质交替沉积组成,利用薄膜干涉效应实现光谱选择。
长波通滤波器:
透射长波、反射短波,与TPV需求相反,需要与选择性辐射器配合使用。
短波通滤波器:
透射短波、反射长波,直接适用于TPV系统。
带通滤波器:
只在特定波段透射,可以实现更精确的光谱控制。
介质膜滤波器的优点是:
- 光学性能优异,可以实现高透过率和高反射率
- 设计灵活,可以定制光谱特性
- 制备工艺成熟
缺点是:
- 对入射角度敏感
- 高温稳定性需要特别设计
- 大面积均匀制备困难
5.2.2 光子晶体滤波器
利用光子带隙效应实现光谱滤波。一维、二维、三维光子晶体都可以用作滤波器。
光子晶体滤波器可以实现:
- 宽带高反射(光子带隙)
- 窄带高透射(缺陷态)
- 全方向带隙(三维光子晶体)
5.2.3 金属-介质复合滤波器
利用金属的等离子体频率和介质膜的干涉效应实现光谱选择。
金属薄膜滤波器:
薄金属膜(如Ag、Al)在红外波段具有高反射率,在可见光-近红外波段具有较高透过率。
超材料滤波器:
利用亚波长金属结构实现超常规的光谱选择性。
5.2.4 选择性吸收/发射涂层
在辐射器表面直接制备选择性涂层,同时实现辐射器的选择性发射和光子回收功能。
5.3 光子回收效率
光子回收是提高TPV系统效率的关键机制。通过光谱滤波器反射的低能光子返回辐射器,减少了辐射器的净热损失。
光子回收效率可以定义为:
ηrecycle=QreflectedQsub−bandgap\eta_{recycle} = \frac{Q_{reflected}}{Q_{sub-bandgap}}ηrecycle=Qsub−bandgapQreflected
理想情况下,ηrecycle=1\eta_{recycle} = 1ηrecycle=1,即所有低能光子都被反射回辐射器。实际中,由于滤波器的非理想性(非100%反射)和系统的光学损失,光子回收效率通常小于1。
光子回收对系统效率的提升可以量化为:
ηTPV,with_recycle=ηTPV,without_recycle⋅11−ηrecycle⋅(1−ηspec)\eta_{TPV,with\_recycle} = \eta_{TPV,without\_recycle} \cdot \frac{1}{1 - \eta_{recycle} \cdot (1 - \eta_{spec})}ηTPV,with_recycle=ηTPV,without_recycle⋅1−ηrecycle⋅(1−ηspec)1
其中,ηspec\eta_{spec}ηspec为光谱效率。
5.4 滤波器设计优化
滤波器设计需要综合考虑以下因素:
(1)光谱特性:
- 通带透过率:应尽可能高(>90%)
- 阻带反射率:应尽可能高(>95%)
- 过渡带宽度:应尽可能窄
(2)角度特性:
滤波器的光谱特性通常随入射角度变化。设计时需要考虑辐射器和电池之间的视角关系。
(3)温度稳定性:
滤波器可能处于高温环境(靠近辐射器),需要具有良好的高温稳定性。
(4)热应力:
滤波器材料的热膨胀系数应与支撑结构匹配,防止热应力导致开裂。
6. TPV系统效率的理论极限
6.1 卡诺效率极限
从热力学角度,TPV系统作为热机,其效率上限为卡诺效率:
ηCarnot=1−TcTr\eta_{Carnot} = 1 - \frac{T_c}{T_r}ηCarnot=1−TrTc
其中,TrT_rTr为辐射器温度,TcT_cTc为电池温度。
例如,对于Tr=1500T_r = 1500Tr=1500 K和Tc=300T_c = 300Tc=300 K,ηCarnot=80%\eta_{Carnot} = 80\%ηCarnot=80%。
然而,卡诺效率是理想可逆热机的效率,实际TPV系统由于不可逆损失,效率远低于此值。
6.2 单结电池的SQ极限
Shockley-Queisser极限是单结光伏电池的理论效率极限。对于TPV应用,SQ极限效率取决于辐射器温度和电池带隙。
SQ极限效率可以表示为:
ηSQ=PoutPin=Voc⋅Jsc⋅FFσTr4\eta_{SQ} = \frac{P_{out}}{P_{in}} = \frac{V_{oc} \cdot J_{sc} \cdot FF}{\sigma T_r^4}ηSQ=PinPout=σTr4Voc⋅Jsc⋅FF
其中,JscJ_{sc}Jsc和VocV_{oc}Voc的理论值由细致平衡原理确定。
对于黑体辐射器和单结电池,SQ极限效率约为30-35%。通过使用选择性辐射器和光子回收,可以突破这一极限。
6.3 近场TPV的效率极限
近场TPV系统利用纳米间隙(<100 nm)中的倏逝波耦合,可以实现超普朗克的辐射换热,从而突破远场黑体极限。
近场TPV的理论效率极限可以接近卡诺效率。研究表明,在优化的近场TPV系统中,效率可达50%以上。
近场TPV的关键参数包括:
- 间隙距离:通常在10-100 nm范围
- 材料选择:需要支持表面等离子体激元或声子极化激元
- 平行度控制:需要保持辐射器和电池的纳米级平行度
6.4 多结TPV的效率极限
多结TPV电池通过串联多个不同带隙的子电池,可以更充分地利用宽谱热辐射,提高转换效率。
对于无限多结电池(带隙连续变化),理论效率极限为:
ηmulti−junction=1−TcTr⋅π2/3ζ(3)≈1−0.72TcTr\eta_{multi-junction} = 1 - \frac{T_c}{T_r} \cdot \frac{\pi^2/3}{\zeta(3)} \approx 1 - 0.72 \frac{T_c}{T_r}ηmulti−junction=1−TrTc⋅ζ(3)π2/3≈1−0.72TrTc
其中,ζ(3)\zeta(3)ζ(3)为黎曼zeta函数。
对于有限子电池数,效率随子电池数增加而提高,但增速逐渐减缓。
7. 近场热光伏系统
7.1 近场辐射换热原理
当两个物体之间的距离小于热辐射的特征波长(λth≈ℏc/kBT\lambda_{th} \approx \hbar c / k_B Tλth≈ℏc/kBT)时,倏逝波可以在间隙中传播,导致辐射换热强度超过黑体极限(超普朗克辐射)。
近场辐射换热功率密度可以表示为:
qNF=∫0∞dω2π∫d2k∥(2π)2⋅ℏω⋅ξ(ω,k∥,d)⋅[n(ω,T1)−n(ω,T2)]q_{NF} = \int_0^{\infty} \frac{d\omega}{2\pi} \int \frac{d^2k_{\parallel}}{(2\pi)^2} \cdot \hbar\omega \cdot \xi(\omega, k_{\parallel}, d) \cdot [n(\omega, T_1) - n(\omega, T_2)]qNF=∫0∞2πdω∫(2π)2d2k∥⋅ℏω⋅ξ(ω,k∥,d)⋅[n(ω,T1)−n(ω,T2)]
其中,ξ\xiξ为能量透射系数,ddd为间隙距离,nnn为玻色-爱因斯坦分布。
7.2 近场TPV的优势
(1)超普朗克辐射:
近场辐射功率可以比黑体辐射高几个数量级,显著提高功率密度。
(2)光谱选择性:
近场辐射的光谱分布可以通过材料选择和结构设计精确调控,实现更好的光谱匹配。
(3)高效率:
近场TPV的理论效率可以接近卡诺极限。
7.3 近场TPV的挑战
(1)纳米间隙控制:
维持辐射器和电池之间的纳米级间隙(<100 nm)在工程上非常困难。
(2)平行度要求:
为了保证均匀的近场耦合,辐射器和电池表面需要保持高度平行。
(3)热管理:
高功率密度的近场辐射会给电池带来巨大的热负荷,需要高效的冷却系统。
(4)大面积实现:
目前近场TPV主要在微尺度上实现,大面积应用面临挑战。
7.4 近场TPV的材料选择
近场TPV需要选择支持表面激元的材料:
(1)金属:
Au、Ag、Al等支持表面等离子体激元(SPP),在近红外-可见光波段具有强近场耦合。
(2)极性介质:
SiC、SiO₂、BN等支持声子极化激元,在中红外波段具有强近场耦合。
(3)掺杂半导体:
重掺杂Si、GaAs等可以调控等离子体频率,实现特定波段的近场增强。
8. 典型TPV系统案例分析
8.1 燃烧驱动TPV系统
燃烧驱动TPV系统利用燃料(如天然气、丙烷)燃烧产生的高温作为热源,是最常见的TPV系统类型。
系统组成:
- 燃烧器:产生高温火焰
- 辐射器:通常为圆柱形或平板形,表面涂覆选择性发射涂层
- 光伏电池:围绕辐射器布置
- 冷却系统:水冷或风冷
性能指标:
- 辐射器温度:1200-1800 K
- 系统效率:5-15%(商业系统),>20%(实验室系统)
- 功率密度:0.5-2 W/cm²
应用:
- 便携式电源
- 偏远地区供电
- 军事应用
8.2 放射性同位素TPV系统
放射性同位素TPV(RTPV)利用放射性同位素(如Pu-238、Sr-90)衰变产生的热量驱动TPV系统。
优势:
- 无需燃料供应,可长期自主运行
- 可靠性高,无运动部件
- 适用于深空探测等极端环境
挑战:
- 放射性材料的安全和监管问题
- 同位素热源的成本高
- 功率密度较低
应用:
- 深空探测器(如旅行者号、卡西尼号)
- 极地科考站
- 水下设备
8.3 太阳能TPV系统
太阳能TPV系统利用聚光太阳能作为热源,将太阳能转换为电能。
系统组成:
- 聚光器:将太阳光聚焦到吸收器
- 吸收器/辐射器:吸收太阳能并加热至高温
- 光伏电池:接收热辐射发电
优势:
- 可以利用全谱太阳能
- 理论上效率可以超过单结太阳能电池
- 可以实现热能存储
挑战:
- 系统复杂,成本高
- 需要精确的跟踪和聚光系统
- 高温材料的稳定性
8.4 工业余热回收TPV系统
利用工业过程中产生的废热(如钢铁、水泥、化工等行业)驱动TPV系统发电。
优势:
- 废热利用,节能环保
- 可以降低工业生产能耗
- 分布式发电,就地利用
挑战:
- 余热温度通常较低(<1000 K),效率受限
- 热源温度不稳定
- 系统集成复杂
9. TPV系统的数值仿真方法
9.1 辐射传递方程求解
TPV系统中的辐射传递可以用辐射传递方程(RTE)描述:
dIνds=−κνIν+κνBν(T)−σνIν+σν4π∫4πpν(Ω′→Ω)Iν(Ω′)dΩ′\frac{dI_{\nu}}{ds} = -\kappa_{\nu} I_{\nu} + \kappa_{\nu} B_{\nu}(T) - \sigma_{\nu} I_{\nu} + \frac{\sigma_{\nu}}{4\pi} \int_{4\pi} p_{\nu}(\Omega' \rightarrow \Omega) I_{\nu}(\Omega') d\Omega'dsdIν=−κνIν+κνBν(T)−σνIν+4πσν∫4πpν(Ω′→Ω)Iν(Ω′)dΩ′
其中,IνI_{\nu}Iν为辐射强度,κν\kappa_{\nu}κν为吸收系数,σν\sigma_{\nu}σν为散射系数,pνp_{\nu}pν为散射相函数,BνB_{\nu}Bν为普朗克函数。
求解RTE的常用数值方法包括:
- 离散坐标法(DOM)
- 蒙特卡洛法
- 球谐函数法(P-N近似)
- 有限体积法
9.2 光电转换模型
光伏电池的光电转换可以用等效电路模型描述:
J=Jsc−J0[exp(q(V+JRs)nkBTc)−1]−V+JRsRshJ = J_{sc} - J_0 \left[\exp\left(\frac{q(V + JR_s)}{nk_B T_c}\right) - 1\right] - \frac{V + JR_s}{R_{sh}}J=Jsc−J0[exp(nkBTcq(V+JRs))−1]−RshV+JRs
其中,JJJ为电流密度,VVV为电压,RsR_sRs为串联电阻,RshR_{sh}Rsh为并联电阻,nnn为理想因子。
9.3 系统级仿真
TPV系统的整体仿真需要耦合多个物理场:
- 热传导:描述热量在固体中的传递
- 辐射传递:描述热辐射的传播和吸收
- 电学:描述光伏电池的光电转换
- 流体力学:描述冷却系统的流动和换热
常用的多物理场仿真软件包括:
- COMSOL Multiphysics
- ANSYS Fluent
- TracePro(光学仿真)
- MATLAB/Simulink
附录:Python仿真代码说明
本主题配套的Python仿真程序包含以下四个案例:
案例1:TPV系统基础分析
- 黑体辐射光谱计算
- 光伏电池响应分析
- 系统效率计算
案例2:选择性辐射器设计
- 不同选择性辐射表面的发射光谱
- 光谱效率优化
- 光子回收分析
案例3:光伏电池性能分析
- 不同带隙电池的效率对比
- 温度效应分析
- I-V特性曲线
案例4:完整TPV系统仿真
- 系统级能量平衡
- 效率优化
- 参数敏感性分析
运行程序后将生成多个仿真结果图和GIF动画,帮助理解TPV系统的辐射特性和优化方法。
"""
主题070:热光伏系统辐射分析仿真程序
=========================================
本程序包含四个案例:
1. TPV系统基础分析(黑体辐射、电池响应、效率计算)
2. 选择性辐射器设计(不同辐射表面、光谱效率、光子回收)
3. 光伏电池性能分析(带隙对比、温度效应、I-V特性)
4. 完整TPV系统仿真(能量平衡、效率优化、敏感性分析)
"""
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle, FancyBboxPatch, Circle
from matplotlib.collections import PatchCollection
import matplotlib.animation as animation
from scipy import integrate, optimize
from scipy.special import j1
import warnings
warnings.filterwarnings('ignore')
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.size'] = 10
# 物理常数
h = 6.626e-34 # 普朗克常数 J·s
c = 3e8 # 光速 m/s
kB = 1.38e-23 # 玻尔兹曼常数 J/K
sigma = 5.67e-8 # 斯特藩-玻尔兹曼常数 W/m²/K⁴
q = 1.602e-19 # 元电荷 C
# 设置Agg后端(不弹出窗口)
plt.switch_backend('Agg')
print("=" * 70)
print("主题070:热光伏系统辐射分析仿真")
print("=" * 70)
# ==============================================================================
# 案例1:TPV系统基础分析
# ==============================================================================
def case1_tpv_basic_analysis():
"""案例1:TPV系统基础分析"""
print("\n" + "=" * 70)
print("案例1:TPV系统基础分析")
print("=" * 70)
# 系统参数
T_emitter = 1500 # K,辐射器温度
T_cell = 300 # K,电池温度
print(f"\n系统参数:")
print(f" 辐射器温度: {T_emitter} K")
print(f" 电池温度: {T_cell} K")
print(f" 卡诺效率极限: {(1 - T_cell/T_emitter)*100:.1f}%")
# 波长范围
wavelengths = np.linspace(0.5, 10, 1000) * 1e-6 # m
# 普朗克黑体辐射谱
def planck_spectral(wavelength, T):
"""光谱辐射出射度 (W/m²/m)"""
return (2 * np.pi * h * c**2 / wavelength**5) / (np.exp(h * c / (wavelength * kB * T)) - 1)
# 计算不同温度下的黑体辐射谱
temperatures = [1000, 1200, 1500, 1800, 2000]
colors = ['blue', 'green', 'orange', 'red', 'purple']
M_spectra = []
for T in temperatures:
M = planck_spectral(wavelengths, T)
M_spectra.append(M)
# 不同光伏电池材料
materials = {
'GaSb': {'Eg': 0.67, 'color': 'blue'},
'InGaAs': {'Eg': 0.60, 'color': 'green'},
'Ge': {'Eg': 0.67, 'color': 'orange'},
'InAs': {'Eg': 0.36, 'color': 'red'},
}
# 计算带隙对应波长
for mat, params in materials.items():
params['lambda_gap'] = 1.24e-6 / params['Eg'] # m
print(f" {mat}: Eg = {params['Eg']:.2f} eV, λg = {params['lambda_gap']*1e6:.2f} μm")
# 绘图
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# 图1:不同温度下的黑体辐射谱
ax1 = axes[0, 0]
for T, M, color in zip(temperatures, M_spectra, colors):
ax1.plot(wavelengths*1e6, M/1e6, color=color, linewidth=2, label=f'{T} K')
# 标记峰值位置
lambda_max = 2.898e-3 / T * 1e6 # μm
ax1.axvline(x=lambda_max, color=color, linestyle='--', alpha=0.5)
# 标记电池带隙
for mat, params in materials.items():
ax1.axvline(x=params['lambda_gap']*1e6, color=params['color'],
linestyle=':', linewidth=2, alpha=0.7)
ax1.set_xlabel('Wavelength (μm)', fontsize=11)
ax1.set_ylabel('Spectral radiance (MW/m²/μm)', fontsize=11)
ax1.set_title('Blackbody Radiation at Different Temperatures', fontsize=12, fontweight='bold')
ax1.legend(fontsize=9)
ax1.grid(True, alpha=0.3)
ax1.set_xlim(0.5, 8)
# 图2:光谱效率vs温度
ax2 = axes[0, 1]
T_range = np.linspace(800, 2000, 50)
for mat, params in materials.items():
eta_spec = []
for T in T_range:
M_total = sigma * T**4
# 计算可利用波段内的辐射功率
mask = wavelengths < params['lambda_gap']
if np.any(mask):
M_useful = integrate.simpson(planck_spectral(wavelengths[mask], T), wavelengths[mask])
else:
M_useful = 0
eta_spec.append(M_useful / M_total * 100)
ax2.plot(T_range, eta_spec, color=params['color'], linewidth=2,
label=f"{mat} (λg={params['lambda_gap']*1e6:.2f}μm)")
ax2.set_xlabel('Emitter Temperature (K)', fontsize=11)
ax2.set_ylabel('Spectral Efficiency (%)', fontsize=11)
ax2.set_title('Spectral Efficiency vs Temperature', fontsize=12, fontweight='bold')
ax2.legend(fontsize=9)
ax2.grid(True, alpha=0.3)
# 图3:1500K辐射器与不同电池的匹配
ax3 = axes[1, 0]
M_1500 = planck_spectral(wavelengths, 1500)
ax3.fill_between(wavelengths*1e6, 0, M_1500/1e6, alpha=0.3, color='gray', label='Total radiation')
for mat, params in materials.items():
mask = wavelengths < params['lambda_gap']
ax3.fill_between(wavelengths[mask]*1e6, 0, M_1500[mask]/1e6,
alpha=0.3, color=params['color'], label=f'{mat} usable')
ax3.axvline(x=params['lambda_gap']*1e6, color=params['color'],
linestyle='--', linewidth=1.5)
ax3.plot(wavelengths*1e6, M_1500/1e6, 'k-', linewidth=2, label='Blackbody (1500K)')
ax3.set_xlabel('Wavelength (μm)', fontsize=11)
ax3.set_ylabel('Spectral radiance (MW/m²/μm)', fontsize=11)
ax3.set_title('Radiation Matching at 1500K', fontsize=12, fontweight='bold')
ax3.legend(fontsize=8, loc='upper right')
ax3.grid(True, alpha=0.3)
ax3.set_xlim(0.5, 5)
# 图4:系统效率分解
ax4 = axes[1, 1]
# 计算各效率分量
T_emitter = 1500
eta_carnot = (1 - T_cell/T_emitter) * 100
# 对于GaSb
lambda_gap = materials['GaSb']['lambda_gap']
M_total = sigma * T_emitter**4
mask = wavelengths < lambda_gap
M_useful = integrate.simpson(planck_spectral(wavelengths[mask], T_emitter), wavelengths[mask])
eta_spec = M_useful / M_total * 100
# 电池效率(简化模型)
eta_cell = 25 # %
# 耦合效率
eta_coupling = 85 # %
# 总效率
eta_total = eta_spec * eta_cell/100 * eta_coupling/100
categories = ['Carnot\nLimit', 'Spectral\nEfficiency', 'Cell\nEfficiency', 'Coupling\nEfficiency', 'Total\nEfficiency']
values = [eta_carnot, eta_spec, eta_cell, eta_coupling, eta_total]
colors_bar = ['red', 'orange', 'green', 'blue', 'purple']
bars = ax4.bar(categories, values, color=colors_bar, alpha=0.7, edgecolor='black')
ax4.set_ylabel('Efficiency (%)', fontsize=11)
ax4.set_title('TPV System Efficiency Breakdown (T=1500K, GaSb)', fontsize=12, fontweight='bold')
ax4.grid(True, alpha=0.3, axis='y')
ax4.set_ylim(0, 100)
# 添加数值标签
for bar, val in zip(bars, values):
height = bar.get_height()
ax4.text(bar.get_x() + bar.get_width()/2., height,
f'{val:.1f}%', ha='center', va='bottom', fontsize=10, fontweight='bold')
plt.tight_layout()
plt.savefig('case1_tpv_basic_analysis.png', dpi=150)
plt.close()
print(f"\n效率分析 (T=1500K, GaSb):")
print(f" 卡诺效率极限: {eta_carnot:.1f}%")
print(f" 光谱效率: {eta_spec:.1f}%")
print(f" 电池效率: {eta_cell:.1f}%")
print(f" 耦合效率: {eta_coupling:.1f}%")
print(f" 系统总效率: {eta_total:.1f}%")
print(f"\n结果已保存至: case1_tpv_basic_analysis.png")
print("\n案例1完成!")
# ==============================================================================
# 案例2:选择性辐射器设计
# ==============================================================================
def case2_selective_emitter_design():
"""案例2:选择性辐射器设计"""
print("\n" + "=" * 70)
print("案例2:选择性辐射器设计")
print("=" * 70)
# 系统参数
T_emitter = 1500 # K
lambda_gap = 1.85e-6 # m (GaSb带隙)
print(f"\n系统参数:")
print(f" 辐射器温度: {T_emitter} K")
print(f" 带隙波长: {lambda_gap*1e6:.2f} μm")
# 波长范围
wavelengths = np.linspace(0.5, 5, 1000) * 1e-6 # m
# 普朗克黑体辐射谱
def planck_spectral(wavelength, T):
return (2 * np.pi * h * c**2 / wavelength**5) / (np.exp(h * c / (wavelength * kB * T)) - 1)
M_bb = planck_spectral(wavelengths, T_emitter)
# 定义不同类型的选择性辐射表面
# 1. 黑体辐射器
eps_blackbody = np.ones_like(wavelengths)
# 2. 理想选择性辐射器(阶跃函数)
eps_ideal = np.where(wavelengths <= lambda_gap, 1.0, 0.0)
# 3. 稀土氧化物型选择性辐射器(高斯峰)
def rare_earth_emissivity(wavelength, lambda_peak, width):
return 0.8 * np.exp(-((wavelength - lambda_peak)**2) / (2 * width**2)) + 0.1
eps_rare_earth = rare_earth_emissivity(wavelengths, 1.6e-6, 0.2e-6)
eps_rare_earth = np.where(wavelengths > lambda_gap, 0.1, eps_rare_earth)
# 4. 光子晶体型选择性辐射器(带通)
def photonic_crystal_emissivity(wavelength, lambda_center, bandwidth):
return 0.9 * np.exp(-((wavelength - lambda_center)**2) / (2 * bandwidth**2))
eps_photonic = photonic_crystal_emissivity(wavelengths, 1.5e-6, 0.3e-6)
eps_photonic = np.where(wavelengths > lambda_gap, 0.05, eps_photonic)
# 5. 一维光子晶体(布拉格反射型)
n1, n2 = 2.5, 1.5
d1, d2 = 200e-9, 333e-9
N_periods = 10
def transfer_matrix(n, d, wavelength):
k0 = 2 * np.pi / wavelength
delta = n * k0 * d
p = n
M = np.array([[np.cos(delta), 1j/p * np.sin(delta)],
[1j*p * np.sin(delta), np.cos(delta)]], dtype=complex)
return M
eps_1d_phc = np.zeros_like(wavelengths)
for i, wl in enumerate(wavelengths):
M1 = transfer_matrix(n1, d1, wl)
M2 = transfer_matrix(n2, d2, wl)
M_period = M2 @ M1
M_N = np.linalg.matrix_power(M_period, N_periods)
n0 = 1.0
r = ((M_N[0,0] + M_N[0,1]*n0)*n0 - (M_N[1,0] + M_N[1,1]*n0)) / \
((M_N[0,0] + M_N[0,1]*n0)*n0 + (M_N[1,0] + M_N[1,1]*n0))
R = np.abs(r)**2
eps_1d_phc[i] = 1 - R
# 计算各辐射器的光谱效率
def calculate_spectral_efficiency(emissivity, wavelengths, lambda_gap, T):
M_bb = planck_spectral(wavelengths, T)
M_emitter = emissivity * M_bb
# 总辐射功率
P_total = integrate.simpson(M_emitter, wavelengths)
# 可利用辐射功率
mask = wavelengths < lambda_gap
P_useful = integrate.simpson(M_emitter[mask], wavelengths[mask])
return P_useful / P_total * 100 if P_total > 0 else 0
emitters = {
'Blackbody': {'eps': eps_blackbody, 'color': 'black'},
'Ideal Selective': {'eps': eps_ideal, 'color': 'red'},
'Rare Earth Oxide': {'eps': eps_rare_earth, 'color': 'green'},
'Photonic Crystal': {'eps': eps_photonic, 'color': 'blue'},
'1D Photonic Crystal': {'eps': eps_1d_phc, 'color': 'purple'},
}
print(f"\n各辐射器的光谱效率:")
for name, data in emitters.items():
eta_spec = calculate_spectral_efficiency(data['eps'], wavelengths, lambda_gap, T_emitter)
data['eta_spec'] = eta_spec
print(f" {name}: {eta_spec:.1f}%")
# 绘图
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# 图1:不同辐射器的发射率光谱
ax1 = axes[0, 0]
for name, data in emitters.items():
ax1.plot(wavelengths*1e6, data['eps'], color=data['color'],
linewidth=2, label=f"{name}")
ax1.axvline(x=lambda_gap*1e6, color='gray', linestyle='--',
linewidth=2, label=f'Bandgap ({lambda_gap*1e6:.2f}μm)')
ax1.set_xlabel('Wavelength (μm)', fontsize=11)
ax1.set_ylabel('Emissivity', fontsize=11)
ax1.set_title('Emissivity Spectra of Different Emitters', fontsize=12, fontweight='bold')
ax1.legend(fontsize=9)
ax1.grid(True, alpha=0.3)
ax1.set_ylim(0, 1.1)
ax1.set_xlim(0.5, 3)
# 图2:辐射光谱对比
ax2 = axes[0, 1]
for name, data in emitters.items():
M_emitter = data['eps'] * M_bb
ax2.plot(wavelengths*1e6, M_emitter/1e6, color=data['color'],
linewidth=2, label=f"{name}")
ax2.axvline(x=lambda_gap*1e6, color='gray', linestyle='--', linewidth=2)
ax2.set_xlabel('Wavelength (μm)', fontsize=11)
ax2.set_ylabel('Spectral radiance (MW/m²/μm)', fontsize=11)
ax2.set_title('Radiation Spectra Comparison', fontsize=12, fontweight='bold')
ax2.legend(fontsize=9)
ax2.grid(True, alpha=0.3)
ax2.set_xlim(0.5, 3)
# 图3:光谱效率对比
ax3 = axes[1, 0]
names = list(emitters.keys())
etas = [emitters[n]['eta_spec'] for n in names]
colors = [emitters[n]['color'] for n in names]
bars = ax3.barh(names, etas, color=colors, alpha=0.7, edgecolor='black')
ax3.set_xlabel('Spectral Efficiency (%)', fontsize=11)
ax3.set_title('Spectral Efficiency Comparison', fontsize=12, fontweight='bold')
ax3.grid(True, alpha=0.3, axis='x')
ax3.set_xlim(0, 100)
for bar, val in zip(bars, etas):
width = bar.get_width()
ax3.text(width + 1, bar.get_y() + bar.get_height()/2.,
f'{val:.1f}%', ha='left', va='center', fontsize=10, fontweight='bold')
# 图4:光子回收效果分析
ax4 = axes[1, 1]
# 假设滤波器反射率
R_filter = 0.95
# 计算带隙以下的辐射功率(可被回收)
recycle_efficiencies = []
for name, data in emitters.items():
M_emitter = data['eps'] * M_bb
mask_sub = wavelengths > lambda_gap
P_sub = integrate.simpson(M_emitter[mask_sub], wavelengths[mask_sub])
P_total = integrate.simpson(M_emitter, wavelengths)
# 光子回收效率
eta_recycle = (P_sub / P_total) * R_filter * 100
recycle_efficiencies.append(eta_recycle)
bars = ax4.barh(names, recycle_efficiencies, color=colors, alpha=0.7, edgecolor='black')
ax4.set_xlabel('Photon Recycle Efficiency (%)', fontsize=11)
ax4.set_title('Photon Recycling Efficiency (R=95%)', fontsize=12, fontweight='bold')
ax4.grid(True, alpha=0.3, axis='x')
for bar, val in zip(bars, recycle_efficiencies):
width = bar.get_width()
ax4.text(width + 0.5, bar.get_y() + bar.get_height()/2.,
f'{val:.1f}%', ha='left', va='center', fontsize=10, fontweight='bold')
plt.tight_layout()
plt.savefig('case2_selective_emitter_design.png', dpi=150)
plt.close()
print(f"\n结果已保存至: case2_selective_emitter_design.png")
print("\n案例2完成!")
# ==============================================================================
# 案例3:光伏电池性能分析
# ==============================================================================
def case3_pv_cell_performance():
"""案例3:光伏电池性能分析"""
print("\n" + "=" * 70)
print("案例3:光伏电池性能分析")
print("=" * 70)
# 电池材料参数
# 使用典型TPV电池的参数
materials = {
'GaSb': {'Eg': 0.67, 'J0': 1e-6, 'Rs': 0.05, 'Rsh': 1000, 'n': 1.0, 'color': 'blue'},
'InGaAs': {'Eg': 0.60, 'J0': 2e-6, 'Rs': 0.04, 'Rsh': 800, 'n': 1.0, 'color': 'green'},
'Ge': {'Eg': 0.67, 'J0': 5e-6, 'Rs': 0.08, 'Rsh': 500, 'n': 1.0, 'color': 'orange'},
}
print(f"\n光伏电池材料参数:")
for mat, params in materials.items():
print(f" {mat}: Eg = {params['Eg']:.2f} eV")
# 系统参数
T_emitter = 1500 # K
T_cell = 300 # K
# 使用简化的电池模型
# 基于典型TPV系统的经验公式
# 计算各电池的性能参数
results = {}
for mat, params in materials.items():
Eg = params['Eg']
# 简化模型:基于带隙和温度的短路电流密度估计
# 对于1500K黑体辐射,典型Jsc范围在1-3 A/cm²
# 这里使用简化的经验公式
lambda_gap = 1.24 / Eg # μm
# 基于带隙波长的简化估计
# 带隙越小,能吸收的光子越多,Jsc越大
if lambda_gap > 2.0:
Jsc_base = 2.5 # A/cm²
elif lambda_gap > 1.5:
Jsc_base = 2.0 # A/cm²
else:
Jsc_base = 1.5 # A/cm²
# 单位转换为 mA/cm²
Jsc = Jsc_base * 1000 # mA/cm²
# 开路电压 (简化模型: Voc ≈ Eg/q - 热损失)
# 典型值在0.4-0.6V范围
Voc = 0.4 + 0.3 * (Eg - 0.36) / (0.67 - 0.36) # V
Voc = min(Voc, Eg * 0.8) # 不超过带隙能量的80%
# 填充因子 (典型值0.6-0.75)
FF = 0.65 + 0.1 * (0.67 - Eg) / 0.3 # 调整
FF = np.clip(FF, 0.6, 0.75)
# 最大功率点
Pmax = Voc * Jsc * FF / 1000 # W/cm² (注意单位转换)
# 转换效率
# 输入功率密度 (1500K黑体)
P_in = sigma * T_emitter**4 / 1e4 # W/cm² (从W/m²转换)
eta = Pmax / P_in * 100 # %
# 生成I-V曲线
V = np.linspace(0, Voc * 1.1, 100)
# 使用简化的单二极管模型
J = np.zeros_like(V)
for i, v in enumerate(V):
if v < Voc:
# 简化模型
J[i] = Jsc * (1 - (v / Voc)**2) * np.exp(-0.1 * v / Voc)
else:
J[i] = 0
P = V * J / 1000 # W/cm²
results[mat] = {
'V': V, 'J': J, 'P': P,
'Voc': Voc, 'Jsc': Jsc, 'FF': FF, 'eta': eta,
'color': params['color']
}
print(f"\n{mat}电池性能:")
print(f" 短路电流密度 Jsc: {Jsc:.2f} mA/cm²")
print(f" 开路电压 Voc: {Voc:.3f} V")
print(f" 填充因子 FF: {FF:.3f}")
print(f" 转换效率 η: {eta:.2f}%")
# 绘图
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# 图1:I-V特性曲线
ax1 = axes[0, 0]
colors = ['blue', 'green', 'orange']
for (mat, res), color in zip(results.items(), colors):
ax1.plot(res['V'], res['J'], color=color, linewidth=2, label=f"{mat}")
ax1.scatter([res['Voc']], [0], color=color, s=100, zorder=5, marker='o')
ax1.scatter([0], [res['Jsc']], color=color, s=100, zorder=5, marker='s')
ax1.set_xlabel('Voltage (V)', fontsize=11)
ax1.set_ylabel('Current Density (mA/cm²)', fontsize=11)
ax1.set_title('I-V Characteristics of Different Cells', fontsize=12, fontweight='bold')
ax1.legend(fontsize=10)
ax1.grid(True, alpha=0.3)
ax1.axhline(y=0, color='k', linewidth=0.5)
ax1.axvline(x=0, color='k', linewidth=0.5)
# 图2:功率曲线
ax2 = axes[0, 1]
for (mat, res), color in zip(results.items(), colors):
ax2.plot(res['V'], res['P'], color=color, linewidth=2, label=f"{mat}")
Vmax = res['V'][np.argmax(res['P'])]
Pmax = np.max(res['P'])
ax2.scatter([Vmax], [Pmax], color=color, s=150, zorder=5, marker='*')
ax2.set_xlabel('Voltage (V)', fontsize=11)
ax2.set_ylabel('Power Density (mW/cm²)', fontsize=11)
ax2.set_title('Power-Voltage Characteristics', fontsize=12, fontweight='bold')
ax2.legend(fontsize=10)
ax2.grid(True, alpha=0.3)
# 图3:温度对效率的影响
ax3 = axes[1, 0]
T_cell_range = np.linspace(250, 400, 20)
for mat, params in materials.items():
etas_T = []
for Tc in T_cell_range:
# 简化模型:效率随温度下降
eta_base = results[mat]['eta']
dEta_dT = -0.08 # %/K
eta_T = eta_base + dEta_dT * (Tc - 300)
eta_T = max(eta_T, 0)
etas_T.append(eta_T)
ax3.plot(T_cell_range, etas_T, linewidth=2, label=f"{mat}")
ax3.set_xlabel('Cell Temperature (K)', fontsize=11)
ax3.set_ylabel('Conversion Efficiency (%)', fontsize=11)
ax3.set_title('Efficiency vs Cell Temperature', fontsize=12, fontweight='bold')
ax3.legend(fontsize=10)
ax3.grid(True, alpha=0.3)
# 图4:性能参数对比
ax4 = axes[1, 1]
mats = list(results.keys())
Voc_vals = [results[m]['Voc']*1000 for m in mats] # mV
Jsc_vals = [results[m]['Jsc']/10 for m in mats] # mA/cm²
FF_vals = [results[m]['FF']*100 for m in mats] # %
eta_vals = [results[m]['eta'] for m in mats] # %
x = np.arange(len(mats))
width = 0.2
ax4.bar(x - 1.5*width, Voc_vals, width, label='Voc (mV)', color='blue', alpha=0.7)
ax4.bar(x - 0.5*width, Jsc_vals, width, label='Jsc (mA/cm²)', color='green', alpha=0.7)
ax4.bar(x + 0.5*width, FF_vals, width, label='FF (%)', color='orange', alpha=0.7)
ax4.bar(x + 1.5*width, eta_vals, width, label='Efficiency (%)', color='red', alpha=0.7)
ax4.set_ylabel('Value', fontsize=11)
ax4.set_title('Performance Parameters Comparison', fontsize=12, fontweight='bold')
ax4.set_xticks(x)
ax4.set_xticklabels(mats, fontsize=10)
ax4.legend(fontsize=9)
ax4.grid(True, alpha=0.3, axis='y')
plt.tight_layout()
plt.savefig('case3_pv_cell_performance.png', dpi=150)
plt.close()
print(f"\n结果已保存至: case3_pv_cell_performance.png")
print("\n案例3完成!")
# ==============================================================================
# 案例4:完整TPV系统仿真
# ==============================================================================
def case4_complete_tpv_system():
"""案例4:完整TPV系统仿真"""
print("\n" + "=" * 70)
print("案例4:完整TPV系统仿真")
print("=" * 70)
# 系统参数
T_emitter = 1500 # K
T_cell = 300 # K
# 电池材料
battery_material = 'GaSb'
Eg = 0.67 # eV
lambda_gap = 1.24e-6 / Eg # m
print(f"\n系统配置:")
print(f" 辐射器温度: {T_emitter} K")
print(f" 电池温度: {T_cell} K")
print(f" 电池材料: {battery_material} (Eg = {Eg:.2f} eV)")
print(f" 带隙波长: {lambda_gap*1e6:.2f} μm")
# 波长范围
wavelengths = np.linspace(0.5, 5, 500) * 1e-6 # m
# 普朗克黑体辐射谱
def planck_spectral(wavelength, T):
return (2 * np.pi * h * c**2 / wavelength**5) / (np.exp(h * c / (wavelength * kB * T)) - 1)
# 选择性辐射器发射率(光子晶体型)
def selective_emissivity(wavelength, lambda_gap):
# 简化的选择性发射率模型
eps_short = 0.9
eps_long = 0.1
transition_width = 0.2e-6
eps = eps_short * 0.5 * (1 - np.tanh((wavelength - lambda_gap) / transition_width)) + \
eps_long * 0.5 * (1 + np.tanh((wavelength - lambda_gap) / transition_width))
return eps
eps_selective = selective_emissivity(wavelengths, lambda_gap)
eps_blackbody = np.ones_like(wavelengths)
# 计算系统性能
def calculate_system_performance(eps, wavelengths, T_emitter, T_cell, lambda_gap):
M_bb = planck_spectral(wavelengths, T_emitter)
M_emitter = eps * M_bb
# 总辐射功率
P_rad_total = integrate.simpson(M_emitter, wavelengths)
# 可利用辐射功率(高于带隙)
mask_useful = wavelengths < lambda_gap
P_rad_useful = integrate.simpson(M_emitter[mask_useful], wavelengths[mask_useful])
# 光谱效率
eta_spec = P_rad_useful / P_rad_total if P_rad_total > 0 else 0
# 电池效率(简化模型)
# 考虑电压因子、填充因子等
voltage_factor = 0.7 # Voc / (Eg/q)
fill_factor = 0.75
eta_cell = voltage_factor * fill_factor * 100 # %
# 耦合效率
eta_coupling = 0.85
# 系统总效率
eta_system = eta_spec * eta_cell/100 * eta_coupling * 100 # %
# 输出功率密度
P_out = P_rad_total * eta_system / 100 # W/m²
return {
'P_rad_total': P_rad_total,
'P_rad_useful': P_rad_useful,
'eta_spec': eta_spec * 100,
'eta_cell': eta_cell,
'eta_coupling': eta_coupling * 100,
'eta_system': eta_system,
'P_out': P_out
}
# 计算黑体和选择性辐射器的性能
result_bb = calculate_system_performance(eps_blackbody, wavelengths, T_emitter, T_cell, lambda_gap)
result_sel = calculate_system_performance(eps_selective, wavelengths, T_emitter, T_cell, lambda_gap)
print(f"\n黑体辐射器系统性能:")
print(f" 总辐射功率: {result_bb['P_rad_total']/1e3:.2f} kW/m²")
print(f" 光谱效率: {result_bb['eta_spec']:.1f}%")
print(f" 电池效率: {result_bb['eta_cell']:.1f}%")
print(f" 系统总效率: {result_bb['eta_system']:.2f}%")
print(f" 输出功率密度: {result_bb['P_out']/1e3:.2f} kW/m²")
print(f"\n选择性辐射器系统性能:")
print(f" 总辐射功率: {result_sel['P_rad_total']/1e3:.2f} kW/m²")
print(f" 光谱效率: {result_sel['eta_spec']:.1f}%")
print(f" 电池效率: {result_sel['eta_cell']:.1f}%")
print(f" 系统总效率: {result_sel['eta_system']:.2f}%")
print(f" 输出功率密度: {result_sel['P_out']/1e3:.2f} kW/m²")
# 参数敏感性分析
print(f"\n参数敏感性分析:")
# 温度影响
T_range = np.linspace(1000, 2000, 11)
eta_vs_T_bb = []
eta_vs_T_sel = []
for T in T_range:
res_bb = calculate_system_performance(eps_blackbody, wavelengths, T, T_cell, lambda_gap)
res_sel = calculate_system_performance(eps_selective, wavelengths, T, T_cell, lambda_gap)
eta_vs_T_bb.append(res_bb['eta_system'])
eta_vs_T_sel.append(res_sel['eta_system'])
# 带隙影响
Eg_range = np.linspace(0.4, 1.0, 13)
eta_vs_Eg_bb = []
eta_vs_Eg_sel = []
for Eg_val in Eg_range:
lambda_g = 1.24e-6 / Eg_val
res_bb = calculate_system_performance(eps_blackbody, wavelengths, T_emitter, T_cell, lambda_g)
res_sel = calculate_system_performance(eps_selective, wavelengths, T_emitter, T_cell, lambda_g)
eta_vs_Eg_bb.append(res_bb['eta_system'])
eta_vs_Eg_sel.append(res_sel['eta_system'])
# 绘图
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# 图1:能量流图(桑基图简化版)
ax1 = axes[0, 0]
# 黑体系统能量流
P_in = result_bb['P_rad_total'] / 1e3 # kW/m²
P_elec = result_bb['P_out'] / 1e3
P_loss = P_in - P_elec
categories = ['Thermal\nInput', 'Radiation', 'Electricity', 'Losses']
values = [P_in, P_in, P_elec, P_loss]
positions = [0, 1, 2, 2]
colors_flow = ['red', 'orange', 'green', 'gray']
# 简化的能量流可视化
ax1.barh(['Blackbody System'], [P_in], color='red', alpha=0.5, label='Input')
ax1.barh(['Blackbody System'], [P_elec], left=0, color='green', alpha=0.7, label='Electricity')
ax1.barh(['Selective System'], [result_sel['P_rad_total']/1e3], color='red', alpha=0.5)
ax1.barh(['Selective System'], [result_sel['P_out']/1e3], left=0, color='green', alpha=0.7)
ax1.set_xlabel('Power Density (kW/m²)', fontsize=11)
ax1.set_title('Energy Flow Comparison', fontsize=12, fontweight='bold')
ax1.legend(fontsize=10)
ax1.grid(True, alpha=0.3, axis='x')
# 图2:温度敏感性
ax2 = axes[0, 1]
ax2.plot(T_range, eta_vs_T_bb, 'b-', linewidth=2, label='Blackbody emitter', marker='o', markersize=5)
ax2.plot(T_range, eta_vs_T_sel, 'r-', linewidth=2, label='Selective emitter', marker='s', markersize=5)
ax2.axvline(x=T_emitter, color='gray', linestyle='--', alpha=0.7, label='Design point')
ax2.set_xlabel('Emitter Temperature (K)', fontsize=11)
ax2.set_ylabel('System Efficiency (%)', fontsize=11)
ax2.set_title('Efficiency vs Emitter Temperature', fontsize=12, fontweight='bold')
ax2.legend(fontsize=10)
ax2.grid(True, alpha=0.3)
# 图3:带隙敏感性
ax3 = axes[1, 0]
ax3.plot(Eg_range, eta_vs_Eg_bb, 'b-', linewidth=2, label='Blackbody emitter', marker='o', markersize=5)
ax3.plot(Eg_range, eta_vs_Eg_sel, 'r-', linewidth=2, label='Selective emitter', marker='s', markersize=5)
ax3.axvline(x=Eg, color='gray', linestyle='--', alpha=0.7, label=f'{battery_material} (Eg={Eg}eV)')
ax3.set_xlabel('Bandgap Energy (eV)', fontsize=11)
ax3.set_ylabel('System Efficiency (%)', fontsize=11)
ax3.set_title('Efficiency vs Bandgap Energy', fontsize=12, fontweight='bold')
ax3.legend(fontsize=10)
ax3.grid(True, alpha=0.3)
# 图4:效率分解对比
ax4 = axes[1, 1]
categories = ['Spectral\nEfficiency', 'Cell\nEfficiency', 'Coupling\nEfficiency', 'System\nEfficiency']
bb_values = [result_bb['eta_spec'], result_bb['eta_cell'], result_bb['eta_coupling'], result_bb['eta_system']]
sel_values = [result_sel['eta_spec'], result_sel['eta_cell'], result_sel['eta_coupling'], result_sel['eta_system']]
x = np.arange(len(categories))
width = 0.35
bars1 = ax4.bar(x - width/2, bb_values, width, label='Blackbody', color='blue', alpha=0.7)
bars2 = ax4.bar(x + width/2, sel_values, width, label='Selective', color='red', alpha=0.7)
ax4.set_ylabel('Efficiency (%)', fontsize=11)
ax4.set_title('Efficiency Breakdown Comparison', fontsize=12, fontweight='bold')
ax4.set_xticks(x)
ax4.set_xticklabels(categories, fontsize=9)
ax4.legend(fontsize=10)
ax4.grid(True, alpha=0.3, axis='y')
# 添加数值标签
for bars in [bars1, bars2]:
for bar in bars:
height = bar.get_height()
ax4.text(bar.get_x() + bar.get_width()/2., height,
f'{height:.1f}%', ha='center', va='bottom', fontsize=9)
plt.tight_layout()
plt.savefig('case4_complete_tpv_system.png', dpi=150)
plt.close()
print(f"\n结果已保存至: case4_complete_tpv_system.png")
print("\n案例4完成!")
# ==============================================================================
# 创建GIF动画:TPV系统工作原理
# ==============================================================================
def create_tpv_animation():
"""创建TPV系统工作原理的动画"""
print("\n" + "=" * 70)
print("创建GIF动画:TPV系统工作原理")
print("=" * 70)
# 参数
T_emitter = 1500
lambda_gap = 1.85e-6
wavelengths = np.linspace(0.5, 4, 200) * 1e-6
def planck_spectral(wavelength, T):
return (2 * np.pi * h * c**2 / wavelength**5) / (np.exp(h * c / (wavelength * kB * T)) - 1)
# 温度变化范围
T_values = np.linspace(1000, 1800, 30)
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
def animate(frame):
axes[0].clear()
axes[1].clear()
T = T_values[frame]
M_bb = planck_spectral(wavelengths, T)
# 左图:系统示意图
ax1 = axes[0]
# 绘制辐射器
emitter = Rectangle((0.1, 0.3), 0.3, 0.4, facecolor='red', alpha=min(T/2000, 1), edgecolor='black', linewidth=2)
ax1.add_patch(emitter)
ax1.text(0.25, 0.5, f'Emitter\n{T:.0f}K', ha='center', va='center', fontsize=12, fontweight='bold', color='white')
# 绘制滤波器
filter_rect = Rectangle((0.45, 0.3), 0.05, 0.4, facecolor='cyan', alpha=0.7, edgecolor='black', linewidth=1)
ax1.add_patch(filter_rect)
ax1.text(0.475, 0.75, 'Filter', ha='center', va='bottom', fontsize=10)
# 绘制电池
cell = Rectangle((0.6, 0.3), 0.3, 0.4, facecolor='blue', alpha=0.7, edgecolor='black', linewidth=2)
ax1.add_patch(cell)
ax1.text(0.75, 0.5, 'PV Cell\n300K', ha='center', va='center', fontsize=12, fontweight='bold', color='white')
# 绘制辐射箭头
for i in range(5):
y_pos = 0.35 + i * 0.075
# 从辐射器到滤波器的箭头
ax1.annotate('', xy=(0.45, y_pos), xytext=(0.4, y_pos),
arrowprops=dict(arrowstyle='->', color='orange', lw=2))
# 透射箭头(短波长)
if i < 3: # 高能光子
ax1.annotate('', xy=(0.6, y_pos), xytext=(0.5, y_pos),
arrowprops=dict(arrowstyle='->', color='green', lw=2))
else: # 低能光子被反射
ax1.annotate('', xy=(0.35, y_pos + 0.05), xytext=(0.45, y_pos),
arrowprops=dict(arrowstyle='->', color='red', lw=1.5, ls='--'))
ax1.set_xlim(0, 1)
ax1.set_ylim(0, 1)
ax1.set_aspect('equal')
ax1.axis('off')
ax1.set_title('TPV System Schematic', fontsize=13, fontweight='bold')
# 右图:光谱分布
ax2 = axes[1]
# 黑体辐射谱
ax2.fill_between(wavelengths*1e6, 0, M_bb/1e6, alpha=0.3, color='red', label='Emitter radiation')
ax2.plot(wavelengths*1e6, M_bb/1e6, 'r-', linewidth=2)
# 可利用区域
mask = wavelengths < lambda_gap
ax2.fill_between(wavelengths[mask]*1e6, 0, M_bb[mask]/1e6, alpha=0.5, color='green', label='Usable by PV')
# 带隙标记
ax2.axvline(x=lambda_gap*1e6, color='blue', linestyle='--', linewidth=2, label=f'Bandgap ({lambda_gap*1e6:.2f}μm)')
ax2.set_xlabel('Wavelength (μm)', fontsize=11)
ax2.set_ylabel('Spectral radiance (MW/m²/μm)', fontsize=11)
ax2.set_title(f'Radiation Spectrum at T={T:.0f}K', fontsize=13, fontweight='bold')
ax2.legend(fontsize=9)
ax2.grid(True, alpha=0.3)
ax2.set_xlim(0.5, 3.5)
plt.tight_layout()
return axes
anim = animation.FuncAnimation(fig, animate, frames=len(T_values), interval=200, blit=False)
anim.save('tpv_system_animation.gif', writer='pillow', fps=5, dpi=100)
plt.close()
print("\n动画已保存至: tpv_system_animation.gif")
print(" - 展示不同温度下的TPV系统工作原理")
print("\n动画创建完成!")
# ==============================================================================
# 主程序
# ==============================================================================
if __name__ == "__main__":
print("\n开始运行热光伏系统辐射分析仿真...")
print("=" * 70)
# 运行所有案例
case1_tpv_basic_analysis()
case2_selective_emitter_design()
case3_pv_cell_performance()
case4_complete_tpv_system()
# 创建动画
try:
create_tpv_animation()
except Exception as e:
print(f"\n动画创建失败: {e}")
print("这可能是因为缺少必要的库,但其他案例已成功完成。")
print("\n" + "=" * 70)
print("所有仿真案例已完成!")
print("=" * 70)
print("\n生成的文件:")
print(" - case1_tpv_basic_analysis.png")
print(" - case2_selective_emitter_design.png")
print(" - case3_pv_cell_performance.png")
print(" - case4_complete_tpv_system.png")
print(" - tpv_system_animation.gif (如果动画创建成功)")
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)