
發布
注冊
/
登錄ansys自定義函數載荷的案例
編程自定義函數
我們在這里繼續同樣有關可編程的內容,只是這次將討論傳輸函數:傅里葉光學中一個著名的概念。傳輸函數是對于包含理想組件的光學系統是一種極好的實現方法。在VirtualLab的全矢量電磁方法中也更好地體現出來。在以下教程和示例的幫助下,學習如何在VirtualLab Fusion中編寫自己的自定義函數!
傳輸函數
按照本教程的說明學習如何在VirtualLab Fusion中編寫自定義傳輸函數,并以一個理想的柱面透鏡為例。
編寫一個錐透鏡的傳輸函數
通過這個錐透鏡傳輸函數的附加示例,進一步加強您的VirtualLab編程知識。
展開 七、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.
展開 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宏進行定義。
展開 abaqus自定義載荷子程序------Dload使用
abaqus子程序Dload的主要作用:
(1)可用于定義作為位置、時間、單元編號、被加載積分點數量等的函數分布載荷大小的變化。
(2)在應力分析期間,將在每個基于單元或基于表面的非均勻分布載荷定義的載荷積分點處調用;
(3)將在每個積分點調用,以計算承受不均勻荷載類型PENU和PINU的管道元件的有效軸向力ESF1;
(4)不能在基于模態的程序中用于描述負載的時間變化;并且忽略可能與相關聯的階躍定義或非均勻分布負載定義一起出現的任何幅度參考。
子程序接口界面
SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,
1 COORDS,JLTYP,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION TIME(2), COORDS (3)
CHARACTER*80 SNAME
user coding to define F
RETURN
END
待定義變量
F:分布載荷的大小。表面載荷的單位為FL?2,體力的單位為FL?3。F將作為基于單元或基于表面的分布式載荷定義的一部分指定的載荷大小傳遞到例程中。如果未定義大小,F將作為零傳入。對于使用修正Riks法(靜態應力分析)的靜態分析,F必須定義為荷載比例系數λ的函數。分布式負載大小不可用于輸出目的。
用于傳遞信息的變量
KSTEP:Step 編號
KINC:增量數
TIME(1):當前分析步對應的當前時間
TIME(2):所有分析步對應的當前時間
NOEL:單元編號
NPT:根據荷載類型,構件內或構件表面上的荷載積分點編號。
展開 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級也要最小化。
關于評價函數約束,用戶可以指定
□ 單獨的目標值、范圍、下限或上限是什么
□ 以及通過權重,它們的貢獻應該是什么。
展開 abaqus自定義載荷子程序------Dload使用 ¥29.9
abaqus子程序Dload的主要作用:
(1)可用于定義作為位置、時間、單元編號、被加載積分點數量等的函數分布載荷大小的變化。
(2)在應力分析期間,將在每個基于單元或基于表面的非均勻分布載荷定義的載荷積分點處調用;
(3)將在每個積分點調用,以計算承受不均勻荷載類型PENU和PINU的管道元件的有效軸向力ESF1;
(4)不能在基于模態的程序中用于描述負載的時間變化;并且忽略可能與相關聯的階躍定義或非均勻分布負載定義一起出現的任何幅度參考。
子程序接口界面
SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,
1 COORDS,JLTYP,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION TIME(2), COORDS (3)
CHARACTER*80 SNAME
user coding to define F
RETURN
END
待定義變量
F:分布載荷的大小。表面載荷的單位為FL?2,體力的單位為FL?3。F將作為基于單元或基于表面的分布式載荷定義的一部分指定的載荷大小傳遞到例程中。如果未定義大小,F將作為零傳入。對于使用修正Riks法(靜態應力分析)的靜態分析,F必須定義為荷載比例系數λ的函數。分布式負載大小不可用于輸出目的。
用于傳遞信息的變量
KSTEP:Step 編號
KINC:增量數
TIME(1):當前分析步對應的當前時間
TIME(2):所有分析步對應的當前時間
NOEL:單元編號
NPT:根據荷載類型,構件內或構件表面上的荷載積分點編號。
展開 Mixture 和用戶自定義函數UDF 計算液體蒸發換熱 ¥20
混合模型典型應用場景為沉降、旋風分離、泡狀流等
必須使用分離式求解器
不能用在沿流動方向的周期性流動
不能用大渦模擬
不能用無粘流動
不能用二階隱式時間格式
光滑直管內液體蒸發換熱模型
二維光滑圓管,飽和壓力0.57MPa
管壁熱流密度10kw/m2
進口質量流量288kg/m2s
使用UDF定義
蒸發飽和溫度;汽化潛熱;管壁熱流密度;管徑;飽和蒸汽焓
干度沿管程變化規律
向氣相轉移的質量
耦合UDF
定義多相流模型為mixture
設置質量和能量源項的UDF
展開 FLUENT動網格案例之十二:基于自定義函數的薄膜振動動網格實現方法 ¥299
基于自定義函數的薄膜振動動網格實現方法
動網格實現效果
動網格區域設置
UDF截圖
這個UDF函數稍微改改,還能實現血管脈動模擬
文件列表

