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