开源CAE实战系列(五):Code_Aster热应力应用
1 一般热 & 热力计算
1.1 管道设备的热应力现象
在工业生产制造中,管道是最常见的设备之一。管道内壁与外壁的温差导致管道壁产生热应力,可能加速管道老化等问题,缩短使用寿命。
我们可以通过Code_Aster进行有限元分析来预测管道的温度场和应力场分布,实现对设备更有针对性的维护。
1.2 举例:热平衡状态的圆管
对无限长管的内外表面施加固定的温度,求壁厚方向的温度场。

1.2.1 热计算详解
(1)可采用的计算模型:
AFFE_MODELE (… PHENOMENE = 'THERMIQUE'
… MODELISATION = 'XXXX'))
模型类型MODELISATION根据几何维度、对称性、单元类型的不同可以为:
- 3D / AXIS / PLAN
- 3D_DIAG / AXIS_DIAG / PLAN_DIAG
- COQUE / COQUE_AXIS / COQUE_PLAN
Tips:
温度剧烈变化(如热冲击)时,推荐使用矩阵对角化的物理模型,即*_DIAG;
在2D模型中,可将一个二次单元分割成两个一次单元。
(2)材料的定义:
DEFI_MATERIAU,至少包含以下参数:
- λ,热导率(W/m/°C)
- ρCP,密度比热容(J/(m3·°C))
3种主要的材料特性定义方式:
- THER:线性各向同性
- THER_ORTH:线性正交异性,从3个方向上定义热导率λ
- THER_NL :非线性,需要定义温度相关的各参数如λ(T),ρCP(T),β(T)
(3)边界条件的定义:
AFFE_CHAR_THER or AFFE_CHAR_THER_F
第一类边界条件(Dirichlet):
>> 时间和空间为变量的温度函数
- TEMP_IMPO
>> 节点温度之间的线性关系
- LIAISON_DDL
- LIAISON_GROUP
- LIAISON_MAIL
第二类边界条件(Neumann):
>> 自然对流(Fourier定律)
- EXCHANGE
>> 壁面间的对流换热
- EXCHANGE_PAROI
>> 法向热流:常数或温度和空间相关的函数
- FLUX_REP
>> 非线性法向热流:温度相关的函数
- FLUX_NL;RAYONNEMENT
>> 热源
- SOURCE
(4)求解器设置:
- THER_LINEAIRE 线性
- THER_NON_LINE 非线性(在非线性计算中通常使用Newton迭代方法)
常用参数:
>> 稳态计算的结果
- STATIONNAIRE = 'OUI'
>> 温度常数
- VALE = T0
>> 已知的温度场
- CHAM_NO = (CREA_CHAMP的结果)
>> 另一热计算的结果
- 结果 EVOL_THER = result
- 目标时间步NUME_ORDRE;时刻INST
(5)θ-方法进行时间离散:
- θ = 0.57, 默认值,通常能够得到较好的计算结果
- PARM_THETA 可用于θ值的修改

(6)时间步和空间(网格)的一致性:
根据材料的物性和网格的精细程度,决定时间步长,推荐:

(7)如果有必要,可修改计算收敛速度:
更新切线矩阵的频率——REAC_ITER
线搜索的准则——RESI_LINE_RELA / ITER_LINE_MAXI
收敛的准则——迭代次数ITER_GLOB_MAXI,残差RESI_GLOB_RELA
(8)结果的输出:
- THER_LINEAIRE 线性
- THER_NON_LINE 非线性
求解器输出结果仅包含节点上的温度,需要利用温度场推导热流场:
>> CALC_CHAMP
- FLUX_ELGA
- FLUX_ELNO
- FLUX_NOEU
此外,
- IMPR_RESU 输出包括目标物理场信息的网格
- RECU_FONCTION/TABLEAU 提取目标节点的物理场为表格
- IMPR_FONCTION/TABLEAU 输出表格或图表文件
1.2.2 热应力计算详解
平面结构受热与放热相互平衡时,结构温度不再随时间而改变,平面内的温度只是坐标的函数。
力学计算中使用的网格可以不同于热学计算中使用的网格:
- 线性单元适用于热学计算,但在力学计算中精度较差,使用二阶单元网格更佳
- 热学和力学计算关注的计算网格区域不同,因此网格精细化区域不同
- 若使用不同的网格,需要投影温度场 PROJ_CHAMP
当网格相同时,将热计算温度场导入应力场计算:
AFFE_MATERIAU (... AFFE_VARC=_F( NOM_VARC= 'TEMP',
EVOL= 热计算的温度场结果,
VALE_REF= 20. ) ...)
温度场的投影(网格不同):
mesh_th = LIRE_MAILLAGE(…)
model_t1 = AFFE_MODELE(...)
mat_th = DEFI_MATERIAU(...)
field_th = AFFE_MATERIAU(...)
bc_th = AFFE_CHAR_THER(...)
resu_th = THER_LINEAIRE(...)
当我们需要使用另外一套网格计算力学时:
#读取网格
mesh_me = LIRE_MAILLAGE(…)
#在新网格上定义热计算模型
model_t2 = AFFE_MODELE(MAILLAGE= mesh_me,
AFFE=_F(TOUT='OUI',
PHENOMENE='THERMIQUE',
MODELISATION='AXIS',),)
#投影温度场
project = PROJ_CHAMP(RESULTAT= resu_th ,
MODELE_1= model_t1,
MODELE_2= model_t2,)

