一小时内学会Abaqus脚本编程秘籍

您所在的位置:网站首页 abaqus显示组不能保存吗 一小时内学会Abaqus脚本编程秘籍

一小时内学会Abaqus脚本编程秘籍

2024-07-12 10:53| 来源: 网络整理| 查看: 265

文章目录 介绍使用GUI创建简单模型为模型数据库(mdb)创建第一个脚本文件使用GUI创建输出为输出数据库创建第一个脚本为不同用途调整脚本文件的示例继续使用脚本的说明附件第一个EXAMPLE_MDB.py最终的EXAMPLE_MDB.py第一个EXAMPLE_ODB.py最终的EXAMPLE_ODB.py调整的EXAMPLE_MDB.py

  扫描下方二维码关注我的微信公众号 - CAE软件二次开发Lab,查看更多精彩文章!

CAE软件二次开发Lab

本文为Learn Abaqus script in one hour的翻译,原文请点击此处下载。

介绍

脚本是一个强大的工具,它允许您将Abaqus的图形用户界面(GUI)的功能与编程语言Python的强大功能结合起来。本手册并不意味着是一个完整的Abaqus脚本手册。这是从实践的角度介绍Abaqus脚本,并试图解释一种简单、快速的脚本启动方法。如果您没有使用Abaqus GUI或FEM的经验,您应该 先获得该方面的经验。在不熟悉输入文件的情况下,你应该能够在两个小时内阅读完这篇介绍。这本手册用于说明作者对脚本强大性和和简单性的观点。

本手册将介绍以下主题:

使用GUI创建一个简单模型为模型数据库(mdb)创建第一个脚本文件使用GUI创建输出为输出数据库(odb)创建第一个脚本文件针对不同用途调整脚本文件的示例继续使用脚本的一些说明

创建脚本的基本思路按如下顺序进行:

在GUI中创建模型并保存模型使用Abaqus生成的rpy文件为基础创建脚本文件创建输出通过运行生成的脚本文件重计算调整脚本以创建不同的模型或输出

如您所知,Abaqus GUI将在运行仿真时生成一个输入文件(an input file )。脚本文件也是如此,脚本文件会创建一个输入文件,并发送到求解器进行计算。

使用GUI创建简单模型

我使用的Abaqus cae版本是6.8-2,但是脚本在Abaqus的更高版本或更早版本可能也可使用。

在这里插入图片描述    图1 Abaqus CAE 6.8-2 GUI主窗口

首先启动Abaqus CAE。为了确保我们讨论的是相同的菜单,图1显示了Abaqus GUI环境。我添加了一些菜单和按钮名称的说明,其将在随后说明。设置正确的工作目录,我们将在稍后创建一些我们将要使用的文件,确保您能够找到它们。在开始创建模型之前,我们将在脚本窗口中输入一行命令。首先,单击图1中所指的Script button按钮转到Script Window.;输入以下命令:

session.journalOptions.setValues(replayGeometry=COORDINATE, recoverGeometry=COORDINATE)

进入脚本窗口,然后按enter键。运行该命令后不会出现任何可见的东西,但是这行代码可使得我们在随后创建集合(sets)、曲面(surfaces)、选择区域(region)等的python脚本更具可读性。现在我们从创建模型开始,执行以下步骤:

创建零件:二维可变形平面壳,近似尺寸:20绘制第一点为(-5,-1)、第二点为(5,1)的矩形创建材料:线弹性,E=1e9、ν=0.3创建截面:实心、均质,使用刚创建的材料将刚创建的截面指定给零件创建集合(set):左边缘(left edge)创建曲面:顶边(top edge)网格(Mesh):将网格控制(mesh control)设置为结构化( structured)和四边形( quad)网格(Mesh):将单元类型(element type)设置为标准(Standard)、二次(quadratic)和平面应力(Plane Stress)网格(Mesh):为零件设置网格种子(seed),全局尺寸约为0.5,划分零件网格装配(Assembly):创建零件实例(part instance)分析步(Step):创建通用静态(General Static )分析步,打开几何非线性(Nlgeom)选项,设置初始/最大增量大小为0.1边界:创建位移边界,选择左边缘(left edge),将其U1,U2和UR3设置为0载荷:在顶边(top edge)曲面创建压力载荷,并将幅值设置为-1e-5作业(Job):使用名称EXAMPLE创建作业并提交另存为:名称为EXAMPLE.cae

