首页/文章/ 详情

Abaqus 的 INP中的Assembly 部分到底在做什么?

1月前浏览517

写在前面

如果你的工作涉及到"有限元",不妨加个关注,总有对你有用的东西。

点击下面名片快速关注。




正文


很多人在刚开始读 Abaqus 的 .inp 文件时,最容易把注意力放在 *Node*Element*Material*Step 这些关键词上。因为它们看起来最“实在”:节点、单元、材料、载荷、边界条件,都是有限元分析中直接要用的内容。

但如果你打开一个由 Abaqus/CAE 导出的 inp 文件,通常会发现中间有一大段这样的内容:

*Assembly, name=Assembly
...
*End Assembly

这一段就是本文要讲的 Assembly 部分

简单来说,Assembly 不是单纯的“注释段”或“模型排版段”,而是 Abaqus 用来组织零件、实例、集 合、接触区域和约束关系的核心结构。理解 Assembly,很多 inp 文件里的引用关系、集 合命名、边界条件为什么写成某种格式,就会一下子清楚很多。

Assembly 的作用:把 Part 放进全局模型里

在 Abaqus 中,Part 可以理解为“零件定义”。

一个 Part 里面通常会定义:

*Part, name=Part-1
*Node
...
*Element
...
*Elset
...
*Nset
...
*Solid Section
...
*End Part

但是,Part 本身只是一个零件模板。它还没有真正被放到整个有限元模型的全局空间中。

真正进入模型装配关系的是 Instance,也就是零件实例。

Assembly 的核心作用,就是把一个或多个 Part 通过 Instance 的方式放到同一个全局坐标系下,形成完整模型。

一个典型结构如下:

*Part, name=Block
...
*End Part

*Assembly, name=Assembly
    *Instance, name=Block-1, part=Block
    *End Instance
*End Assembly

这里可以这样理解:

  • Block 是一个零件定义;
  • Block-1 是 Block 这个零件在模型中的一个实例;
  • Assembly 是装配体,负责管理这个实例在整体模型中的位置和引用关系。

如果把 Part 比作“零件图纸”,那么 Instance 就是“把这张图纸做成一个实物并放到总装里”,Assembly 就是“总装环境”。

为什么有了 Part,还需要 Instance?

这是很多初学者第一次读 inp 文件时的困惑。

既然节点、单元都已经在 Part 中定义了,为什么还要再写一遍 Instance?

原因很简单:同一个 Part 可以被实例化多次。

例如,一个螺栓、一个垫片、一个连接块,几何和网格可能完全一样,但在模型中出现的位置不同。如果没有 Instance,每出现一次就要重新写一套节点和单元;有了 Instance,就可以复用 Part。

例如:

*Part, name=Bolt
...
*End Part

*Assembly, name=Assembly
    *Instance, name=Bolt-1, part=Bolt
    *End Instance

    *Instance, name=Bolt-2, part=Bolt
    50., 0., 0.
    *End Instance
*End Assembly

这里 Bolt-1 和 Bolt-2 都来自同一个 Part:Bolt

区别在于,Bolt-2 后面多了一行:

50., 0., 0.

这表示把这个实例在全局坐标系中平移一段距离。

所以,Instance 解决的不是“这个零件长什么样”的问题,而是“这个零件放在哪里、叫做什么、如何被引用”的问题。

Assembly 的基本语法结构

Assembly 部分最基本的写法如下:

*Assembly, name=Assembly
    *Instance, name=Part-1-1, part=Part-1
    *End Instance
*End Assembly

其中:

*Assembly, name=Assembly

表示开始定义装配体,name=Assembly 是装配体名称。Abaqus/CAE 默认经常使用 Assembly 这个名字。

*Instance, name=Part-1-1, part=Part-1

表示创建一个零件实例:

  • name=Part-1-1:实例名称;
  • part=Part-1:该实例来自哪个 Part。
*End Instance

表示该实例定义结束。

*End Assembly

表示整个装配体定义结束。

在实际 inp 文件中,Assembly 内部不仅可以有 Instance,还可能包含:

*Nset
*Elset
*Surface
*Rigid Body
*Coupling
*Equation
*Connector Section

这些内容是否应该放在 Assembly 中,取决于它们作用的对象是单个 Part,还是整个装配体中的多个实例。

Instance 的平移和旋转

Instance 不只是“引用一个 Part”,它还可以定义该 Part 在装配体中的位置。

1)只做平移

*Instance, name=Block-2, part=Block
10., 0., 0.
*End Instance

这表示将 Block 这个 Part 生成一个名为 Block-2 的实例,并在 X 方向平移 10 个单位。

注意:Abaqus 本身没有固定单位制,10 是毫米、米还是其他单位,取决于你的整体单位体系。

2)平移加旋转

*Instance, name=Plate-2, part=Plate
0., 0., 0.
0., 0., 0., 0., 0., 1., 90.
*End Instance

这里第一行:

0., 0., 0.

表示平移量为 0。

第二行:

0., 0., 0., 0., 0., 1., 90.

表示绕一条旋转轴旋转 90 度。

这 7 个数字可以理解为:

轴上一点 a 的坐标:x1, y1, z1
轴上另一点 b 的坐标:x2, y2, z2
旋转角度:angle