ANSYS里的自定義失效準則怎么定義的?
想請教各位:
ANSYS里的自定義失效準則怎么定義的呢?一定要用UPFs編用戶子程序才行嗎?UPFs看起來非常復雜啊,怎么辦?
又沒有人做過這個阿?
謝謝了!!!!
Ansys Wrokbench分段復雜函數載荷,加載方式記錄 ¥10
問題:
Ansys Workbench的載荷加載形式有三種,constant/table/function。Constant是在載荷步內給定恒定值;table形式較為便捷,可以在定義每個子步的載荷大小; function形式可以輸入以time/X/Y/Z為變量的簡單方程。
但是仍有某些形式的載荷較難輸入,例如分段復雜函數載荷等。
解決方法:
需要使用Ansys經典界面的function功能編輯分段載荷獲得ADPL載荷命令;再利用Workbench中command的形式施加載荷。
操作方式:
1. Ansys經典中function公式編輯器輸入分段函數。
在function頁卡中選著變量time,在Regime頁卡中逐個定義分段函數;
定義完成后點擊保存,并輸入函數名“TEST3.func”
2. 再次點擊標題欄的Parameters>Functions>Read From files>找到剛才保存的TEST3.func。并在Table Parameter Name中給編輯導入的分段函數命名PForce。此后分段函數即被公式編輯器編譯為表格數組形式,數組的名稱為:PForce。
3. 提取分段函數數值的ADPL命令形式,用于Workbench使用。
完成分段函數導入和命名后,在下拉列表中的File>List>Log file中可以查看經典界面GUI操作對應的ADPL命令。在這里可以將上述function公式編輯器導入的分段函數數組對應ADPL命令顯示出來。(有時log file顯示不及時,再重復一次即可)
4. 在Workbench內創建加載remote point點,并設定加載點的ADPL name為“LoadPoint“,用于加載。
展開 ansys載荷為位置函數的一個例子
設壓力分布函數為F=2RSIN(AF)COS(XT)
命令流
*do,i,1,N (共N個單元)
csys,2 (激活極坐標系)
esel,,,i (選擇第i個單元)
xe=centrx(i) (xe為單元中心X坐標)
ye=centry(i) (ye為單元中心y坐標)
ze=centrz(i) (ze為單元中心z坐標)
*GET,AA,ELEM,I,AREA
f=2*sin(xe)*cos(ye)*cos(ze)
sfe,i,1,pres,,f/AA,,,
*enddo
=====================
先選要加載荷的面,get其最大單元號和最小單元號。再做上面提到的循環,循環從最小單
元號到最大單元號。循環過程中,判斷所循環的單元號在所選的面內是否存在。
命令流:
asel,... (要加載荷的面)
esla,,,, (和面相聯的單元)
*GET,eMAX,ELEM,0,NUM,MAX !獲取最大單元號
*GET,eMIN,ELEM,0,NUM,MIN !獲取最小單元號
*do,i,emin,emax
*if,esel(i),eq,1,then (該句語法請查幫助,這里憑記憶寫出)
!!!*do,i,1,N (共N個單元)
csys,2 (激活極坐標系)
esel,,,i (選擇第i個單元)
xe=centrx(i) (xe為單元中心X坐標)
ye=centry(i) (ye為單元中心y坐標)
ze=centrz(i) (ze為單元中心z坐標)
*GET,AA,ELEM,I,AREA
f=2*sin(xe)*cos(ye)*cos(ze)
sfe,i,1,pres,,f/AA,,,
*endif (判斷結束)
*enddo
展開 ANSYS知識普及4——如何施加函數變化的表面載荷 (ANSYS專家編輯,非原創,歡迎轉摘)
本人準備出一個ANSYS知識普及系列,將有用的網上資料歸攏,由于知識水平有限,不對之處請諒解。也歡迎各位網友提供好的資料分享,讓我們共同完成這個ANSYS知識普及系列。
編輯人:技術鄰ANSYS專家
業務咨詢網址:http://www.yqgqt.org.cn/content/other/402981
(打個小廣告)
聲 明:1、ANSYS知識普及系列中所有資料均來自網上;
2、如侵犯知識產權,請聯系ANSYS專家本人或者技術鄰,我將第一時間刪除。
小技巧:加本人關注,可以及時觀看本人發布的技術貼
ANSYS具有函數加載功能,可以很方便地在模型表面施加函數變化的各種載荷,在ANSYS中,也可以通過變通的方式來實現此功能,其思路是:
首先選定所要施加函數變化表面載荷的表面上的節點,利用ANSYS的參數數組和嵌入函數知識寫一簡單的命令流,定義好相應節點位置的面載荷值,然后通過在節點上施加面載荷來完成。
下面以在一圓柱表面施加函數變化載荷為例:
/prep7
et,1,45
cyl4,,,0.5,,,,3
vsweep,all
asel,s,loc,y,0.01,1
nsla
!
*get,nmax,node,,num,max,
*get,nmin,node,,num,min,
*afun,deg
*dim,t1,array,nmax,1,1,
csys,1
*do,k,nmin,nmax
*if,nsel(k),eq,1,then
t1(k)=1000*sin(ny(k))
*else
t1(k)=0
*endif
*enddo
!
sffun,pres,t1(1)
sf,all,pres,0
展開