您已经创建了模型。确保你的工作目录中包含文件EXAMPLE.jnl(.jnl后缀为旧版自动录制的脚本文件,abaqus6.10及其以后为.rpy后缀)

为模型数据库(mdb)创建第一个脚本文件

我们从创建脚本文件开始。打开EXAMPLE.rpy文件并将此文件另存为EXAMPLE_MDB.py文件。在附录有EXAMPLE_MDB.py文件的完整内容。此时的python文件看起来仍然很凌乱,在其中添加一些结构是一个很好的练习和习惯。让我带您浏览代码,并指出脚本的每一行属于哪一部分。对于完全理解这些命令需要一些经验和练习。不过,可以从其中识别你在GUI中所采取的一些操作步骤。

# -*- coding: mbcs -*-

这行是注释。所以其并不重要,尽管我们知道python注释命令#很有用。

from part import * from material import * from section import * from assembly import * from step import * from interaction import * from load import * from mesh import * from job import * from sketch import * from visualization import * from connectorBehavior import *

尽管我们在一个python环境中工作,但它不包括Abaqus的所有功能。因此,上述这些行命令将导入本脚本文件中使用的一些Abaqus模块(modulus)。

mdb.models[’Model-1’].ConstrainedSketch(name=’__profile__’, sheetSize=20.0) mdb.models[’Model-1’].sketches[’__profile__’].rectangle(point1=(-5.0, -1.0), point2=(5.0, 1.0)) mdb.models[’Model-1’].Part(dimensionality=TWO_D_PLANAR, name=’Part-1’, type= DEFORMABLE_BODY) mdb.models[’Model-1’].parts[’Part-1’].BaseShell(sketch= mdb.models[’Model-1’].sketches[’__profile__’]) del mdb.models[’Model-1’].sketches[’__profile__’]

用这些命令创建草图和零件。

mdb.models[’Model-1’].Material(name=’Material-1’) mdb.models[’Model-1’].materials[’Material-1’].Elastic(table=((1000000000.0, 0.3), )) mdb.models[’Model-1’].HomogeneousSolidSection(material=’Material-1’, name= ’Section-1’, thickness=None) mdb.models[’Model-1’].parts[’Part-1’].SectionAssignment(offset=0.0, offsetField=’’, offsetType=MIDDLE_SURFACE, region=Region( faces=mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((-1.666667, -0.333333, 0.0), (0.0, 0.0, 1.0)), )), sectionName=’Section-1’)

材料、截面和截面分配是用上面命令完成的。

mdb.models[’Model-1’].parts[’Part-1’].Set(edges= mdb.models[’Model-1’].parts[’Part-1’].edges.findAt(((-5.0, -0.5, 0.0), )), name=’Set-1’) mdb.models[’Model-1’].parts[’Part-1’].Surface(name=’Surf-1’, side1Edges= mdb.models[’Model-1’].parts[’Part-1’].edges.findAt(((-2.5, 1.0, 0.0), )))

在这里我们创建集合和曲面。注意每行命令末尾的findAt命令。使用了findAt而不是getSequenceFromMask(它是Abaqus使用的一种编号系统),因为在创建模型之前,我们在GUI中的脚本窗口中输入的那行命令。

mdb.models[’Model-1’].parts[’Part-1’].setMeshControls(elemShape=QUAD, regions= mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((-1.666667, -0.333333, 0.0), )), technique=STRUCTURED) mdb.models[’Model-1’].parts[’Part-1’].setElementType(elemTypes=(ElemType( elemCode=CPS8R, elemLibrary=STANDARD), ElemType(elemCode=CPS6M, elemLibrary=STANDARD)), regions=( mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((-1.666667, -0.333333, 0.0), )), )) mdb.models[’Model-1’].parts[’Part-1’].seedPart(deviationFactor=0.1, size=0.5) mdb.models[’Model-1’].parts[’Part-1’].generateMesh()

这些行命令将创建网格控件、单元类型和网格。

mdb.models[’Model-1’].rootAssembly.DatumCsysByDefault(CARTESIAN) mdb.models[’Model-1’].rootAssembly.Instance(dependent=ON, name=’Part-1-1’, part=mdb.models[’Model-1’].parts[’Part-1’]) mdb.models[’Model-1’].rootAssembly.regenerate()

装配过程如上所述。请注意,这里使用了rootAssembly一词,您不必给出程序集的名称。这当然是因为只有一个装配(Assembly)。