也就是说:

0., 0., 0., 0., 0., 1., 90.

表示绕通过 (0,0,0) 和 (0,0,1) 的轴,也就是全局 Z 轴,旋转 90 度。

05 Assembly 中最容易看晕的地方:名字引用

Assembly 部分最重要、也最容易出错的地方,是名称引用。

在 Part 内部,节点编号和单元编号可以很简单:

*Nset, nset=Fixed
1, 2, 3, 4

但当这个 Part 被实例化以后,Abaqus 需要知道你说的 Fixed 到底属于哪个实例。

例如:

*Part, name=Bracket
*Nset, nset=Fixed
1, 2, 3, 4
*End Part

如果在 Assembly 中有两个实例:

*Assembly, name=Assembly
    *Instance, name=Bracket-1, part=Bracket
    *End Instance

    *Instance, name=Bracket-2, part=Bracket
    *End Instance
*End Assembly

那么 Bracket-1.Fixed 和 Bracket-2.Fixed 是两个不同的集 合。

这就是为什么在 inp 文件中经常看到类似这样的写法:

*Boundary
Assembly.Bracket-1.Fixed, 1, 3

这句话的意思是:对装配体 Assembly 中,实例 Bracket-1 里的节点集 Fixed,约束 1 到 3 号自由度。

这种用点号连接的方式,本质上是在说明层级路径:

Assembly.实例名.集 合名

也可以类比为文件路径:

总装 / 某个零件实例 / 某个集 合

Part-level Set、Instance-level Set 和 Assembly-level Set

读 inp 文件时,经常会看到 *Nset*Elset 出现在不同位置。它们的位置不同,含义也不同。

1)Part-level Set

定义在 *Part 和 *End Part 之间:

*Part, name=PartA
*Nset, nset=Top
1, 2, 3
*End Part

这类集 合属于 Part。这个 Part 被实例化之后,每个实例都会继承这个集 合。

如果有两个实例:

*Instance, name=PartA-1, part=PartA
*End Instance

*Instance, name=PartA-2, part=PartA
*End Instance

那么会有:

PartA-1.Top
PartA-2.Top

它们名称相似,但属于不同实例。

2)Instance-level Set

定义在某个 *Instance 内部:

*Assembly, name=Assembly
    *Instance, name=PartA-1, part=PartA
        *Nset, nset=LocalSet
        10, 20, 30
    *End Instance
*End Assembly

这类集 合只属于该实例。

如果你只想给某一个实例额外定义集 合,而不影响同一个 Part 的其他实例,这种写法就很有用。

3)Assembly-level Set

定义在 Assembly 层级:

*Assembly, name=Assembly
    *Instance, name=PartA-1, part=PartA
    *End Instance

    *Instance, name=PartA-2, part=PartA
    *End Instance

    *Nset, nset=LoadNodes
    PartA-1.101, PartA-1.102, PartA-2.201, PartA-2.202
*End Assembly

这类集 合属于整个装配体,可以跨多个实例。

这在定义载荷、输出、接触、耦合区域时非常常见。

用 INSTANCE 参数简化集 合写法

当 Assembly-level set 包含很多节点或单元时,如果每个编号前面都写实例名,会非常冗长:

*Nset, nset=LoadNodes
PartA-1.101, PartA-1.102, PartA-1.103
PartA-2.201, PartA-2.202, PartA-2.203

这时可以使用 instance= 参数简化写法:

*Nset, nset=LoadNodes, instance=PartA-1
101, 102, 103

*Nset, nset=LoadNodes, instance=PartA-2
201, 202, 203

这里两次使用了同一个集 合名 LoadNodes,Abaqus 会把后面定义的成员继续追加到同一个 Assembly-level set 中。

对于 *Elset 也类似:

*Elset, elset=ContactElems, instance=PartA-1
1, 2, 3

*Elset, elset=ContactElems, instance=PartA-2
10, 11, 12

这种写法在手动修改 inp 文件时非常实用,尤其是需要把多个实例中的节点或单元合并成一个集 合时。

Surface 在 Assembly 中的意义

在 Abaqus 中,接触、压力、耦合等操作经常依赖 *Surface

Surface 也可以定义在不同层级:

  • Part 内部;
  • Instance 内部;
  • Assembly 层级。

例如,Part 中可以定义一个表面:

*Surface, type=ELEMENT, name=Surf-Top
TopElems, S1

当这个 Part 被实例化以后,不同实例会继承这个表面:

PartA-1.Surf-Top
PartA-2.Surf-Top

如果某个接触关系发生在两个实例之间,那么在后续定义 contact pair、tie、coupling 等内容时,就需要准确引用对应实例下的 surface。

这也是 Assembly 部分的重要价值:它把“几何/网格本身”和“装配后的相互关系”区分开了。

常见错误:把关键词放错层级

手动修改 inp 文件时,Assembly 部分最常见的问题不是语法拼写,而是层级放错。

错误 1:在 Assembly 中随便改 Section

如果网格定义在 Part 里,那么截面属性通常也要在 Part 层级定义。你不能因为某个实例材料不同,就随手在 Assembly 里重写 section。

