abaqus 罚函数可以用input 函数吗

[转载]Abaqus中input文件介绍
本INP文件以及解释参考石亦平博士所著的《ABAQUS有限元分析实例详解》;
注释行以**口头,以保持与INP文件的格式一致(为方便起见以绿色显示)。
name: Plate-CPS8 Model name: Model-1
**----------------------------------------------------------------------------------------------------------------------------------------------------
文件总是以*Heading开头,接下来可以用一行或多行来写下此模型的标题和相关信息.
**----------------------------------------------------------------------------------------------------------------------------------------------------
*Preprint,
echo=NO, model=NO, history=NO, contact=NO
**----------------------------------------------------------------------------------------------------------------------------------------------------
**Preprint可设置在DAT文件(*.dat)中记录的内容。上述为ABAQUS默认,内容为:在DAT文件
**中不记录对INP文件的处理过程,以及详细的模型和历史数据。
**----------------------------------------------------------------------------------------------------------------------------------------------------
name=Plate1
**----------------------------------------------------------------------------------------------------------------------------------------------------
**定义Part的标准格式:*Part,name=部件名称
**对于非独立实体,比如此例,要在下面数据块中定义详细的节点,单元,截面属性等数据。以便Mesh时,**Mesh在Part上面;
**对于独立实体,则Part数据块只包含*Part和*End
Part两行,而没有实质性的数据。节点,单元,截面属**性等数据将在Instance数据块中定义,而
**Mesh时也只能在Instance上面做。
**如果INP文件是由Abaqus/CAE生成的,其结构会包括部件*Part,装配件*Assembly,实体*Instance等数**据块,比如此例。
**如果INP文件是由其他前处理器如MSC,PATRAN,FEMAP等生成的,其结构将不包含部件,装配件和实**体等数据块,而是直接定义节点和单元等数据。
**----------------------------------------------------------------------------------------------------------------------------------------------------
**----------------------------------------------------------------------------------------------------------------------------------------------------
**节点定义以*Node开始
**节点的基本表示方法:
**一维模型:节点编号,节点坐标
**二维模型:节点编号,节点坐标1,节点坐标2
**三维模型:节点编号,节点坐标1,节点坐标2,节点坐标3
**注意:1.节点编号可以不从1开始也可以是不连续的。
**注意:2.在INP文件中,不同的部件或实体可以有相同的节点或单元编号。比如,部件Part-A的节点编号**是1,2,3...,部件Par-B的节点编号也可以
**是1,2,3,...
**注意:3.如果在定义荷载Load,边界条件BC或约束Constraint是需要引用这些节点编号,需要加上相应**的
名称作为前缀。例如,部件Part-A和
**部件Part-B的相应
分别名为Part—A-1和Part-B-1,则实体Part-A-1的节点记作Part-A-1.
5,而实体**Part-B-1的节点5记作Part-B-1. 5
**----------------------------------------------------------------------------------------------------------------------------------------------------
1,&&&&&&&&&&
0.,&&&&&&&&
2,&&&&&&&&&&
0.,&&&&&&&&&&
**省略若干节点
10.1391716,&&
28.3766441
29.4102631
281,&&&&&&&&&&
**----------------------------------------------------------------------------------------------------------------------------------------------------
**单元的定义方法:*Element,type=单元类型
**&&&&&&&&&&&&&&&
单元编号,节点1编号,节点2编号,节点三编号...
**----------------------------------------------------------------------------------------------------------------------------------------------------
102, 103, 104, 105
&2,& 12,& 13,& 58,& 57, 106, 107, 108,
&3,& 13,& 14,& 59,& 58, 109, 110, 111,
**省略若干单元
78,& 99, 100,& 22,& 21, 273, 279, 126,
275, 280, 117, 279
277, 281, 105, 280
**----------------------------------------------------------------------------------------------------------------------------------------------------
**下面为集合的定义:集合分为节点集合*Nset和单元集合*Elset,又分为下面两种:
**1.定义在Part或Instance数据块中的集合:这类集合出现在*Part和*End
part之间(比如此例),或出现
**在*Instance和*End
instance之间,一般用来定义
**界面属性。
**2.定义在Assembly数据块的集合:这类集合出现在*End
Instance之后,*End
assembly之前,一般用来定**义荷载,边界条件,接触或约束等。
**节点集合和单元集合的表示方法:
**1.如果集合中的节点或单元编号是连续的,可以表示为
**节点集合:
Nset=节点集合名称,
**&&&&&&&&&&&
起始节点编号,结束节点编号,节点编号增量
**单元集合:
Elset=单元集合名称,Generate
**&&&&&&&&&&&
起始单元编号,结束单元编号,单元编号增量
**注意:节点集合和单元集合的名称不得超过80个字符,必须以字母或下划线开始。
**2.如果集合中的节点或单元编号是不连续的,表示方法为:依次列出集合中的所有节点或单元(每个数据行接点或单元编号不得超过16个),格式:
**节点集合:
Nset=节点集合名称
&&&&&&&&&&&&&
节点编号1,节点编号2,...节点编号16
**单元集合:
Elset,Elset=单元集合名称
&&&&&&&&&&&&&
单元编号1,单元编号2,...单元编号16
**----------------------------------------------------------------------------------------------------------------------------------------------------
nset=_PickedSet2, internal, generate
elset=_PickedSet2, internal, generate
** Region:
(Section-1:Picked)
elset=_PickedSet2, internal, generate
**----------------------------------------------------------------------------------------------------------------------------------------------------
**截面属性的基本表示方法为:*Solid
Elset=单元集合名称,
Material=材料名称
**&&&&&&&&&&&&&&&&&&&&&&&&&&
**界面参数可以是二维模型的厚度或一维模型的截面面积等。材料名称不超过80个字符,必须以字母开头。
**----------------------------------------------------------------------------------------------------------------------------------------------------
Section: Section-1
Section, elset=_PickedSet2, material=Steel
**----------------------------------------------------------------------------------------------------------------------------------------------------
**定义Assembly数据块的格式为:*Assembly,
Name=装配件名称
**&&&&&&&&&&&&&&&&&&&&&&&&&&&&
**&&&&&&&&&&&&&&&&&&&&&&&&&&&
*End Assembly
**省略号代表在Assembly数据块中的Instance数据块,以及定义在Assembly数据块中的几何数据块,以及面和约束有关的数据块。
**----------------------------------------------------------------------------------------------------------------------------------------------------&&&
*Assembly,
name=Assembly
**----------------------------------------------------------------------------------------------------------------------------------------------------&
**定义Instance数据块的格式为:*Instance,
Name=实体名称,部件名称
**&&&&&&&&&&&&&&&&&&&&&&&&&&&&
**&&&&&&&&&&&&&&&&&&&&&&
*End Instance
**在下面的格式中,不包含任何节点,单元,集合和截面属性等数据,因为文件中的实体是非独立实体,必**须在Part模块中定义。
**----------------------------------------------------------------------------------------------------------------------------------------------------
*Instance,
name=Plate1-1, part=Plate1
**----------------------------------------------------------------------------------------------------------------------------------------------------
**定义在Assembly数据块中的集合表示方法与定义在Part或Instance数据块中的集合基本相同,只是需要在其后面加上参数
Instance=实体名称
**----------------------------------------------------------------------------------------------------------------------------------------------------
nset=_PickedSet5, internal, instance=Plate1-1
102, 106, 109, 112, 260, 268, 276
elset=_PickedSet5, internal, instance=Plate1-1
3,& 4, 68,
72, 76, 80
nset=_PickedSet6, internal, instance=Plate1-1
152, 160, 168, 176, 178, 181, 184
elset=_PickedSet6, internal, instance=Plate1-1
&20, 24, 28, 32, 33,
34, 35, 36
elset=__PickedSurf4_S2, internal, instance=Plate1-1,
&36,& 48,&&
elset=__PickedSurf4_S1, internal, instance=Plate1-1,
&49,& 52,&&
**----------------------------------------------------------------------------------------------------------------------------------------------------
**定义Surface数据块的格式为:*Surface,
Type=面的类型,
Name=免得名称
**&&&&&&&&&&&&&&&&&&&&&&&&&&&
构成面的集合1,名称1
**&&&&&&&&&&&&&&&&&&&&&&&&&&&
构成面的集合2,名称2
**&&&&&&&&&&&&&&&&&&&&&&&&&&&
**像定义节点和单元集合一样,不需要使用*End
Surface等语法来结束。
**----------------------------------------------------------------------------------------------------------------------------------------------------
type=ELEMENT, name=_PickedSurf4, internal
__PickedSurf4_S2, S2
__PickedSurf4_S1, S1
**----------------------------------------------------------------------------------------------------------------------------------------------------
**定义Material数据块的格式为:*Material,
Name=材料名称
**&&&&&&&&&&&&&&&&&&&&&&&&&&&
**&&&&&&&&&&&&&&&&&&&&&&
弹性模量,泊松比
**&&&&&&&&&&&&&&&&&&&&&&
**&&&&&&&&&&&&&&&&&&&&&&&&&&&
屈服应力(列),塑性应变(列)
**&&&&&&&&&&&&&&&&&
还可以定义*Density等
**注意:所有使用Abaqus/Explicit的分析,都要使用*Density来定义密度。
**----------------------------------------------------------------------------------------------------------------------------------------------------
*Material,
name=Steel
**----------------------------------------------------------------------------------------------------------------------------------------------------
**定义Boundary
Condition数据块的格式(以边界条件为例,速度等以此类推):
**&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&*Boundary
**&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&节点编号或节点集合,约定的边界条件类型
**注意:如果一个边界条件定义在初始步(Initial
Step)中则相应的Boundary数据块出现在*Step之前;
如果一个边界条件定义在后续分析步中,则相应的Boundary数据块出现在此后续分析步的*Step
Step之间。
**----------------------------------------------------------------------------------------------------------------------------------------------------
BOUNDARY CONDITIONS
Fix-X Type: Symmetry/Antisymmetry/Encastre
_PickedSet5, XSYMM
Fix-Y Type: Symmetry/Antisymmetry/Encastre
_PickedSet6, YSYMM
**----------------------------------------------------------------------------------------------------------------------------------------------------
**定义Step数据块的格式为(以静力分析为例):
Name=分析部名称
**&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
**&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
初始增量步,分析时间,最小增量步,最大增量步
**----------------------------------------------------------------------------------------------------------------------------------------------------
Apply Load
name="Apply Load"
**----------------------------------------------------------------------------------------------------------------------------------------------------
**定义载荷Load数据块的格式:1.
集中载荷: *Cload
**&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
节点编号或节点集合,自由度编号,载荷值
&&&&&&&&&&&&&&&&&&&&&&2.
定义在单元上的分布荷载: *Dload
**&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
单元编号或单元集合,载荷类型的代码
**&&&&&&&&&&&&&&&&&&&&&&&&&
3.定义在面上的分布载荷:*DSload
**&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
面的名称,载荷类型的代码,载荷值
**注意:描述载荷的关键词为:集中载荷*Cload
(Concentrated Load),定义在单元上的分布载荷*Dload
**(Distributing
Load)和定义在面上
**的分布载荷*DSload(Distributing Surface
在Dload和DSload中的载荷类型的代码,从ABAQUS Analysis User's
Manual的Distributing
loads查**找。下例的P代表均布面荷载。**
**----------------------------------------------------------------------------------------------------------------------------------------------------
Type: Pressure
_PickedSurf4, P, -100.
write, frequency=0
**----------------------------------------------------------------------------------------------------------------------------------------------------
**不输出用于重启动分析的数据。
**----------------------------------------------------------------------------------------------------------------------------------------------------
OUTPUT: F-Output-1
field, variable=PRESELECT
**----------------------------------------------------------------------------------------------------------------------------------------------------
**将Abaqus默认的场变量写入ODB文件。
**----------------------------------------------------------------------------------------------------------------------------------------------------
** HISTORY
OUTPUT: H-Output-1
history, variable=PRESELECT
**----------------------------------------------------------------------------------------------------------------------------------------------------
**将Abaqus默认的历史变量写入ODB文件。
**----------------------------------------------------------------------------------------------------------------------------------------------------
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Abaqus_input_文件精讲_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Abaqus_input_文件精讲
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩12页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢如何写abaqus的input文件_中华文本库
第1页/共15页
如何写input文件
一、输入文件的组成和结构: 1.一个输入文件由模型数据和历史数据两部分组成. 模型数据的作用:定义一个有限元模型.包括单元,节点,单元性质,定义材料等等有关说 明模型自身的数据.模型数据可被组织到零件中(零件可以被组装成一个有意义的模型). 历史数据的定义是模型发生了什么----事情的进展,模型响应的荷载,历史被分成一系 列的时步层序.每一步就是一个响应(静态加载,动态响应等),时步的定义包括过程类型(比 如静态应力分析,瞬时传热分析等)对于时间积分的控制参数或者非线性解过程,加载和输出 要求. At a minimum the model consists of the following information: geometry, element section properties, material data, loads and boundary conditions, analysis type, and output requests.
2. ABAQUS 输入文件的结构形式。 1) 必须有一个*HEADING 开头。 2) 接下来就是模型数据部分,定义节点,单元,材料,初始条件等。模型数据的 层次为:部件,组装,模型。
必须的模型数据: (1)几何数据:模型的几何形状是用单元和节点来定义的,结构性单元的 截面是必须定义的。 比如梁单元。 特殊的特征也可以用特殊的单元来 定义,比如弹簧单元,阻尼器,点式群体等。 (2)材料的定义:材料必须定义比如使用的是钢啊,岩石,土啊等材料。 可选的模型数据: 零件和组合 : 一个模型可以用几个零件来定义有可以把几个零件组 (1) 合成一个集来定义。 (2)初始条件 :比如初始应力,温度,或者速度等 (3)边界条件: (4)运动约束 (5)相互作用 (6)振幅定义 (7)输出控制 (8)环境特性 (9)用户子程序 (10)分析附属部分 3) 接下来就是历史数据:定义分析的类型,荷载,输出要求等。分析的目的就是 预测模型对某些外部荷载或者某些初始条件的反映。一个 ABAQUS 分析是建立 在 STEP 的概念上的, (在历史数据中描述)在分析中可以定义多个 STEPS。每 个 STEP 用*STEP 开始,用*END STEP 结束。*STEP 是历史数据和模型数据的分 界点,第一次出现*STEP 的前面的是模型数据,后面的就是历史数据。 必须的历史数据: 响应类型:必须立刻出现在*STEP 选项后面。ABAQUS 中有两种响应步,一 种是总体分析响应步, 可以是线形和非线形的, 另一种是线形扰动步。 可选历史数据: (1)荷载:通常定义某种加的荷载类型和大小。荷载可以被描述成时间的 函数。 (2)边界条件输出控制 (3)辅助控制 (4)再生单元和曲面 二、书写 input 文件的语法和规则: 1.关键词行: 1)必须以*开始,后面接的是选项的名字,然后随之定义选项的内容.如: * MATERIAL NAME=STEEL 注释行是以**开
第1页/共15页
寻找更多 ""如何写ABAQUS的input文件(四)
已有 4378 次阅读
|个人分类:|系统分类:
例二、孔平板分析
几何及加载情况
由于板内圆孔的应力集中因子大约为3,所以在时间
t=1时 A 点将达到屈服 (板的初始屈服应力为200MPa);在时间 t=3时,平板都将达到屈服。下面我们利用abaqus分析并输出时间t=1、 t=2 和t=3时板的塑性变化情况。
注意到板及 载荷的对称性,只需要考虑 板的1/4,并在底部和边缘施加对称边界条件。采用4节点二次平面应力单元。
对称边界条件的施加及载荷的分布如fig.3所示。
对称边界条件的施加及载荷的分布
文件祥解:
指定什么输出到文件中
*RESTART, WRITE, FREQ=1 **每一个载荷步的结果都输出到.res文件中,提供给后处理
*FILE FORMAT, ZERO INCREMENT ** 将数据输出到.fil文件中,后处理用,这里要求输出分析前的数据(即载荷施加前)
下面产生网格(节点、单元)
**节点的产生
101, 0.0, 0.0
119, 1.0E-02, 0.0
0.0, 1.E-02
131, 5.E-02, 0.0
5.E-02, 5.E-02
LINE=C, NSET=HOLE
119, , 101
NSET=OUTER
将节点加到节点集outer中
NSET=OUTER, 100
** 沿着径向线填充
NSET=PLATE
HOLE, OUTER, 12, 1
** 单元的产生
*ELEMENT, TYPE=CPS4
19, 119, 120, 220, 219
ELSET=PLATE
19, 12, 1, 1, 18, 100, 100
给单元赋予属性(即单元由什么材料组成),将名为steel的材料赋给单元集plate
SECTION, MATERIAL=STEEL, ELSET=PLATE
**定义材料性质
*MATERIAL,
NAME=STEEL
200.2E06, 0.0
294.0E06, 0.0474
437.0E06, 0.1377
480.0E06, 0.18
**指定与时间无关的边界条件(任何与时间无关的边界条件都必须在分析步前指定)
NSET=BOTTOM, GENERATE
119, 131, 1
NSET=LEFT, GENERATE
LEFT, XSYMM
**定义载荷施加的位置和随时间的变化
**defining
*ELSET, ELSET=EDGE, GENERATE
*AMPLITUDE,
NAME=HIST, TIME=TOTAL TIME
0.0,0.0, 1.0,1.0, 2.0,2.0,
**这里的关键词AMPLITUDE为整个分析中的加载历史
** 定义载荷步
Step Definition
**First Load Step
*STEP,AMPLITUDE=RAMP
**关键词step表示开始分析,这里的关键词AMPLITUDE表示在 这步中如何施加载荷,AMPLITUDE=RAMP为平滑加载,AMPLITUDE=STEP为立即加载
*STATIC& **表示为准静态分析
**前面的数表示估计在这步中计算变形的初始时间增量,由于可以预计在这步变形为弹性变形,可以在这步结束时直接得到结果,不必更小的时间增量步,所以设定时 间增量等于步长。后面的数 指定这个载荷步的时间间隔,这里分析开始时t=0,结束时故间隔为 。
AMPLITUDE=HIST& ** 关键词DLOAD表示压力,其值为正,当为拉力时为负
EDGE, P2, -82.E06& ** 施加的拉力在单元集EDGE的面2上
为后处理输出过程数据文件
*EL FILE, POSITION=AVERAGED AT
NODES **其中POSITION=AVERAGED AT NODES目的是光滑曲线
*STEP,AMPLITUDE=RAMP
AMPLITUDE=HIST
EDGE, P2, -82.E06
FILE, POSITION=AVERAGED AT NODES
**Third load step
*STEP,AMPLITUDE=RAMP
AMPLITUDE=HIST
EDGE, P2, -82.E06
FILE, POSITION=AVERAGED AT NODES
转载本文请联系原作者获取授权,同时请注明本文来自潘超科学网博客。链接地址:
上一篇:下一篇:
当前推荐数:1
评论 ( 个评论)
扫一扫,分享此博文
作者的其他最新博文
热门博文导读
Powered by
Copyright &教你学会看&写 input 文件 - 简书
教你学会看&写 input 文件
本文将会涉及到以下内容:
inp 文件的功能和作用(你是否真的需要继续阅读此文)
如何读懂 inp 文件 (inp 文件结构解析)
如何编写 inp 文件(在 manual 的帮助下完成 inp 的编写)
如何使用 inp 文件(命令行 / CAE 提交作业 + 从 inp 文件导入模型)
边阅读便翻看手册
找出自己最近做过的题目,打开相应的 inp 文件进行比对
对于新手,完成阅读大概需要两个小时。
input 文件对于 ABAQUS 来讲是 native 的,因为在最初是没有 CAE 界面的,分析人员就只能把 input 提交给ABQ。这一历史就导致了目前一个比较常见的问题——某些关键字在 CAE 中无法使用。当然了,这只是部分原因,还有其他因素决定了 CAE 界面无法完全代替 inp 文件。
1. 什么是 inp 文件? 我需要了解它吗?
input 文件顾名思义就是用来输入信息的,是向 abaqus 的求解器提交信息的,提交 input 然后得到 output (通常是 .odb 文件)。不管我们使用什么方式来建立模型(也就是通常所说的前处理),最后要计算的时候都是使用一个叫做求解器的模块来进行的。通常我们对一款有限元软件的评价很重要的一方面就是求解器,我们大家都知道 ABAQUS 的非线性能力很强,其实就是他的非线性求解器很霸气。有点远了,回过来继续说 inp 文件。
inp 文件是我们向 ABAQUS 提交 job 的直接对象,无论通过什么方式进行提交都是直接把 inp 文件呈递给
ABQ (ABQ 在收到 job 任务之后会对 inp 进行预处理,本文不会涉及此部分内容)input 文件包含了 几乎 所有的模型信息,包括模型的定义和求解以及输出要求。尽管 inp 如此重要,但是一般来讲我们是没有必要了解它的。因为对于很多工作,我们压根不需要碰这个文件,而且实际的情况是很多不了解它的人也能够做有限元分析。就像我们使用计算机却不必掌握计算机工作原理一样;但是当我们知道的足够多的时候很多东西变得简单明了。试想某一天你的电脑无法进入系统了,那么当你了解的足够多的时候你就可以清楚的知道是内存掉了,还是主板坏了,还是系统引导失败了。。。。。。
input 的重要还远不止于此,本文开篇就提到 input 对 Abaqus 来讲是 native 的,并且 CAE 中某些关键字是不能够使用的,而这些都只能交给 input 来做。
可以毫不含糊地讲,不会写 input 的厨师长都不是好司机。
对于那些没有清楚的编程概念的读者,我需要声明并且强调一下:写 inp 不是编程,也不是在写脚本。inp 只是为 ABQ 的求解器提供输入数据,我们写程序的时候经常需要读入外部文件,inp 就是这个角色——输入文件而已。
我在前面也提到了“ABQ 的预处理”,在这里稍微解释一下:将 input 中的数据结构(关键字 + 数据行)进行一些整理(按照 ABQ 事先约定的套路进行解释)然后传递给求解器(求解器就是解方程组用的),inp 就是一个传话的,我们想要让求解器干什么写在 inp 里面就行了(当然,远不止于此)。有一个非常明显的现象表明这个过程是确实会发生的,看一下面这个图,是不是很熟悉(或许你从来没有关注过这一部分的信息)。
这两个界面你熟悉吗?
inp 文件基础
Abaqus 的 doc 做的很好,至少有两个地方是可以参考的
其中最基础的一个藏的地方比较隐蔽,在文档
1.2.1 Input syntax rule 和 1.3.1 Defining a model in Abaqus,专门用来解释 input 文件的格式。
另一个就是在编写 input 时候必须要参考的
2.1. inp 文件的组织结构
An analysis in Abaqus is defined by an input file, which
contains keyword lines and data lines; and
is divided into model data and history data.
摘自 1.3.1 Defining a model in Abaqus
预处理器读取 inp 文件时候,总需要一些规则吧,我们自己写程序进行 I/O 操作的时候不同样要指定一些规则吗?正所谓“无规矩不成方圆”,inp 必须遵守 ABAQUS 制定的规则。
这个地方没什么好解释的,接着往下看吧。
2.1.1. inp 文件中的标记(功能属性)
input 文件是
纯文本格式的,可以使用任意的文本编辑器打开。当我们打开一个 inp 文件的时候会看到有三种不同的行。而这三种行分别从 功能 上对应着:
注释以 ** 开始而且两颗星号必须占据前两列(因此不允许在某一行的后面进行注释)
关键字以 * 开始,后面可以(有些是必须)跟参数
数据前面则没有任何标识。另外 需要注意的是 input 文件中不允许出现空行(文件最后有一个空行,但是这个不影响,因为这个不会被读取到)
2.1.2. inp 文件的结构划分(内容属性)
从 内容 上来讲,如我们上面所说,分为 model 和 history。
model 包含了 node, element, material, initial condition 等信息
history 包含了 analysis type, loading, output requests 等信息
上面对两个部分必须包含的内容(在手册中以 required 进行标识)进行了加粗显示,也就是说一个完整的、正确的、可以被预处理器所接受的 inp 文件至少是应该包括这些信息的。至于具体某一个关键字是属于 model 还是 history,要参考
的具体的条目,这些条目都以首字母排序出现在手册中。2.2. inp 文件书写规则
2.2.1. 关键字行
关键字行的基本规则:
关键字行以星号(*) 开头(其前面允许带空格,但是我个人不建议这么做)
如果关键字带有参数, 那么用分隔符 (此处是逗号 ,) 将两者隔开,如果参数带有值(value)使用赋值符号 (此处是等号 =) 为其赋值
如果某个关键字带有多个参数,各个参数之间加上分隔符 (此处是逗号 ,)
额外注意事项:
不允许在一行中同时出现多次相同的参数
所有关键字和参数都是 大小写不敏感的,你可以根据自己的习惯选择大小或者小写,甚至是混写
通常来讲,参数的值也是大小写不敏感的,所以不要试图以不同大小写的形式来为参数取得不一样的值
关键字、参数、以及多数情况下参数的值 不必完全拼写出来(但是不建议这么做)
关键字行是以逻辑行进行识别的,续行在行末使用逗号 (,),因此避免关键字行行末多余的逗号
关键字行的长度限制为256个字符,包括空格在内(尽管空格在关键字行中不起作用,只是视觉上的帮助而已)
关键字的依赖和群组,很遗憾在手册中并没有指出哪些关键字之间有依赖关系
2.2.2. 数据行
首先声明,数据不一定是数字,也可以是字符串、内部变量等
基本规则:
数据行在语义上和逻辑上都从属于关键字行,没有单独的数据行
同一个逻辑行的数据之间以用分隔符进行隔断(此处是逗号 ,)
浮点数、整数、字符串都有各自对应的长度限制(基本不用考虑,很少能达到限制的长度)
数据行到底怎么写,这要看他的关键字(及其参数)。因为 没有独立的数据行
2.3. 最特殊的关键字 *heading
这个关键字特殊就特殊在每一个完整的 input 文件几乎都是以他开始的,这个关键字没有任何参数,他的数据行没有固定的格式,你可以写任意多行的数据,但是只有第一行的前 80 个字符起作用,这些字符将会显示在 OBD 的“Title Block”(默认位置在窗口下方,以左对齐方式显示)中,其他的只能自己看看。这个其实对应着 CAE 中的 job 编辑器的 description 栏。此处我们将展示出文本的第一个实例,该例题来自于
&& 。注意: title block 的第二行太长而特意拆分成了多行显示
*heading 关键字和 ODB 的 title
我们可以看到*heading 和 *restart(即第二个关键字行)之间的部分全部为 *heading 的数据。而且只有第一行被写入了 ODB 的 title。
对这个关键字想要说明的是,你可以在这里写一些注释性的东西,就像这个例子一样,当我们时隔多日在看到这个文件的时候能够看一眼就知道他是干什么的。本例中 heading 区的内容包含:
inp 文件名称;
该分析的作用(目的);
分析步的定义;
模型的单位设置。
好了,这个关键字不再解释了。
3. inp 文件实例分析——从一个实用的角度出发
先放上一个 inp 文件,这个是一个顶点在 (0,0,0)
的立方体,楞长是20 mm,划分了1个 3D 8 节点单元,并且使用了减缩积分。定义了一个静力分析步,所有设置均为默认。定义了一个固定约束的边界条件。
** Job name: demo Model name: Model-1
** Generated by: Abaqus/CAE 6.13-4
*Preprint, echo=NO, model=NO, history=NO, contact=NO
*Part, name=Part-1
*Element, type=C3D8R
1, 5, 6, 8, 7, 1, 2, 4, 3
*Nset, nset=Set-1, generate
*Elset, elset=Set-1
** Section: Section-1
*Solid Section, elset=Set-1, material=Material-1
** ASSEMBLY
*Assembly, name=Assembly
*Instance, name=Part-1-1, part=Part-1
*End Instance
*Nset, nset=Set-1, instance=Part-1-1
3, 10, 11, 12, 19, 20, 21
*Elset, elset=Set-1, instance=Part-1-1
1, 2, 5, 6
*End Assembly
** MATERIALS
*Material, name=Material-1
210000., 0.3
******************************************************************
** STEP: Step-1
*Step, name=Step-1, nlgeom=NO
1., 1., 1e-05, 1.
** BOUNDARY CONDITIONS
** Name: BC-1 Type: Symmetry/Antisymmetry/Encastre
Set-1, ENCASTRE
** OUTPUT REQUESTS
*Restart, write, frequency=0
** FIELD OUTPUT: F-Output-1
*Output, field, variable=PRESELECT
** HISTORY OUTPUT: H-Output-1
*Output, history, variable=PRESELECT
3.1. inp 文件结构解析
把上面这个 input 文件的结构列一下就是这样的(为了显示嵌套关系进行了缩进处理),这个结构很清晰了吧。
inp 文件结构解析
对新手来讲可能这个还有点看不明白,那我就用下面这个图解释一下吧。
inp 文件结构解释
然而细心的你可能已经发现 history 部分漏掉了一个 *restart 以及一个 *output,不过事实是“并没有这么简单”。这两个关键字都是有意略掉的。
*restart 写在 model 部分或者 history 部分没有影响,实际上我更喜欢写在 *heading 下面
*output 其实对于 inp 的完整性来讲是非必需的{但是从我们计算本身的意义来看是极其重要的}
3.2. 庖丁解牛——关键字实例分析
明白了 input 文件的结构之后我们来抽取出几个关键字仔细分析。
在这一部分,还会细致地简讲解如何使用 keywords manual查阅 manual 是编写 inp 文件必不可少的步骤,而且 manual 是最权威的
3.2.1. model 部分的 *elset
打开关键字手册,直接查找到 *elset,由于都是按照首字母进行排序的,非常好定位。
关键字 *elset
parameter.PNG
dataline.PNG
教你看懂 manual
第一行为该关键字,注意关键字也可以是多个单词,此处为 *elset
第二行用一个没有主语的短句简单明了的说明了该关键字的作用,此处是“设置/创建单元集合”,多数情况下第三行是第二行的细致版本,例如有些关键字在这里指出必须和哪个关键字合用,还有些关键字在此处指出应该学习哪一个章节等
product:适用范围,例如有些是隐式分析才能用的,有些是显式分析独有的,有些仅适用于 Aqua 模块。。。。。。
type:按照 model 和 history 进行分类,有许多关键字是同时占有两个分类的
level:依附对象和从属关系
ABQ/CAE:GUI界面中对应的模块
Reference:很重要
parameters:分为两类,即 required (必备)和 optional (可选),从字面意思理解即可,每一个 parameter 下方都有简介
data line:数据行,数据行的具体要求都在这里列出来了,会针对每个具体的 parameter 给出其对应的 data 格式
接下来针对每一个参数进行解释:
elset:单元集的名字(注意这是一个与关键字同名的参数),这个参数是必备的,也就是关键字 *elset 后面必须要跟这个参数,另外这个关键字是有值的(必须赋值)。说如果我们想要定义一个叫做 demo 的单元集,那么 关键字行就是 *elset, elset = demo
generate:这个参数表示单元集中的单元编号将会采用自动生成等差数列的方式。等差数列没什么好说的,给定首项和末位数以及公差即可。
instance:该 单元集 所属的 instance,这也是一个有值的参数
internal:这个是 CAE 控制的,如果自己写 inp 文件用不着。
unsorted:从字面理解即可“就是不排序,不整理”,as is,后面还解释道,如果不添加该参数那么所创建的单元集中的单元编号都是按照升序排列的(无论你在数据行是以什么样的顺序给出)
数据行和参数(及其值 )是紧密联系的,后者的设置往往直接决定了数据行怎么写。来看看此处的数据行(图 dataline.PNG)吧。此处的数据行分了两种情况:
generate is ommited
if generate is included
不妨先看后者吧,比较简单一点。就是一个等差数列,第一行必须是三个数据,如果有需要就重复第一行的格式接着写,而数据行的行数没有限制。例如的 单元集 demo 要包含 58~175, 200~350(仅取偶数标号),500~550(每10位取一个) 号单元,那么
*elset, elset = demo, generate
58, 175, 1
200, 350, 2
500, 550, 10
提示一下:根据关键字及其参数的规则,generate 完全可以写成 gen。
再来看一下 使用 generate 参数时候对应的数据行。第一行 把单元标号列出来就可以了,最多16个,但是你的单元集可能往往多余16个,没关系,重复第一行的格式跟着写。除了直接写单元标号之外也可以写 子单元集 的名字,也就说说我们前面 已经定义过的 单元集可以包含进来(原先的单元集仍保持不变)。假设我们要建立单元集 demo 中包含 subelset1 和 subelset2 两个单元集
*elset, elset = demo
subelset1, subelset2
DEMO-elset
注意事项:
单元集 demo 在定义的时候使用了sub1 和 sub2,并且还有额外的指定单元
sub1 包含 6~40 的偶数号单元,共计18个单元
sub2 包含60、65、70、75、80 共计5个单元
demo 中以标号给出的单元是 1,4,1,由于 1号单元重复只计一次。demo中共包含 18 + 5 + 2 = 25 个单元
如果 demo 的定义中,使用 generate 参数,那么1~4 号单元将会被使用,而 sub1, sub2 会排除,因为 此时的数据行并不支持 单元集 的 label(支持的 单元集 label 的情况是不实用 generate 参数)
更多情况自行验证
3.2.2. history 部分的 *boundary
该关键字内容太多,不可能向前面一个关键字一样讲得那么完整。另一方面,doc 中涉及的方方面面我们能用到的太少了,所以也没有完全了解的必要。实用主义该关键字包含 三大类参数(包含 空参数)和五大类 dataline(大类里面还有小类。。。。。。)。
keyword--*boundary
我们来看一下如何通过 inp 修改边界条件。回到第一个案例(立方体模型),我们原先设置的是固定约束条件,现在想改为仅仅约束2~3两个自由度,而第一个自由度为指定位移 1 mm。(由于是实体应力单元没有更多的 DOF)。
** ------------------------------------ original
Set-1, ENCASTRE
** ------------------------------------ modified
*boundary, type = displacement
set-1, 1, 1, 1
set-1, 2, 3, 0
在改写的版本中数据行第一行表示 DOF1~1,即 DOF1,1 个单位的 displacement(单位需要全局统一,本例为 mm)数据行第二行表示 DOF2~3施加值为0的位移,也就是限制了y/z方向的位移。而这两行数据他们的作用对象都是 set-1(这是一个节点集)
此部分改写依据的参数和数据行如图:
info for BC
至于如何从众多的参数和数据行类型中选取,没有什么好方法,这个需要一定的软件使用经验。
继续来看这个关键字的其他部分,在图 keyword--*boundary (我的每个图下方都是有标题的)中左下角分页的顶部看到 Optional, mutually exclusive parameters 这些就是互斥参数,在脚注10中已经解释过。 在上方第二个分页上存在 参数user,这是使用子程序时候用的。接下来的一节中就会讲到 inp 引用外部文件。
3.3. input 引用外部文件
3.3.1. 子程序
inp 引用外部文件的第一种情形在上一节结束时提到了——子程序,关于子程序的知识请参考 doc。
需要强调一下目前很多人对 fortran 程序的一些基本概念不清楚,例如 f77和固定格式你真的了解吗?(不管你是编写 fortran 程序的高手还是打算学习但未入门的新手,请移步 。)
3.3.2. 单元/节点 数据
在第一个例子中,我仅仅给整个模型划分了1个网格,而这一个网格拥有8个节点。如果模型中的网格数量巨大,inp 文件将会变得非常大,行数可能达到上百万行。这时候别说是编写或者查看 inp 了,就是打开一下可能对于某些机器上的某些编辑器(比如 Windows 上的记事本)就是非常艰巨的任务。ABQ 提供了这样一种机制就是允许使用 *include 关键字或者 inp 参数引入外部文件。doc 中的例题多数会采用这样的方式,将数量众多的单元和节点放入一个单独的文件中。
有两种方法可以使用:
, nset = all_node, inp = node.inp
, input = node.inp
inp 参数后面的 inp 文件里面仅仅包括 *node 的数据行(节点编号及其坐标)这个 inp 文件是这么写的:
1, 20., 20., 20.
2, 20., 10., 20.
最后允许出现空行
*include 关键字后面的参数是 input,他后面的 inp 文件是完整的节点定义(带有关键字行)这个 inp 文件是这么写的:
1, 20., 20., 20.
2, 20., 10., 20.
把 *include 理解为复制粘贴比较简单一些,而其作用也正是如此。而 inp 参数就不一样了,他的作用不仅仅是复制粘贴,他所复制过来的内容要作为当前关键字的数据行。
4. inp 文件怎么用?
对于很多仅仅使用 CAE 的用户,他们可能根本没注意过 inp 的存在。实际上 inp 是非常方便和快捷的建模手段,而且很灵活。另一方面 inp 是纯文本,纯文本的好处就是走哪带哪,基本上没有什么限制,不必使用专用软件打开(想想 docx,xlsx,pptx,psd,eps ...)【题外话,又绕远了】。另一方面 inp 的体积比较小的(尽管有时候高达上百MB),各个版本之间的兼容性(其实涉及到关键字)很好,而 cae 文件这方面不具有优势的。我们平常使用 CAE 来进行的那些操作怎么用 inp 来代替呢? 或者说 inp 还能提供哪些我们在 CAE 下所不能完成的任务呢? 我们一起来看看吧。
快速修改模型如 BC (改变一下约束方式) /load (载荷大小方向等) /output request (修改,增删) /materials‘ properties (不就是改几个数字吗)/step/restart (r/w/rw) /interactions /...
(从命令行和CAE)提交 inp 作业或许你还不知道可以直接提交 inp 作业,但是确实是可以的,而且很方便。最简单的方式就是 命令行提交 abaqus job=fileBaseName int cpus=40, 不过我喜欢直接指明版本号,例如我用的是 v6.13-4,那么 abq6134 job=fileBaseName int cpus=40。这两个命令的意思就是 提交名称为 fileBaseName 的 inp 文件进行计算,并且使用40个cpu以交互模式来运行。所谓交互模式就是在命令行会反馈一些信息,例如 隐式分析中的日志文件会带印在窗口上,显式分析的 日志文件和状态文件 会打印在窗口上。关于命令行中各个选项的使用,参考:分析手册 3.2.2. 在 CAE 中 提交 inp 作业的方法:创建 job 时候选择作业来源为 inp 文件。(这个界面上 摁 F1 就知道了,写的很清楚)
从 inp 读取模型如果我们有一个 inp 文件能不能看一下模型长什么样子呢? 完全可以,现在你已经知道可以提交这个 job 呀,得到 odb 文件就行了。当然了,不运行 job 也是可以的。通过 file && import && model (file type = inp) 或者在 模型数的 Model节点上看右键菜单。如果幸运的话那么你得到了完整的 模型,但是很多时候真的没那么幸运,由于部分关键字的不支持,或者是 inp 文件不完整(是那只是 inp 文件里面有错误,格式不正确等等)不管怎么样,导入之后先看窗口下方的提示信息,这个地方很重要。
inp 片段除了导入完整的 inp 文件得到模型之外,也可使用 inp 片段来存储一些常用数据代替繁琐的手动输入(手动输入很多数据是很容易出错的)。例如你可以将常用的 Material / Section 保存在 inp 文件中,通过上面介绍的方式导入模型。不过呢,针对这个功能我更建议使用 python 来处理,而且不用我们写代码,我们在 CAE 操作的时候录制 宏 即可。录制的宏都保存在硬盘上(可以选择 主目录 或者 工作目录),都能干需要重复操作的时候运行宏即可。你可以对录制好的宏进行任意的修改(File&& Macro Manager 可以管理 宏,录制和播放都在这里)
在不同的有限元之间交换模型数据比如 abaqus to nastran,abaqus from ansys,这部分内容我没了解过,有兴趣的可以参考分析手册 ,不过有一点我是可以肯定的,这些都是用命令行来执行的,所以有必要了解命令行基础。
5.最后说点啥呢
学习 inp 是为了更好的建模,一切不从实用角度出发的 inp 都是不可取的
inp 是为了提高建模效率,如果做不到这一点,请果断使用 CAE(或者 python),正所谓条条大路通罗马
不管有没有吸收本文的内容,请记住最基本的一点 inp 不是一种语言
还有什么要补充的吗?欢迎留言探讨,若有错误,请一定指出来。
仔细阅读完本文之后你一定发现手册是这么强大的工具,有什么理由不安装手册呢?硬盘空间真的不够吗?才两个G而已。
手册分为 HTML 和 PDF(受保护) 两种版本,建议完全安装。两者不可互相替代。
[1]:有时候我们还需要到用户子程序,那么 inp 就不是完整的
[2]:本文中 Documentation 具体基于 v6.13-4,其他 版本具体编号可能有些许差异。
[3]:实际上对于常见的分析是这样的,某些特殊分析不遵守这样的规则,如果有兴趣,可以翻看例题手册中关于轮胎的部分。
[4]:既然说的是通常,那么就肯定有例外。这里有一个例外是参数的值是一个外部文件,而同时我们又工作在一个对大小写敏感的机器上(比如 Linux)
[5]:例如关键字 *material 的参数 name 的值就是字符串,abc 和 ABC 显然是两个不同的字符串,但是我们不能用这样的方式定义命名两种材料,你试试在 CAE 中允许你这么干吗?
[6]:不用完全拼写出来的前提是已经提供的字符可以唯一确定这些 keyword,parameters,values,但是这些我们可能根本不确定。
[7]:只计算不输出这不是在做无用功吗?
[8]:某些关键字解释的不是很到位,比如此处的 “assign elements to an elset”,看上去像是把一堆单元加入到某个(已经存在的)单元集中,但实际上是建立单元集合,而单元集合的建立需要指定单元。
[9]:准确来讲就是 CAE(Complete Analysis Environment), 而不限于 GUI。注意 CAE 也可以没有界面(GUI)
[10]:optional 类型的可能会遇到 “**Optional, mutually exclusive parameters**” 即“互斥的”。这时手册会同时给出一组参数,这些参数可能一个都用不上,但是如果要用,只能用一个(因为这些参数从语义或/和功能上是互斥的)。
[11]:但是需要知道的是,每一个被导入的 inp 文件都会创建一个 新的 Model。因此 你所导入的材料或者界面并没有导入你正在操作的模型。如果要把这些信息导入你当前工作模型,那么使用 model copy 功能即可,可以从模型树上 model 节点操作,或者菜单 model 操作。
Lifelong endeavor makes a genius!
永远有学不完的新知识。
所有内容均为笔记性质,天马行空。
23 Apr., 2016 我加入了简书的写作队伍,从此写作成为乐趣;
27 Apr., 2016 网友喜欢了我的文章;
1 May., 2016 我收到了第一份关注;}

我要回帖

更多关于 abaqus 罚函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信