mdb.models[’Model-1’].StaticStep(initialInc=0.1, maxInc=0.1, name=’Step-1’, previous=’Initial’) mdb.models[’Model-1’].DisplacementBC(amplitude=UNSET, createStepName=’Step-1’, distributionType=UNIFORM, fieldName=’’, fixed=OFF, localCsys=None, name= ’BC-1’, region= mdb.models[’Model-1’].rootAssembly.instances[’Part-1-1’].sets[’Set-1’], u1= 0.0, u2=0.0, ur3=0.0) mdb.models[’Model-1’].Pressure(amplitude=UNSET, createStepName=’Step-1’, distributionType=UNIFORM, field=’’, magnitude=-100000.0, name=’Load-1’, region= mdb.models[’Model-1’].rootAssembly.instances[’Part-1-1’].surfaces[’Surf-1’])

上述命令行定义分析步、边界、载荷。

mdb.Job(contactPrint=OFF, description=’’, echoPrint=OFF, explicitPrecision= SINGLE, historyPrint=OFF, memory=90, memoryUnits=PERCENTAGE, model= ’Model-1’, modelPrint=OFF, multiprocessingMode=DEFAULT, name=’EXAMPLE’, nodalOutputPrecision=SINGLE, numCpus=1, numDomains=1, parallelizationMethodExplicit=DOMAIN, scratch=’’, type=ANALYSIS, userSubroutine=’’) mdb.jobs[’EXAMPLE’].submit(consistencyChecking=OFF)

上述命令创建作业(job)并提交作业进行分析。上述最后一行后面的代码都是无关紧要的。你可以删除。最终的脚本EXAMPLE_MDB.py文件可以在附件中找到。

运行此脚本之前,请从你的工作中目录中删除除“EXAMPLE”之外的文件。如果你的Abaqus GUI用户界面仍然是打开的,请启动一个不要保存任何东西的新模型。现在要运行脚本文件,请转到顶部菜单,单击File(文件),然后单击运行脚本(Run script),然后选择脚本文件。如果一切都做得正确,你的模型运行应该没有任何问题。此时在你的工作目录中中生成文件EXAMPLE.odb。如果你不想删除你工作目录中的文件,abaqus将覆盖这些文件。这也没问题,但在本手册中,您需要查看文件是否已创建相应的文件。

使用GUI创建输出

关闭并打开Abaqus CAE以重新开始脚本的录制。通过顶部菜单File,然后点击Open选择工作目录下的EXAMPLE.odb文件。我们将使用与为模型创建脚本文件相同的方法。最重要的区别是你所做的行为都记录在Abaqus.rpy文件而不是Abaqus.jnl, 让我们创建一个变形状态下的应力图。执行以下步骤:

绘制变形状态下的应力。现在通过顶部菜单中的File菜单下人Print保存图片为名为EXAMPLE,图片格式为tiff。

你不必保存odb文件。如果在启动Abaqus CAE的初始工作目录中,您无法找到Abaqus.rpy,那么从你的工作目录中找。

为输出数据库创建第一个脚本

保存文件Abaqus.rpy为EXAMPLE.py。 本脚本的内容见附件。下面是脚本文件的简短排序。

from abaqus import * from abaqusConstants import * session.Viewport(name=’Viewport: 1’, origin=(0.0, 0.0), width=268.952117919922, height=154.15299987793) session.viewports[’Viewport: 1’].makeCurrent() session.viewports[’Viewport: 1’].maximize() executeOnCaeStartup() o1 = session.openOdb(name=’/home/overveld/ScriptManual/EXAMPLE.odb’) session.viewports[’Viewport: 1’].setValues(displayedObject=o1)

这些命令导入一些模块,创建视口并打开odb。

session.viewports[’Viewport: 1’].odbDisplay.display.setValues(plotState=( CONTOURS_ON_DEF, )) session.printToFile(fileName=’EXAMPLE’, format=TIFF, canvasObjects=( session.viewports[’Viewport: 1’], ))

这些命令将显示设置为变形形状的应力,并保存图像。输出的最终脚本文件见附件。

为不同用途调整脚本文件的示例

我将给出一个调整脚本的例子。我将调整:

不使用固定的数值来创建零件,我将通过更改脚本文件开头的两个常量来定义形状。我将合并mdb和odb脚本文件。

