如果你用"有限元",不妨加个关注,总有对你有用的东西。
点击下面名片快速关注。
本文讲述 Abaqus 中控制载荷时间历程的核心关键字:AMPLITUDE ,分析abaqus是怎么把曲线荷载输入到计算流程中的,包括详细的参数解析,以及最后给出的实际例子。
在有限元分析中,载荷很少是恒定不变的——地震波随时间剧烈波动,冲击载荷瞬间衰减,旋转机械承受周期激励,准静态加载需要平滑过渡。Abaqus 用一个关键字统一管理所有这些变化规律:***AMPLITUDE**。
无论是施加位移边界、集中力、分布载荷、温度场还是连接器运动,只要涉及"随时间变化"(或频域中"随频率变化"),你都需要定义一条幅值曲线。***AMPLITUDE 是 Abaqus 中使用频率最高的关键字之一**——一份典型的 inp 文件里,它往往出现十几次甚至几十次。
然而,该关键字支持十种不同的定义方式(DEFINITION),每种都有自己独特的参数配置和数据行格式。很多工程师只知道默认的 TABULAR 方式,对 PERIODIC、MODULATED、DECAY 等高级功能一知半解,遇到复杂加载场景就束手无策。
本文将以 Abaqus 2016 关键字参考手册为基础,系统梳理 *AMPLITUDE 的全部参数、十种幅值定义类型、实战示例以及常见错误,帮助你在半小时内全面掌握这个关键字。
*AMPLITUDE 关键字的最基本形式如下:
*AMPLITUDE, NAME=幅值名称, DEFINITION=定义类型
数据行(根据定义类型不同而不同)
所有幅值曲线都有一个唯一的名字(NAME),后续通过这个名字在其他关键字中引用。例如,在 *BOUNDARY 中施加一个名为 LoadCurve 的位移曲线:
*AMPLITUDE, NAME=LoadCurve, DEFINITION=TABULAR
0.0, 0.0
1.0, 1.0
2.0, 0.5
3.0, 0.0
*BOUNDARY, AMPLITUDE=LoadCurve
Set-1, 1, 1, 10.0
这里
*BOUNDARY中指定的位移量 10.0 是参考值,实际位移 = 参考值 × 幅值曲线在对应时刻的值。当VALUE=ABSOLUTE时,实际位移直接取幅值曲线的值。
| NAME | AMPLITUDE=NAME 引用。名称中不能包含特殊字符,建议使用英文和下划线。 |
NAME 可以包含字母、数字和下划线,但不能以数字开头。多个幅值曲线可以出现在同一个 inp 文件中,只要名称不重复即可。
*AMPLITUDE 关键字可以作为 Model data(模型数据)定义在任何 step 之外,也可以作为 History data(历史数据)定义在 step 内部。通常情况下,建议将幅值曲线统一定义在 step 之前,便于集中管理。
这些参数适用于大多数 DEFINITION 类型(少数例外会在各节专门标注)。
TIME=STEP TIME (默认)
TIME=TOTAL TIME
| STEP TIME | |
| TOTAL TIME |
选取建议:
*FREQUENCY、*STEADY STATE DYNAMICS 等频域分析中,STEP TIME 对应的是频率而非物理时间VALUE=RELATIVE (默认)
VALUE=ABSOLUTE
| RELATIVE | |
| ABSOLUTE |
RELATIVE 示例:
*AMPLITUDE, NAME=Load, VALUE=RELATIVE
0.0, 0.0
1.0, 1.0
2.0, 0.0
*CLOAD, AMPLITUDE=Load
Node-1, 1, 1000.0
实际力 = 1000.0 × 幅值。在 t=1.0 时力达到峰值 1000 N。
ABSOLUTE 示例:
*AMPLITUDE, NAME=Displ, VALUE=ABSOLUTE
0.0, 0.0
1.0, 5.0
2.0, 10.0
*BOUNDARY, AMPLITUDE=Displ
Set-1, 1, 1, 1.0
实际位移直接等于幅值,t=2.0 时位移为 10.0 mm(而非 1.0 × 10.0)。
注意事项:
VALUE=ABSOLUTE 会同时影响温度和温度梯度。对于连接了梁单元或壳单元的节点,如果其截面定义中使用了 TEMPERATURE=GRADIENTS(这是默认设置),则 **不应使用 VALUE=ABSOLUTE**,否则温度梯度的值会被错误地覆盖。SCALEX=缩放因子 (默认 1.0)
SCALEY=缩放因子 (默认 1.0)
| SCALEX | |
| SCALEY |
典型场景:实验数据是秒级的,但需要做微秒级分析。设置
SCALEX=1.0E-6即可。
SHIFTX=偏移量 (默认 0.0)
SHIFTY=偏移量 (默认 0.0)
| SHIFTX | |
| SHIFTY |
典型场景:地震波记录的开始时刻不是 t=0,通过
SHIFTX可以对齐零时刻。
*AMPLITUDE, NAME=External, INPUT=load_data.txt
当数据行很多(如来自实验设备的上万行数据)时,将数据存放在外部 txt 文件中,通过 INPUT 参数引用。外部文件的格式与直接写在 inp 中的数据行完全相同。
不适用于
DEFINITION=USER和DEFINITION=ACTUATOR。
SMOOTH=平滑系数 (Standard 默认 0.25,Explicit 默认 0.0,范围 0.0 ≤ SMOOTH ≤ 0.5)
当时间导数需要被计算时(如直接积分动力学分析中的位移/速度边界条件),Abaqus 会在每个时间点的前后 SMOOTH × Δt 区间内,用二次函数替代分段线性插值,使得速度(一阶导数)连续。
图:SMOOTH 参数效果对比 — 同一组数据点分别使用 SMOOTH=0、0.05、0.25 的效果
注意:SMOOTH 只在需要计算幅值时间导数时才生效,对于力加载等场景不起作用。另外,CFD 分析中不支持此参数。
按时间顺序给定一组 (时间, 幅值) 数据对,Abaqus 默认使用分段线性插值计算任意时刻的幅值。这是最常用、最直观的定义方式。
格式一:每行四对数据(8 个数值)
第一行:t₁, A₁, t₂, A₂, t₃, A₃, t₄, A₄
第二行:t₅, A₅, t₆, A₆, t₇, A₇, t₈, A₈
...
最后一行:可少于 4 对数据
格式二:每行一对数据(2 个数值)
第一行:t₁, A₁
第二行:t₂, A₂
第三行:t₃, A₃
...
两种格式可以混合使用,但通常建议统一为一种格式以提高可读性。
*AMPLITUDE, NAME=Pulse, DEFINITION=TABULAR, TIME=STEP TIME
0.0, 0.0
0.05, 1.0
0.15, 1.0
0.20, 0.0
t ∈ [0, 0.05]:线性上升;t ∈ [0.05, 0.15]:保持最大值;t ∈ [0.15, 0.20]:线性下降。
图:TABULAR 梯形脉冲加载 — 数据点:(0,0) → (0.05,1) → (0.15,1) → (0.20,0)时间间隔固定,数据行只需列出每个时间点的幅值。适用于数据点非常密集且间隔均匀的场景(如高速数据采集系统输出的数据)。
| FIXED INTERVAL | 必需 | |
| BEGIN |
格式一:每行八个幅值
第一行:A₁, A₂, A₃, A₄, A₅, A₆, A₇, A₈
...
格式二:每行一个幅值
第一行:A₁
第二行:A₂
...
时间序列自动按
tᵢ = BEGIN + (i-1) × FIXED INTERVAL生成。
*AMPLITUDE, NAME=HalfSine, DEFINITION=EQUALLY SPACED, FIXED INTERVAL=0.01
0.0000
0.1564
0.3090
0.4540
0.5878
0.7071
0.8090
0.8910
0.9511
0.9877
1.0000
这 11 个点覆盖 t = 0.0 到 t = 0.10,对应 sin(π·t/0.1) 的离散采样。
图:EQUALLY SPACED 正弦半波 — 11 个等间距采样点,虚线为连续 sin 函数参考SMOOTH STEP 是对 TABULAR 的增强版。两者数据行格式完全一致,唯一的区别在于插值方式:**SMOOTH STEP 在每个数据点之间使用五次多项式进行平滑插值,保证一阶和二阶导数的连续性。**
这意味着在数据点处,载荷的变化速率和变化加速度都是连续的,非常适合对加速度敏感的分析。
与 TABULAR 完全相同(四对/行或一对/行)。
*AMPLITUDE, NAME=SmoothLoad, DEFINITION=SMOOTH STEP
0.0, 0.0
0.2, 1.0
0.8, 1.0
1.0, 0.0
图:TABULAR vs SMOOTH STEP 插值对比 — 左侧分段线性,右侧五次 Hermite 平滑
用傅里叶级数定义幅值曲线:
其中:
第一行:N, ω, t₀, A₀
第二行:A₁ᶜᵒˢ, A₁ˢⁱⁿ, A₂ᶜᵒˢ, A₂ˢⁱⁿ, A₃ᶜᵒˢ, A₃ˢⁱⁿ, A₄ᶜᵒˢ, A₄ˢⁱⁿ
第三行:A₅ᶜᵒˢ, A₅ˢⁱⁿ, ...(每行最多 8 个系数,共 2N 个)
一个幅值为 5,频率为 10 Hz 的正弦波:
*AMPLITUDE, NAME=SineLoad, DEFINITION=PERIODIC
1, 62.83185, 0.0, 0.0
0.0, 5.0
ω = 2π × 10 = 62.83185 rad/s,A₁ᶜᵒˢ = 0.0,A₁ˢⁱⁿ = 5.0 → A(t) = 5·sin(62.83185·t)
图:PERIODIC 简谐激励 — f=10 Hz,幅值=5
含多阶谐波的示例:
*AMPLITUDE, NAME=ComplexWave, DEFINITION=PERIODIC
3, 31.4159, 0.0, 1.0
2.0, 0.0, 0.0, 3.0, 0.5, 0.0
A(t) = 1.0 + 2.0·cos(ωt) + 3.0·sin(2ωt) + 0.5·cos(3ωt)
图:PERIODIC 多阶谐波 — N=3,展示各阶谐波叠加效果
*STEADY STATE DYNAMICS)用一条幅值曲线 A 去调制另一条幅值曲线 B:最终幅值 = A(t) × B(t)。
例如,用一个低频的正弦波(包络)去调制一个高频的正弦波(载波),模拟地震波或冲击波包络。
单行:A_amplitude_name
这里 A 是调制函数的名称,该函数必须已经通过
*AMPLITUDE定义。
*AMPLITUDE, NAME=Carrier, DEFINITION=PERIODIC
1, 62.83185, 0.0, 0.0
0.0, 1.0
**
*AMPLITUDE, NAME=Envelope, DEFINITION=DECAY
1.0, 0.0, 0.0, 0.05
**
*AMPLITUDE, NAME=DampedSine, DEFINITION=MODULATED
Carrier
最终的幅值 = 纯正弦波 × 指数衰减包络 = e^{-t/0.05} · sin(62.83·t)
图:MODULATED 指数衰减包络调制 — 上:载波,中:包络,下:调制结果
注意:调制的顺序是先指定调制函数(第一个定义的幅值曲线名),后定义被调制的曲线(在 MODULATED 的数据行中引用需要被调制的函数名)。实际上,查看 Abaqus 文档中的描述——MODULATED 类型的唯一数据行是 .A.... 格式。正确的理解是:MODULATED 的数据行中引用的是一个已定义的幅值曲线名称。
定义一个指数衰减函数,数学表达式为:
单行:A₀, A, t₀, τ
一个初始峰值为 100,衰减时间常数为 0.1 秒的冲击响应:
*AMPLITUDE, NAME=BlastDecay, DEFINITION=DECAY
0.0, 100.0, 0.0, 0.1
t=0 时幅值 = 100;t=0.1 时幅值 ≈ 36.8(即峰值的 1/e);t=0.3 时幅值 ≈ 5.0
带常数项的衰减:
*AMPLITUDE, NAME=ResidualDecay, DEFINITION=DECAY
10.0, 90.0, 0.0, 0.05
初始值 = 100,最终趋近于 10。
图:DECAY 指数衰减 — 左:纯衰减 A=100·exp(-t/0.1),右:带常数项 A=10+90·exp(-t/0.05)幅值在求解过程中根据当前解的状态动态调整。Abaqus 会在每个增量步检查是否需要调整幅值。用户可以通过用户子程序控制幅值的变化逻辑。
单行:A₀, Aₘᵢₙ, Aₘₐₓ
*AMPLITUDE, NAME=AdaptiveLoad, DEFINITION=SOLUTION DEPENDENT
1.0, 0.05, 5.0
初始幅值 = 1.0,允许在 [0.05, 5.0] 范围内动态调整。
注意:此类型不适用于 Abaqus/CFD 分析。
专门用于水下爆炸(UNDEX)气泡脉动分析,模拟气泡在流体中的膨胀、压缩和迁移过程。该定义类型集成了完整的气泡动力学模型。
第一行:炸药材料参数(8 个字段)
第二行:流体参数(5 个字段)
第三行:环境与控制参数(5 个字段)
第四行:模拟控制参数(5 个字段)
*AMPLITUDE, NAME=BubbleLoad, DEFINITION=BUBBLE
1.5E5, 0.8, 3.0E5, 3.5E9, 2.0, 1.4, 1600.0, 50.0, 10.0
1000.0, 1500.0, 0.0, 1.0, 0.0
9.81, 101325.0, 1.0, 0.0, 2.0
0.5, 2000, 1.0E-12, 1.0E-12, 0.2
注意:此类型不适用于 Abaqus/CFD 分析,也不支持 Abaqus/CAE 界面。
通过 Fortran 用户子程序 UAMP(Abaqus/Standard)或 VUAMP(Abaqus/Explicit)自定义任意复杂的幅值计算逻辑。这是灵活度最高的一种方式。
| PROPERTIES | ||
| VARIABLES |
第一行:属性值 1, 属性值 2, ..., 属性值 8
...
每行最多 8 个属性值,共 PROPERTIES 个属性。这些属性可在子程序中被读取和使用。
*AMPLITUDE, NAME=CustomLoad, DEFINITION=USER, PROPERTIES=3, VARIABLES=2
1000.0, 0.5, 2.0
向子程序传递 3 个属性:1000.0, 0.5, 2.0;使用 2 个状态变量。
注意:此类型不适用于 Abaqus/CFD 分析。
通过联合仿真(Co-simulation)与外部逻辑建模软件(如控制系统仿真工具)交换数据,幅值由外部程序实时计算并传递给 Abaqus。
无数据行。所有参数通过联合仿真接口传递。
*AMPLITUDE, NAME=ActuatorAmp, DEFINITION=ACTUATOR
注意:此类型不适用于 Abaqus/CFD 分析。
模拟一个持续 0.1 秒、峰值 500 N 的三角形冲击力。
*AMPLITUDE, NAME=TriPulse, DEFINITION=TABULAR
0.00, 0.0
0.05, 1.0
0.10, 0.0
**
*STEP, NAME=Impact
*DYNAMIC, EXPLICIT
, 0.1
*CLOAD, AMPLITUDE=TriPulse
Node-Impact, 2, 500.0
*END STEP
图:TABULAR 三角形脉冲加载 — 0.05s 到达峰值,0.10s 归零
力的历程:t=0 → 0 N;t=0.05 → 500 N;t=0.10 → 0 N。峰值时刻的力 = 500 × 1.0 = 500 N。
对一个悬臂梁的自由端施加频率 50 Hz、幅值 2 mm 的正弦位移激励。
*AMPLITUDE, NAME=Harmonic, DEFINITION=PERIODIC
1, 314.159, 0.0, 0.0
0.0, 2.0
**
*STEP, NAME=Vibration
*STEADY STATE DYNAMICS, DIRECT
10.0, 200.0, 20
*BOUNDARY, AMPLITUDE=Harmonic
Tip-Set, 2, 2, 2.0
*END STEP
图:PERIODIC 简谐激励 — 频率 50 Hz,幅值 2 mm
位移 y(t) = 2.0 × sin(314.159·t),频率 50 Hz,幅值 2 mm。
模拟爆炸冲击波的指数衰减。
*AMPLITUDE, NAME=BlastDecay, DEFINITION=DECAY
0.0, 10000.0, 0.0, 0.02
**
*STEP, NAME=Blast
*DYNAMIC, EXPLICIT
, 0.1
*DLOAD, AMPLITUDE=BlastDecay
Surface-Front, P, 10000.0
*END STEP
图:DECAY 爆炸冲击波指数衰减 — 标记衰减时间常数 τ=0.02s
压力 = 10000 · exp(-t/0.02),1/e 衰减时间为 0.02 秒。
用指数衰减包络调制一个 5 Hz 的正弦载波,模拟地震波。
*AMPLITUDE, NAME=CarrierWave, DEFINITION=PERIODIC
1, 31.416, 0.0, 0.0
0.0, 1.0
**
*AMPLITUDE, NAME=Envelope, DEFINITION=DECAY
0.0, 1.0, 0.0, 2.0
**
*AMPLITUDE, NAME=Seismic, DEFINITION=MODULATED
Envelope
**
*STEP, NAME=Earthquake
*DYNAMIC, DIRECT
0.01, 20.0
*BOUNDARY, TYPE=ACCELERATION, AMPLITUDE=Seismic
Base, 1, 1, 9.81
*END STEP
图:MODULATED + DECAY 地震波调制 — 载波、包络与调制结果
加速度 = 9.81 × exp(-t/2.0) × sin(31.416·t),峰值处接近 1g。
将一个钢板逐步拉伸 10 mm,确保加载过程没有动力学震荡。
*AMPLITUDE, NAME=SmoothDisp, DEFINITION=SMOOTH STEP
0.0, 0.0
1.0, 1.0
**
*STEP, NAME=Tension
*STATIC
0.01, 1.0
*BOUNDARY, AMPLITUDE=SmoothDisp
End-Set, 1, 1, 10.0
*END STEP
图:SMOOTH STEP 平滑位移加载 — 速度和加速度在起始和终止时刻均为零
位移在 1 秒内平滑地从 0 增加到 10 mm,速度和加速度在起始和终止时刻均为零。
错误现象:使用 VALUE=ABSOLUTE 施加温度后,梁单元或壳单元计算的温度梯度不正确。
原因:VALUE=ABSOLUTE 同时覆盖了温度和温度梯度的参考值。而梁壳截面默认 TEMPERATURE=GRADIENTS,期望通过截面厚度方向插值计算梯度。
解决方案:对于带温度梯度的梁壳,改用 VALUE=RELATIVE,或在截面定义中关闭 TEMPERATURE=GRADIENTS。
错误现象:在 CFD 分析中使用了 SMOOTH 参数,程序报错或忽略。
原因:CFD 求解器不支持 SMOOTH 参数。
解决方案:在 CFD 分析中移除 SMOOTH 参数,改用 SMOOTH STEP 定义类型来实现平滑过渡。
错误现象:Abaqus 报错 "Too few data entries on amplitude definition line"。
原因:当使用"四对/行"格式时,中间行(非末行)必须恰好有 4 对(8 个数值),末行可以少于 4 对。
错误示例:
*AMPLITUDE, NAME=Bad
0.0, 0.0, 0.1, 1.0, 0.2, 0.5 ← 只有 3 对!中间行必须是 4 对
0.3, 0.0
正确示例:
*AMPLITUDE, NAME=Good
0.0, 0.0, 0.1, 1.0, 0.2, 0.5, 0.25, 0.75
0.3, 0.0
或者切换为"一对/行"格式:
*AMPLITUDE, NAME=Good
0.0, 0.0
0.1, 1.0
0.2, 0.5
0.3, 0.0
错误现象:加载的起始时刻与预期不符。
原因:EQUALLY SPACED 的时间序列为 tᵢ = BEGIN + (i-1) × FIXED INTERVAL。忘记 BEGIN 的默认值是 0.0,或者将 BEGIN 误解为"第一个时间点的标签"而非"第一个数据点对应的时间"。
示例:以下两个定义等价
*AMPLITUDE, NAME=A, DEFINITION=EQUALLY SPACED, FIXED INTERVAL=0.1
0.0, 0.5, 1.0
*AMPLITUDE, NAME=B, DEFINITION=TABULAR
0.0, 0.0
0.1, 0.5
0.2, 1.0
错误现象:振动频率与预期不符。
原因:ω 的单位是弧度/时间,而非 Hz。如果时间单位是秒,频率 f = ω / (2π)。
错误现象:用户子程序异常或 Abaqus 报错。
原因:VARIABLES 必须大于 0(默认值为 1)。如果不使用状态变量,仍需保留默认值;如果使用多个状态变量,必须正确指定数量。
错误现象:调制结果不是预期的包络效果。
原因:MODULATED 的数据行中引用的幅值曲线是被调制函数,而在其他关键字中引用 MODULATED 曲线时的效果是调制函数 × 被调制函数。理解的关键是:你在 MODULATED 关键字的数据行中指定的字符串,实际上是指向另一个已定义的 *AMPLITUDE 的 NAME。
错误现象:Abaqus 报错 "This definition type is not supported in Abaqus/CFD"。
不支持 CFD 的类型:BUBBLE、SOLUTION DEPENDENT、USER、ACTUATOR。
解决方案:在 CFD 分析中使用 TABULAR、EQUALLY SPACED、PERIODIC、MODULATED 或 SMOOTH STEP。
| TABULAR | ||
| EQUALLY SPACED | ||
| SMOOTH STEP | ||
| PERIODIC | ||
| MODULATED | ||
| DECAY | ||
| SOLUTION DEPENDENT | ||
| BUBBLE | ||
| USER | ||
| ACTUATOR |
*AMPLITUDE, NAME=xxx, DEFINITION=xxx
TIME=STEP TIME / TOTAL TIME ← 时间参照系
VALUE=RELATIVE / ABSOLUTE ← 相对/绝对幅值
SCALEX= SCALEY= ← 缩放
SHIFTX= SHIFTY= ← 平移
SMOOTH=0.0~0.5 ← 平滑过渡
INPUT=文件名 ← 外部数据文件
Amp_Seismic_X、Amp_Impact_Triangular** 行说明每条幅值曲线的用途参考资料:Abaqus Keywords Reference Guide (2016), Section *AMPLITUDE; Abaqus Analysis User's Guide, Section 34.1.2 "Amplitude curves"
本文基于 Abaqus 2016 文档撰写,适用于 Abaqus 6.14 及以上版本。部分高级功能(ACTUATOR、BUBBLE 等)可能需要特定 License 支持。