第一篇:ABAQUS单元小结
ABAQUS单元小结
1、单元表征
单元族:单元名字里开始的字母标志着这种单元属于哪一个单元族。C3D8I是实体单元; S4R是壳单元; CINPE4是无限元; 梁单元; 刚体单元; 膜单元;
特殊目的单元,例如弹簧,粘壶和质量; 桁架单元。
自由度dof(和单元族直接相关):每一节点处的平动和转动 1 1方向的平动 2 2方向的平动 3 3方向的平动 4 绕1轴的转动 5 绕2轴的转动 6 绕3轴的转动 开口截面梁单元的翘曲 8 声压或孔隙压力 9 电势 度(或物质扩散分析中归一化浓度)12+梁和壳厚度上其它点的温度 轴对称单元 r方向的平动 2 z方向的平动 6 r-z方向的转动
节点数:决定单元插值的阶数
数学描述:定义单元行为的数学理论
积分:应用数值方法在每一单元的体积上对不同的变量进行积分。大部分单元采用高斯积分方法计算单元内每一高斯点处的材料响应。单元末尾用字母“R”识别减缩积分单元,否则是全积分单元。
ABAQUS拥有广泛适用于结构应用的庞大单元库。单元类型的选择对模拟计算的精度和效率有重大的影响;
节点的有效自由度依赖于此节点所在的单元类型;
单元的名字完整地标明了单元族、单元的数学描述、节点数及积分类型; 所用的单元都必须指定单元性质选项。单元性质选项不仅用来提供定义单元几何形状的附加数据,而且用来识别相关的材料性质定义;
对于实体单元,ABAQUS参考整体笛卡尔坐标系来定义单元的输出变量,如应力和应变。可以用*ORIENTATION选项将整体坐标系改为局部坐标系;
对于三维壳单元,ABAQUS参考建立在壳表面上的一个坐标系来定义单元的输出变量。可以用*ORIENTATION选项更改这个参考坐标系。2.实体单元(C)实体单元可在其任何表面与其他单元连接起来。C3D:三维单元
CAX:无扭曲轴对称单元,模拟3600的环,用于分析受轴对称载荷作用,具有轴对称几何形状的结构;
CPE:平面应变单元,假定离面应变ε33为零,用力模拟厚结构; CPS:平面应力单元,假定离面应力σ33为零,用力模拟薄结构; 广义平面应变单元包括附加的推广:离面应变可以随着模型平面内的位置线性变化。这种数学描述特别适合于厚截面的热应力分析。
可以扭曲的轴对称单元:用来模拟初始时为轴对称的几何形状,且能沿对称轴发生扭曲。这些单元对于模拟圆柱形结构,例如轴对称橡胶套管的扭转很有用。
反对称单元的轴对称单元:用来模拟初始为轴对称几何形状的反对称变形。适合于模拟像承受剪切载荷作用的轴对称橡胶支座一类的问题。
如果不需要模拟非常大的应变或进行一个复杂的,改变接触条件的问题,则应采用二次减缩积分单元(CAX8R,CPE8R,CPS8R,C3D20R)
如果存在应力集中,则应在局部采用二次完全积分单元(CAX8,CPE8,CPS8,C3D20等)。
对含有非常大的网格扭曲模拟(大应变分析),采用细网格划分的线性减缩积分单元(CAX4R,CPE4R,CPS4R,C3D8R等)
对接触问题采用线性减缩积分单元或非协调元(CAX4I,CPE4I,CPS4I, C3D8I)的细网格划分。
如果在模型中采用非协调元应使网格扭曲减至最小。三维情况应尽可能采用块状单元(六面体)。当几何形状复杂时,完全采用块体单元构造网格会很困难,因此可能有必要采用稧形和四面体单元,但尽量少用,并远离需要精确求解的区域。
一些前处理程序包括网格划分方法,它们可用四面体单元构造任意形状的网格。只要采用二次四面体单元(C3D10),其结果对小位移问题应该是合理的。
小结:
在实体单元中所用的数学公式和积分阶数对分析的精度和花费有显著的影响;
使用完全积分单元,尤其是一阶(线性)单元,容易形成自锁现象,正常情况不用;
一阶减缩积分单元容易出现沙漏现象;充分的单元细化可减小这种问题; 在分析中如有弯曲位移,且采用一阶减缩积分单元时,应在厚度方向至少用4个单元;
沙漏现象在二阶减缩积分单元中较少见,一般问题应考虑应用这些单元; 非协调单元的精度依赖于单元扭曲的量值;
结果的数值精度依赖于所用的网格,应进行网格细化研究以确保该网格对问题提供了唯一的解答。但是应记住使用一个收敛网格不能保证计算结果与问题的实际行为相匹配:它还依赖于模型其他方面的近似化和理想化程度;
通常只在想要得到精确结果的区域细划网格; ABAQUS具有一些先进特点如子模型,它可以帮助对复杂模拟得到有用的结果。
3.壳单元(S)可以模拟有一维尺寸(厚度)远小于另外两维尺寸,且垂直于厚度方向的应力可以忽略的结构。
一般壳单元:S4R,S3R,SAX1,SAX2,SAX2T。对于薄壳和厚壳问题的应用均有效,且考虑了有限薄膜应变;
薄壳单元:STRI3,STRI35,STRI65,S4R5,S8R5,S9R5,SAXA。强化了基尔霍夫条件,即:垂直于壳中截面的平面保持垂直于中截面;
厚壳单元:S8R,S8RT。二阶四边形单元,在小应变和载荷使计算结果沿壳的跨度方向上平缓变化的情况下,比普通单元产生的结果更精确;
对于给定的应用,判断是属于薄壳还是厚壳问题,一般:如果单一材料制造的各向同性壳体的厚度和跨度之比在1/20-1/10之间,认为是厚壳问题;如果比值小于1/30,则认为是薄壳问题;若介于1/30-1/20之间,则不能明确划分。由于横向剪切柔度在复合材料层合壳结构中作用显著,故比值(厚跨比)将远小于“薄”壳理论中采用的比值。具有高柔韧中间层的复合材料(“三明治”复合材料)有很低的横向剪切刚度并且几乎总是被用来模拟“厚”壳;
横向剪切力和剪切应变存在于普通壳单元和厚壳单元中。对于三维单元,提供了可估计的横向剪切应力。计算这些应力时忽略了弯曲和扭转变形的耦合作用,并假定材料性质和弯曲力矩的空间梯度很小;
壳单元可以使用每个单元的局部材料方向,各项异型材料的数据,如纤维增强复合材料,以及单元输出变量,如应力和应变,都按局部材料方向而定义。在大位移分析中,壳单元上的局部材料轴随着材料各积分点上的平均运动而转动;
线性、有限薄膜应变、四边形壳单元(S4R)是较完备的而且适合于普通范围的应用;
线性、有限薄膜应变、三角形壳单元(S3R)可作为通用的壳单元来应用。由于在单元内部近似为应变场,精细的网格划分可用于求解弯曲变形和高应变梯度;
考虑到在复合材料层合壳模型中剪切柔度的影响,将采用“厚”壳单元(S4R,S3R,S8R)
四边形或三角形的二次壳单元,用于一般的小变形薄壳是很有效的。它们对剪力自锁和薄膜锁死是不敏感的;
在接触模拟中不用选用二阶三角形壳单元(STRI65),要采用9节点的四边形壳单元(S9R5);对于仅经历几何线性行为的非常大的模型,线性、薄壳单元(S4R5)一般将比通用壳单元花费更少;
小结:
壳单元的横截面特性可以由沿厚度方向的数值积分确定(*SHELL SECTION),或在分析开始时应用计算的横截面刚度(*SHELL GENERAL SECTION);
*SHELL GENERAL SECTION是非常有效的,但仅用于线性材料,*SHELL SECTION可用于线性和非线性材料;
数值积分在沿壳厚度方向的一系列积分点上进行。这些积分点就是单元变量可以被输出的位置。最外层的积分点位于壳单元的表面。
壳单元法线方向决定了单元的正和负表面,为了正确地定义接触和解释输出数据,必须知道其对应的是哪个面。壳法线还定义了施加在单元上正压力载荷的方向,并可以在ABAQUS/Post中画出;
壳单元利用材料方向局部化到每个单元。在大位移分析中,局部材料轴随单元而转动。*ORIENTATION被用来定义非默认的局部坐标系统。单元的变量,如应力和应变,在局部方向输出;
*TRANSFORM定义节点的局部坐标系,集中载荷和边界条件被应用在局部坐标系中。所用节点的输出,如位移,也默认为基于局部的坐标系;
矢量图可以使模拟结果可视化,特别是用来观察结构的运动和载荷路径。
4.梁单元(B)
模拟一维尺寸(长度)远大于另外二维尺寸的构件,且只有长度方向上的应力比较显著。
对于包含接触的任何模拟,应使用一阶、剪切变形的梁单元(B21,B31)如果结构刚度非常大或者非常柔软,在几何非线性模拟中应当使用杂交梁单元(B21H,B32H,等)
使用欧拉-伯努利(三次)梁单元(B23,B33)精度很高,可模拟承受分布载荷作用的梁,例如动态振动分析。如果横向剪切变形也很重要,要使用铁摩辛柯(二次型)梁单元(B22,B32)
模拟有开口薄壁横截面的结构,应当使用考虑了开口截面翘曲理论的梁单元(B31OS,B32OS)
小结:
梁单元的性质由截面(*BEAM SECTION或*BEAM GENERAL SECTION)的数值积分决定,或直接给出截面积、惯性矩和扭转常数(*BEAM GENERAL SECTION);
当使用*BEAM GENERAL SECTION选项时,模拟开始时进行一次数值积分,并且假定材料是弹性的;
ABAQUS包括大量的标准横截面形状。其它形状可以通过定义SECTION=ARBITRARY来模拟;
必须定义横截面取向,方法是通过给出第三个节点,或者在单元性质定义中定义一个矢量。截面取向在ABAQUS后处理中可以画出;
当梁作为壳的加强构件使用时,梁的横截面可能偏离节点;
线性和二次型包含剪切变形的影响,三次型梁不考虑剪切柔度。开口截面梁准确地模拟了扭转和薄壁开口截面翘曲(包括翘曲约束)的影响;
多点约束和约束方程可以用来连接模型中铰接、刚性连接等节点的自由度;
“弯矩”型图使得像梁这样的一维单元的结果很清楚地表示出来; ABAQUS后处理图的硬拷贝可以得到PostScript和HPGL的格式。
5.桁架单元(T)
只能承受拉伸和压缩载荷的杆,不能承受弯曲,模拟铰接框架结构,近似模拟线缆和弹簧。
6.刚体单元(R)
没有独立的自由度。7.非线性分析
小结:
结构问题中存在着三种非线性来源:材料、几何和边界(接触)。这些因素的任意组合都可以出现在ABAQUS的分析中;
几何非线性发生在位移量值影响结构响应的情况下。这包括大位移和转动效应、突然翻转和载荷硬化;
非线性问题是利用牛顿-拉弗森方法来进行迭代求解的。非线性问题比线性问题所需要的计算机资源要高许多倍;
非线性分析步被分为许多增量步。ABAQUS通过迭代,在新的载荷增量结束时近似地达到静力学平衡。ABAQUS在整个模拟计算中完全控制载荷的增量和收敛性;
状态文件允许在分析运行时监控分析过程的进展。信息文件包含了载荷增量和迭代过程的详细信息;
在每个增量步结束时可以保存计算结果,这样结构响应的演化就可以用ABAQUS/Post显示出来。计算结果也可以用x-y图的形式绘出。
8.材料
小结:
ABAQUS包含一个广泛的材料库,可模拟各种工程材料的性质。其中包括金属塑性和橡胶弹性模型;
金属塑性模型的应力-应变数据必须用真实应变定义; 金属塑性模型假定材料具有一旦屈服即不可压缩的性质。这将对应用于弹-塑性模拟的单元类型带来某些限制;
多项式和奥根应变能函数可应用于橡胶材料的弹性(超弹性)。两种模型均允许直接用实验数据来确定材料的系数。实验数据必须是名义应力和名义应变的值;
在超弹性材料模型中的稳定性警告,说明所要分析的应变范围不合适; 存在对称性时,可以只考虑部分模型从而减小模拟的尺寸。可通过施加适当的边界条件来反映结构其余部分的效应;
大畸变问题的网格设计比小位移问题更加困难。在分析的任何阶段,网格中的单元务必不能过于畸变;
ABAQUS/Post中的*DEFINE CURVE命令允许处理曲线上的数据以生成新的曲线。两条曲线或一条曲线与一个常数可以加、减、乘、除。曲线还可以求导、积分和合并。
9.动态问题
具有下列特征的问题适于采用线性瞬态动力学分析:
系统是线性的:线性材料行为,无接触条件,无非线性的几何效应; 响应只受较少的频率支配。当响应中各频率成分增加时,例如撞击和冲击情况,振型叠加方法的效果将大大降低;
载荷的主要频率在可得到的固有频率范围内,以确保对载荷的描述足够精确;
由于任何突然加载所产生的初始加速度能用特征模型精确描述; 对系统的阻尼不能过大。小结:
动态分析包括结构的惯性效应;
*FREQUENCY可以计算结构的固有频率和振型;
通过振型叠加,可以确定线性系统的动态响应。这一方法尽管有效,但是不能用于非线性问题;
线性动态过程可以计算瞬态载荷的瞬态响应、谐振动下的稳态响应、支座移动造成的响应峰值和随机载荷的响应;
为了准确表示结构的动态行为,必须选择足够多的振型。总的等效模型质量应占可动质量的90%以上;
用户可以给定直接模态阻尼、瑞利阻尼和复合模态阻尼。但是由于固有频率和振型的计算都是基于无阻尼的结构,所以此法只适用于低阻尼结构;
模态技术不适用于非线性的动态模拟。在这种情况下必须采用自己的时间积分方法(*DYNAMIC)
*AMPLITUDE选项可以描述随时间任意变化的载荷,以及给定的边界条件; 振型和瞬态结果可以在ABAQUS/Post中用动画显示。这对于理解动态响应和非线性静态分析十分有帮助。
10.多步骤分析
小结:
一个ABAQUS模拟过程可以包含任意数目的步骤;
一个分析步骤就是一段“时间”,在这段时间里ABAQUS计算模型对一套指定载荷和边界条件的响应。这一步骤中所用的特殊分析过程确定了这个响应的特征;
在一个一般分析步骤中,结构的响应可能是线性的,也可能是非线性的; 每一个一般步骤的开始状态是上一个一般步骤的结束状态。这样,在一个模拟中模型的响应随一系列一般步骤而演化;
线性扰动步骤计算结构对扰动载荷的线性响应。这个响应的基本状态是相对于最后一个一般步骤结束时模型的状态所定义的;
在一般步骤中任何载荷选项里的OP参数(例如*BOUNDARY,*CLOAD和*DLOAD中)控制着这些选项中所指定的数值是如何与前面步骤中定义的数值相互作用的;
只要存储了一个重新启动文件就可以进行重新启动分析。重新启动文件可以用来继续一个中断的分析或者给模拟添加附加的载荷过程。11.接触
小结:
接触分析需要一个谨慎的逻辑方法。如果必要,将分析分解成几步执行,并缓慢地施加荷载,以保证很好地建立接触条件;
一般地,对分析的每一步最好采用分离步骤进行,即使只是因为载荷而改变边界条件。您几乎肯定要比预期情况应用更多的步骤,但模型则收敛得更容易。如果想一步就将所有的载荷加上,接触分析是难以完成的;
在对结构施加工作载荷之前,要在所有部件之间取得稳定的接触条件。如果必要,采用临时的边界条件,在以后阶段再消除这些约束。只要所提供的约束不产生永久的变形,对最后的结果应该毫无影响;
不用对接触面上的节点施加边界条件,即在接触方向上限制节点。如果有摩擦,不要在任何自由度上约束这些节点:可能导致零主元信息;
对于接触模拟,总要试图使用一阶单元。
第二篇:Abaqus遇到的问题小结
Abaqus遇到的问题小结
1.Abaqus量纲系统(SI):m、N、Kg、s、Pa、J、Kg/m。
2.有限元单元类型(Element Type):实体单元、壳单元、杆件单元(梁Beam、桁架Truss)3.Abaqus怎样将部件的不同部分设定为不同的子集?
3tools >partition cell/plane(如果是要分层使用,则进行分割,分别赋予不同的属性;或者对其中的单元进行设置Set;如果要在运算中替换则需要在关键词里添加语句定义)
4.建模的过程中输入的尺寸被自动降低精度(四舍五入),请问如何设置尺寸精度(小数点位数)?
在 sketch option里打开sketch模块(左下角最下面)打开sketchoption对话框,其中decimal places 表示小数点位数,默认为2,最高能调到6。
5.abaqus中出现,Dependent partinstancesconnot be edited,怎么办?
mesh on part , mesh on instance一个非独立实体只是原始部件的一个指针,可以对原始部件划分网格,但是不能对一个非独立实体划分网格,即mesh on part。
方法:左边模型树里面,Assembly->instances里面的子选项右击,点Make independent;或者点击model旁边的Part,对part进行网格划分。
6.材料属性中拉伸强度和压缩强度怎么定义?
计算结果有每个计算节点的应力,计算中用不到强度值(弹性力学三组基本方程不涉及强度,求解过程用不到)。(强度值是用来校核的:断裂,屈服或超过线性变形)
7.如何选择创建独立实体还是非独立实体?
如果集合中包含许多具有相同性质的部件,则创建非独立实体(Dependent)。反之,如果集合中包含许多不同性质的部件,则创建独立实体(Independent)要有优势些。
8.地基土的分层问题?
方法1:定义为一个part,然后partition分层赋材料属性,不需要设置接触。(超级赞!!)方法2:使用多个part,每个part单独定义属性。一般不用设置一些tie,各层间只有弹性模量相差较大时再在各层间定义tie。
9.tie捆绑约束。
tie功能很强大,可以模拟实体与实体,实体与壳体,壳体和壳体的连接,而且允许连接对象之间有距离。
在tie面板中,Position Tolerance位置容差是一个重要的参数。一般选择默认设置usecomputed default,abaqus会根据你要tie的对象的网格尺寸,自动选取个容差值,一般为网格基本尺寸5%。于是,连接对象之间,距离小于这5%容差值的节点便施加tie约束,也就是对应的两节点的自由度拥有一样的数值。
如果连接对象之间有距离怎么办?若还是用usecomputed default,则是无法起到tie约束效果的。这就要手动设置specify distance为一个适合的参数。这个值要大于连接对象对应节点之间的距离。若不是很确定,可以先设一个较大的值,计算完后在Visualization调出Node sets,观察tie实际起作用的节点区域。再对specify distance值进行调整。
在使用specify distance,需将Adjust slave surface initial position选项取消。否则abaqus会将两连接对象拉近,网格产生畸变,产生错误,中止计算!
10.abaqus怎么将模型分割画网格?
划分模型的时候有全局划分网格按钮,旁边有个局部划分网格按钮,(经常要用到partition技术),点它给需要另外划分的部分部种子,然后下面有按区域划分网格。全局划分网格和局部划分网格分别是mesh part和mesh region。
网格划分完毕之后,最好在verify中对其中质量不好的单元进行编辑处理,避免在job模块里面出现错误或警告信息。
11.边界条件设置在初始步还是后续的分析步中?
设置在initial。
12.interaction面选择不上?
在此模块里面,一般先定义相应的surfaces,并分别赋予有意义的容易识别的名字,如slavesurface、master surface,并选择接触面的正确方向,如果方向选择错误的话,经常在job模块中会出现无法收敛的错误信息。
13.通过ABAQUS计算得出的应力值不连续是什么原因造成的?
这主要是因为ABAQUS的应力和应变等单元变量值(相对位移等节点变量)的计算方式所引起的 这些单元变量值主要是通过单元内的高斯积分点计算得出,然后再通过外插值法计算出节点上的应力应变值,因此对于两个相邻单元共同占用的节点,从两个单元外插得出的值有时是不一样的。对于大多情况.如果网格足够密,高斯积分点上的值不会相差很大.所以可得到一个连续性比较好的结果另外可以通过设定平均值的临界值来决定contour的连续性(即legend下默认的75%)。比如说,如果同一节点扶不同单元得出的外插值相差75%以下(即较大的外插值减去较小的外插值的差乘以大值),那么contour输出这两个值的平均值。
同时需要注意的是,这个默认的75% 可以修改,如果设为0%.那么整个contour的单元间几乎都不连续,如果设在100%,那么整个图肯定是连续的。此外,还可以通过设定legend下的limit方式(即外插值或者是平均值)来控制最后的结果。
14.平衡地应力是出现An initial condition has been specified on element 0 but thiselement has not been defined?
是因为修改inp文件时,文件中有未删除的空行。
15.土体初始地应力平衡方法。
地应力平衡原理:平衡原理和屈服条件。目的:为了使数值模拟获得一个存在初始应力,而无初始应变的状态。
平衡地应力方法:
1.Autobanlance 2.*Initial Conditions,type=stress,Geostatic;(关键字定义初始地应力,只适合土体表面水平的土体,该方法需给出不同材料区域的最高和最低点的自重应力及其相应坐标)
3.*Initial Conditions,type=stress,input=xxx.csv;(初始地应力提取法,此方法最为通用,可用于不同材料、不同地形,适应性强。)
方法3的具体步骤: i.ii.iii.iv.v.在Abaqus中建立完整的模型,定义部件、截面属性、装配件、网格、边界条件等。单元类型使用的默认的线性缩减积分单元C3D8R。
在Step功能模块中创建分析步,将类型设为Geostatic。在Load功能模块中,为整个土体定义重力载荷(类型为Geostatic),并在Component3中输入-9.8。
在命令行输入:mdb.models['Model-1'].setValues(noPartsInputFile=ON);在Job模块中创建名为Job-NoInitialCondition的分析作业,提交分析。
将分析得到的应力场保存为一个文本文件。具体的方法为:打开分析得到的ODB文件Job-NoInitialCondition.odb,选择菜单Report---FieldOutput,选中Variable对话框中积分点上的各个应力分量(S11、S22、S33、S12、S13、S23);在Setup标签页,创建inp输出文件,并命名为XX.inp,不选Append to file和Column total 和column min/max。
用Excel修改输出的XX.Inp文件,删除inp文件中的所有叙述性文字和空格(例如若土体有N层,需找出N-1处文字性叙述的地方并删除),只保留数字结果,将数字间在顺序不变的前提下用逗号隔开,保存成csv以逗号隔开的文件形式XXX.csv。vi.vii.viii.为模型定义初始应力场。因在Abaqus中无法直接定义初始应力,只能手工添加关键词,具体做法:选中菜单Model---Edit Keywords,在*Boundary语句之后,*Step语句之前添加语句*Initial Conditions,type=stress,input=XXX.csv 在Job功能模块中定义Job-WithInitialCondition作业,提交分析,即得到所需要的结果。
16.Part模块建立刚体时一定要指定参考点referencepoint,在后面分析过程中的位移、载荷的施加都在施加在此参考点上的。刚体只有平动和转动,不会有变形,因此参考点的选择即可以在建立的rigid part上,也可以建立在其他你觉得方便的位置。
17.load模块,是施加载荷和位移边界条件的,先对要施加载荷和边界条件的面、线、节点等建立set,再对相应sets分别设置。在施加载荷的时候,注意载荷的方向性,另外此模块也可以施加自定义载荷、predifined field等。
18.abaqus结果显示时数据太小看不清楚怎么办?
Viewport-->Viewport Annotation Options..在出来的对话框中选择“Legend”标签,然后点击“Set Front...” 之后选择字体大小,确认。
BY
HIT-WGJ
第三篇:ABAQUS与FORTRAN论坛问题小结
ABAQUS与FORTRAN论坛问题小结
Q:索了一下论坛发现以前的问题都是不同类型的子程序,如UEL, UMAT...这样把它们放在一个.for文件里不会有误会,但是如果都是UEL的话,该怎么识别呢? A:subroutine Umat()IF(CMNAME(1:4).EQ.'MAT1')THENCALL UMAT_MAT1(argument_list)ELSE IF(CMNAME(1:4).EQ.'MAT2')THENCALL UMAT_MAT2(argument_list)END IF上面是区分不同umat的方法,区分uel应该类似吧
Q:行abaqus的时候出现这样的提示“Problem during compilation-df.exe not found in PATH.”请问这是什么原因.A: 就是说找不到用于编译的df.exe文件(好像是Fortran的编译运行文件),在Windows控制面板的“系统”里,打开高级属性,将系统的PATH添加上Fortran的路径,最好也一并把INCLUDE和LIB也都添加上对应的FORTRAN的路径。
Q: 如何在ABAQUS中调用用户子程序UMAT
A:abaqus job=*** user=*.for or *.objA: 装好fortran编译器的前提下,有两种方式:
1、命令行:abaqus job=*.inp user=*.for或 abaqus job=*.inp user=*.obj(可以由*.f90编译后得到)
2、菜单格式:先运行CAE,在general设置中可以指定Umat用户子程序A: job=jobname user=yourfortran.for(其它类型子程序)A:如果是本构的二次开发:*material, user
Q: abaqus job=job-name user={source-file | object-file}source-file和object-file各是什么? A: fortran的源文件(.for)或者目标文件(.o)在command下面输入以上命令行就可以正常运行.用户子程序再调用别的fortran程序时,要加入abaqus 子程序中的include 'ABA_PARAM.INC'。
Q: 自己编写子程序需要哪些工作步骤 A: 1.建立工作目录
2.将abaqus安装目录6.4-pr11site下的aba_param_dp.inc 或 aba_param_sp.inc拷贝到工作目录,并改名为aba_param.inc ; 3.将编好的fortran程序拷贝到工作目录; 4.编译fortran程序,将.obj文件拷贝到工作目录; 5.建立好输入文件.inp;6.运行abaqus job=inp file name user=fortan name即可。我的要运行abq64pr11 job=inp file name user=fortan name我也学了没多久,按照这个过程成功了一个!你们试一下吧!Q: 想用FORTRAN实现:...result = SYSTEMQQ('abq job=e:abaqu***amplesbeam interactive')...出错提示:ABAQUS ERROR:Unable to create a temporary directory C:DOCUME~1ADMINI~1LOCALS~1TEMPAdministrato_ e:abaqu***amplesbeam_3628 to be used for scratch files.ABAQUS/Analysis exited with errors.但如果是 result = SYSTEMQQ('abq job=beam interactive'),但需要在FORTRAN弹出的DOS窗口里手工输入文件的绝对路径则计算正常。但我的目的是实现Fortran程序对ABAQUS的计算程序的自动调用。
A: 说个投机的花招,有没有试过在前面加上result = SYSTEMQQ('path=e:/abaqu***amples')这样的命令~~方法简单,不过能解决问题最好
A:把要算的工况都集中在一个文件夹下,fortran生成.exe文件,放在该文件夹下,然后双击运行。计算结束之后再把各种工况分类。笨招,但好用。
A: 我想,或者把systemQQ改一下,先cd e:...,然后再systemQQ(abaqus job=jobname interactive)。
Q: 偶想在FORTRAN里设定一个计时器,其功能就是每隔一段时间(如10s)就去读一次ABAQUS的(.fil)文件。哪个函数可以实现这个功能?怎么实现?? A: 通过一个while循环和下面的语句:call sleepqq(时间间隔)就可以了。
Q: 本人尝试使用ABAQUS的子程序SUBROUTINE,根据帮助文件需要编译通过生成*.for和*.lib文件,可是编译的时候出现错误:Error: Cannot open include file 'ABA_PARAM.INC'不知道是什么原因,怎么解决?
A: 1.确认Visual Fortran及VC++正确安装,并在安装ABAQUS之前安装。2.首先将用户子程序*.f文件后缀名改为*.for。3.到控制面板-》系统-》高级-》环境变量中的 Administrator用户变量:修改—— 变量名:lib变量值:C:Program FilesMicrosoft Visual StudioDF98LIB;C:Program FilesMicrosoft Visual StudioVC98LIB(我的问题就是因为只加了一个LIB,必须两个都加!)完成以上步骤以后,就可以运行了。
Q: 怎样把自己编写的子程序倒入到*.INP文件中。
A: Using the following command : abaqus job=job-id As can be seen this is no different from running a standard abaqus job.The user subroutine itself can be embedded in the abaqus input file.Here it is illustrated with the umat subroutine.<....part of the abaqus input file....>
........*END STEP*USER SUBROUTINES SUBROUTINE UMAT(........)
........END
........Alternatively the user subroutine can be in a separate file(say my_material.f)and the INPUT parameter is set to that file name.<....part of the abaqus input file....>
........*USER SUBROUTINES, INPUT=my_material.f
........Q: 用Fortran SYSTEMQQ函数作批处理遇到问题,在fortran中使用result = systemqq(abaqus job=job1 interactive)作批处理,总是在计算两个job之后就不继续往下算了,cmd明令行提示:run time error:floating-point...请问这是怎么回事?
A: 个方法就是做一个批处理文件,abaqus job=beam interactiveabaqus job=beam1 interactiveabaqus job=beam2 interactiveabaqus job=beam n? interactive存为.bat文件即可。python好像一般是做CAE前后处理界面的。
A:前面加call.call abaqus job=1 interactivecall abaqus job=2 interactivecall abaqus job=3 interactive
Q:FORTRAN如何调用ABAQUS?
A: use the function “system” or “systemqq” USE DFLIB LOGICAL(4)result result = SYSTEMQQ('abaqus job=xx')QA: 首先我用ABAQUS的VARIFY命令对系统进行修正和检测,这个命令会自动运行,对ABAQUS进行调试等操作,其中涉及到对用户子程序的模拟计算,如果计算失败,就会在VARIFY.LOG文件中说明,确实发现“USER SUBROUTINE...和SINGLE...和DOUBLE...”失败,说明用户子程序安装不成功,肯定与VISUAL FORTRAN6.5有关!然后,找到FORTRAN_MAKE文本文件,发现错误,可能是与FORTRAN安装有关!于是卸载FORTRAN,重新安装在C盘!安装完毕后,改变环境变量如下: INCLUDE C:Program FilesMicrosoft Visual StudioDF98IMSLINCLUDE;C:Program FilesMicrosoft Visual StudioVC98INCLUDE;D:程序文件VC98INCLUDE;LIB C:Program FilesMicrosoft Visual StudioDF98IMSLLIB;C:Program FilesMicrosoft Visual StudioDF98LIB;C:Program FilesMicrosoft Visual StudioVC98LIB;D:程序文件VC98LIB;PATH C:Program FilesMicrosoft Visual StudioCommonTools;D:程序文件VC98BIN;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;C:KAV6;D:程序文件KV6;c:program filesmicrosoft visual studiodf98bin;c:program filesmicrosoft visual studiovc98bin;c:program filesmicrosoft visual studiocommonmsdev98bin;D:ABAQUSCommands;C:Program FilesMicrosoft Visual StudioDF98BIN我们只需要关注MICROSOFT VISUAL STUDIO文件夹!最后,再次执行VARIFY命令,等运行完毕后,检查VARIFY文本文件,发现: ABAQUS/Standard with User Subroutines...PASSContinuing...ABAQUS/Explicit with User Subroutines(single precision)...PASSContinuing...ABAQUS/Explicit with User Subroutines(double precision)...PASSContinuing...OK!!!!!!!!!搞定
Q: 因为ABAQUS是用PYTHON编写的,那么我想要PYTHON 的原代码,因为我想 在其中加一个椭圆程序,不知可行么?(访问原代码问题)
A: 所有的PY都是差不多一样的,把ABAQUS的PY拿到MARC试试看
文档来源:http://www.xiexiebang.com/bbs/redirect.php?fid=10&tid=9031&goto=nextnewset
第四篇:abaqus在基坑工程中使用小结
abaqus在基坑工程中使用小结
本人在使用abaqus解决基坑支护问题的过程中,得到了版上aba_aba,以及ustc的life大侠等人的帮助,写些自己使用abaqus的一些感受吧,(其实大多数东西都是从版上得到的相关参考)希望对其他新手能有所帮助。**首先是建模方式
对于初学者比较好掌握的是CAE界面操作方式。但是由于ABAQUS的CAE模块和输入文件两种建模方式是由两家不同的公司研制的,CAE模块推出比较晚,所以功能还不是很完全,对于CAE和INP交互操作需要注意几点:
1、一些功能只能通过编辑INP输入文件来实现,比如模拟开挖建造时需要用到杀死或者激活单元的语句model change,此时需要直接在CAE下编辑关键字,或者生成INP文件后通过记事本等工具打开INP文件后加入关键字。
2、CAE对于INP输入文件中的一些关键字不支持,如果在CAE下编辑,则系统会给出不支持关键字的提示。对于这样的情况则只能通过文本编辑工具打开INP来操作。
3、对INP输入文件进行编辑的方式能支持所有关键字功能,因此应用更加广泛。在许多情况下都需要对INP文件进行操作。**然后是初始应力场的施加。
土工有限元分析中初始应力场的施加是个关键。在ABAQUS中,施加初始应力场很方便,可以使用以下语句来完成。
initial conditions,type=stress,geostatic 可以有两种实现的办法:
1、如果地表水平,且初始应力就是自重应力时,可以在数据行中按照如下顺序填写数据 施加初始应力的集合,应力值1,应力值1对应的坐标值1,应力值2,应力值1对应的坐标值2,x方向侧压力系数,y方向侧压力系数(在二维问题中可以省略)
这样的顺序定义初始应力实际上默认了初始应力就是自重应力,只需要给定集合中2点的应力值及其对应的坐标值,其他部位的应力值就可以通过1,2两点的连线采用差值来得到,而水平向的地应力则乘一个侧压力系数得到。(这些内容在abaqus手册中都有)
2、采用input文件的方式,即先通过计算一个重力荷载作用下没有初始应力的模型而得到各点的应力值,然后将这些值导入到新的模型中,在*initial conditions,type=stress,后面加入input=XXX.XXX,让模型接受存有初始应力值的input文件而施加。这样的方法通用性非常强,但是比1稍微复杂些,具体可以见相关手册。
另外,对于施加初始应力,对于二维的情况,系统默认地应力方向为Y方向,对于三维情况,默认为Z方向,这一点在初学者中容易弄错。**模拟开挖建造
ABAQUS中模拟开挖建造通过关键字model change,type=element来实现,如果是杀死单元则在后面加上remove,如果激活单元则加上add。
事先需要将需要杀死或激活的土体单元定义为一个集合set。整个应用格式如下: *Model change, type=element, remove Set name1,set name2
其意义如下:首先Model change说明是模型发生变化,后面是种类,因为除了杀死激活单元外,还常用到杀死激活接触对(type=contact),此处需要指明是杀死激活单元导致的模型变化,后面remove表示杀死单元。重启一行写出需要杀死激活的单元集合列表。
在模拟建造过程中,通常一个单元的材料属性会发生变化,比如土钉支护中面层处单元,在没有开挖时是土体材料,当开挖建造之后就变成了面层的属性了。在ABAQUS中模拟材料属性随开挖步进行可以使用场量*Field关键字来实现。具体过程如下:首先是材料定义上要指定材料性质随着场变量而变化,如下面语句中,定义弹性时,利用dependencies=1表示材料根据1个场变量变化而变化,在接下来的属性数据行中每行后面的数字1,2表示了该行属性对应的这个场变量的值,如第一行的弹性模量和泊松比值是场变量为1的值,而第二行的弹性模量和泊松比值是场变量为2的值。*Elastic, dependencies=1
4e+07, 0.35, , 1.1.5e+10, 0.2, , 2.接下来就是在每个分析步中利用*field,variable=1这样语句指定分析步中使用的场变量数量,本例中值为1个场变量。接下来的数据行则是表示使用场变量的集合名称及其在该分析步中的场变量值。如果这个值是1,根据在定义材料时的场变量定义,值为1时对应于材料属性第一行值,这样就实现了材料属性随分析步变化的功能。
**模拟地连墙与土的接触ABAQUS中对于接触的模拟可以通过定义接触对来实现。系统可以允许面对面、点对面的接触等多种接触形式。在模拟开挖过程中,开挖土体与墙体的接触属性会丧失,根据经验,最好能将接触按照开挖步骤划分为许多对接触对(所谓的细化),根据开挖的进行,将接触对先杀死,这样系统比较容易找到准确的接触状态,使接触模拟顺利进行。模拟接触时,定义接触对要分清主控面和受控面。主控面和受控面的选择一般遵循以下原则:
一、材质较软的为受控面,材质较硬的为主控面。
二、网格较密的为受控面,网格稀疏的为主控面。应用到网格划分的时候就要先根据材质的相对软硬程度确定主控面,以便在网格划分中按照网格疏密关系正确划分网格。主控面和受控面定义一定要正确,这是影响接触模拟的关键。如果一个节点上同时定义了两个接触面,或者同时定义了一个接触面和边界条件,系统则会产生过约束(over constraint)的提示,很容易影响到接触的模拟。
分享<隧道施工应力释放法的ABAQUS实现【inp及代码见2#】> 应力释放法模拟隧道开挖主要有两种实现途径,大家可以参考帖子: http://forum.simwe.com/thread-765338-1-1.html
简单的说,主要就是参数弱化法和施加节点反力法。这两种方法各有优劣。参数弱化法:
优点:
1、便于实现;
2、便于控制应力释放过程;
缺点:
1、无法给出明确的应力释放率;
2、无法用在剑桥模型中,因为找不到一个合适的参数进行弱化。施加节点反力法:
优点:
1、能够明确给出应力释放率;
2、物理意义较为明确; 缺点:实现过程不是很方便
下面跟大家汇报一下我的做法,希望有经验的童鞋给出建议,各种板砖,放心拍吧~
一、参数弱化法
参数弱化方法其实没有什么难度,版内已经讨论了无数次了。各种牛们也是不厌其烦的跟新手们说了一遍又一遍,可惜有些童鞋天生喜欢求助,上来就发帖问,完全置搜索功能于不顾。所以我在这要再次呼吁,搜索处要更加醒目,加红字,加粗,加浮动,另外加旁注:亲,如果你想快速入门aba,搜索吧,这是闷骚技术人新一代的学习方法,包会哦!
参数弱化,主要就是弱化弹性模量,这个可以通过关键字*field来实现,具体肿么实现,搜索吧。下面给出计算后的云图,抛砖引玉。地应力平衡,勉强可以吧:
待开挖区域弹性模量折减20%:
如何添加衬砌以及如何设置追踪单元我想再单开一贴和大家进行总结探讨。上面位移矢量图隐去了待开挖部分,是为了矢量显示清晰,实际上这一步待开挖(中心土体)部分实际还是存在的,只不过弹性模量折减过了。从图中可以看出,这种方法计算出的位移场并不是很符合实际情况。隧道开挖土体位移场可以参见帖子:http://forum.simwe.com/thread-985421-1-1.html
在这里也顺便给这个帖子做个个人的解答吧。关于该贴提出的强制位移法,我想在后面专开一贴和大家讨论总结。
有经验的童鞋可否告知你们采用折减法做出的位移场是否也和上面一样的?
二、施加节点反力法
这一方法的技术难点在于,如何获得地应力平衡后隧道周边土体节点反力。通过搜索和查看manual,基本可以锁定两种输出量:NFORC & RF。其中,RF只能在有边界约束处输出,NFORC根据manual我猜测应该是由节点所涉及单元的应力进行外插平均后得到的节点力,参见帖子:http://forum.simwe.com/thread-883192-1-1.html10#。不管怎样,总的思路是,通过对开挖后隧道相邻土体节点施加非均布节点力,使得此时的模型(土体)保持初始地应力和位移准零状态,然后施加原节点荷载*(1-应力释放率),以此来模拟不同的应力释放率下隧道及土体的力学响应。
以前的帖子对这个问题讨论了很多,有代表性的列举如下(话说论坛的收藏是个好功能):
http://forum.simwe.com/thread-872620-1-1.html 该贴lz给出了四种获取节点力的方法,都很有参考价值。最后采用了NFORC,但得到的效果不是很理想。我做了一下,发现的确如该lz所说,NFORC输出的节点力是不能直接施加到原节点上的,即使乘以2倍,也只能是接近实际的节点力。所得到的位移场在初始状态就有很大的位移,不符合前面提出的总体思路。该贴5#和7#都提出采用约束洞周位移获取RF。事实证明,这个方法是可行的,但不同的操作方式得到的结果千差万别。该贴7#提出的思路是对的,但给出的文件中将洞周位移约束贯穿了整个施工过程,这样造成的后果是,其计算起始点已经不再是green field的情况,得到的应力场自然不符合实际情况,那么在错误的应力场上做的计算怎么能对呢?
http://forum.simwe.com/thread-854591-1-1.html
该贴给出了施加洞周约束获取反力的正确思路,即施加洞周位移约束要在地应力平衡后进行。这样能保证施加位移约束时的地应力初始状态。下面就我做的例子详细说明。
模型:
材料参数:
修正剑桥模型
*Material, name=soil-3 *Clay Plasticity, intercept=1.45 0.11, 1.27, 0., 1., 1., , 1.*Density 1770., *Porous Elastic 0.009, 0.32, 0.剑桥模型参数的设置参见:http://forum.simwe.com/thread-968882-1-1.html
这里再啰嗦几句,最近很多人在问为什么用剑桥模型的时候会提示“THE SUM OF INITIAL PRESSUE AND ELASTIC TENSILE STRENGTH FOR THE POROUS ELASTIC MATERIAL IN ELEMENT...",如果你确定有地应力平衡,那么就请你检查是否是用的直接加重力平衡的吧。多孔介质弹性模型是需要在initial conditions中定义初始地应力的。
地应力平衡:
平衡效果一般,主要是做实例,只平衡了一次,到了10E-4就没再管了。
施加洞周边界约束,同时remove掉待开挖部分
可以看出,这一步进行完后,剩余土体的应力基本没有发生改变,也就是基本保持了初始地应力,在这种情况下导出节点力再倒入折减后支护力才是正确的。可以看出施加洞周位移约束后土体位移分布发生了变化,但数量级还是很小,基本没变,可以忽略。最后一张图是洞周节点反力云图,在这种情况下就可以输出节点反力了。下面介绍一下我的做法。
第五篇:abaqus自我总结
如何输入inp文件
inelastic heat fraction:非弹性功(一般是塑性功)转换为热量的比例,比例越大,产热越高,温升越高
rate dependent:本构率相关参数,表示材料的屈服流动应力不仅和等效塑性应变相关,而且还与应变率有关,一般是正相关
如何将二维图表的背景变成白色
我的怎么就改变了呢 说了双击
举例子说说我的理解吧:history output->盯住一个节点,这个节点在整个加载时间段内应力变化情况,用xy图表示就是一条TIME-STRESS曲线;field output->盯住一个时刻,所有节点在这个时刻时的应力值,直观表示是云图。当然在xyplot中你可以选择盯住一个节点按时间输出该节点的力(即ODB field output),不过最多只能在各个帧对应的时刻输出,xy图中点的数量较少。如果我错了的话请大家指正哈
view---overlayplot--然后每一个时刻创建一个新图层,然后plotoverlay
怎么样才能使圆柱体绕另一固定轴转动(不是圆柱体中心轴),类似于公转之类的?我尝试了很多办法,包括在边界条件上施加UR3 或VR3的值,貌似物体都是固定不动的,或者是沿着直线走的,根本就不是预想的那样(公转)只加UR3肯定是不行的。可以试试下面的方法:
1、取圆柱上一个节点(最好是端面圆心位置),定义其U1、U2位移,通过控制U1、U2使圆柱体到轴的距离不变,这样就有了在X-Y平面内的刚体位移,要沿圆弧运动就看你怎么控制U1、U2了。
2、要不要自转,随便定义UR3即可。
注意:圆周运动的轨迹实际是位移,不是自转。另外,提供一个简单方法。
在轴上定义一个rp,rp与圆柱端面圆心建立MPC或其他约束,约束rp的位移自由度,给rp加UR3位移,这样圆柱也能跟着rp绕rp所在的轴转动。
运动问题从几何角度考虑一下,很简单。
简化方法:我记得以前学数学的时候,圆周可以看成是无限多边形(现在很多软件其实也是这么实现的,比如CAD的圆就是多边形简化的)
既然这样,可以把绕轴公转 圆弧轨迹 简化成 多边形轨迹
也就是
描点了 设置多个分析步 多个U1 U2(U1 和 U2取圆周上的点)
方法二: ABAQUS 里面有connecter 其中有一种连接方式 是hinge 可以实现绕轴旋转 建立两个参考点 在两个参考点之间hinge连接
一个点做轴 一个点和圆柱coupling 在做轴的点上加UR3 即可实现公转
最近碰到一个计算时间比较长的Explicit模型,分析步4个,每个分析步计算时间都超过8小时,由于用笔记本计算,下班就得中断计算关机走人,这样就不得不考虑重启动的问题。
经过这几天的摸索,发现对于这种计算时间长的Explicit模型,要想是实现意外中断以后继续计算,最好的方法就是用recover。
方法其实很简单:
要想在中断以后实现无缝连接(接着上一个increment继续计算),必须在计算之前做一个Restart的设定,CAE:step模块,output->restart requests->intervals,默认为1,将这个数据改大一点,我改为100,与field output的inteval对应起来。有了这个前提,不管什么时候中断,只需把该job type改为recover,然后提交就会接着中断的部分继续算。再中断再提交就行了,不需要做任何改动,直至计算完成。Command命令:abaqus job=jobname recover int。
解释:
restart前提条件的设定,Explicit默认的会写出各种重启动需要的文件,只不过默认的interval=1,就是说只有在每个分析步的开始和结尾才有重启动点,这样不能实现哪中断哪重启。要实现无缝连接,理论上这个数据越大越好,只要不超过一个分析步increment总数。但是大了会增加数据写入量,也没必要。这个前提设定和restart一样。
好处:
只需要在第一次重启动的时候改job type为recover,提交就ok了,当然要记得删除lck文件。后面中断了就只需提交就行了,不需做任何改动,方便。而且odb,sta等文件都是在原文件的基础上续写,不存在合并odb文件的问题。用这个方法,甚至可以人为中断后再接着计算。
一点体会,供参考。
1、首先需要重启动的case计算时有设置重启动输出,即inp中以下类似代码关键有write: *Restart, write, number interval=8, time marks=YES
2、查看计算结果后缀为.sta的文件,观察最后restart number数值,如Restart Number 8 at 3.0600;
3、合并原计算结果文件,jobname为断电前使用的文件名(需先删除原文件后缀为.lck的文件)
abq6101 job=jobname convert=all int
4、设置重启动读入值,interval等于最后restart number减去1,例 *RESTART, READ, STEP=4, END STEP, INTERVAL=7
5、设置重启动inp文件,新建一个AMPLITUDE文件,时间设置为计算总时间,*Amplitude, name=Amp-3,TIME=total time
3.0, 0.,3.06,1.6、改变相应边界条件; 断电前使用
*Boundary, amplitude=Amp-2, type=VELOCITY 改为
*Boundary, amplitude=Amp-3, type=VELOCITY
7、分析计算,restartname为新建的重启动inp文件名称,jobname为断电前使用的文件名 abq6101 job=restartname oldjob=jobname cpus=12 int mp_mode=threads double
注意:
默认使用的AMPLITUDE中time=step time,跟AMPLITUDE相关的边界条件都需要改变;
对时间增量步理解
abaqus的step里有maximum number of increment、initial increment、minimum increment、maximum increment四个量许多网友不知怎样设置合理,合理设置是建立在深刻理解基础上的。
要理解这个问题,首先需要了解abaqus的计算过程和有限元计算收敛性问题,abaqus首先用initial值输入进行叠代计算,如果计算结果收敛,则继续以这个值代入计算下一步,如果不收敛,则自动减小时间步长(time increment)重新计算直到收敛然后计算下一步。
但是如果时间步长减小到最小值minimum时计算结果还是不收敛,则abaqus将停止计算,由此可知maximum值和minimum值分别是abaqus在收敛计算时时间步长的上下限,同时total time=求和(time increment*number),当时间步长很小时,需要计算的步数number相应增大(电脑计算花的时间也随之增大),因此number一般要设置较大值。minimum并不是越小越好,因为1)number即计算时间增大2)abaqus计算精度约在10^(-5),当时间步长小于这个值,计算结果已经没什么意义了。
有限元计算收敛性与(最小空间步长/时间步长)值有关,若minimum设为10^(-5),还是不收敛,可适当减小空间步长(即把网格画细点),当然还有一些其他办法,如果实在计算不了,也许是模型本身有点问题,或改为显示explicit计算
总而言之,maximun number要适当设置较大值,initial可适当改小(如-2,-3量级),minimum(-5量级)不要修改,maximum值影响不大,可不改
显示分析的求解时间与以下几个方面有关: 材料密度。加快求解有一种方法就是增大密度,密度增加100倍,时间降低为原来的十分之一。当然,这种情况下必须是密度这一属性对你要求的结果影响不大的前提下。最小的网格尺寸.这决定计算机每步求解的最大步长。网格尺寸越小,最大时间步长越大。即使只有一个网格尺寸很小,其他都很大,最大时间步长也提不高。所以,避免产生个别小的网格尺寸是十分必要的。网格数量。网格数量越大,每求解一步所需的时间越长。因此,可以适当优化网格,采用局部加密的方法,减少网格数量。4 模型复杂程度,主要是指模型是否有接触、大变形、多物理场耦合等。越复杂,时间越长。
以上,希望对你有用。
发现当转动模型时模型就会变成静态线框下的透明体,如何才能把他改成转动时不是透明的呢?