如果确实希望同一个几何的不同实例使用不同材料或不同单元类型,往往需要把网格或属性定义放到更合适的层级,或者创建不同 Part,而不是简单复 制粘贴关键词。

错误 2:引用集 合时少写实例名

例如:

*Boundary
Fixed, 1, 3

如果 Fixed 不是 Assembly-level set,而是某个 Part 或 Instance 下的集 合,这种写法就可能无法 正确定位。

更稳妥的写法是使用完整路径,例如:

*Boundary
Assembly.PartA-1.Fixed, 1, 3

错误 3:把点号用于普通集 合名称

由于点号 . 在 Abaqus 的完整名称中有特殊含义,建议不要在普通 set、surface、instance 名称里使用点号。

比如不建议写:

*Elset, elset=Set.1

更推荐:

*Elset, elset=Set_1

或者:

*Elset, elset=Set-1

这样后续引用时更清晰,也不容易和层级路径混淆。

一个完整的小例子

下面用一个非常简化的例子,把 Part、Assembly、Instance、Set 和 Boundary 串起来看:

*Heading
Simple assembly example

*Part, name=Block
*Node
1, 0., 0., 0.
2, 1., 0., 0.
3, 1., 1., 0.
4, 0., 1., 0.
*Nset, nset=Left
1, 4
*Nset, nset=Right
2, 3
*End Part

*Assembly, name=Assembly
    *Instance, name=Block-1, part=Block
    *End Instance

    *Instance, name=Block-2, part=Block
    2., 0., 0.
    *End Instance

    *Nset, nset=AllRightNodes
    Block-1.Right, Block-2.Right
*End Assembly

*Step, name=Step-1
*Static
*Boundary
Assembly.Block-1.Left, 1, 3
*Cload
Assembly.AllRightNodes, 1, 100.
*End Step

这个例子表达了几个关键点:

  1. Block 是 Part;
  2. Block-1 和 Block-2 是两个实例;
  3. Block-2 相对原始 Part 平移了 2 个单位;
  4. Block-1.Left 是实例 Block-1 中继承来的节点集;
  5. AllRightNodes 是 Assembly-level set,它把两个实例的 Right 节点集 合并到一起;
  6. 后续 Step 中施加载荷和边界条件时,需要引用装配体中的对象。

读 Assembly 部分的建议顺序

如果你拿到一个复杂 inp 文件,不建议一上来就逐行硬啃。可以按下面顺序读:

第一步:先看有哪些 Part

搜索:

*Part

看看模型中有哪些零件。

第二步:再看 Assembly 中有哪些 Instance

搜索:

*Instance

确认每个实例来自哪个 Part,以及有没有平移或旋转。

第三步:检查 Assembly-level set 和 surface

重点看:

*Nset
*Elset
*Surface

尤其是定义在 *Assembly 和 *End Assembly 之间的集 合与表面。

第四步:到 Step 中反查引用

在 *Boundary*Cload*Dload*Contact Pair*Tie*Coupling 等关键词中,看看它们引用的是哪个实例、哪个集 合、哪个表面。

这样读下来,你就能从“零件定义”逐步过渡到“整体模型行为”,而不是被一堆名称绕晕。

结语:Assembly 是 inp 文件的“空间组织层”

Abaqus 的 inp 文件并不是简单地把节点、单元、材料和载荷堆在一起。对于由 Part 和 Instance 组织的模型来说,Assembly 是连接零件定义和整体分析的关键层级。

它回答了几个核心问题:

  • 哪些 Part 被放进了模型?
  • 每个 Part 被实例化了几次?
  • 每个实例在全局空间中的位置如何?
  • 集 合和表面属于 Part、Instance,还是 Assembly?
  • Step 中的边界条件、载荷、接触到底作用在哪个对象上?

理解了 Assembly,再去读 Abaqus 的 inp 文件,就不再只是看关键词,而是在看一个有限元模型如何从“零件”一步步变成“装配体”,再进入实际分析。

对于需要二次开发、批量建模、Python 生成 inp 文件、手动修改边界条件和接触关系的工程师来说,Assembly 部分绝对是必须掌握的一块基础内容。



来源:有限元先生
ACTAbaqus二次开发pythonGID材料螺栓装配
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-07-09
最近编辑:1月前
外太空土豆儿
博士 我们穷极一生,究竟在追寻什么?
获赞 46粉丝 48文章 117课程 0
点赞
收藏
作者推荐

Abaqus工程师是怎么设计输入曲线荷载的

