有限元法模擬焊接過程,要根據熱源分布數學模型來描述焊接過程的輸入熱源,常用的有兩種:
熔池深度小,可近似認為熱量從表面傳入,面熱源
假設熱源沿x方向以速度v移動,熱源表示式則為:
q為熱源有效功率
熔池深度大,考慮熱源在深度方向的變化,體熱源
假設熱源沿x方向以速度v移動,熱源表示式則為:
其中,f1,f2表示熱量在原點前後兩部分間分配的比例,f1+f2=2
假設對所有step使用同一熱源(可以針對不同step設定不同熱源,可新增parameter)
subroutine dflux(flux,sol,jstep,jinc,time,noel,npt,coords,
&jltyp,temp,press,sname)
c flux:flux(1)流經某點的熱量,flux(2)熱量對溫度的變化率
c sol:所求解變數的估算值,如熱分析中表示某點溫度估算值
c jstep:載荷步
c jinc:增量步
c time:time(1)當前載荷步時間,time(2)當前總時間
c noel:單元號
c npt:單元積分點號
c coords:座標陣列
c temp:當前溫度
c press:當前等效應力
c sname:面熱源時,su***ce的名稱
include 'aba_param.inc'
dimension flux(2),time(2),coords(3)
character*80 sname
c wu,焊接電壓
c wi,焊接電流
c effi,焊接效率係數
c q,電弧有效熱功率w
wu=16
wi=80
effi=0.5
q=wu*wi*effi
c v,熱源移動速度 m/s
c time(2),當前分析步總時間
v=0.005
d=v*time(2)
c x,y,z,當前積分座標
x=coords(1)
y=coords(2)
z=coords(3)
c 定義起始座標
x0=-0.05
y0=0
z0=0.003
c a1,a2,b,c為雙橢球形狀引數
a1=0.0028
a2=0.0056
b=0.0019
c=0.0032
c f1,f2為熱源分配係數
f1=1
f2=2.0-f1
pi=3.1415926
c 焊接方程定義
heat1=6.0*sqrt(3.0)*q/(a1*b*c*pi*sqrt(pi))*f1
heat2=6.0*sqrt(3.0)*q/(a2*b*c*pi*sqrt(pi))*f2
shape1=exp(-3.0*(x-x0-d)**2/a1**2-3.0*(y-y0)**2/b**2
$-3.0*(z-z0)**2/c**2)
shape2=exp(-3.0*(x-x0-d)**2/a2**2-3.0*(y-y0)**2/b**2
$-3.0*(z-z0)**2/c**2)
c jltyp=0表示面熱源
c jltyp=1表示體熱源
jltyp=1
c fortran中的關係運算子
c .gt. 大於(
>
)c .lt. 小於(
<
)c .eq. 等於(==)
c .ge. 大於等於(
>=
)c .le. 小於等於(
<=
)c .ne. 不等於(!=)
if(x .ge. (x0+d))
then
flux(1)
=heat1*shape1
else
flux(1)
=heat2*shape2
endif
return
end
ABAQUS子程式技術文件 UEL
abaqus子程式技術文件 我們將有限元軟體 以abaqus為例 分割來看,分為 前處理,單元部分,求解器。在這三個模組當中,每個主流商業軟體手冊中都會註明各個單元的理論採用了哪種理 式,但是只是提一下用什麼方法修正,很多沒有介紹具體實現的公式。這也會讓許多使用人員感覺在用黑盒子,對於分析問題的本質...
子程式過載
子程式過載是指有一系列具有相同的子程式名稱,但有不同的型別和數目的引數的子程式,它們用於完成不同但相關的操作。在程式中呼叫某個過載的子程式時,編譯器將根據呼叫的子程式及其所使用的引數序列和數目來確定那個子程式將被執行。1.在編寫過載子程式時應注意各子程式的引數個數和引數型別的差異,否則編譯器將不能正...
wordcount例子程式
hadoop 0.20.1裡的wordcount源 與0.19.2已經有較大的區別了。在新版本的hadoop中,org.apache.hadoop.mapred包被org.apache.hadoop.mapreduce所取代。不過為了保持相容性,org.apache.hadoop.mapred還是存...