簡介:本文是以十字元件為(wèi)背景光源,經過一個(gè)透鏡元件成像在探測器(qì)上(shàng),并顯示其熱成像圖。
成像示意圖
首先我們建立十字元件命名為(wèi)Target
創建方法:
面1 :
面型:plane
材料:Air
孔徑:X=1.5, Y=6,Z=0.075,形狀選擇Box
輔助數(shù)據:
首先在第一行(xíng)輸入temperature :300K,
emissivity:0.1;
面2 :
面型:plane
材料:Air
孔徑:X=1.5, Y=6,Z=0.075,形狀選擇Box
位置坐(zuò)标:繞Z軸旋轉90度,
輔助數(shù)據:
首先在第一行(xíng)輸入temperature :300K,emissivity: 0.1;
Target 元件距離坐(zuò)标原點-161mm;
單透鏡參數(shù)設定:F=100, bend=0, 位置位于坐(zuò)标原點
探測器(qì)參數(shù)設定:
在菜單欄中選擇Create/Element Primitive /plane
元件半徑為(wèi)20mm*20,mm,距離坐(zuò)标原點200mm。
光源創建:
光源類型選擇為(wèi)任意平面,光源半角設定為(wèi)15度。
我們将光源設定在探測器(qì)位置上(shàng),具體(tǐ)的原理(lǐ)解釋請(qǐng)見本章第二部分。
我們在位置選項又設定一行(xíng)的目的是通(tōng)過腳本自動控制(zhì)光源在探測器(qì)平面不同劃分區(qū)域內(nèi)不同位置處追迹光線。
功率數(shù)值設定為(wèi):P=sin2(theta) theta為(wèi)光源半角15度。我們為(wèi)什麽要這麽設定,在第二部分會(huì)給出詳細的公式推導。
創建分析面:
到這裏元件參數(shù)設定完成,現在我們設定元件的光學屬性,在前面我們分别對第一和(hé)第二面設定的溫度和(hé)發射系數(shù),散射屬性我們設定為(wèi)黑(hēi)朗伯,4%的散射。并分别賦予到面一和(hé)面二。
到此,所有(yǒu)的光學結構和(hé)屬性設定完成,通(tōng)過光線追迹我們可(kě)以查看光線是否可(kě)以穿過元件。
FRED在探測器(qì)上(shàng)穿過多(duō)個(gè)像素點叠代來(lái)創建熱圖
FRED具有(yǒu)一個(gè)內(nèi)置的可(kě)編譯的Basic腳本語言。從Visual Basic腳本語言裏,幾乎所有(yǒu)用戶圖形界面(GUI)命令是可(kě)用這裏的。FRED同樣具有(yǒu)自動的客戶端和(hé)服務器(qì)能力,它可(kě)以被調用和(hé)并調用其他可(kě)啓動程序,如Excel。因此可(kě)以在探測器(qì)像素點上(shàng)定義多(duō)個(gè)離軸光源,及在FRED Basic腳本語言裏的For Next loops語句沿着探測器(qì)像素點向上(shàng)和(hé)向下掃描來(lái)反向追迹光線,這樣可(kě)以使用三維圖表查看器(qì)(Tools/Open plot files in 3D chart)調用和(hé)查看數(shù)據。
将如下的代碼放置在樹(shù)形文件夾 Embedded Scripts,
打開(kāi)後清空(kōng)裏面的內(nèi)容,此腳本為(wèi)通(tōng)用腳本适用于一切可(kě)熱成像的應用。
綠色字體(tǐ)為(wèi)說明(míng)文字,
'#Language "WWB-COM"
'script for calculating thermal image map
'edited rnp 4 november 2005
'declarations
Dim op As T_OPERATION
Dim trm As T_TRIMVOLUME
Dim irrad(32,32) As Double 'make consistent with sampling
Dim temp As Double
Dim emiss As Double
Dim fname As String, fullfilepath As String
'Option Explicit
Sub Main
'USER INPUTS
nx = 31
ny = 31
numRays = 1000
minWave = 7 'microns
maxWave = 11 'microns
sigma = 5.67e-14 'watts/mm^2/deg k^4
fname = "teapotimage.dat"
Print ""
Print "THERMAL IMAGE CALCULATION"
detnode = FindFullName( "Geometry.Detector.Surface" ) '找到探測器(qì)平面節點
Print "found detector array at node " & detnode
srcnode = FindFullName( "Optical Sources.Source 1" ) '找到光源節點
Print "found differential detector area at node " & srcnode
GetTrimVolume detnode, trm
detx = trm.xSemiApe
dety = trm.ySemiApe
area = 4 * detx * dety
Print "detector array semiaperture dimensions are " & detx & " by " & dety
Print "sampling is " & nx & " by " & ny
'reset differential detector area dimensions to be consistent with sampling
pixelx = 2 * detx / nx
pixely = 2 * dety / ny
SetSourcePosGridRandom srcnode, pixelx / 2, pixely / 2, numRays, False
Print "resetting source dimensions to " & pixelx / 2 & " by " & pixely / 2
'reset the source power
SetSourcePower( srcnode, Sin(DegToRad(15))^2 )
Print "resetting the source power to " & GetSourcePower( srcnode ) & " units"
'zero out irradiance array
For i = 0 To ny - 1
For j = 0 To nx - 1
irrad(i,j) = 0.0
Next j
Next i
'main loop
EnableTextPrinting( False )
ypos = dety + pixely / 2
For i = 0 To ny - 1
xpos = -detx - pixelx / 2
ypos = ypos - pixely
EnableTextPrinting( True )
Print i
EnableTextPrinting( False )
For j = 0 To nx - 1
xpos = xpos + pixelx
'shift source
LockOperationUpdates srcnode, True
GetOperation srcnode, 1, op
op.val1 = xpos
op.val2 = ypos
SetOperation srcnode, 1, op
LockOperationUpdates srcnode, False |