
發(fā)布
注冊(cè)
/
登錄ansys用戶函數(shù)定義的案例
COMSOL 軟件內(nèi)置函數(shù)和用戶定義函數(shù)說明
為了方便用戶的建模操作,COMSOL 軟件中預(yù)置了很多常用的變量、物理常數(shù),以及函數(shù),并提供很多自定義函數(shù)。“使用技巧”系列將介紹這些預(yù)置功能,希望能夠提高大家的建模使用經(jīng)驗(yàn)。
訪問 COMSOL 官網(wǎng)“產(chǎn)品文檔”頁(yè)面(comsol.com/documentation)或點(diǎn)擊文末“閱讀原文”,可查看本系列全部?jī)?nèi)容。
今天將介紹本系列的第三部分:函數(shù)。
函數(shù)
在“模型開發(fā)器”中,有兩種類型的函數(shù):內(nèi)置函數(shù)和用戶定義的函數(shù)。函數(shù)可以是標(biāo)量值或與輸入變?cè)嚓P(guān)的場(chǎng)值。某些函數(shù)的輸入和輸出變?cè)伎梢杂袉挝弧?內(nèi)置數(shù)學(xué)函數(shù)
可以直接使用的數(shù)學(xué)函數(shù),不需要再根據(jù)定義來編寫復(fù)雜的表達(dá)式。
這些函數(shù)的輸入或輸出變?cè)獩]有單位。
內(nèi)置運(yùn)算符函數(shù)
這些內(nèi)置函數(shù)的行為與內(nèi)置數(shù)學(xué)函數(shù)不同。它們可能不屬于介紹性文本范疇,但在此列出以保證保留名稱列表的完整性。有關(guān)更多信息,請(qǐng)參閱 Reference Manual。
用戶定義的函數(shù)
用戶定義的函數(shù)可以在模型樹的全局定義節(jié)點(diǎn)下(對(duì)于每個(gè)組件,則在定義節(jié)點(diǎn)下)定義。從函數(shù)菜單中選擇一個(gè)模板并輸入設(shè)置,定義函數(shù)的名稱和詳細(xì)形狀。
展開 七、Fluent用戶自定義函數(shù)(UDF)基礎(chǔ)(1)
圖1.UDF用戶手冊(cè)
UDF介紹: 所謂UDF-用戶自定義函數(shù)(User-defined functions),學(xué)習(xí)過編程語(yǔ)言的同學(xué)對(duì)此應(yīng)該并不陌生,無論是C語(yǔ)言、JAVA還是Python,自定義函數(shù)被廣泛的應(yīng)用著,它能夠使語(yǔ)言邏輯和代碼的簡(jiǎn)潔性大幅度提高。Fluent的UDF有著同樣的功能,但是又不完全相同。
在Fluent中,UDF使用C語(yǔ)言來編寫,因此需要大家有一定的C語(yǔ)言基礎(chǔ),但是不必過于深入,大家只需要了解基本的格式和語(yǔ)法結(jié)構(gòu)即可,同時(shí)需要對(duì)指針有一點(diǎn)了解。建議有其他語(yǔ)言基礎(chǔ)的同學(xué)花一周的時(shí)間學(xué)習(xí)一下C語(yǔ)言---一周的時(shí)間已經(jīng)足夠了。
UDF特殊性: 接下來我們說一下Fluent UDF的特殊性,實(shí)際上即便C語(yǔ)言功底很厲害的高手并不一定能夠?qū)懞肬DF,為什么呢?因?yàn)镕luent UDF和C語(yǔ)言的自定義函數(shù)完全就是兩碼事。它是Fluent封裝好的可以傳遞給求解器的函數(shù),主要由各種宏組成,每個(gè)宏有各自的作用。說的通俗易懂一點(diǎn),其實(shí)UDF就是Fluent已經(jīng)給用戶起好了自定義函數(shù)的名字了,用戶達(dá)到什么樣的目的,使用相對(duì)應(yīng)的宏就行。類似于我乘坐地鐵去電影院,為了達(dá)到去電影院的目的,我使用了名叫地鐵的工具,這里的名字“地鐵”就相當(dāng)于Fluent中的宏;如果放到C語(yǔ)言中,你可以給“地鐵”起任意名字如“自行車”,這樣會(huì)帶來混亂,導(dǎo)致Fluent求解器識(shí)別不了你的目的。比如用戶想讓進(jìn)口流體的速度正弦變化,那么就需要找到能夠修改邊界條件的宏-DEFINE_PROFILE(name, t, i),然后在里面指定速度函數(shù)即可。
圖2.C語(yǔ)言自定義函數(shù)
圖3.Fluent UDF
UDF功能: 對(duì)于Fluent而言,UDF可以顯著增強(qiáng)其功能,使用UDF你可以做如下的事情:
1.
展開 九、Fluent用戶自定義函數(shù)(UDF)基礎(chǔ)(2)-DEFINE_PROFILE
簡(jiǎn)介</strong></p><p class="ql-align-center"><br></p><p> 今天我們接著說Fluent UDF功能,我們經(jīng)常使用的UDF宏主要有以下幾種:</p><p>DEFINE_PROFILE: 定義模型邊界</p><p>DEFINE_ADJUST: 用于協(xié)調(diào)計(jì)算過程中物理量</p><p>DEFINE_INIT: 初始化宏,用于自定義初始化</p><p>DEFINE_PROPERTY: 定義材料物性</p><p> 上述的幾種宏基本上無論使用什么物理模型都會(huì)用到,還有部分宏是在特定的模型下才會(huì)使用,如使用DPM模型時(shí)用DEFINE_DPM_SOURCE宏來定義DPM源項(xiàng),而普通的物理模型下源項(xiàng)通過DEFINE_SOURCE宏定義即可。</p><p> </p><p> 今天我們主要了解DEFINE_PROFILE宏的使用,DEFINE_PROFILE宏可以用來定義邊界條件,當(dāng)邊界條件比較復(fù)雜時(shí),如定義壁面溫度<em>T</em><sub>w</sub>=f(y),即壁面溫度是y的函數(shù)可以使用DEFINE_PROFILE宏進(jìn)行定義。
展開 Mixture 和用戶自定義函數(shù)UDF 計(jì)算液體蒸發(fā)換熱 ¥20
混合模型典型應(yīng)用場(chǎng)景為沉降、旋風(fēng)分離、泡狀流等
必須使用分離式求解器
不能用在沿流動(dòng)方向的周期性流動(dòng)
不能用大渦模擬
不能用無粘流動(dòng)
不能用二階隱式時(shí)間格式
光滑直管內(nèi)液體蒸發(fā)換熱模型
二維光滑圓管,飽和壓力0.57MPa
管壁熱流密度10kw/m2
進(jìn)口質(zhì)量流量288kg/m2s
使用UDF定義
蒸發(fā)飽和溫度;汽化潛熱;管壁熱流密度;管徑;飽和蒸汽焓
干度沿管程變化規(guī)律
向氣相轉(zhuǎn)移的質(zhì)量
耦合UDF
定義多相流模型為mixture
設(shè)置質(zhì)量和能量源項(xiàng)的UDF
展開 
Ansys Zemax | 如何使用 ZPL 創(chuàng)建用戶自定義求解
附件下載
聯(lián)系工作人員獲取附件
概述
本文使用兩個(gè)示例演示了如何使用 ZPL 創(chuàng)建用戶自定義解。第一個(gè)示例介紹了如何創(chuàng)建 ZPL 解以確保序列文件中像面的曲率半徑等于系統(tǒng)的 Petzval 曲率。第二個(gè)示例介紹了如何在非序列元件編輯器(Non-Sequential Component Editor)中基于其他物體的參數(shù)來約束的物體位置。
簡(jiǎn)介
求解 ( Solve ) 是可以在諸如鏡頭數(shù)據(jù)編輯器或非序列元件編輯器之類的編輯器中主動(dòng)調(diào)整特定值的功能。例如,可以在曲率半徑,圓錐系數(shù)或 TCE 上指定求解類型,并通過單擊要放置的求解單元的求解框進(jìn)行設(shè)置。盡管 OpticStudio 提供了許多默認(rèn)的求解類型,但用戶有可能希望自定義求解類型,這可以通過使用Zemax 編程語(yǔ)言( Zemax Programming Language ,ZPL)來實(shí)現(xiàn)。
ZPL 宏求解可用于任何編輯器中的幾乎所有單元(曲率半徑,厚度,參數(shù),多重結(jié)構(gòu)等)。可以像任何其他求解類型一樣,通過在編輯器中單擊參數(shù)單元格右側(cè)的小框來設(shè)置 ZPL 宏求解。
ZPL 宏求解通過執(zhí)行 ZPL 宏來確定解的值,并使用 SOLVERETURN 關(guān)鍵字將其返回給編輯器。一旦創(chuàng)建了用于求解的宏,并將其放置在 <Documents>\Zemax\Macros 目錄中,即可在求解窗口的“宏:( Macro: )”中輸入該宏的名稱:
請(qǐng)注意,在求解框中輸入的宏名稱不區(qū)分大小寫,并且不需要其擴(kuò)展名(.ZPL)。為確保宏求解按照預(yù)期的方式工作,需要遵循一些規(guī)則,請(qǐng)參閱“技巧和陷阱”部分以獲取更多信息。
Petzval 曲率求解示例
假設(shè)我們想要能夠自動(dòng)將像面的曲率半徑設(shè)置為等于 Petzval 曲率的解。
展開 Ansys Zemax光學(xué)設(shè)計(jì)軟件技術(shù)教程:如何使用ZPL創(chuàng)建用戶自定義求解
為了使求解更強(qiáng)且盡可能通用,建議在需要進(jìn)行表面參考時(shí)使用 SURC() 和 SOSO() 函數(shù):
SURC() 通過其(特殊的)注釋字符串參考表面
SOSO() 獲取要設(shè)置求解的表面/物體編號(hào)
請(qǐng)記住,如果在鏡頭數(shù)據(jù)編輯器中的任何曲率半徑單元上使用ZPL宏求解,則此參數(shù)的所有求解都將計(jì)算曲率 (1/R),而不是曲率半徑(R)。這意味著應(yīng)用于此參數(shù)的求解應(yīng)返回曲率半徑的倒數(shù),而不是曲率半徑本身。
用戶負(fù)責(zé)對(duì)宏返回的數(shù)據(jù)進(jìn)行錯(cuò)誤檢查。例如,如果宏調(diào)用 RAYTRACE 來計(jì)算光線參數(shù),則應(yīng)使用 RAYE() 來確保沒有發(fā)生任何錯(cuò)誤(例如漸暈或全內(nèi)反射)。如果發(fā)生錯(cuò)誤,則宏應(yīng)在未調(diào)用 SOLVERETURN 的情況下退出,以確保沒有值返回到單元格。 這在優(yōu)化過程中尤其重要。以下代碼給出了如何測(cè)試錯(cuò)誤的示例。
通常,宏求解應(yīng)保持簡(jiǎn)短,簡(jiǎn)單,并避免冗長(zhǎng)的計(jì)算。
最后,請(qǐng)注意,OpticStudio不會(huì)嘗試限定或驗(yàn)證求解宏。此功能很強(qiáng)大,且具有靈活性,但必須謹(jǐn)慎使用。
光研科技南京有限公司是國(guó)內(nèi)可靠的Ansys Zemax光學(xué)設(shè)計(jì)軟件代理商!公司已經(jīng)為廣大企業(yè),研究所以及高校提供了很多優(yōu)秀的相關(guān)產(chǎn)品和服務(wù),在行業(yè)內(nèi)建立了值得信任的口碑。
Ansys Zemax光學(xué)軟件
咨詢與訂購(gòu)方式
聯(lián)系人:光研科技南京有限公司徐保平
手機(jī)號(hào):15051861513
微信號(hào):13627124798
展開 Ansys Zemax | 用戶自定義表面真實(shí)建模衍射式人工晶狀體透鏡
有關(guān)如何使用自定義 DLL 擴(kuò)展 OpticStudio 的功能以及如何編譯新解決方案的更多詳細(xì)信息,請(qǐng)聯(lián)系工作人員了解。
在使用序列表面 DLL 時(shí),OpticStudio 有 10 種不同的方式與 DLL 交互和交換數(shù)據(jù)。這些方案表示常規(guī)信息、參數(shù)名稱和安全數(shù)據(jù)傳輸,以及布局圖、近軸和實(shí)際光線追蹤計(jì)算。不同的功能是在DLL的不同情況下定義的。
在這個(gè)模型中,我們應(yīng)用了一個(gè)簡(jiǎn)單的旋轉(zhuǎn)對(duì)稱衍射結(jié)構(gòu),具有統(tǒng)一的浮雕臺(tái)階高度,添加在代表基底面的標(biāo)準(zhǔn)表面之上。為了能夠與內(nèi)置的OpticStudio解決方案進(jìn)行模擬比較,我們用偶數(shù)非球面多項(xiàng)式描述了浮雕形狀。因此,表面矢高由以下公式給出:
在上式中,mod表示取模運(yùn)算,c是曲率,即半徑的倒數(shù),k是圓錐常數(shù),r是徑向坐標(biāo),h是統(tǒng)一的浮雕臺(tái)階高度。
ai為偶次非球面系數(shù)、h為步高。首先在DLL的Case 1中定義傳播算法,參數(shù)列標(biāo)題名稱。然后,Case 3描述基于上述公式的表面矢高,以便在布局圖中繪制。Case 4 考慮近軸光線追蹤結(jié)果,但由于區(qū)域分解方法需要在光線追跡之上進(jìn)行衍射分析,該方法僅適用于實(shí)際光線追蹤,因此我們忽略了這一步。這意味著在近軸近似中,我們的模型表現(xiàn)為標(biāo)準(zhǔn)曲面。最后,Case 5,計(jì)算實(shí)際光線追跡結(jié)果。為此,我們實(shí)現(xiàn)了兩個(gè)解決方案,一種近似解析算法和一種迭代算法,這將在下面將討論。
光線傳播算法
在復(fù)雜表面形狀的情況下,無法通過分析,確定光線-表面相交坐標(biāo),因此對(duì)于標(biāo)準(zhǔn)表面以外的內(nèi)置表面類型,OpticStudio 應(yīng)用迭代算法來查找數(shù)值解。這也可以是用戶自定義DLL 的一種方法。
展開