写在前面如果你用"有限元",不妨加个关注,总有对你有用的东西。点击下面名片快速关注。摘要  本文讲述Abaqus中控制载荷时间历程的核心关键字:AMPLITUDE,分析abaqus是怎么把曲线荷载输入到计算流程中的,包括详细的参数解析,以及最后给出的实际例子。1.引言在有限元分析中,载荷很少是恒定不变的——地震波随时间剧烈波动,冲击载荷瞬间衰减,旋转机械承受周期激励,准静态加载需要平滑过渡。Abaqus用一个关键字统一管理所有这些变化规律:***AMPLITUDE**。无论是施加位移边界、集中力、分布载荷、温度场还是连接器运动,只要涉及"随时间变化"(或频域中"随频率变化"),你都需要定义一条幅值曲线。***AMPLITUDE是Abaqus中使用频率最高的关键字之一**——一份典型的inp文件里,它往往出现十几次甚至几十次。然而,该关键字支持十种不同的定义方式(DEFINITION),每种都有自己独特的参数配置和数据行格式。很多工程师只知道默认的TABULAR方式,对PERIODIC、MODULATED、DECAY等高级功能一知半解,遇到复杂加载场景就束手无策。本文将以Abaqus2016关键字参考手册为基础,系统梳理*AMPLITUDE的全部参数、十种幅值定义类型、实战示例以及常见错误,帮助你在半小时内全面掌握这个关键字。2.关键字基本结构2.1语法总览*AMPLITUDE关键字的最基本形式如下:*AMPLITUDE,NAME=幅值名称,DEFINITION=定义类型数据行(根据定义类型不同而不同)所有幅值曲线都有一个唯一的名字(NAME),后续通过这个名字在其他关键字中引用。例如,在*BOUNDARY中施加一个名为LoadCurve的位移曲线:*AMPLITUDE,NAME=LoadCurve,DEFINITION=TABULAR0.0,0.01.0,1.02.0,0.53.0,0.0*BOUNDARY,AMPLITUDE=LoadCurveSet-1,1,1,10.0这里*BOUNDARY中指定的位移量10.0是参考值,实际位移=参考值×幅值曲线在对应时刻的值。当VALUE=ABSOLUTE时,实际位移直接取幅值曲线的值。2.2必需参数:NAME参数说明NAME幅值曲线的标签名,后续通过AMPLITUDE=NAME引用。名称中不能包含特殊字符,建议使用英文和下划线。NAME可以包含字母、数字和下划线,但不能以数字开头。多个幅值曲线可以出现在同一个inp文件中,只要名称不重复即可。2.3产品支持产品是否支持Abaqus/Standard是Abaqus/Explicit是Abaqus/CFD是(不支持的DEFINITION类型见下文)Abaqus/CAE是(不支持BUBBLE加载)2.4级别说明*AMPLITUDE关键字可以作为Modeldata(模型数据)定义在任何step之外,也可以作为Historydata(历史数据)定义在step内部。通常情况下,建议将幅值曲线统一定义在step之前,便于集中管理。2.5通用可选参数详解这些参数适用于大多数DEFINITION类型(少数例外会在各节专门标注)。TIME:选择时间度量方式TIME=STEPTIME(默认)TIME=TOTALTIME选项含义STEPTIME以当前step的起止为参考,step开始时t=0。频域分析中,STEPTIME对应频率而非时间。TOTALTIME累积所有非摄动分析步的总时间。重新启动分析时,TOTALTIME会从重启点继续累加。选取建议:如果幅值曲线只在一个step中使用,且需要从零开始加载→用STEPTIME如果幅值曲线跨多个step使用,且时间需要连续累积→用TOTALTIME在*FREQUENCY、*STEADYSTATEDYNAMICS等频域分析中,STEPTIME对应的是频率而非物理时间VALUE:相对值与绝对值VALUE=RELATIVE(默认)VALUE=ABSOLUTE选项含义RELATIVE幅值曲线的值为比例因子(通常0~1),实际载荷=幅值×关键字中指定的参考值ABSOLUTE幅值曲线的值为绝对值,直接替代关键字中指定的参考值RELATIVE示例:*AMPLITUDE,NAME=Load,VALUE=RELATIVE0.0,0.01.0,1.02.0,0.0*CLOAD,AMPLITUDE=LoadNode-1,1,1000.0实际力=1000.0×幅值。在t=1.0时力达到峰值1000N。ABSOLUTE示例:*AMPLITUDE,NAME=Displ,VALUE=ABSOLUTE0.0,0.01.0,5.02.0,10.0*BOUNDARY,AMPLITUDE=DisplSet-1,1,1,1.0实际位移直接等于幅值,t=2.0时位移为10.0mm(而非1.0×10.0)。注意事项:VALUE=ABSOLUTE会同时影响温度和温度梯度。对于连接了梁单元或壳单元的节点,如果其截面定义中使用了TEMPERATURE=GRADIENTS(这是默认设置),则**不应使用VALUE=ABSOLUTE**,否则温度梯度的值会被错误地覆盖。SCALEX/SCALEY:缩放时间轴和幅值轴SCALEX=缩放因子(默认1.0)SCALEY=缩放因子(默认1.0)参数作用SCALEX将数据行中所有时间值乘以该因子SCALEY将数据行中所有幅值乘以该因子典型场景:实验数据是秒级的,但需要做微秒级分析。设置SCALEX=1.0E-6即可。SHIFTX/SHIFTY:平移时间轴和幅值轴SHIFTX=偏移量(默认0.0)SHIFTY=偏移量(默认0.0)参数作用SHIFTX将数据行中所有时间值加上该偏移SHIFTY将数据行中所有幅值加上该偏移典型场景:地震波记录的开始时刻不是t=0,通过SHIFTX可以对齐零时刻。INPUT:从外部文件读取*AMPLITUDE,NAME=External,INPUT=load_data.txt当数据行很多(如来自实验设备的上万行数据)时,将数据存放在外部txt文件中,通过INPUT参数引用。外部文件的格式与直接写在inp中的数据行完全相同。不适用于DEFINITION=USER和DEFINITION=ACTUATOR。SMOOTH:平滑过渡(TABULAR和EQUALLYSPACED专用)SMOOTH=平滑系数(Standard默认0.25,Explicit默认0.0,范围0.0≤SMOOTH≤0.5)当时间导数需要被计算时(如直接积分动力学分析中的位移/速度边界条件),Abaqus会在每个时间点的前后SMOOTH×Δt区间内,用二次函数替代分段线性插值,使得速度(一阶导数)连续。SMOOTH值效果0.0纯分段线性,速度在时间点处不连续(默认用于Explicit)0.05轻微平滑,适合时间间隔较大的曲线0.25标准平滑(默认用于Standard)0.5最大平滑(整个间隔被平滑,不推荐)图:SMOOTH参数效果对比—同一组数据点分别使用SMOOTH=0、0.05、0.25的效果注意:SMOOTH只在需要计算幅值时间导数时才生效,对于力加载等场景不起作用。另外,CFD分析中不支持此参数。3.十种幅值定义类型详解3.1TABULAR——表格型(默认)含义按时间顺序给定一组(时间,幅值)数据对,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=STEPTIME0.0,0.00.05,1.00.15,1.00.20,0.0时间(s)幅值0.000.00.051.00.151.00.200.0t∈[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)3.2EQUALLYSPACED——等间距型含义时间间隔固定,数据行只需列出每个时间点的幅值。适用于数据点非常密集且间隔均匀的场景(如高速数据采集系统输出的数据)。专用参数参数必要性说明FIXEDINTERVAL必需固定的时间(或频率)间隔ΔtBEGIN可选(默认0.0)第一个幅值对应的时间/频率数据行格式格式一:每行八个幅值第一行:A₁,A₂,A₃,A₄,A₅,A₆,A₇,A₈...格式二:每行一个幅值第一行:A₁第二行:A₂...时间序列自动按tᵢ=BEGIN+(i-1)×FIXEDINTERVAL生成。示例:0.01秒间隔的正弦半波*AMPLITUDE,NAME=HalfSine,DEFINITION=EQUALLYSPACED,FIXEDINTERVAL=0.010.00000.15640.30900.45400.58780.70710.80900.89100.95110.98771.0000这11个点覆盖t=0.0到t=0.10,对应sin(π·t/0.1)的离散采样。适用场景从实验设备或外部程序导入的等时间间隔数据周期性加载的高密度采样图:EQUALLYSPACED正弦半波—11个等间距采样点,虚线为连续sin函数参考3.3SMOOTHSTEP——平滑阶跃型含义SMOOTHSTEP是对TABULAR的增强版。两者数据行格式完全一致,唯一的区别在于插值方式:**SMOOTHSTEP在每个数据点之间使用五次多项式进行平滑插值,保证一阶和二阶导数的连续性。**这意味着在数据点处,载荷的变化速率和变化加速度都是连续的,非常适合对加速度敏感的分析。数据行格式与TABULAR完全相同(四对/行或一对/行)。示例:平滑位移加载*AMPLITUDE,NAME=SmoothLoad,DEFINITION=SMOOTHSTEP0.0,0.00.2,1.00.8,1.01.0,0.0对比TABULARSMOOTHSTEP速度连续性在数据点处不连续处处连续加速度连续性不连续处处连续适用分析类型静力学、准静态动力学(显式或隐式)图:TABULARvsSMOOTHSTEP插值对比—左侧分段线性,右侧五次Hermite平滑适用场景准静态分析中的平滑加载(避免动力学震荡)显式动力学中需要光滑加速度的加载替代TABULAR+SMOOTH参数(SMOOTHSTEP本身就能保证二阶光滑)3.4PERIODIC——周期型(傅里叶级数)含义用傅里叶级数定义幅值曲线:其中:N:傅里叶级数的项数ω:圆频率(弧度/时间)t₀:起始时间A₀:常数项Aⁿᶜᵒˢ:第n阶余弦系数Aⁿˢⁱⁿ:第n阶正弦系数数据行格式第一行:N,ω,t₀,A₀第二行:A₁ᶜᵒˢ,A₁ˢⁱⁿ,A₂ᶜᵒˢ,A₂ˢⁱⁿ,A₃ᶜᵒˢ,A₃ˢⁱⁿ,A₄ᶜᵒˢ,A₄ˢⁱⁿ第三行:A₅ᶜᵒˢ,A₅ˢⁱⁿ,...(每行最多8个系数,共2N个)示例:简谐激励一个幅值为5,频率为10Hz的正弦波:*AMPLITUDE,NAME=SineLoad,DEFINITION=PERIODIC1,62.83185,0.0,0.00.0,5.0ω=2π×10=62.83185rad/s,A₁ᶜᵒˢ=0.0,A₁ˢⁱⁿ=5.0→A(t)=5·sin(62.83185·t)图:PERIODIC简谐激励—f=10Hz,幅值=5含多阶谐波的示例:*AMPLITUDE,NAME=ComplexWave,DEFINITION=PERIODIC3,31.4159,0.0,1.02.0,0.0,0.0,3.0,0.5,0.0A(t)=1.0+2.0·cos(ωt)+3.0·sin(2ωt)+0.5·cos(3ωt)图:PERIODIC多阶谐波—N=3,展示各阶谐波叠加效果适用场景旋转机械的周期激励稳态动力学分析(*STEADYSTATEDYNAMICS)频域响应分析3.5MODULATED——调制型含义用一条幅值曲线A去调制另一条幅值曲线B:最终幅值=A(t)×B(t)。例如,用一个低频的正弦波(包络)去调制一个高频的正弦波(载波),模拟地震波或冲击波包络。数据行格式单行:A_amplitude_name这里A是调制函数的名称,该函数必须已经通过*AMPLITUDE定义。示例:指数衰减包络调制正弦波*AMPLITUDE,NAME=Carrier,DEFINITION=PERIODIC1,62.83185,0.0,0.00.0,1.0***AMPLITUDE,NAME=Envelope,DEFINITION=DECAY1.0,0.0,0.0,0.05***AMPLITUDE,NAME=DampedSine,DEFINITION=MODULATEDCarrier最终的幅值=纯正弦波×指数衰减包络=e^{-t/0.05}·sin(62.83·t)图:MODULATED指数衰减包络调制—上:载波,中:包络,下:调制结果注意:调制的顺序是先指定调制函数(第一个定义的幅值曲线名),后定义被调制的曲线(在MODULATED的数据行中引用需要被调制的函数名)。实际上,查看Abaqus文档中的描述——MODULATED类型的唯一数据行是.A....格式。正确的理解是:MODULATED的数据行中引用的是一个已定义的幅值曲线名称。适用场景地震波的包络调制冲击载荷的指数衰减包络多级调制信号3.6DECAY——指数衰减型含义定义一个指数衰减函数,数学表达式为:参数含义A₀常数项(衰减后趋近于该值)A指数项系数t₀衰减起始时间τ衰减时间常数数据行格式单行:A₀,A,t₀,τ示例:冲击衰减一个初始峰值为100,衰减时间常数为0.1秒的冲击响应:*AMPLITUDE,NAME=BlastDecay,DEFINITION=DECAY0.0,100.0,0.0,0.1t=0时幅值=100;t=0.1时幅值≈36.8(即峰值的1/e);t=0.3时幅值≈5.0带常数项的衰减:*AMPLITUDE,NAME=ResidualDecay,DEFINITION=DECAY10.0,90.0,0.0,0.05初始值=100,最终趋近于10。适用场景爆炸冲击波衰减阻尼自由振动包络冲击后的残留变形图:DECAY指数衰减—左:纯衰减A=100·exp(-t/0.1),右:带常数项A=10+90·exp(-t/0.05)3.7SOLUTIONDEPENDENT——解相关型含义幅值在求解过程中根据当前解的状态动态调整。Abaqus会在每个增量步检查是否需要调整幅值。用户可以通过用户子程序控制幅值的变化逻辑。数据行格式单行:A₀,Aₘᵢₙ,Aₘₐₓ字段含义默认值A₀初始幅值1.0Aₘᵢₙ最小允许值0.1Aₘₐₓ最大允许值1000.0示例*AMPLITUDE,NAME=AdaptiveLoad,DEFINITION=SOLUTIONDEPENDENT1.0,0.05,5.0初始幅值=1.0,允许在[0.05,5.0]范围内动态调整。适用场景自适应加载控制(根据收敛情况自动调整载荷步长)裂纹扩展分析中的自动加载RISK分析中的自动减载注意:此类型不适用于Abaqus/CFD分析。3.8BUBBLE——气泡加载型含义专门用于水下爆炸(UNDEX)气泡脉动分析,模拟气泡在流体中的膨胀、压缩和迁移过程。该定义类型集成了完整的气泡动力学模型。数据行格式(共四行)第一行:炸药材料参数(8个字段)字段含义K炸药材料常数k炸药材料常数A炸药材料常数B炸药材料常数γ绝热指数γᵍ气体比热比ρ_c炸药密度M_c炸药质量depth炸药深度第二行:流体参数(5个字段)字段含义ρ_f流体密度c_f流体中的声速nx自由液面法向x分量ny自由液面法向y分量nz自由液面法向z分量第三行:环境与控制参数(5个字段)字段含义默认值g重力加速度-Pₐₜₘ大气压力-α波效应参数(1.0=开启,0.0=关闭)1.0C_D流动阻力系数0.0n流动阻力指数2.0第四行:模拟控制参数(5个字段)字段含义默认值T_dur模拟时长-Nₘₐₓ最大时间步数1500εᵣₑₗ相对步长控制参数1×10⁻¹¹εₐᵦₛ绝对步长控制参数1×10⁻¹¹β步长控制指数0.2示例*AMPLITUDE,NAME=BubbleLoad,DEFINITION=BUBBLE1.5E5,0.8,3.0E5,3.5E9,2.0,1.4,1600.0,50.0,10.01000.0,1500.0,0.0,1.0,0.09.81,101325.0,1.0,0.0,2.00.5,2000,1.0E-12,1.0E-12,0.2适用场景水下爆炸气泡脉动分析舰船UNDEX冲击响应水库爆破安全评估注意:此类型不适用于Abaqus/CFD分析,也不支持Abaqus/CAE界面。3.9USER——用户子程序型含义通过Fortran用户子程序UAMP(Abaqus/Standard)或VUAMP(Abaqus/Explicit)自定义任意复杂的幅值计算逻辑。这是灵活度最高的一种方式。专用参数参数说明默认值PROPERTIES传入子程序的属性数量0VARIABLES解相关状态变量数1数据行格式(当PROPERTIES>0时)第一行:属性值1,属性值2,...,属性值8...每行最多8个属性值,共PROPERTIES个属性。这些属性可在子程序中被读取和使用。示例*AMPLITUDE,NAME=CustomLoad,DEFINITION=USER,PROPERTIES=3,VARIABLES=21000.0,0.5,2.0向子程序传递3个属性:1000.0,0.5,2.0;使用2个状态变量。适用场景复杂的非线性加载逻辑(如PID控制加载)从外部文件实时读取载荷数据与其他物理场实时耦合的载荷计算自定义频率相关载荷注意:此类型不适用于Abaqus/CFD分析。3.10ACTUATOR——执行器型含义通过联合仿真(Co-simulation)与外部逻辑建模软件(如控制系统仿真工具)交换数据,幅值由外部程序实时计算并传递给Abaqus。数据行无数据行。所有参数通过联合仿真接口传递。示例*AMPLITUDE,NAME=ActuatorAmp,DEFINITION=ACTUATOR适用场景Abaqus与MATLAB/Simulink联合仿真中的控制信号机电液一体化系统仿真实时控制系统的力学响应分析注意:此类型不适用于Abaqus/CFD分析。4.实战示例合集4.1三角形脉冲加载(TABULAR)模拟一个持续0.1秒、峰值500N的三角形冲击力。*AMPLITUDE,NAME=TriPulse,DEFINITION=TABULAR0.00,0.00.05,1.00.10,0.0***STEP,NAME=Impact*DYNAMIC,EXPLICIT,0.1*CLOAD,AMPLITUDE=TriPulseNode-Impact,2,500.0*ENDSTEP图:TABULAR三角形脉冲加载—0.05s到达峰值,0.10s归零力的历程:t=0→0N;t=0.05→500N;t=0.10→0N。峰值时刻的力=500×1.0=500N。4.2简谐振动激励(PERIODIC)对一个悬臂梁的自由端施加频率50Hz、幅值2mm的正弦位移激励。*AMPLITUDE,NAME=Harmonic,DEFINITION=PERIODIC1,314.159,0.0,0.00.0,2.0***STEP,NAME=Vibration*STEADYSTATEDYNAMICS,DIRECT10.0,200.0,20*BOUNDARY,AMPLITUDE=HarmonicTip-Set,2,2,2.0*ENDSTEP图:PERIODIC简谐激励—频率50Hz,幅值2mm位移y(t)=2.0×sin(314.159·t),频率50Hz,幅值2mm。4.3冲击衰减载荷(DECAY)模拟爆炸冲击波的指数衰减。*AMPLITUDE,NAME=BlastDecay,DEFINITION=DECAY0.0,10000.0,0.0,0.02***STEP,NAME=Blast*DYNAMIC,EXPLICIT,0.1*DLOAD,AMPLITUDE=BlastDecaySurface-Front,P,10000.0*ENDSTEP图:DECAY爆炸冲击波指数衰减—标记衰减时间常数τ=0.02s压力=10000·exp(-t/0.02),1/e衰减时间为0.02秒。4.4地震波包络调制(MODULATED+DECAY)用指数衰减包络调制一个5Hz的正弦载波,模拟地震波。*AMPLITUDE,NAME=CarrierWave,DEFINITION=PERIODIC1,31.416,0.0,0.00.0,1.0***AMPLITUDE,NAME=Envelope,DEFINITION=DECAY0.0,1.0,0.0,2.0***AMPLITUDE,NAME=Seismic,DEFINITION=MODULATEDEnvelope***STEP,NAME=Earthquake*DYNAMIC,DIRECT0.01,20.0*BOUNDARY,TYPE=ACCELERATION,AMPLITUDE=SeismicBase,1,1,9.81*ENDSTEP图:MODULATED+DECAY地震波调制—载波、包络与调制结果加速度=9.81×exp(-t/2.0)×sin(31.416·t),峰值处接近1g。4.5准静态平滑位移加载(SMOOTHSTEP)将一个钢板逐步拉伸10mm,确保加载过程没有动力学震荡。*AMPLITUDE,NAME=SmoothDisp,DEFINITION=SMOOTHSTEP0.0,0.01.0,1.0***STEP,NAME=Tension*STATIC0.01,1.0*BOUNDARY,AMPLITUDE=SmoothDispEnd-Set,1,1,10.0*ENDSTEP图:SMOOTHSTEP平滑位移加载—速度和加速度在起始和终止时刻均为零位移在1秒内平滑地从0增加到10mm,速度和加速度在起始和终止时刻均为零。5.常见错误与避坑指南5.1VALUE=ABSOLUTE与梁壳温度梯度的冲突错误现象:使用VALUE=ABSOLUTE施加温度后,梁单元或壳单元计算的温度梯度不正确。原因:VALUE=ABSOLUTE同时覆盖了温度和温度梯度的参考值。而梁壳截面默认TEMPERATURE=GRADIENTS,期望通过截面厚度方向插值计算梯度。解决方案:对于带温度梯度的梁壳,改用VALUE=RELATIVE,或在截面定义中关闭TEMPERATURE=GRADIENTS。5.2SMOOTH参数在CFD中的无效使用错误现象:在CFD分析中使用了SMOOTH参数,程序报错或忽略。原因:CFD求解器不支持SMOOTH参数。解决方案:在CFD分析中移除SMOOTH参数,改用SMOOTHSTEP定义类型来实现平滑过渡。5.3TABULAR数据行对数不完整错误现象:Abaqus报错"Toofewdataentriesonamplitudedefinitionline"。原因:当使用"四对/行"格式时,中间行(非末行)必须恰好有4对(8个数值),末行可以少于4对。错误示例:*AMPLITUDE,NAME=Bad0.0,0.0,0.1,1.0,0.2,0.5←只有3对!中间行必须是4对0.3,0.0正确示例:*AMPLITUDE,NAME=Good0.0,0.0,0.1,1.0,0.2,0.5,0.25,0.750.3,0.0或者切换为"一对/行"格式:*AMPLITUDE,NAME=Good0.0,0.00.1,1.00.2,0.50.3,0.05.4等间距定义中BEGIN+FIXEDINTERVAL计算错误错误现象:加载的起始时刻与预期不符。原因:EQUALLYSPACED的时间序列为tᵢ=BEGIN+(i-1)×FIXEDINTERVAL。忘记BEGIN的默认值是0.0,或者将BEGIN误解为"第一个时间点的标签"而非"第一个数据点对应的时间"。示例:以下两个定义等价*AMPLITUDE,NAME=A,DEFINITION=EQUALLYSPACED,FIXEDINTERVAL=0.10.0,0.5,1.0*AMPLITUDE,NAME=B,DEFINITION=TABULAR0.0,0.00.1,0.50.2,1.05.5PERIODIC中ω单位的混淆错误现象:振动频率与预期不符。原因:ω的单位是弧度/时间,而非Hz。如果时间单位是秒,频率f=ω/(2π)。想要50Hz→ω=2π×50=314.159错误地写ω=50→实际频率≈7.96Hz5.6DEFINITION=USER中VARIABLES数量不足错误现象:用户子程序异常或Abaqus报错。原因:VARIABLES必须大于0(默认值为1)。如果不使用状态变量,仍需保留默认值;如果使用多个状态变量,必须正确指定数量。5.7MODULATED引用顺序混淆错误现象:调制结果不是预期的包络效果。原因:MODULATED的数据行中引用的幅值曲线是被调制函数,而在其他关键字中引用MODULATED曲线时的效果是调制函数×被调制函数。理解的关键是:你在MODULATED关键字的数据行中指定的字符串,实际上是指向另一个已定义的*AMPLITUDE的NAME。5.8DEFINITION不适用于当前求解器错误现象:Abaqus报错"ThisdefinitiontypeisnotsupportedinAbaqus/CFD"。不支持CFD的类型:BUBBLE、SOLUTIONDEPENDENT、USER、ACTUATOR。解决方案:在CFD分析中使用TABULAR、EQUALLYSPACED、PERIODIC、MODULATED或SMOOTHSTEP。6.总结6.1选型速查表分析需求推荐DEFINITION理由通用加载、实验数据导入TABULAR最直观,逐对给定数据大批量均匀采样数据EQUALLYSPACED减少数据输入量准静态平滑加载SMOOTHSTEP自动保证速度和加速度连续周期激励(简谐、多频)PERIODIC以一个公式替代大量数据带包络的调制信号MODULATED两曲线相乘实现复杂波形冲击衰减、阻尼包络DECAY单行数据定义指数衰减自适应加载控制SOLUTIONDEPENDENT根据求解状态自动调整水下爆炸气泡脉动BUBBLE集成完整气泡动力学任意自定义逻辑USER子程序实现任意功能联合仿真控制信号ACTUATOR与外部软件实时交互6.2关键参数速记卡*AMPLITUDE,NAME=xxx,DEFINITION=xxxTIME=STEPTIME/TOTALTIME←时间参照系VALUE=RELATIVE/ABSOLUTE←相对/绝对幅值SCALEX=SCALEY=←缩放SHIFTX=SHIFTY=←平移SMOOTH=0.0~0.5←平滑过渡INPUT=文件名←外部数据文件6.3推荐实践统一命名规范:使用描述性名称,如Amp_Seismic_X、Amp_Impact_Triangular所有幅值曲线集中定义在inp文件开头,step之前优先使用RELATIVE:便于参数化调整加载量级动力学分析用SMOOTHSTEP:避免虚假的高频响应批量数据用INPUT:保持inp文件简洁添加注释:用**行说明每条幅值曲线的用途参考资料:AbaqusKeywordsReferenceGuide(2016),Section*AMPLITUDE;AbaqusAnalysisUser'sGuide,Section34.1.2"Amplitudecurves"本文基于Abaqus2016文档撰写,适用于Abaqus6.14及以上版本。部分高级功能(ACTUATOR、BUBBLE等)可能需要特定License支持。来源:有限元先生

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