abaqus2021 DFLUX与VDFLUX详细说明+激光移动热源案例
- DFLUX
- 用户子程序 DFLUX
- 讨论的主题如下
- 用户子程序接口
- 待定义变量
- FLUX(1)
- FLUX(2)
- 传递信息的变量
- 激光移动热源DFLUX案例
- VDFLUX
- 用户子程序 VDFLUX
- 讨论的主题如下
- 用户子程序接口
- 待定义变量
- value(nblock)
- 传递信息的变量
- 激光移动热源VDFLUX案例
写在前面:本文内容实例和说明是基于abaqus2021的帮助文档,其他版本的子程序编写需要根据相应的版本进行适当的修改
DFLUX
用户子程序 DFLUX
- 在传热或质量扩散分析中,可用于将不均匀分布通量定义为位置、时间、温度、单元数、积分点数等的函数;
- 将在分析中每个基于元素或基于表面(仅传热)的非均匀分布通量定义的每个通量积分点调用;
- 忽略了可能出现的、与非均匀分布通量定义相关的任何幅值参考;
- 将节点作为一阶传热单元、一阶温度-位移耦合单元、一阶热-电-结构耦合单元和质量扩散单元的通量积分点。
讨论的主题如下
- 用户子程序接口
- 待定义变量
- 传递信息的变量
用户子程序接口
SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT,COORDS,
1 JLTYP,TEMP,PRESS,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION FLUX(2), TIME(2), COORDS(3)
CHARACTER*80 SNAME
user coding to define FLUX(1) and FLUX(2)
RETURN
END
待定义变量
FLUX(1)
- 此时流入模型的流量大小。
- 在传热情况下,表面通量的单位为,体通量的单位是。
- 在使用非默认幅值来改变施加的通量的瞬态传热情况下,必须定义时间增量上的时间平均通量,而不是时间增量结束时的值。
- 在质量扩散情况下,表面通量的单位为,体通量的单位是。
- FLUX(1)将作为指定为基于单元或表面的通量定义的一部分的通量大小被传递到例程中。
- 如果未定义幅值,则FLUX(1)将作为零传入。
- 该通量不可用于输出目的。
FLUX(2)
- 在传热情况下,,通量相对于该点温度的变化率。表面通量的单位为,体通量的单位是。
- 在质量扩散的情况下:,通量相对于此时质量浓度的变化率。表面通量的单位为,体通量的单位是。
- 通过定义该值,特别是当通量在传热分析中是温度的强函数或在质量扩散分析中是浓度的强函数时,可以提高非线性方程在增量求解过程中的收敛速度。
传递信息的变量
- SOL :此时求解变量的估计值(传热分析中的温度或质量扩散分析中的浓度)
- KSTEP:分析步号 Step number
- KINC:增量号 Increment number
- TIME(1):分析步时间的当前值(仅在瞬态分析中定义)
- TIME(2):总时间的当前值(仅在瞬态分析中定义)
- NOEL:单元数
- NPT:单元中或单元表面上的积分点号。积分方案取决于这是一个表面还是一个物体通量
- COORDS:包含该点坐标的数组。如果在步骤中考虑几何非线性,则是当前坐标;否则,数组包含该点的原始坐标。
- JLTYP:在DFLUX进行调用所针对的通量类型的标识。通量类型可以是体通量、基于表面的通量或基于单元表面的通量。对于基于单元表面的通量,此变量标识正在调用DFLUX的元素面。当几个不同的非均匀分布通量同时施加在一个元件上时,这个信息是有用的。有关图元面标识,请参见关于图元库。关键词如下:
JLTYP | lux type |
0 | Surface-based flux |
1 | BFNU |
11 | S1NU (SNEGNU for heat transfer shells) |
12 | S2NU (SPOSNU for heat transfer shells) |
13 | S3NU |
14 | S4NU |
15 | S5NU |
16 | S6NU |
- TEMP:该积分点的当前温度值(仅为质量扩散分析而定义)。用于传热分析的温度作为变量SOL传入。
- PRESS:该积分点的等效压力应力的当前值(仅为质量扩散分析而定义)。
- SNAME:基于曲面的通量定义的曲面名称(JLTYP=0)。对于体通量或基于元素的表面通量,表面名称以空白形式传入。
激光移动热源DFLUX案例
沿Z方向匀速移动的平面激光光源:
其中:
α ——材料表面对激光的吸收率
K——半径修正系数
P——激光入射到材料表面的功率
r0——入射材料表面时光斑半径
v——热源圆心Z方向移动速度
SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT,COORDS,JLTYP,TEMP,PRESS,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION FLUX(2), TIME(2), COORDS(3)
CHARACTER*80 SNAME
double precision alpha, p, x, z, r0, t, v, z0, r1, pi,k
c time in seconds
t=time(1)
c pi number
pi=3.1415926
c the radius of laser spot in m
r0=0.003
c alpha_R in the paper
alpha=0.6
c the correction factor of radius
k=0.9
c power of laser
p=1000
c the velocity of the laser in m/s
v=0.00333
c defining nosition parameters
x=coords(1)
z=coords(3)
c z component of the position of the center of the laser spot
z0=v*t-r0
c the radius of the moving circle of the laser spot
r1=((x)**2+(z-z0)**2)**0.5
c defining flux parameters
flux(1)=((2*alpha*p)/(pi*(r0*k)**2))*exp(-2*(r1/(k*r0))**2)
flux(2)=0
RETURN
END
VDFLUX
用户子程序 VDFLUX
- 可用于在使用显式积分的动态耦合热应力分析中,将分布通量的变化定义为一组点的位置、温度、时间、速度、单元数量等的函数(有关更多信息,请参阅完全耦合热应力分析);
- 将在与分析中基于每个元素或基于表面的非均匀分布通量定义相关的每个通量积分点调用;
- 识别振幅参考(振幅曲线),如果它与相关的非均匀通量定义一起出现。
讨论的主题如下
- 用户子程序接口
- 待定义变量
- 传递信息的变量
用户子程序接口
subroutine vdflux (
C Read only (unmodifiable)variables -
1 nblock, ndim, kStep, kIncr, stepTime, totalTime, jUid,
2 amplitude, temp, curCoords, velocity, dirCos, jltyp, sname,
C Write only (modifiable) variable -
1 value )
C
include 'vaba_param.inc'
C
dimension curCoords(nblock,ndim), velocity(nblock,ndim),
1 jUid(nblock), dirCos(nblock,ndim,ndim), temp(nblock),
2 value(nblock)
character*80 sname
C
do 100 km = 1, nblock
user coding to define value
100 continue
return
end
待定义变量
value(nblock)
分布通量的大小。表面通量的单位为,体通量的单位是。
传递信息的变量
- nblock :在当前VDFLUX的调用中要处理的点数
- ndim:坐标方向数:二维模型2个,三维模型3个。如果定义了任何三维元素,则该模型被认为是三维的
- KSTEP:分析步号 Step number
- KINC:增量号 Increment number
- stepTime:自步骤开始以来的时间值
- totalTime:总时间的值。步骤开始时的时间由totalTime−stepTime给出
- jUid:用户定义的单元数
- User-defined element numbers:该通量参考振幅的当前值(如果没有参考振幅,则设置为单位)。如果需要振幅,则必须在用户子程序中将通量乘以当前振幅。
- TEMP:该积分点的当前温度值。
- curCoords(nblock, ndim):要预定义通量的每个点的当前坐标
- velocity(nblock, ndim):要预定义通量的每个点的当前速度
- dirCos(nblock, ndim, ndim):
- jltyp:用于标识分布式通量类型的关键字。载荷类型可以是体通量、基于表面的通量或基于单元表面的通量。对于基于单元表面的通量,此变量标识正在调用VDFLUX的元素面。有关单元荷载类型标识,请参见关于单元库。当几个不同的非均匀分布载荷同时施加在一个元件上时,该信息很有用。关键词如下:
jltyp | Load type |
0 | Surface-based load |
1 | BFNU |
11 | S1NU for SNEGNU |
12 | S2NU for SNEGNU |
13 | S3NU |
14 | S4NU |
15 | S5NU |
16 | S6NU |
- SNAME:基于曲面的通量的载荷定义的曲面名称(JLTYP=0)。对于体通量或基于单元表面载荷,表面名称以空白形式传入。
激光移动热源VDFLUX案例
沿x方向匀速移动的平面激光光源:
subroutine vdflux (
C Read only (unmodifiable)variables -
1 nblock, ndim, kStep, kIncr, stepTime, totalTime, jUid,
2 amplitude, temp, curCoords, velocity, dirCos, jltyp, sname,
C Write only (modifiable) variable -
1 value )
C
include 'vaba_param.inc'
C
dimension curCoords(nblock,ndim), velocity(nblock,ndim),
1 jUid(nblock), dirCos(nblock,ndim,ndim), temp(nblock),
2 value(nblock)
character*80 sname
C unit in mm
Q=200000
Rh=0.9
v=-5
PI=3.1415
abse=0.5
d=v*stepTime
x0=0
y0=0
jltyp=0
C
do 100 km = 1, nblock
x=curCoords(km,1)
y=curCoords(km,2)
R=sqrt(((x-x0-d))**2+((y-y0))**2)
value(km)=2*abse*Q/(PI*Rh**2)*exp(-2*R**2/Rh**2)
100 continue
return
end