
發布
注冊
/
登錄ansys 調用函數的案例
ABAQUS中調用MATLAB的函數
實例測試
在運行程序時,需要注意的是,必須將用到的自定義的m文件的目錄都包括進去
from mlab.releases import latest_release as matlab
# 添加matlab程序的位置,需要引入所有需要依賴的m文件的目錄
x = matlab.path(matlab.path(),r'C:\Users\15321\abaqus_plugins\path')
# 運行函數
number = matlab.plot(x)
將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函數。
展開 請教一個調用計算結果函數的問題 ¥2
需要求解層流在超聲作用下的流場特性,在層流模塊中添加體積力作為聲源驅動項來表征超聲作用力,體積力是函壓力聲學場中聲壓的函數;
這樣算成功調用了已求解的聲壓(actd.p_t)了嗎?
為啥我驗算體積力的時候,云圖顯示的是0N/m^3
將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函數。
展開 
Snap7-S7400通訊_實現各種常用算法函數方便調用 ¥40
該源碼是在Snap7-S7400通訊Demo的基礎上進行了幾個常用函數的封裝,以方便工程實踐的應用。
從形函數與函數的連續可導性到ansys結果中的節點解與單元解的差異
如題,《從形函數與函數的連續可導性到ansys結果中的節點解與單元解的差異》,形函數對結果的影響大部分人都能聯想到二次單元比線性單元求得的結果更精確,但該文要表達的不僅如此,而是從更一般地討論怎么從單元的形函數來理解節點解與單元解之間的差異。
首先討論單元的階次。作為基礎我們應該明白網格與單元的區別,網格是將幾何體離散化后的結構,即組成幾何體的微元,單元是這些微元的幾何、物理或數學屬性(這里我們并不打算詳細討論單元的這些屬性,但是這些知識會方便對本文的理解)。我們經常在使用ansys或其他CAE軟件時經常會遇到單元的選擇以及單元階次的選擇,一般一種單元包括線性單元和二次單元甚至更高級的單元,比如在ansys中經常被使用的shell181(左)和shell281(右),線性單元使用的形函數是一次的多項式,高次單元使用的形函數是高次的多項式,形函數用于描述相鄰節點之間的位移場,所以高次的單元可以更好的描述形狀復雜的幾何體。
不同于常規材料力學中通過平衡方程求解(首先求得的解是力解),有限元方式求解的特點是首先求解出的結果是節點的位移解,即displacement of nodes,所有的節點位移形成了位移場,在空間上位移場一定是連續的,但是不一定是平滑的。哎哎,是不是特別熟悉的感覺,正是和高數中函數的連續性和可導性兩個性質非常相似,不用奇怪,位移場本來就是用函數描述的,所以自然就存在函數的性質,所以用函數的性質來理解就可以方便解釋一些現象了,下圖分別是用兩種形函數描述的位移場,在有限元求解后得到的首先是節點位移解,即圖中5個節點的位移,假如每個節點的位移用坐標x\y\z的函數來表示,然后通過形函數插值得到相鄰節點之間的位移(也是xyz的函數),上圖是用一次形函數插值,下圖是用二次形函數插值。
展開 ansys之——將ANSYS作為子程序調用
將ANSYS作為子程序調用
對于優化或參數化設計,可以在VC或FORTRAN中將ANSYS作為子程序調用。具體調用方法如下:
1.在VC中調用ANSYS
::WinExec("d:/ANSYS57/BIN/INTEL/ANSYS57 -b -p ansys_product_feature -i input_file -o output_file",SW_SHOWNORMAL);
2.在FORTRAN中調用ANSYS
LOGICAL(4) result
RESULT=SYSTEMQQ('d:\ANSYS57\BIN\INTEL\ANSYS57 -b -p
ansys_product_feature -i input_file -o output_file')
3.說明
1和2中,input_file為用APDL語言編寫的ANSYS輸入文件。
ansys_product_feature為你的ANSYS產品特征代碼。
需要注意的是,在VC中調用ANSYS時,需要加一條判斷語句,以確定ANSYS
已經執行完畢。
在FORTRAN中不需要判斷,FORTRAN會等ANSYS執行完畢才繼續執行下一條語句。
在VC中,我沒有找到與FORTRAN類似的函數,只好加一條循環判斷語句。
如果誰能找著這樣的函數,請告訴我,謝謝!
判斷方法很簡單,只需判斷錯誤文件file.err是否可寫就可以了。
因為當ANSYS在運行時,file.err是不可寫的,只有當它運行完畢,此文件才可寫。
數據文件(假設輸出的數據文件名為opt.out):
*dim,out1,,2,1
out1(1)=dmax !目標函數
out1(2)=1-eymax !
展開 VB調用ANSYS軟件
*主要思想:
VB為ANSYS應用的自動化提供了可視化操作平臺,可用于參數化編程等應用。
其基本原理是,VB通過其內部函數shell()函數實現對Windows應用程序的調用。利用VB向打開的ANSYS程序寫入APDL文件,實現對ANSYS的控制。
對ANSYS調用的具體代碼及注釋:
Option Explicit
‘變量強制定義控制語句
Private Sub Command1_Click()
‘進入Command1_Click()事件過程
Dim aa
‘定義一變量,用來存放shell()函數的返回值,shell帶括號時必須有‘變量存放其返回值,不帶參數是不需要
aa=
Shell("C:\Program Files\ANSYS Inc\v110\ANSYS\bin\intel\ANSYS.exe -b -p ane3fl -i shi.txt -o sh.log", 1)
‘shell函數調用ANSYS的語句,最關鍵語句,詳解見下文
Timer1.Enabled = True
‘使用Timer控件,實現對調用結果的檢測
End Sub
Private Sub Timer1_Timer()
If Dir(App.Path & "\file.err") <> "" Then
‘App.Path為當前目錄路徑,語句功能:如果有file.err文件產生,
‘則說明VB的shell函數對ANSYS的調用成功。
MsgBox ("ANSYS運行完畢!")
展開 MatlabGUI界面調用Ansys計算并輸出計算結果
.*'},'File Selector'); strh = [Pnameh,Fnameh];
pathname = Pnameh;
set(handles.text1,'String',strh);
[temp1,temp2] = xlsread(strh);
set(handles.uitable1,'Data',temp1);
% Update handles structure
guidata(hObject, handles);
為了讀取圖示方框中的數據,并用到ANSYS的APDL文件中,需要字符串的讀取和合并,首先需要使用str2num函數把字符串轉換成數值,如果沒有輸入值時,使用缺省值。
將兩個txt合并成test3.mac作為APDL語言開始的參數定義,生成test3.mac之后再使用system函數調用ANSYS的求解器,并讀取test3.mac進行計算
在計算之前,是不能生成圖片的,這時需要設置只有點擊“開始重構”按鈕之后,其他按鈕才可用。
點擊按鈕開始計算之后,會分別輸出兩個名為residualstress.jpg和deformation.jpg的圖片,對應的語句為
/image,save,'E:\GUIRStest\residualstress',jpg
設置當點擊“生成殘余應力云圖”和“生成角變形云圖”時,會讀取圖片的路徑并使用imshow生成圖片。
至此,一個簡易的MatlabGUI界面調用ANSYS計算并輸出圖片就完成了。
展開 Matlab調用ANSYS進行參數優化
使用Maltab中的system函數,實現Matlab與Ansys的交互,即可實現相同模型計算數千遍并輸出數據。
MATLAB調用ANSYS進行有限元分析步驟如下:
MATLAB生成數據,并以科學計數法的形式寫出到一個txt文件input.txt中;
編寫ansys的APDL程序,在MATLAB環境下使用函數"system"調用APDL程序,ANSYS以batch方式運行進行分析求解,并輸出想要分析的結果,寫出到一個txt文件output.txt
MATLAB調用output.txt,進行數據分析。
展開 Ansys Workbench中調用Mechanical python腳本的方法及注意事項 ¥19
"D:\Program Files\ANSYS Inc\v231\Framework\bin\Win64\RunWB2.exe" -R exportData.py
4 避坑指南(重點!!!)
? 即便在windows系統上,路徑也需要使用“/”;
? 在Ansys Mechanical中的代碼,如果存在中文(比如使用中文版Ansys界面),則必須在mechaCmd中第一行加上“# encoding: utf-8”,否則會運行會失敗。
? 如果將Ansys Mechanical的代碼實現定義為函數,并在Workbench代碼中進行調用時,則mechaCmd中的字符串代碼需要以頂格為基準格式,進行代碼編寫,即認為字符串中的Mechanical代碼與Workbench代碼“獨立”存在。
展開 
將ANSYS作為子程序調用
對于優化或參數化設計,可以在VC或FORTRAN中將ANSYS作為子程序調用。具體調用方法如下:
1.在VC中調用ANSYS
::WinExec("d:/ANSYS57/BIN/INTEL/ANSYS57 -b -p ansys_product_feature -i input_file -o output_file",SW_SHOWNORMAL);
2.在FORTRAN中調用ANSYS
LOGICAL(4) result
RESULT=SYSTEMQQ('d:\ANSYS57\BIN\INTEL\ANSYS57 -b -p
ansys_product_feature -i input_file -o output_file')
3.說明
1和2中,input_file為用APDL語言編寫的ANSYS輸入文件。
ansys_product_feature為你的ANSYS產品特征代碼。
需要注意的是,在VC中調用ANSYS時,需要加一條判斷語句,以確定ANSYS
已經執行完畢。
在FORTRAN中不需要判斷,FORTRAN會等ANSYS執行完畢才繼續執行下一條語句。
在VC中,我沒有找到與FORTRAN類似的函數,只好加一條循環判斷語句。
如果誰能找著這樣的函數,請告訴我,謝謝!
判斷方法很簡單,只需判斷錯誤文件file.err是否可寫就可以了。
因為當ANSYS在運行時,file.err是不可寫的,只有當它運行完畢,此文件才可寫。
數據文件(假設輸出的數據文件名為opt.out):
*dim,out1,,2,1
out1(1)=dmax !目標函數
out1(2)=1-eymax !
展開 用VC調用ANSYS8.0以上的版本
ANSYS80的調用和ansys57類似:
//VC調用ANSYS的示例程序。
//Test.cpp
#include "stdio.h"
#include"process.h"
void main()
{
int result;
printf("Solving...");
result=system("執安裝文件路徑名+文件名 -b -p ansysul -i test.txt -o test.out");
printf("Solution finished...");
}
產品特征代碼在ANSYS幫助電子文檔(help>ansys documentation)里可以找到,路徑如下:
ansys8.0 documentation>ansys,Inc. Licensing Guide>License files>Product Variable Table
以該表的第一行為例,如果你的ANSYS是multiphysics版本,那么對應的產品特征代碼為ane3fl,則:
result=system("安裝文件路徑名+文件名 -b -p ane3fll -i test.txt -o test.out");
這里一定要注意VC執行文件路徑寫法:
第一種:
"C:\\Program Files\\Ansys Inc\\v80\\ANSYS\\BIN\\INTEL\\ANSYS80.exe"
"C:\\ANSYS80.exe"
但是這樣還不可以
我把原文件考到C:\目錄下,然后C:\\ANSYS80.exe。
展開 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的被選單元,單元的位置將由被選節點確定
有關面積的取值函數
展開 ANSYS 內部函數
VLNEXT(N)
Next higher volume number above N in selected set (or zero if none
found).
30.距離函數
DISTND(N1,N2) Distance between nodes N1 and N2.
DISTKP(K1,K2) Distance between keypoints K1 and K2.
DISTEN(E,N) Distance between the centroid of element E and node N.
Centroid is determined from the selected nodes on the element.
31.角度函數 (缺省單位為弧度,單位變換用 *AFUN 命令)
ANGLEN(N1,N2,N3) Subtended angle between two lines (defined by
three nodes where N1 is the vertex node). Default is in
radians.
ANGLEK(K1,K2,K3) Subtended angle between two lines (defined by
three keypoints where K1 is the vertex keypoint). Default is in
radians.
32.最近實體函數
NNEAR(N) Selected node nearest node N.
KNEAR(K) Selected keypoint nearest keypoint K.
ENEARN(N) Selected element nearest node N.
展開