焊接/键合残余应力与变形怎么算?Abaqus 热-力顺序耦合与 DFLUX 详解

——科研到工程:Abaqus Goldak 双椭球 + FROM FILE 实现可复现实验结果(含 Goldak 热源 DFLUX )

适用人群:做焊接/键合残余应力/变形预测、增材制造热-力场分析的工程师与研究生
代码环境:Abaqus/CAE 2019(Python 2.7),Abaqus/Standard(DFLUX Fortran 子程序)

本文提供 两个脚本(Abaqus/CAE Python 自动网格建模脚本 + Fortran DFLUX 热源子程序)梳理成一套可复用的 有限元计算流程

  • 从物理到实现 的清晰链路:能量输入 → 传热 → 温度–时间历程 → FROM FILE 映射 → 弹塑性力学响应;
  • 建模与求解流程:几何、分区、网格、边界、步长、输出与文件命名;
  • Goldak 双椭球热源与热力耦合理论: 在 DFLUX 中的实现原理与关键参数;

目录

- 用 Abaqus 做焊接/键合热-力耦合的“一键批量建模与计算”
- 目录
    - 1. 为什么要做焊接/键合热-力耦合?
    - 2. Goldak 双椭球热源与能量守恒
    - 3. 总体流程与工程目录
    - 4. 热分析建模要点(Thermal)
    - 5. 力学分析建模要点(Mechanical)
    - 6. 自动化批量建模脚本(Python,最终版)
    - 7. DFLUX:Goldak 体热源子程序(Fortran)
    - 8. 模型验证
    - 9. 参考参数与推荐文献

1. 为什么要做焊接/键合热-力耦合?

焊接/键合是强非线性、强非稳态的多物理场过程:移动热源瞬时把能量输入到极小体积,热扩散与对流/辐射把能量带走,材料在不同温度区间内经历弹性–塑性–循环硬化乃至回复顺序耦合(先热后力)是工业中最稳健的路线:

  • 热分析(Heat Transfer):移动热源 + 换热边界 → 得到温度–时间历程 T(x,y,z,t)
  • 映射(FROM FILE):把热场随时间读入力学模型;
  • 力学分析(Static, nlgeom):考虑 E(T)、σy(T)、α(T) 等 → 输出残余应力/变形。

为什么不能只做热或只做力?

  • 只做热:没有热–力耦合的应力演化,无法预测残余场;
  • 只做力:没有真实的温度历程驱动,热应变与材料退化无从谈起。

工程意义:

  • 快速评估工艺窗口(功率/焊速/热源形参)对峰温、HAZ、残余应力与翘曲的影响;
  • 用自动化脚本把“手工建模”变成“可复用流程资产”,支撑 DOE/灵敏度/优化。

要让结果可信,关键是:能量守恒、边界换热量级合理、材料热物性/力学参数随温度变化;在力学侧需最小约束消除刚体模态,并与热网格一致以确保映射稳定。

2. Goldak 双椭球热源、能量守恒与热力耦合

符号:坐标 ;热源中心位置 ;半轴 ;有效功率 ;分配系数 (满足 )。

前半椭球(front,)

