
發布
注冊
/
登錄ansys函數定義的案例
COMSOL 軟件內置函數和用戶定義函數說明
為了方便用戶的建模操作,COMSOL 軟件中預置了很多常用的變量、物理常數,以及函數,并提供很多自定義函數。“使用技巧”系列將介紹這些預置功能,希望能夠提高大家的建模使用經驗。
訪問 COMSOL 官網“產品文檔”頁面(comsol.com/documentation)或點擊文末“閱讀原文”,可查看本系列全部內容。
今天將介紹本系列的第三部分:函數。
函數
在“模型開發器”中,有兩種類型的函數:內置函數和用戶定義的函數。函數可以是標量值或與輸入變元相關的場值。某些函數的輸入和輸出變元都可以有單位。
內置數學函數
可以直接使用的數學函數,不需要再根據定義來編寫復雜的表達式。
這些函數的輸入或輸出變元沒有單位。
內置運算符函數
這些內置函數的行為與內置數學函數不同。它們可能不屬于介紹性文本范疇,但在此列出以保證保留名稱列表的完整性。有關更多信息,請參閱 Reference Manual。
用戶定義的函數
用戶定義的函數可以在模型樹的全局定義節點下(對于每個組件,則在定義節點下)定義。從函數菜單中選擇一個模板并輸入設置,定義函數的名稱和詳細形狀。
展開 編程自定義函數
我們在這里繼續同樣有關可編程的內容,只是這次將討論傳輸函數:傅里葉光學中一個著名的概念。傳輸函數是對于包含理想組件的光學系統是一種極好的實現方法。在VirtualLab的全矢量電磁方法中也更好地體現出來。在以下教程和示例的幫助下,學習如何在VirtualLab Fusion中編寫自己的自定義函數!
傳輸函數
按照本教程的說明學習如何在VirtualLab Fusion中編寫自定義傳輸函數,并以一個理想的柱面透鏡為例。
編寫一個錐透鏡的傳輸函數
通過這個錐透鏡傳輸函數的附加示例,進一步加強您的VirtualLab編程知識。
展開 將Python定義函數導入HyperStudy并調用
將Python定義函數導入HyperStudy并調用
第一步,定義RosenBrock函數
(1) 新建文本文檔,在文本輸入區內輸入如下
def ros_eval(x, y):
return 100*(y-x*x)*(y-x*x) + (1-x)*(1-x)
(2)另存為rosenbrock_function.py。退出并關閉文本文檔。
第二步,將定義函數添加至首選項文件Preference File
(1)新建文本文檔,輸入如下
*Id("HyperStudy v14.0")
*BeginDefaults()
*BeginPlotDefaults()
*RegisterPythonFunction("ros_eval","<path>/rosenbrock_function.py",2)
*EndPlotDefaults()
*EndDefaults()
將<path>替換為rosenbrock_function.py所在的路徑。
(2)保存文本文檔為rosenbrock_prefs.mvw,退出并關閉。
第三步,HyperStudy求解
(1)啟動HyperStudy,依次菜單欄“file-Use Preference File- rosenbrock_prefs.mvw file”,此時完成了首選項文件Preference File的導入。
(2)利用HyperStudy新建Model,類型為Internal Math
(3)定義變量X和Y,如下
(4)執行Nominal Run
(5)創建并定義輸出響應,調用上述定義的RosenBrock函數。
展開 將HyperMath定義函數導入HyperStudy并調用
將HyperMath定義函數導入HyperStudy并調用
第一步,定義RosenBrock函數
(1) 打開HyperMath,在文本輸入區內輸入如下
function ros_eval(x,y) {
f = 100.*(y-x^2)^2 + (1-x)^2
return(f)
}
(2)另存為rosenbrock_function.hml。退出并關閉HyperMath。
第二步,將定義函數添加至首選項文件Preference File
(1)新建文本文檔,輸入如下
*Id("HyperStudy v12.0")
*BeginDefaults()
*BeginPlotDefaults()
*RegisterHMATHFunction("ros_eval", "<path>/rosenbrock_function.hml", 2)
*EndPlotDefaults()
*EndDefaults()
將<path>替換為rosenbrock_function.hml所在的路徑。
(2)保存文本文檔為rosenbrock_prefs.mvw,退出并關閉。
第三步,HyperStudy求解
(1)啟動HyperStudy,依次菜單欄“file-Use Preference File- rosenbrock_prefs.mvw file”,此時完成了首選項文件Preference File的導入。
(2)利用HyperStudy新建Model,類型為Internal Math
(3)定義變量X和Y,如下
(4)執行Nominal Run
(5)創建并定義輸出響應,調用上述定義的RosenBrock函數。
展開 
七、Fluent用戶自定義函數(UDF)基礎(1)
自定義邊界條件、材料特性、表面和體積反應速率、用戶定義標量(UDS)、傳輸方程中的源項、擴散系數函數等
2. 每次迭代調整一次計算值。
3. 自定義的求解初始化
4. 按需執行UDF
5. 在迭代結束時、退出ANSYS Fluent或加載已編譯的UDF庫時執行
6. 增強后處理效果
7. 改進現有的ANSYS Fluent模型(如離散相模型、多相混合模型、離散坐標輻射模型)
上述功能都是直接使用Fluent比較難以完成但是實際又經常會用到的,尤其1、2在以后的學習中會經常使用到。
UDF宏: UDF有兩類宏,DEFINE宏和結構宏。DEFINE宏是大的功能宏,能夠完成某一項功能,如定義材料特性、定義邊界條件等等。想要完成不同的功能就要在對應的DEFINE宏中書寫代碼,上述的每個功能都有其DEFINE宏。結構宏和FLUENT計算方式有關,涉及到網格、線程和相域的相關知識,比較復雜,我們以后再詳細了解。結構宏可以相互嵌套,但是只能大套小。比較常見的結構宏如:
begin_f_loop(f, t)//遍歷線程t上的面
{
//代碼//
}
end_f_loop(f, t)
thread_loop_c(t, d)////遍歷混合域d上的線程
{
//代碼//
}
值得注意的是,DEFINE宏里面會包含結構宏,這樣說來,DEFINE宏可以類比為C語言中的自定義函數,而結構宏則可以類比成循環語句for或while,只不過這里的循環的是網格或線程。
要想達到我們的目的,我們還需要知道各種物理量,UDF也給我們提供了各種各樣的物理量,如獲取網格溫度C_T(c,t) 。物理量宏都是這樣的寫法,C表示網格,T表示溫度,(c,t)表示從t線程獲取網格c的溫度。
展開 Abaqus如何施加自定義函數的位移約束
Abaqus如何施加自定義函數的位移約束
對于有一些模型需要加載隨時間變化的載荷和約束,Abaqus提供各種定義方式,通過Amplitude來完成,本次想闡述的時加載不隨時間變化而是隨坐標變化的約束。
建立如圖所示的模型,想對這個模型的整體在x方向施加一個隨著Y軸坐標線性變化的位移約束,即u1=kY形式的約束。
圖1
直接施加肯定不可能,與ANSYS一樣,需要先建立函數,建立函數菜單的位置如圖2所示,在Load模塊下的Tool菜單下。
圖2
點開之后如圖3所示,點擊Creat彈出對話框,采用Expression field的方式建立函數,并可以修改名稱。
圖3
之后即可通過如圖4所示的界面來創建函數,能夠用的變量是坐標XYZ,運算符在右邊,坐標采用的坐標系可以自由選擇,默認采用笛卡爾總體坐標系。選擇坐標的時候可以直接點選Abaqus/CAE窗口的已有坐標系直接選擇。
圖4
創建完保存。
之后即可創建位移約束,如圖5所示,需要注意兩個東西,一個是通過Distrubition選擇剛才創建的函數AnalyticalField-1,另外施加u1時填入數字1的含義表示施加1倍的函數。
圖5
創建完之后,可以通過主菜單的View-Assembly Display Option-Attribute來設置顯示,如圖6所示。
圖6
最終加載完成如圖7所示。
圖7
很明顯隨著Y坐標的不同而不同。
展開 詳述python中def語句(自定義函數)
00 def語句的作用
def語句的作用是自定義函數,其實質就是將代碼塊打包并命名,并且可以提供參數(可以不止一個)。
九、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宏進行定義。
展開 VirtualLab:使用自定義的評價函數優化高NA分束器
為此,對初始系統的結構進行了參數化,并通過可編程光柵分析器定義了一組自定義的評價函數。對于參數優化和后續的公差分析,使用嚴格的傅里葉模態法 (FMM)。
建模任務
衍射分束面初始設計(*)
1.采用VirtualLab Fusion的迭代傅里葉變換算法(IFTA)設計工具計算了分束器的初始相位函數。
2.對于高度輪廓的轉換,采用了基于薄元件近似(TEA)的結構設計。
(*)不是這個用例的一部分(**)這些會話編輯器在衍射光學工具箱銀版中可用。
TEA和等距抽樣結構的局限性
□ TEA非常適合于最小特征尺寸不小于約5倍波長的情況。如果不是這樣,振幅/相位分布與設計高度輪廓相互作用后可能會顯示出與期望值的相關偏差。
□ 因此,需要進行嚴格的評估。
□ 對于參數優化,需要對結構數據進行不同的定義。
后優化的數據準備(參數化)
衍射分束器表面進一步優化
哪個衍射級次有哪些評價函數?
利用可編程光柵分析器
分束器初始設計的嚴格分析
設置優化參數
兩個優化過程對比
在這個用例中,我們演示了兩種具有不同配置目標和約束的優化:
□ 在優化#1中,優先考慮均勻性誤差。
□ 在優化#2中,0級也要最小化。
關于評價函數約束,用戶可以指定
□ 單獨的目標值、范圍、下限或上限是什么
□ 以及通過權重,它們的貢獻應該是什么。
展開 VirtualLab:使用自定義的評價函數優化高NA分束器
為此,對初始系統的結構進行了參數化,并通過可編程光柵分析器定義了一組自定義的評價函數。對于參數優化和后續的公差分析,使用嚴格的傅里葉模態法 (FMM)。
建模任務
衍射分束面初始設計(*)
1.采用VirtualLab Fusion的迭代傅里葉變換算法(IFTA)設計工具計算了分束器的初始相位函數。
2.對于高度輪廓的轉換,采用了基于薄元件近似(TEA)的結構設計。
(*)不是這個用例的一部分(**)這些會話編輯器在衍射光學工具箱銀版中可用。
TEA和等距抽樣結構的局限性
□ TEA非常適合于最小特征尺寸不小于約5倍波長的情況。如果不是這樣,振幅/相位分布與設計高度輪廓相互作用后可能會顯示出與期望值的相關偏差。
□ 因此,需要進行嚴格的評估。
□ 對于參數優化,需要對結構數據進行不同的定義。
后優化的數據準備(參數化)
衍射分束器表面進一步優化
哪個衍射級次有哪些評價函數?
利用可編程光柵分析器
分束器初始設計的嚴格分析
設置優化參數
兩個優化過程對比
在這個用例中,我們演示了兩種具有不同配置目標和約束的優化:
□ 在優化#1中,優先考慮均勻性誤差。
□ 在優化#2中,0級也要最小化。
關于評價函數約束,用戶可以指定
□ 單獨的目標值、范圍、下限或上限是什么
□ 以及通過權重,它們的貢獻應該是什么。
展開 Mixture 和用戶自定義函數UDF 計算液體蒸發換熱 ¥20
混合模型典型應用場景為沉降、旋風分離、泡狀流等
必須使用分離式求解器
不能用在沿流動方向的周期性流動
不能用大渦模擬
不能用無粘流動
不能用二階隱式時間格式
光滑直管內液體蒸發換熱模型
二維光滑圓管,飽和壓力0.57MPa
管壁熱流密度10kw/m2
進口質量流量288kg/m2s
使用UDF定義
蒸發飽和溫度;汽化潛熱;管壁熱流密度;管徑;飽和蒸汽焓
干度沿管程變化規律
向氣相轉移的質量
耦合UDF
定義多相流模型為mixture
設置質量和能量源項的UDF
展開 
從形函數與函數的連續可導性到ansys結果中的節點解與單元解的差異
如題,《從形函數與函數的連續可導性到ansys結果中的節點解與單元解的差異》,形函數對結果的影響大部分人都能聯想到二次單元比線性單元求得的結果更精確,但該文要表達的不僅如此,而是從更一般地討論怎么從單元的形函數來理解節點解與單元解之間的差異。
首先討論單元的階次。作為基礎我們應該明白網格與單元的區別,網格是將幾何體離散化后的結構,即組成幾何體的微元,單元是這些微元的幾何、物理或數學屬性(這里我們并不打算詳細討論單元的這些屬性,但是這些知識會方便對本文的理解)。我們經常在使用ansys或其他CAE軟件時經常會遇到單元的選擇以及單元階次的選擇,一般一種單元包括線性單元和二次單元甚至更高級的單元,比如在ansys中經常被使用的shell181(左)和shell281(右),線性單元使用的形函數是一次的多項式,高次單元使用的形函數是高次的多項式,形函數用于描述相鄰節點之間的位移場,所以高次的單元可以更好的描述形狀復雜的幾何體。
不同于常規材料力學中通過平衡方程求解(首先求得的解是力解),有限元方式求解的特點是首先求解出的結果是節點的位移解,即displacement of nodes,所有的節點位移形成了位移場,在空間上位移場一定是連續的,但是不一定是平滑的。哎哎,是不是特別熟悉的感覺,正是和高數中函數的連續性和可導性兩個性質非常相似,不用奇怪,位移場本來就是用函數描述的,所以自然就存在函數的性質,所以用函數的性質來理解就可以方便解釋一些現象了,下圖分別是用兩種形函數描述的位移場,在有限元求解后得到的首先是節點位移解,即圖中5個節點的位移,假如每個節點的位移用坐標x\y\z的函數來表示,然后通過形函數插值得到相鄰節點之間的位移(也是xyz的函數),上圖是用一次形函數插值,下圖是用二次形函數插值。
展開 FLUENT動網格案例之十二:基于自定義函數的薄膜振動動網格實現方法 ¥299
基于自定義函數的薄膜振動動網格實現方法
動網格實現效果
動網格區域設置
UDF截圖
這個UDF函數稍微改改,還能實現血管脈動模擬
文件列表
ANSYS里的自定義失效準則怎么定義的?
想請教各位:
ANSYS里的自定義失效準則怎么定義的呢?一定要用UPFs編用戶子程序才行嗎?UPFs看起來非常復雜啊,怎么辦?
又沒有人做過這個阿?
謝謝了!!!!
ansys的取值函數
有關實體狀態的取值函數
NSEL(N)
ESEL(E)
KSEL(K)
LSEL(L)
ASEL(A)
VSEL(V)
表示某個實體狀態,其返回值-1,沒有選中,0,沒有定義,1,被選中
有關下一個被選實體的取值函數
NDNEXT(N)
ELNEXT(E)
KPNEXT(K)
LSNEXT(L)
ARNEXT(A)
VLNEXT(V)
表示編號大于N,E,K,L,A,V的下一個被選實體
有關實體位置的取值函數
CENTRX(E)
CENTRY(E)
CENTRZ(E)
單元E在中心位置的X,Y,Z的坐標系(直角坐標系),有所選的節點決定
NX(N)
NY(N)
NZ(N)
KX(K)
KY(K)
KZ(K)
節點N或關鍵點K在激活坐標系中X,Y,Z的坐標值
LX(L,LFRAC)
LY(L,LFRAC)
LZ(L,LFRAC)
線段L在長度比率為LFRAC(0~1)時的X,Y,Z的坐標值
有關最靠近某位置的節點或關鍵點編號的取值函數
NODE(X,Y,Z)
KP(X,Y,Z)
被選擇的節點嘴靠近X,Y,Z位置的節點或關鍵點編號(在激活的坐標系下,如果存在多個節點或關鍵點,那么取其最小值)
有關距離的取值函數
DISTND(N1,N2)
DISTKP(K1,K2)
節點或關鍵點兩點之間的距離
DISTEN(E,N)
單元E的中心點與節點N之間的距離,中心點將由單元上被選擇的節點確定
有關角度的取值函數
ANGLEN(N1,N2,N3)
ANGLEK(K1,K2,K3)
節點或關鍵點兩條邊之間的夾角,缺省時單位為弧度,其中所選擇的3個節點中,N1或K1是頂點
有關最靠近實體的節點,關鍵點和單元的取值函數
NNEAR(N)
最靠近節點N的被選節點
KNEAR(K)
最靠近關鍵點K的被選關鍵點
ENEARN(N)
最靠近節點N的被選單元,單元的位置將由被選節點確定
有關面積的取值函數
展開