热平衡状态圆管
#在新网格上定义力学计算模型
model_m1 = AFFE_MODELE(MAILLAGE= mesh_me ,
AFFE=_F( TOUT='OUI',
PHENOMENE='MECANIQUE',
MODELISATION='AXIS',),)
#定义考虑热膨胀的材料模型
mat_me = DEFI_MATERIAU(ELAS=_F(
E=2.1e11,
NU=0.2,
ALPHA=12e-6,),)
#将力学模型装配到新网格上
field_me = AFFE_MATERIAU(
MAILLAGE=mesh_me,
AFFE=_F( TOUT='OUI',
MATER=mat_me,),
AFFE_VARC=_F(TOUT='OUI',
NOM_VARC='TEMP',
EVOL=project,
VALE_REF=20,),)
#定义边界条件
bc_meca =AFFE_CHAR_MECA(MODELE= model_m1,
DDL_IMPO=_F(GROUP_NO='FACEB',
DX=0,
DY=0,),)
#静力学求解设置
resu_meca = MECA_STATIQUE(MODELE= model_m1,
CHAM_MATER= field_me,
EXCIT=_F(CHARGE= bc_meca,),)
#输出结果
IMPR_RESU(...)
2 自定义热源
2.1 举例:金属圆盘的点热源辐照
使用点热源,对金属圆盘进行加热后冷却,求温度场的分布情况。

(1)计算模型和材料模型的定义:

(2)创建表征激光热源产生的热流的函数:
# 用公式表征激光的热流分布
A = 5e6
S = 0.0138
F = FORMULE(NOM_PARA = 'X',
VALE = "(A + EXP(-X**2/S**2))")
## 对公式先进行离散化并插值计算
## 生成表格(X,F(X))
# 定义表格的X一栏
LISTR = DEFI_LIST_REEL(DEBUT = 0.,
INTERVALLE=_F( JUSQU_A = 0.04,
NOMBRE = 100, ) ,)
# 计算表格的X一栏对应的F(X)值
FF = CALC_FONC_INTERP(FONCTION = F,
LIST_PARA = LISTR,
PROL_DROITE = 'LINEAIRE',
PROL_GAUCHE = 'LINEAIRE' )
# 外界温度
T_EXT = DEFI_CONSTANTE(VALE=20., )
# 对流换热系数
H = DEFI_CONSTANTE(VALE=5, )
(3)加热和冷却过程热边界条件的定义:
# 边界上的热交换(加热过程,30s)
thload1 = AFFE_CHAR_THER_F( MODELE=mymodl,
FLUX_REP =_F( GROUP_MA = 'LBC', FLUN = FF,),
ECHANGE =_F( GROUP_MA = ('BAS','HAUT','COTE',),
COEF_H = H,
TEMP_EXT = T_EXT, ) )
# 边界上的热交换(冷却过程)
thload2 = AFFE_CHAR_THER_F ( MODELE = mymodl,
ECHANGE=_F(
GROUP_MA =('LBC', 'HAUT', 'COTE', 'BAS',),
COEF_H = H,
TEMP_EXT = T_EXT , ),)


(4)计算设置:
# 时间步设置
LISTT = DEFI_LIST_REEL( DEBUT=0.,
INTERVALLE=_F(JUSQU_A = 150.,
NOMBRE = 300, ) )
# 计算加热过程(30s)
temper = THER_LINEAIRE( MODELE = mymodl,
CHAM_MATER = mymat,
EXCIT = _F( CHARGE = thload1,),
INCREMENT = _F( LIST_INST = LISTT,
INST_FIN = 30,),
ETAT_INIT = _F( VALE = 20.0,) )
# 计算冷却过程
temper = THER_LINEAIRE( reuse = temper ,
MODELE = mymodl,
CHAM_MATER = mymat,
PARM_THETA = 0.60,
EXCIT = _F( CHARGE = thload2, ),
INCREMENT = _F( LIST_INST = LISTT ,
INST_INIT = 30,),
ETAT_INIT = _F( EVOL_THER = temper ,))
#输出结果
IMPR_RESU(...)
FIN ( )
(5)结果示意图:

3 自定义温度场 & 其他应用
3.1 自定义温度场的热应力计算
当我们知道圆管周向温度场分布的解析解时:

可以定义函数如下:
T0 = FORMULE(VALE = '40-log(X/20)*(40-15)/log(21/20)',
NOM_PARA = ('X',),)
fT0 = CREA_CHAMP( TYPE_CHAM = 'NOEU_TEMP_F',
OPERATION = 'AFFE',
MAILLAGE = memesh,
AFFE = _F( TOUT = 'OUI',
NOM_CMP = 'TEMP',
VALE_F = T0,),)
thresu = CREA_RESU(OPERATION = 'AFFE',
TYPE_RESU = 'EVOL_THER',
NOM_CHAM = 'TEMP',
AFFE = _F(CHAM_GD=fT0,
INST = 0,),)
# 力学计算
Memodl = AFFE_MODELE(...)
steel = DEFI_MATERIAU(...)
memat = AFFE_MATERIAU(MAILLAGE=memesh,
AFFE=_F( TOUT='OUI',
MATER=steel,),
AFFE_VARC=_F(TOUT = 'OUI',
NOM_VARC = 'TEMP',
EVOL= resproj,
VALE_REF = 20,),)
meload = AFFE_CHAR_MECA(...)
meresu = MECA_STATIQUE(...)
#输出结果
IMPR_RESU(...)
3.2 其他应用
3.2.1 混凝土
步骤1:混凝土的热计算和水化热计算(温度场)

温度分布云图
步骤2:混凝土的含水量计算

含水量分布云图
步骤3:混凝土收缩的力学计算(应力场)

应力分布云图
3.2.2 冶金学
在计算温度场后,还可以 :
- 计算移动的非线性传热(如焊接) : THER_NON_LINE_MO
- 被动换热(焊接):AFFE_CHAR_THER (...CONVECTION...)
- 计算材料的硬化,相变:CALC_META

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)