我将在附件中添加文件并突出显示不同之处。我不会详细解释我所做的不同之处。弄清楚这一点是你训练的一部分。

这次我不会通过GUI运行脚本,我会直接从终端运行它。我们可以使用两个不同的命令:

abaqus cae script=EXAMPLE MDB.py abaqus cae noGUI=EXAMPLE MDB.py

第一行将打开abaqus cae,您将能够看到它的运行过程。最后一行将在没有GUI的情况下打开abaqus,你只会得到结果。

继续使用脚本的说明

现在你应该已经熟悉了工作方法:让Abaqus完成所有困难的工作,组织好文件并重新运行。我也希望我没有撒谎,你已经花了一个小时或更少的时间到达这里。我想用一些有用的提示来结束本手册:

如果您在日常模拟中使用python语言和脚本,您就会习惯它。这是学习它的最好方法。 我花了2.5个月的时间编写了一本手册。您可以在互联网上找到很多关于python的信息。谷歌是一个有用的工具。您会发现关于脚本编写的内容较少,但请尝试访问以下网站:http://abaqusdoc.ucalgary.ca/v6.9/。您可以找到所有脚本命令的完整参考。尝试从MATLAB调用Abaqus CAE。这将为你添加了一个大的数学工具箱。可尝试如下命令: – unix([abaqus cae script=EXAMPLE MDB.py]) – system([abaqus cae script=EXAMPLE MDB.py]) 附件 第一个EXAMPLE_MDB.py # -*- coding: mbcs -*- from part import * from material import * from section import * from assembly import * from step import * from interaction import * from load import * from mesh import * from job import * from sketch import * from visualization import * from connectorBehavior import * mdb.models[’Model-1’].ConstrainedSketch(name=’__profile__’, sheetSize=20.0) mdb.models[’Model-1’].sketches[’__profile__’].rectangle(point1=(-5.0, -1.0), point2=(5.0, 1.0)) mdb.models[’Model-1’].Part(dimensionality=TWO_D_PLANAR, name=’Part-1’, type= DEFORMABLE_BODY) mdb.models[’Model-1’].parts[’Part-1’].BaseShell(sketch= mdb.models[’Model-1’].sketches[’__profile__’]) del mdb.models[’Model-1’].sketches[’__profile__’] mdb.models[’Model-1’].Material(name=’Material-1’) mdb.models[’Model-1’].materials[’Material-1’].Elastic(table=((1000000000.0, 0.3), )) mdb.models[’Model-1’].HomogeneousSolidSection(material=’Material-1’, name= ’Section-1’, thickness=None) mdb.models[’Model-1’].parts[’Part-1’].SectionAssignment(offset=0.0, offsetField=’’, offsetType=MIDDLE_SURFACE, region=Region( faces=mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((-1.666667, -0.333333, 0.0), (0.0, 0.0, 1.0)), )), sectionName=’Section-1’) mdb.models[’Model-1’].parts[’Part-1’].Set(edges= mdb.models[’Model-1’].parts[’Part-1’].edges.findAt(((-5.0, -0.5, 0.0), )), name=’Set-1’) mdb.models[’Model-1’].parts[’Part-1’].Surface(name=’Surf-1’, side1Edges= mdb.models[’Model-1’].parts[’Part-1’].edges.findAt(((-2.5, 1.0, 0.0), ))) mdb.models[’Model-1’].parts[’Part-1’].setMeshControls(elemShape=QUAD, regions= mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((-1.666667, -0.333333, 0.0), )), technique=STRUCTURED) mdb.models[’Model-1’].parts[’Part-1’].setElementType(elemTypes=(ElemType( elemCode=CPS8R, elemLibrary=STANDARD), ElemType(elemCode=CPS6M, elemLibrary=STANDARD)), regions=( mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((-1.666667, -0.333333, 0.0), )), )) mdb.models[’Model-1’].parts[’Part-1’].seedPart(deviationFactor=0.1, size=0.5) mdb.models[’Model-1’].parts[’Part-1’].generateMesh() mdb.models[’Model-1’].rootAssembly.DatumCsysByDefault(CARTESIAN) mdb.models[’Model-1’].rootAssembly.Instance(dependent=ON, name=’Part-1-1’, part=mdb.models[’Model-1’].parts[’Part-1’]) mdb.models[’Model-1’].rootAssembly.regenerate() mdb.models[’Model-1’].StaticStep(initialInc=0.1, maxInc=0.1, name=’Step-1’, previous=’Initial’) mdb.models[’Model-1’].DisplacementBC(amplitude=UNSET, createStepName=’Step-1’, distributionType=UNIFORM, fieldName=’’, fixed=OFF, localCsys=None, name= ’BC-1’, region= mdb.models[’Model-1’].rootAssembly.instances[’Part-1-1’].sets[’Set-1’], u1= 0.0, u2=0.0, ur3=0.0) mdb.models[’Model-1’].Pressure(amplitude=UNSET, createStepName=’Step-1’, distributionType=UNIFORM, field=’’, magnitude=-100000.0, name=’Load-1’, region= mdb.models[’Model-1’].rootAssembly.instances[’Part-1-1’].surfaces[’Surf-1’]) mdb.Job(contactPrint=OFF, description=’’, echoPrint=OFF, explicitPrecision= SINGLE, historyPrint=OFF, memory=90, memoryUnits=PERCENTAGE, model= ’Model-1’, modelPrint=OFF, multiprocessingMode=DEFAULT, name=’EXAMPLE’, nodalOutputPrecision=SINGLE, numCpus=1, numDomains=1, parallelizationMethodExplicit=DOMAIN, scratch=’’, type=ANALYSIS, userSubroutine=’’) mdb.jobs[’EXAMPLE’].submit(consistencyChecking=OFF) mdb.jobs[’EXAMPLE’]._Message(STARTED, {’phase’: BATCHPRE_PHASE, ’clientHost’: ’wumpus.seas.harvard.edu’, ’handle’: 0, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(WARNING, {’phase’: BATCHPRE_PHASE, ’message’: ’DEGREE OF FREEDOM 6 IS NOT ACTIVE IN THIS MODEL AND CAN NOT BE RESTRAINED’, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(ODB_FILE, {’phase’: BATCHPRE_PHASE, ’file’: ’/home/overveld/ScriptManual/EXAMPLE.odb’, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(COMPLETED, {’phase’: BATCHPRE_PHASE, ’message’: ’Analysis phase complete’, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STARTED, {’phase’: STANDARD_PHASE, ’clientHost’: ’wumpus.seas.harvard.edu’, ’handle’: 0, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STEP, {’phase’: STANDARD_PHASE, ’stepId’: 1, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 0, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 0.0, ’attempts’: 0, ’timeIncrement’: 0.1, ’increment’: 0, ’stepTime’: 0.0, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 0, ’phase’: STANDARD_PHASE, ’equilibrium’: 0}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 1, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 0.1, ’attempts’: 1, ’timeIncrement’: 0.1, ’increment’: 1, ’stepTime’: 0.1, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 1, ’phase’: STANDARD_PHASE, ’equilibrium’: 1}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 2, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 0.2, ’attempts’: 1, ’timeIncrement’: 0.1, ’increment’: 2, ’stepTime’: 0.2, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 1, ’phase’: STANDARD_PHASE, ’equilibrium’: 1}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 3, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 0.3, ’attempts’: 1, ’timeIncrement’: 0.1, ’increment’: 3, ’stepTime’: 0.3, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 1, ’phase’: STANDARD_PHASE, ’equilibrium’: 1}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 4, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 0.4, ’attempts’: 1, ’timeIncrement’: 0.1, ’increment’: 4, ’stepTime’: 0.4, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 1, ’phase’: STANDARD_PHASE, ’equilibrium’: 1}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 5, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 0.5, ’attempts’: 1, ’timeIncrement’: 0.1, ’increment’: 5, ’stepTime’: 0.5, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 1, ’phase’: STANDARD_PHASE, ’equilibrium’: 1}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 6, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 0.6, ’attempts’: 1, ’timeIncrement’: 0.1, ’increment’: 6, ’stepTime’: 0.6, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 1, ’phase’: STANDARD_PHASE, ’equilibrium’: 1}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 7, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 0.7, ’attempts’: 1, ’timeIncrement’: 0.1, ’increment’: 7, ’stepTime’: 0.7, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 1, ’phase’: STANDARD_PHASE, ’equilibrium’: 1}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 8, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 0.8, ’attempts’: 1, ’timeIncrement’: 0.1, ’increment’: 8, ’stepTime’: 0.8, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 1, ’phase’: STANDARD_PHASE, ’equilibrium’: 1}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 9, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 0.9, ’attempts’: 1, ’timeIncrement’: 0.1, ’increment’: 9, ’stepTime’: 0.9, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 1, ’phase’: STANDARD_PHASE, ’equilibrium’: 1}) mdb.jobs[’EXAMPLE’]._Message(ODB_FRAME, {’phase’: STANDARD_PHASE, ’step’: 0, ’frame’: 10, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(STATUS, {’totalTime’: 1.0, ’attempts’: 1, ’timeIncrement’: 0.1, ’increment’: 10, ’stepTime’: 1.0, ’step’: 1, ’jobName’: ’EXAMPLE’, ’severe’: 0, ’iterations’: 1, ’phase’: STANDARD_PHASE, ’equilibrium’: 1}) mdb.jobs[’EXAMPLE’]._Message(END_STEP, {’phase’: STANDARD_PHASE, ’stepId’: 1, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(COMPLETED, {’phase’: STANDARD_PHASE, ’message’: ’Analysis phase complete’, ’jobName’: ’EXAMPLE’}) mdb.jobs[’EXAMPLE’]._Message(JOB_COMPLETED, { ’time’: ’Wed Nov 17 21:09:11 2010’, ’jobName’: ’EXAMPLE’}) # Save by overveld on Wed Nov 17 21:09:48 2010 最终的EXAMPLE_MDB.py #load modulus from part import * from material import * from section import * from assembly import * from step import * from interaction import * from load import * from mesh import * from job import * from sketch import * from visualization import * from connectorBehavior import * ### PART ### mdb.models[’Model-1’].ConstrainedSketch(name=’__profile__’, sheetSize=20.0) mdb.models[’Model-1’].sketches[’__profile__’].rectangle(point1=(-5.0, -1.0), point2=(5.0, 1.0)) mdb.models[’Model-1’].Part(dimensionality=TWO_D_PLANAR, name=’Part-1’, type= DEFORMABLE_BODY) mdb.models[’Model-1’].parts[’Part-1’].BaseShell(sketch= mdb.models[’Model-1’].sketches[’__profile__’]) del mdb.models[’Model-1’].sketches[’__profile__’] ### MATERIAL & SECTION ### mdb.models[’Model-1’].Material(name=’Material-1’) mdb.models[’Model-1’].materials[’Material-1’].Elastic(table=((1000000000.0, 0.3), )) mdb.models[’Model-1’].HomogeneousSolidSection(material=’Material-1’, name= ’Section-1’, thickness=None) mdb.models[’Model-1’].parts[’Part-1’].SectionAssignment(offset=0.0, offsetField=’’, offsetType=MIDDLE_SURFACE, region=Region( faces=mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((-1.666667, -0.333333, 0.0), (0.0, 0.0, 1.0)), )), sectionName=’Section-1’) ### SET & SURFACE ### mdb.models[’Model-1’].parts[’Part-1’].Set(edges= mdb.models[’Model-1’].parts[’Part-1’].edges.findAt(((-5.0, -0.5, 0.0), )), name=’Set-1’) mdb.models[’Model-1’].parts[’Part-1’].Surface(name=’Surf-1’, side1Edges= mdb.models[’Model-1’].parts[’Part-1’].edges.findAt(((-2.5, 1.0, 0.0), ))) ### MESH ### mdb.models[’Model-1’].parts[’Part-1’].setMeshControls(elemShape=QUAD, regions= mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((-1.666667, -0.333333, 0.0), )), technique=STRUCTURED) mdb.models[’Model-1’].parts[’Part-1’].setElementType(elemTypes=(ElemType( elemCode=CPS8R, elemLibrary=STANDARD), ElemType(elemCode=CPS6M, elemLibrary=STANDARD)), regions=( mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((-1.666667, -0.333333, 0.0), )), )) mdb.models[’Model-1’].parts[’Part-1’].seedPart(deviationFactor=0.1, size=0.5) mdb.models[’Model-1’].parts[’Part-1’].generateMesh() ### ASSEMBLY ### mdb.models[’Model-1’].rootAssembly.DatumCsysByDefault(CARTESIAN) mdb.models[’Model-1’].rootAssembly.Instance(dependent=ON, name=’Part-1-1’, part=mdb.models[’Model-1’].parts[’Part-1’]) mdb.models[’Model-1’].rootAssembly.regenerate() ### STEP, BC & LOAD ### mdb.models[’Model-1’].StaticStep(initialInc=0.1, maxInc=0.1, name=’Step-1’, previous=’Initial’) mdb.models[’Model-1’].DisplacementBC(amplitude=UNSET, createStepName=’Step-1’, distributionType=UNIFORM, fieldName=’’, fixed=OFF, localCsys=None, name= ’BC-1’, region= mdb.models[’Model-1’].rootAssembly.instances[’Part-1-1’].sets[’Set-1’], u1= 0.0, u2=0.0, ur3=0.0) mdb.models[’Model-1’].Pressure(amplitude=UNSET, createStepName=’Step-1’, distributionType=UNIFORM, field=’’, magnitude=-100000.0, name=’Load-1’, region= mdb.models[’Model-1’].rootAssembly.instances[’Part-1-1’].surfaces[’Surf-1’]) ### JOB & CALCULATE ### mdb.Job(contactPrint=OFF, description=’’, echoPrint=OFF, explicitPrecision= SINGLE, historyPrint=OFF, memory=90, memoryUnits=PERCENTAGE, model= ’Model-1’, modelPrint=OFF, multiprocessingMode=DEFAULT, name=’EXAMPLE’, nodalOutputPrecision=SINGLE, numCpus=1, numDomains=1, parallelizationMethodExplicit=DOMAIN, scratch=’’, type=ANALYSIS, userSubroutine=’’) mdb.jobs[’EXAMPLE’].submit(consistencyChecking=OFF) 第一个EXAMPLE_ODB.py # -*- coding: mbcs -*- # # Abaqus/CAE Version 6.8-2 replay file # Internal Version: 2008_07_21-07.21.56 87172 # Run by overveld on Wed Nov 17 23:00:22 2010 # # from driverUtils import executeOnCaeGraphicsStartup # executeOnCaeGraphicsStartup() #: Executing "onCaeGraphicsStartup()" in the site directory ... from abaqus import * from abaqusConstants import * session.Viewport(name=’Viewport: 1’, origin=(0.0, 0.0), width=268.952117919922, height=154.15299987793) session.viewports[’Viewport: 1’].makeCurrent() session.viewports[’Viewport: 1’].maximize() from caeModules import * from driverUtils import executeOnCaeStartup executeOnCaeStartup() o1 = session.openOdb(name=’/home/overveld/EXAMPLE.odb’) session.viewports[’Viewport: 1’].setValues(displayedObject=o1) #: Model: /home/overveld/EXAMPLE.odb #: Number of Assemblies: 1 #: Number of Assembly instances: 0 #: Number of Part instances: 1 #: Number of Meshes: 1 #: Number of Element Sets: 2 #: Number of Node Sets: 2 #: Number of Steps: 1 session.viewports[’Viewport: 1’].odbDisplay.display.setValues(plotState=( CONTOURS_ON_DEF, )) session.printToFile(fileName=’EXAMPLE’, format=TIFF, canvasObjects=( session.viewports[’Viewport: 1’], )) 最终的EXAMPLE_ODB.py #open modulus, create viewport and open odb from abaqus import * from abaqusConstants import * session.Viewport(name=’Viewport: 1’, origin=(0.0, 0.0), width=268.952117919922, height=154.15299987793) session.viewports[’Viewport: 1’].makeCurrent() session.viewports[’Viewport: 1’].maximize() from caeModules import * from driverUtils import executeOnCaeStartup executeOnCaeStartup() o1 = session.openOdb(name=’/home/overveld/EXAMPLE.odb’) session.viewports[’Viewport: 1’].setValues(displayedObject=o1) ### CREATE OUTPUT ### session.viewports[’Viewport: 1’].odbDisplay.display.setValues(plotState=( CONTOURS_ON_DEF, )) session.printToFile(fileName=’EXAMPLE’, format=TIFF, canvasObjects=( session.viewports[’Viewport: 1’], )) 调整的EXAMPLE_MDB.py #load modulus from part import * from material import * from section import * from assembly import * from step import * from interaction import * from load import * from mesh import * from job import * from sketch import * from visualization import * from connectorBehavior import * height=0.2 ####################change width=0.1 ####################change ### PART ### mdb.models[’Model-1’].ConstrainedSketch(name=’__profile__’, sheetSize=20.0) mdb.models[’Model-1’].sketches[’__profile__’].rectangle(point1=(-width/2.0, -height/2.0), point2=(width/2.0, height/2.0)) ####################change mdb.models[’Model-1’].Part(dimensionality=TWO_D_PLANAR, name=’Part-1’, type= DEFORMABLE_BODY) mdb.models[’Model-1’].parts[’Part-1’].BaseShell(sketch= mdb.models[’Model-1’].sketches[’__profile__’]) del mdb.models[’Model-1’].sketches[’__profile__’] ### MATERIAL & SECTION ### mdb.models[’Model-1’].Material(name=’Material-1’) mdb.models[’Model-1’].materials[’Material-1’].Elastic(table=((1000000000.0, 0.3), )) mdb.models[’Model-1’].HomogeneousSolidSection(material=’Material-1’, name= ’Section-1’, thickness=None) mdb.models[’Model-1’].parts[’Part-1’].SectionAssignment(offset=0.0, offsetField=’’, offsetType=MIDDLE_SURFACE, region=Region( faces=mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((0.0, 0.0, 0.0), (0.0, 0.0, 1.0)), )), sectionName=’Section-1’) #####################change ### SET & SURFACE ### mdb.models[’Model-1’].parts[’Part-1’].Set(edges= mdb.models[’Model-1’].parts[’Part-1’].edges.findAt(((-width/2.0, -height/4.0, 0.0), )), name=’Set-1’) ####################change mdb.models[’Model-1’].parts[’Part-1’].Surface(name=’Surf-1’, side1Edges= mdb.models[’Model-1’].parts[’Part-1’].edges.findAt(((-width/4.0, height/2.0, 0.0), ))) ####################change ### MESH ### mdb.models[’Model-1’].parts[’Part-1’].setMeshControls(elemShape=QUAD, regions= mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((0.0, 0.0, 0.0), )), technique=STRUCTURED) ####################change mdb.models[’Model-1’].parts[’Part-1’].setElementType(elemTypes=(ElemType( elemCode=CPS8R, elemLibrary=STANDARD), ElemType(elemCode=CPS6M, elemLibrary=STANDARD)), regions=( mdb.models[’Model-1’].parts[’Part-1’].faces.findAt(((0.0, 0.0, 0.0), )), )) ####################change mdb.models[’Model-1’].parts[’Part-1’].seedPart(deviationFactor=0.1, size=height/4) ####################change mdb.models[’Model-1’].parts[’Part-1’].generateMesh() ### ASSEMBLY ### mdb.models[’Model-1’].rootAssembly.DatumCsysByDefault(CARTESIAN) mdb.models[’Model-1’].rootAssembly.Instance(dependent=ON, name=’Part-1-1’, part=mdb.models[’Model-1’].parts[’Part-1’]) mdb.models[’Model-1’].rootAssembly.regenerate() ### STEP, BC & LOAD ### mdb.models[’Model-1’].StaticStep(initialInc=0.1, maxInc=0.1, name=’Step-1’, previous=’Initial’) mdb.models[’Model-1’].DisplacementBC(amplitude=UNSET, createStepName=’Step-1’, distributionType=UNIFORM, fieldName=’’, fixed=OFF, localCsys=None, name= ’BC-1’, region= mdb.models[’Model-1’].rootAssembly.instances[’Part-1-1’].sets[’Set-1’], u1= 0.0, u2=0.0, ur3=0.0) mdb.models[’Model-1’].Pressure(amplitude=UNSET, createStepName=’Step-1’, distributionType=UNIFORM, field=’’, magnitude=-100000.0, name=’Load-1’, region= mdb.models[’Model-1’].rootAssembly.instances[’Part-1-1’].surfaces[’Surf-1’]) ### JOB & CALCULATE ### mdb.Job(contactPrint=OFF, description=’’, echoPrint=OFF, explicitPrecision= SINGLE, historyPrint=OFF, memory=90, memoryUnits=PERCENTAGE, model= ’Model-1’, modelPrint=OFF, multiprocessingMode=DEFAULT, name=’EXAMPLE’, nodalOutputPrecision=SINGLE, numCpus=1, numDomains=1, parallelizationMethodExplicit=DOMAIN, scratch=’’, type=ANALYSIS, userSubroutine=’’) mdb.jobs[’EXAMPLE’].submit(consistencyChecking=OFF) mdb.jobs[’EXAMPLE’].waitForCompletion() ####################change ### OUPUT ### execfile(’EXAMPLE_ODB.py’) ####################change


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3