ANSYS的結果進行二次運算并顯示云圖
2017-02-23 by:CAE仿真在線 來源:互聯網
編者按
遇到幾次問詢關于ANSYS重新生成云圖的問題,今天以一個例子作個比較詳細的說明。
正文
在實際應用中經常會需要將ANSYS的計算結果進行二次運算,并重新顯示新的結果云圖。也即是ANSYS的現有計算結果不能滿足實際需求,需要自己在一次計算結果的基礎之上編寫計算方法。
在ANSYS里,這個過程是通過修改節點或者單元的結來實現的,筆者以前在ABAQUS里面也實現過這樣的過程,不過在ABAQUS里面不是通過直接修改節點/單元解實現的,而是可以重新定義新的結果變量。
ANSYS修改節點解釋通過DNSOL命令完成的,命令解釋如下:
DNSOL, NODE, Item, Comp, V1, V2, V3, V4, V5, V6
其中Item和Comp這兩個量是需要修改的變量名稱,例如需要修改位移X,則Item應為U,Comp應為X,后面的V1-V6就是新的值。
可以看到,利用DNSOL命令每次只能修改一個節點的值,因此,很多情況下是需要對全部的節點值進行修改,故通常需要和遍歷命令一起使用。
下面以一個實際的例子說明具體的使用方法。
新建一個簡單的模型,加載求解得到以下的結果,分別為x方向的位移和y方向的位移。
X方向的位移如下:
![]()
Y方向的位移如下:
![]()
現在需要將X和Y方向的位移進行重新計算,假設:
新的Ux=Ux**2+0.1
新的Uy=Uy**2-0.1
具體實現過程是先依次讀取計算得到的Ux和Uy,保存在自定義的數組中,然后定義新的數組,將前面的數組的數據分別處理后保存到新的數組之中,最后依次讀取新的數組的數據再通過DNSOL命令進行修改,修改完成即可顯示新的結果。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!讀取并保存原始節點解
alls,all
*get,node_num,node,,count
*dim,dis_data,array,node_num,3
*do,i,1,node_num,1
*get,Ux_temp,node,i,u,x
*get,Uy_temp,node,i,u,y
dis_data(i,1)=i
dis_data(i,2)=Ux_temp
dis_data(i,3)=Uy_temp
*enddo
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!重新計算節點解并保存
*dim,dis_data_new,array,node_num,3
*do,i,1,node_num,1
dis_data_new(i,1)=dis_data(i,1)
dis_data_new(i,2)=dis_data(i,2)**2+0.1
dis_data_new(i,3)=dis_data(i,3)**2-0.1
*enddo
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!逐一修改節點解
*do,i,1,node_num,1
dnsol,i,u,x,dis_data_new(i,2)
dnsol,i,u,y,dis_data_new(i,3)
*enddo
這里面需要注意一個問題,利用DNSOL命令是必須在激活FULL graphics的情況下,因此必須關閉POWRGRPH。
之后重新顯示x和y方向的位移,分別如下:
X方向的位移如下:
![]()
Y方向的位移如下:
![]()
可以看到,云圖形狀發生了變化,數值也發生了變化。
修改之前:
X方向位移:最大0.506,最小0
Y方向位移:最大0.079,最小-0.079
修改之后:
X方向位移:最大0.356,最小0.1
Y方向位移:最大-0.0793,最小-0.1
APDL命令流
/prep7
et,1,182
MPTEMP,,,,,,,,
MPTEMP,1,0
MPDATA,EX,1,,196e3
MPDATA,PRXY,1,,0.3
MPDATA,DENS,1,,7.85E-9
RECTNG,-50,50,-50,50,
wprot,0,0,90
asbw,all
wprot,0,90
asbw,all
alls,all
lsel,r,length,,50
lesize,all,,,10
alls,all
amesh,all
nummrg,node,,,,low
/solu
alls,all
lsel,r,loc,x,-50
aplot
dl,all,,all
alls,all
lsel,r,loc,x,50
sfl,all,pres,-1000
alls,all
solve
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/post1
alls,all
*get,node_num,node,,count
*dim,dis_data,array,node_num,3
*do,i,1,node_num,1
*get,Ux_temp,node,i,u,x
*get,Uy_temp,node,i,u,y
dis_data(i,1)=i
dis_data(i,2)=Ux_temp
dis_data(i,3)=Uy_temp
*enddo
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*dim,dis_data_new,array,node_num,3
*do,i,1,node_num,1
dis_data_new(i,1)=dis_data(i,1)
dis_data_new(i,2)=dis_data(i,2)**2+0.1
dis_data_new(i,3)=dis_data(i,3)**2-0.1
*enddo
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*do,i,1,node_num,1
dnsol,i,u,x,dis_data_new(i,2)
dnsol,i,u,y,dis_data_new(i,3)
*enddo
相關標簽搜索:ANSYS的結果進行二次運算并顯示云圖 Ansys有限元培訓 Ansys workbench培訓 ansys視頻教程 ansys workbench教程 ansys APDL經典教程 ansys資料下載 ansys技術咨詢 ansys基礎知識 ansys代做 Fluent、CFX流體分析 HFSS電磁分析 Abaqus培訓