
發布
注冊
/
登錄ansys自定義剛度矩陣的案例
如何從Ansys APDL中提取剛度矩陣與質量矩陣? ¥69
1.引論
經常使用Ansys、Abaqus等一系列有限元分析軟件進行計算、學習的學生或工程師們都會知道在有限元分析建模與計算中剛度矩陣與質量矩陣的重要性。但是由于軟件的黑盒性質,大家往往在實際使用十分成熟的商業化軟件的過程中慢慢忽視了有限元及其衍生出的商業軟件背后的原理與方法。
這時,不管是在學習中還是在工程應用中往往都會遇到一個同樣的問題,那么就是如何將Ansys APDL運行中的產生的各種數據(例如:剛度矩陣、質量矩陣)導出成為我們熟悉的形式或文件格式,從而為我們所用,所分析。
因此我決定寫下此篇文章來幫助很多實際工作或學習中需要用到此類技能的同學、同事們,讓大家更了解Ansys APDL背后的工作原理與數據導出方式。
當然,在社區中早就有大佬回答過了這個問題,并給大家制作了相應的提取矩陣軟件,其軟件具備了簡單、便捷的操作方式,讓很多想要提取剛度矩陣與質量矩陣的同僚們受益,那么我為什么還要寫一篇這樣的文章重新提起這樣一個話題呢?這就又回到了我開頭所說的“原理與方法”,我在此更希望面對想要進一步學習了解軟件背后機理的群體,并在此基礎上保留教學的簡潔性,提供導出矩陣與轉換、列式、求解的源代碼,使其既兼顧基本原理,又可以讓大家直接上手使用,非常的便捷,也避免了很多因為優化不完全導致的運行bug。
2.有限元軟件導出剛度矩陣與質量矩陣的方法
在使用APDL進行求解時,每次在求解完成后都會在工作路徑下生成一個.full文件,而這個文件十分關鍵,其正是剛度矩陣與質量矩陣的所在之處。
展開 基于 MATLAB 的 ANSYS Harwell-Boeing 格式稀疏矩陣提取工具 —— 剛度矩陣與質量矩陣 ¥30
在有限元分析中,ANSYS 可以導出大規模稀疏矩陣(如剛度矩陣、質量矩陣),通常使用 Harwell-Boeing (HB) CCS 格式。這些矩陣對后續二次開發、動力學分析或自定義求解器非常重要,但由于其稀疏和壓縮存儲形式,直接在 MATLAB 中讀取和使用并不方便。
本文提供了 兩個 MATLAB 函數,可直接從 ANSYS 導出的 HB 矩陣文件中讀取并重構成 MATLAB 稀疏矩陣:
1.剛度矩陣提取函數
輸入:ANSYS 導出的剛度矩陣 HB 文件(stiff.txt)
輸出:MATLAB 稀疏矩陣 K,可直接用于動力學計算或驗證
支持自動對稱化,保證數值正確
2.質量矩陣提取函數
輸入:ANSYS 導出的質量矩陣 HB 文件(mass.txt)
輸出:MATLAB 稀疏矩陣 M
使用與剛度矩陣同樣的解析邏輯,無需額外修改
案例說明:
本文以高速鐵路接觸網結構為例,展示了如何將 ANSYS 中導出的稀疏剛度矩陣和質量矩陣,在 MATLAB 中完整展開,并進行后續動力學分析準備。
通過該方法,可以將大規模有限元矩陣快速轉化為 MATLAB 可操作形式,為自定義振動分析、模態分析及其他科研或工程應用提供基礎。
優勢與應用:
支持大規模稀疏矩陣解析
自動對稱化,保證數值精度
適用于剛度矩陣、質量矩陣、其他 HB 格式矩陣
可作為動力學求解器或后處理工具的基礎模塊
使用方法:
1.使用以下代碼對ansys中生成的質量及剛度矩陣進行提取,file,5,full(5為工作目錄下full文件的文件名,例如:filename.full)。
展開 提取ANSYS中的剛度矩陣和質量矩陣到MATLAB中進行二次開發 ¥88
最近在考慮自己編寫的程序和商用軟件的驗證問題,有限元結構分析中最關鍵的一環就是剛度矩陣的獲得,如果涉及到模態分析,還有質量矩陣。考慮到商業軟件的成熟性,可以用ANSYS生成的剛度矩陣做參照來看自己編寫的程序是否正確,因此如何提取ANSYS中結構的剛度矩陣,并進行隨后的驗證或者二次開發是一個問題。
https://www.yqgqt.org.cn/content/post/1796144
受上述帖子的啟發,使用MATLAB提取ANSYS中的剛度和質量矩陣,并進行模態分析驗證提取的矩陣的正確性。
首先,在ANSYS中使用HBMAT命令方法提取整體矩陣。
命令:HBMAT,fname,ext,--,form,matrx,rhs
其中:
Fname---輸出矩陣的路徑和文件名,缺省為當前工作路徑和當前工作文件名。
ext---輸出矩陣文件的擴展名,缺省為.matrix。
form---定義輸出矩陣文件的格式,其值可取:
=ASCII:ASCII碼格式;
=BIN:二進制格式。
matrix---定義輸出矩陣的類型,其值可?。?=STIFF:輸出剛度矩陣??捎糜趯懭肓?FULL文件的任何類型的分析。
=MASS:輸出質量矩陣。可用于特征值屈曲、子結構分析、模態分析。
=DAMP:輸出阻尼矩陣。僅用于有阻尼的模態分析。
rhs---右邊項輸出控制(右邊項指用矩陣所表示方程的等號右端矢量,這里可為節點荷載向量),如rhs=YES則輸出,如rhs=NO則不輸出。
模態分析時,因僅LANB和QR法可生成完整的質量矩陣,因此也僅采用這兩種方法時才可使用HBMAT命令得到質量矩陣文件。
展開 ANSYS模型剛度、質量矩陣快速提取小軟件—km_from_Ansys ¥88
提取方法
Ansys中其實提供了幾種單元剛度矩陣和整體剛度矩陣的提取接口,先做一下簡單介紹:
(1)單元剛度矩陣提取,集成整體剛度矩陣
首先選擇要提取的單元,通過/debug命令輸出選擇集中的單元剛度矩陣,再根據結構的單元連接信息,組合成整體剛度矩陣,命令如下:
/OUTPUT,cp,out,, ! 將輸出信息送到cp.out文件
/debug,-1,,,1 ! 指定輸出單元矩陣
/SOLU
SOLVE
finish
/OUTPUT, TERM ! 將輸出信息送到output windows中
感受:這個方法很直接,但稍顯麻煩,需要提取到結構的單元組成信息、節點信息以及單元剛度矩陣等,對于稍大一些結構來說,可能需要1個小時甚至更長時間才能完成。
(2)超單元方法
/solu
antype,7 !substructuring分析類型
seopt,matname,1 !設置文件名稱和剛度矩陣類型(剛度,質量,阻尼等)
nsel,all !選擇所有節點
m,all,all !定義所有節點自由度為主自由度
solve !求解
selist,matname,3 !列出整體剛度矩陣
這種方法是可以提取到結構整體剛度矩陣的,但是問題在于需要指定主自由度,對于一般結構而言,這個方法還是適用的,問題是如果結構中存在耦合關系,結構自由度存在依賴關系,該方法就不太適用了,可能還有其他解決辦法,但是我后來還是放棄這種方法。
(3)HBMAT命令方法提取整體矩陣
這種方法的適用性比較廣,也是個人比較推崇的一種方法。
展開 
ANSYS中整體、單元剛度和質量矩陣的提取
指定輸出單元矩陣
/SOLU
SOLVE
finish
/OUTPUT, TERM ! 將輸出信息送到output windows中
! 這時用編輯器打開cp.out文件,可以看到按單元寫出的質量、剛度等矩
陣
ANSYS中整體、單元剛度和質量矩陣的提取.rar
ANSYS剛度矩陣的提取與解析(python解析)
就ansys如何提取剛度矩陣、如何解讀提取的文檔以及利用Python進行解析。
在workbench中實現整個過程的參數化過程除了前幾次文章介紹的模型與網格,還應該包括材料參數的參數化定義。利用Python進行二次開發能夠實現材料參數的自由定義,比如來源于excel表格或者文檔的數據,通過Python代碼的自動讀取,參與到實際的有限元分析進程中。
結構有限元最后的求解過程總是歸結到求解一個大型矩陣方程Ax=b,對于一些情況還需要考慮質量矩陣M和阻尼矩陣C。有限元程序在組裝完所有單元的剛度矩陣后,考慮模型所施加的約束和載荷,最終將剛度矩陣進行一些處理,例如乘大數法,變成Ax=b的形式,其中A是剛度矩陣,b是節點載荷,x為待求的節點位移,A和b全為已知量。
基本上各類有限元軟件均能夠提取模型的剛度矩陣,此次針對剛度矩陣的提取與解析做一個例子,采用的軟件是ANSYS經典。
在ANSYS中建立一個簡單的模型,劃分網格后共12個節點,定義材料參數,施加約束和載荷后求解。有限元模型如下所示。
待求解結束后,會在工作目錄下生成一個后綴為full的文件,之后即可進行剛度矩陣的提取。
通過主菜單,如下所示。
選擇Matrix后,彈出如下所示的界面。
其中,File to be read需要指定工作目錄下生成的full文件,Name of file to write為所導出剛度矩陣的文件名稱;Output matrix file format表示文件格式,還有Binary,生成的是文檔文件,選擇Ascii即可;Matrix to write表示輸出的是剛度矩陣/質量矩陣還是阻尼矩陣;RHS選項表示是否同時輸出右端項,也即是Ax=b中的b。
打開生成的剛度矩陣文檔,如下所示。
展開 ANSYS里的自定義失效準則怎么定義的?
想請教各位:
ANSYS里的自定義失效準則怎么定義的呢?一定要用UPFs編用戶子程序才行嗎?UPFs看起來非常復雜啊,怎么辦?
又沒有人做過這個阿?
謝謝了?。。。?/span>
『分享』ANSYS中整體、單元剛度和質量矩陣的提取
、整體剛度和質量矩陣的提取。
該功能需要進行二次開發,由ansys形成
的二進制文件.full提取整體剛度和質量
矩陣。
基于ansys的一個用戶開發程序例子編
了一個程序(附件中)。
開發環境:compaq fortran 6.5
運行環境:win2000。
一個主文件:self.for,
另一個文件matrixout.f90用于矩陣輸出
binlib.lib為ansys提供的庫文件,將其
引入項目中(也可直接扔進debug目錄)
.full文件由子空間迭代模態分析獲得。
運行編譯后的可執行文件.exe
2、單元剛度和質量矩陣的提取。
/DEBUG命令。詳細說明可由以下轉載文章
finish
/clear
PI=3.1415926
w1=3
w2=10
w3=6
w4=1.2
r=.8
t=0.08
/PREP7
!*
ET,1,SHELL63
R,1,t
ET,2,MASS21
R,2,500,500,500,2000,2000,2000,
!*
UIMP,1,EX, , ,2e11
UIMP,1,NUXY, , ,0.3,
UIMP,1,DAMP, , ,0.2,
UIMP,1,DENS, , ,7800,
BLC4,0,0,w2,w1
ESIZE,1.5,0,
AMESH,all
NSEL,S,LOC,X,0.0
D,all, , , , , ,ALL, , , , ,
allsel,all
SFA,all,1,PRES,12
FINISH
/OUTPUT,cp,out,, !
展開 ANSYS梁單元自定義截面
ANSYS梁單元自定義截面
梁單元作為一種簡單且高效的計算單元,在結構分析尤其是建筑結構中得到廣泛的應用。使用梁單元可以避免將結構中梁柱全部轉換為實體單元,從而降低了計算量,且梁單元結構形式簡單,求解精度也相對較高。在ANSYS中,梁單元基本上可以分為線性單元和二次單元,二者之間計算理論不同,經典的二次單元即BEAM189單元的積分點如下圖所示:
在ANSYS中可以為BEAM單元定義截面,其中大部分經典的截面形式都包含在ANSYS的截面庫中,但是經典的梁單元計算時截面方向分為四個單元,這對于一般計算來說是足夠的,但如果需要仔細分析截面方向的內力,可能就略顯的粗糙了。除此之外,鋼管混凝土、組合梁之類也都是異形梁截面,此時標準截面庫中的數據也沒什么用。針對這個問題存在兩種解決方式,一種是使用ASEC自定義截面參數,這個命令不管截面如何,只需要給出截面相關的信息即可,截面的信息輸入如下圖所示:
至于這些截面的參數可以使用簡單的截面計算工具得到,如果是鋼筋混凝土梁這種比較復雜的復合梁,那么需要使用Xtract之類的截面有限元軟件進行計算。將截面信息填入。采用ASEC的截面輸入方式計算效率高,截面信息準確的話,精度也不差,但缺點是不能輸出截面積分點和柵點的數據。
另一種方式就是自定義截面,其基本思路如下:
1.設定MESH200單元,建立截面幾何形狀;
2.用MESH200單元劃分截面,并保存截面數據;
3.建立計算幾何模型,讀取截面數據;
4.賦予模型截面,施加邊界條件計算;
5.后處理。
展開 ANSYS梁單元自定義截面
在ANSYS中,梁單元基本上可以分為線性單元和二次單元,二者之間計算理論不同,經典的二次單元即BEAM189單元的積分點如下圖所示:
在ANSYS中可以為BEAM單元定義截面,其中大部分經典的截面形式都包含在ANSYS的截面庫中,但是經典的梁單元計算時截面方向分為四個單元,這對于一般計算來說是足夠的,但如果需要仔細分析截面方向的內力,可能就略顯的粗糙了。除此之外,鋼管混凝土、組合梁之類也都是異形梁截面,此時標準截面庫中的數據也沒什么用。針對這個問題存在兩種解決方式,一種是使用ASEC自定義截面參數,這個命令不管截面如何,只需要給出截面相關的信息即可,截面的信息輸入如下圖所示:
至于這些截面的參數可以使用簡單的截面計算工具得到,如果是鋼筋混凝土梁這種比較復雜的復合梁,那么需要使用Xtract之類的截面有限元軟件進行計算。將截面信息填入。采用ASEC的截面輸入方式計算效率高,截面信息準確的話,精度也不差,但缺點是不能輸出截面積分點和柵點的數據。
另一種方式就是自定義截面,其基本思路如下:
1.設定MESH200單元,建立截面幾何形狀;
2.用MESH200單元劃分截面,并保存截面數據;
3.建立計算幾何模型,讀取截面數據;
4.賦予模型截面,施加邊界條件計算;
5.后處理。
展開 ANSYS梁單元自定義截面
ANSYS梁單元自定義截面
梁單元作為一種簡單且高效的計算單元,在結構分析尤其是建筑結構中得到廣泛的應用。使用梁單元可以避免將結構中梁柱全部轉換為實體單元,從而降低了計算量,且梁單元結構形式簡單,求解精度也相對較高。在ANSYS中,梁單元基本上可以分為線性單元和二次單元,二者之間計算理論不同,經典的二次單元即BEAM189單元的積分點如下圖所示:
在ANSYS中可以為BEAM單元定義截面,其中大部分經典的截面形式都包含在ANSYS的截面庫中,但是經典的梁單元計算時截面方向分為四個單元,這對于一般計算來說是足夠的,但如果需要仔細分析截面方向的內力,可能就略顯的粗糙了。除此之外,鋼管混凝土、組合梁之類也都是異形梁截面,此時標準截面庫中的數據也沒什么用。針對這個問題存在兩種解決方式,一種是使用ASEC自定義截面參數,這個命令不管截面如何,只需要給出截面相關的信息即可,截面的信息輸入如下圖所示:
至于這些截面的參數可以使用簡單的截面計算工具得到,如果是鋼筋混凝土梁這種比較復雜的復合梁,那么需要使用Xtract之類的截面有限元軟件進行計算。將截面信息填入。采用ASEC的截面輸入方式計算效率高,截面信息準確的話,精度也不差,但缺點是不能輸出截面積分點和柵點的數據。
另一種方式就是自定義截面,其基本思路如下:
1.設定MESH200單元,建立截面幾何形狀;
2.用MESH200單元劃分截面,并保存截面數據;
3.建立計算幾何模型,讀取截面數據;
4.賦予模型截面,施加邊界條件計算;
5.后處理。
展開 
Ansys Zemax|如何自定義優化操作數
用戶自定義操作數是否會使評價函數計算緩慢?
也許您會好奇,在評價函數中使用自定義的操作數時,是否會使得評價函數計算緩慢?其實,這很大程度依賴于您宏計算的復雜程度,一般情況下宏計算是非??斓?。
作為演示,我們現在對Cooke Triplet執行兩次優化:一次使用ZPLM操作數加上宏,一次使用內建操作數WFNO。
第一種情況,我們將ZPLM的目標值設置為5,權重設置為1。第二種情況,我們將WFNO的目標值設置為5,權重設置為1。按下圖設置評價函數:
我們使用DLS優化,可以看到執行的時間大約4.4s:
點擊F3撤銷優化,將ZPLM操作數權重設置為0,WFNO目標值設置為5,權重設置為1,再次優化。
可以看出兩者計算的時間相差并不大。
因此,即使我們使用了自定義的宏,Zemax OpticStudio依舊可以高效的執行計算。
總結
在使用Zemax OpticStudio的過程中,我們有時會遇到內建的優化操作數不能滿足我們要計算/返回的數值情況。這時我們需要利用ZPLM和宏結合或使用外部定義和匯編程序對這些數值進行計算和優化。兩種方法,ZPLM和宏結合更為簡單,與Zemax OpticStudio集成的更好,需要更少的編程技巧。
展開 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創建用戶自定義求解
光研科技南京有限公司是國內可靠的Ansys Zemax光學設計軟件代理商!公司已經為廣大企業,研究所以及高校提供了很多優秀的相關產品和服務,在行業內建立了值得信任的口碑。
Ansys Zemax光學軟件
咨詢與訂購方式
聯系人:光研科技南京有限公司徐保平
手機號:15051861513
微信號:13627124798
Ansys Zemax | 用戶自定義表面真實建模衍射式人工晶狀體透鏡
使用 UDS DLL 的衍射表面模型
為了利用上述區域分解方法,我們實現了一個新的用戶定義表面DLL,其中可以通過分析描述浮雕型衍射表面的矢高輪廓。除了精確分析衍射光學元件(DOEs)的性能外,使用UDS DLL的參數化形狀表示還可以對這些衍射表面進行優化和公差分析。有關如何使用自定義 DLL 擴展 OpticStudio 的功能以及如何編譯新解決方案的更多詳細信息,請聯系工作人員了解。
在使用序列表面 DLL 時,OpticStudio 有 10 種不同的方式與 DLL 交互和交換數據。這些方案表示常規信息、參數名稱和安全數據傳輸,以及布局圖、近軸和實際光線追蹤計算。不同的功能是在DLL的不同情況下定義的。
在這個模型中,我們應用了一個簡單的旋轉對稱衍射結構,具有統一的浮雕臺階高度,添加在代表基底面的標準表面之上。為了能夠與內置的OpticStudio解決方案進行模擬比較,我們用偶數非球面多項式描述了浮雕形狀。因此,表面矢高由以下公式給出:
在上式中,mod表示取模運算,c是曲率,即半徑的倒數,k是圓錐常數,r是徑向坐標,h是統一的浮雕臺階高度。
ai為偶次非球面系數、h為步高。首先在DLL的Case 1中定義傳播算法,參數列標題名稱。然后,Case 3描述基于上述公式的表面矢高,以便在布局圖中繪制。Case 4 考慮近軸光線追蹤結果,但由于區域分解方法需要在光線追跡之上進行衍射分析,該方法僅適用于實際光線追蹤,因此我們忽略了這一步。這意味著在近軸近似中,我們的模型表現為標準曲面。最后,Case 5,計算實際光線追跡結果。
展開