后半椭球(rear,$x

分段表达

能量守恒

轨迹(恒速 ,起点 ,起始时刻 )

热传导控制方程(瞬态)

在域 、时间区间 内,温度场 满足瞬态能量守恒(不考虑相变):

其中 为密度, 为定压比热, 为导热系数, 为体热源(W/m^3)。

初始条件:

边界条件(三类任选/组合):

  1. 指定温度(Dirichlet):
  2. 指定热流(Neumann):
  3. 对流 + 辐射(Robin):

其中 为对流换热系数, 为表面发射率, 为 Stefan–Boltzmann 常数, 为环境温度。

力学控制方程与热应变

焊接/键合后的固体力学响应(小–中变形,几何非线性可按需开启):

静力平衡:

其中 为 Cauchy 应力, 为体力密度(可忽略)。

位移边界:

弹性本构(各向同性):

含温度依赖的 。

塑性与硬化(示例:J2 + 组合硬化;仅示意):

  • 等效应力:, 为偏应力;
  • 屈服函数:;
  • 演化:,并可含各向/随动硬化项;
  • 一致性条件:。

顺序耦合的本质:先用热方程得到 ,再把它作为已知外场驱动固体力学问题(通过 与温度依赖材料参数),时间上保持同一时间轴或可匹配的时间段。

热-力耦合

热传导与移动热源

其中 即 Goldak 双椭球体热源; 表面边界含对流/辐射条件:

热弹塑性平衡方程

耦合流程

顺序耦合中,热分析得到的 (或其在积分点/节点的离散值)通过 TEMPERATURE, FILE=... 输入到力学模型。

  1. 解热方程得 ;
  2. 在力学步中按时间步读入 , 由 生成热应变, 并以温度退化的 与屈服准则/硬化规律推进塑性;
  3. 在冷却阶段, 不可恢复的塑性应变与结构约束共同“锁定”残余应力。

要求:

  1. 网格一致(最好共享相同拓扑与节点);
  2. 时间轴覆盖(力学步的时间点应落在热步范围内,或可插值);
  3. 参考温度一致(材料模型中的 与初始温度设置一致);
  4. 边界与最小约束合理,去除刚体模态。

3. 总体流程与工程目录

  • Python 脚本自动创建几何/网格/材料/边界与分析步,分别写出热(THinp)与力学(MEinp)输入;
  • DFLUX 计算体热源 q(x,y,z,t)
  • Mechanical 通过 *TEMPERATURE, FILE=<thermal job> 读取热场。

工程目录(由脚本在“当前工作目录 CWD”下自动生成):

<当前工作目录 CWD>/
 ├─ THinp/   # 热分析 .inp(文件名以 T- 开头)
 ├─ MEinp/   # 力学分析 .inp(文件名以 M- 开头)
 └─ UFLUX.for(或 DFLUX.for)

4. 热分析建模要点(Thermal)

  • 单元:一阶 DC3D8;网格沿焊缝中心、端部与厚度方向加密;
  • 边界:除对称面外的外表面施加对流+辐射;
  • 步长:自动增量(初始 0.02 s,最小 );
  • 初温:20 ℃;
  • 热源:Body heat flux, USER(由 DFLUX 提供)。

5. 力学分析建模要点(Mechanical)

  • 单元:一阶 C3D8R;与热网格一致;
  • 约束:Y=0 对称;两端两点最小约束去除刚体模态(右端约束 u3,左端约束 u1,u3);
  • 材料:E(T),σy(T),组合硬化+循环硬化,α(T)、cp(T)、k(T)
  • 步长:Static, nlgeom=ON,时间长度与热分析一致;
  • 温度:*TEMPERATURE, FILE=<热分析 job 名>,分 3 个阶段(Welding/Cool1/Cool2)。

6. 自动化批量建模脚本(Python)

该脚本以当前工作目录 CWD 为根,在 THinp/ MEinp/ 写入成对输入文件;支持单值或区间 min-max-n 的参数扫参。

使用

  • CAE GUI:File → Run Script... 选择脚本;
  • 命令行:abaqus cae noGUI=script.py -- 0.16 0.06 0.02 0.08 0.00227 1100
  • 或区间:-- 0.16 0.06 0.02 0.06-0.10-3 0.0018-0.003-5 900-1300-3

脚本(节选,仅突出关键处)

# -*- coding: mbcs -*-
from abaqus import *
from abaqusConstants import *
import section, regionToolset, part, material, assembly, step, load, mesh, job, sketch
import os, sys, numpy as np
from collections import OrderedDict

# 以“当前工作目录”为根
BASE_DIR  = os.getcwd()
THERM_DIR = os.path.join(BASE_DIR, 'THinp')
MECH_DIR  = os.path.join(BASE_DIR, 'MEinp')

def ensure_output_directories():
    for d in (THERM_DIR, MECH_DIR):
        if not os.path.isdir(d):
            os.makedirs(d)

# ……(此处省略:材料、几何、分区、网格、步骤、边界、输出等函数)……

# 主流程:循环参数 → 写热分析 inp → 写力学 inp
if __name__ == '__main__':
    ensure_output_directories()
    # 解析参数(支持单值或  min-max-n 形式)
    # grid = {'length': [...], 'width': [...], ...}
    # ……

    for L in grid['length']:
        for W in grid['width']:
            for H in grid['height']:
                for BL in grid['bead_length']:
                    for VS in grid['arc_speed']:
                        for PWR in grid['heat_input']:
                            os.chdir(THERM_DIR)
                            th_job = make_thermal_model(L, W, H, BL, VS, PWR)
                            os.chdir(MECH_DIR)
                            me_job = make_mechanical_model(L, W, H, BL, VS, PWR, thermal_job_name=th_job)
                            os.chdir(BASE_DIR)

    print('All input files generated successfully.')

7. DFLUX:Goldak 体热源子程序(Fortran)

      SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT,COORDS,JLTYP,
     &                 TEMP,PRESS,SNAME)
      INCLUDE 'ABA_PARAM.INC'
      DIMENSION FLUX(1),TIME(2),COORDS(3)
      CHARACTER*80 SNAME

C ---- 用户参数(需与 Python/工艺一致) ----
      Q      = 1100.0D0
      A1     = 4.5D-3
      A2     = 6.5D-3
      B      = 6.8D-3
      C      = 2.6D-3
      F1     = 1.0D0
      F2     = 1.0D0
      L      = 0.080D0
      V      = 2.27D-3       ! m/s
      T0     = 0.0D0
      X0     = -L/2.0D0

      PI     = 3.141592653589793D0
      JLTYP  = 1

C ---- 当前时间与位置 ----
      T  = TIME(1)
      X  = COORDS(1)
      Y  = COORDS(2)
      Z  = COORDS(3)

C ---- 热源中心并限位 ----
      XNOW = X0 + V*(T - T0)
      IF ( XNOW .GT.  0.5D0*L ) XNOW =  0.5D0*L
      IF ( XNOW .LT. -0.5D0*L ) XNOW = -0.5D0*L

C ---- 规范化系数 ----
      
            .......................

      IF ( X .GE. XNOW ) THEN
         FLUX(1) = QF
      ELSE
         FLUX(1) = QR
      ENDIF
      RETURN
      END
若你用“线能量” (J/mm)与焊速 (m/s),则 Q = η * E_\ell * v

8. 模型验证

  1. 准备输入
  • Python 脚本:几何尺寸 [L,W,H]、焊缝长度 BL、焊速 VS、有效功率 Q
  • Fortran 子程序:Goldak 形参 a1,a2,b,c 与分配 f1,f2,以及功率 Q、速度 v、长度 L、起点 X0 等。
  1. 热分析输入(T-*.inp)
  • 几何与分区:长方体试样;以 Y=0 为对称平面;在 焊缝中心线与两端 做加密分区(便于捕捉尖锐梯度与端部效应)。
  • 网格:一阶热单元 DC3D8;全局较粗、焊缝区加密;
  • 材料(热物性):DensitySpecificHeat(T)Conductivity(T)
  • 边界换热:除 Y=0 对称面外,其他外表面施加 Film + RadiationToAmbient;
  • 分析步:Welding(持续 BL/VS),Cool1Cool2,均为自动增量控制;
  • 体热源:*DFLUX(或输入文件设为 USER),在 Welding 步生效;
  • 输出:NT/HFL/RFL 等场量。
  1. 求解热场
  • 提交 T-*.inp + DFLUX.for(或 user=UFLUX.for)作业,得到 T-*.odb
  • 检查代表性点温度–时间曲线、峰值温度、等温线是否合理。
  1. 力学分析输入(M-*.inp)
  • 几何/网格:与热侧一致,一阶 C3D8R
  • 约束:Y=0 对称;两端两点 最小约束(去刚体模态:右端约束 u3,左端约束 u1,u3);
  • 材料(力学):Elastic(T)Plastic(Combined) + CyclicHardening(T)Expansion(T),并保留 cp/k(T) 以便温度场读取时内部一致;
  • 分析步:WeldingCool1Cool2,与热侧 时间轴一致;
  • 温度映射:
*TEMPERATURE, FILE=<T-...>, OP=NEW
** Step-1: Welding   beginStep=1
** Step-2: Cool1     beginStep=2
** Step-3: Cool2     beginStep=3
  • 输出:S/U/LE/PEEQ/NT
  1. 求解力学场
  • 提交 M-*.inp,Abaqus 将从 T-*.odb 读取每一步对应的温度场;
  • 检查残余应力分布(纵向/横向/厚向)、等效塑性应变、焊后翘曲。
  1. 后处理与扫参
  • 批量参数(几何/工艺)→ 自动生成多组 T-*/M-*.inp → 批处理提交 → 统一提取峰值温度、熔宽/熔深近似、最大残余应力、变形等 → 建响应面或灵敏度分析。


FAQ(高频问题)

  • 能只用 FILM/RADIATE 做热源吗? 不能,那是边界换热;DFLUX 是体热源。
  • 为什么不做全耦合? 工程尺度下成本高、材料相依更复杂;顺序耦合更稳健。
  • FROM FILE 总失败? 先查网格一致与 Job 名,时间轴覆盖,再看插值容差设置。
  • Goldak 与高斯面热源区别? Goldak 是体热源且前后不对称;面热源多用于薄板近表面近似

9. 参考参数与推荐文献

  • Goldak J., Chakravarti A., Bibby M., A new finite element model for welding heat sources, Metallurgical Transactions B, 1984.
  • Lindgren L.E., Modelling for residual stresses and distortions, 2001–2014(系列综述)。
  • ABAQUS Analysis User’s Guide:Heat Transfer、DFLUX、TEMPERATURE FROM FILE.

以下内容为付费内容,请购买后观看

包含2个文件

Abaqus/CAE Python 建模脚本 Fortran `DFLUX` 热源子程序

DFLUX.for
4.47KB
InpCreatScript.py
25.85KB
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

2
4