Abaqus_Python中的数据类型[abaqus二次开发]

news/2024/10/17 16:26:17/

1,符号常值(SymbolicConstants)

在进行编程过程中有很多函数需要默认的参数,比如弹性材料对象的各项同性,正交(ISOTROPIC,ORTHOTROPIC)等性质均为其材料的默认参数种类。

例如下面程序中的[type=ORTHOTROPIC]

mdb.models['Model-1'].materials['Material-3'].Elastic(type=ORTHOTROPIC, table=(

(1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0), ))

这些参数全部是由大写字母组成,其中大部分SymbolicConstants都是在模块AbaqusConstants中定义的,另外有一小部分是在Abaqus模块中定义,在使用之前应将其导入到当前的工作空间中。

from AbaqusConstants import *

from SymbolicConstants import *

 

2,布尔值(Booleans)

Python中的布尔值为Ture和False,其类型为bool,Abaqus中自定义了一种布尔对象:ON和OFF。上述两种布尔值是通用的,例如下面两段程序是一样的:

程序段1:

session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(

referenceRepresentation=OFF)

程序段2:

session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(

referenceRepresentation=False)

 

3,特有的模型对象

Abaqus中有许多的特定对象。大的有模型数据相关对象(MDB)、结果数据相关对象(ODB)和视图对象相关对象(Session);模块级别的对象有部件对象(Part)、材料对象(Material)、载荷步对象(Step)等;细节级别的对象有几何节点(Vertgex)、几何边(Edge)、几何面(Face)、集合块(Cell)、表面(Surface)网格节点(Node)和网格单元(Element)等。

如下定义程序:

g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints

 

4,序列(Sequence)

Abaqus中的序列可以分为4中:数据序列、几何序列、网格序列和表面序列。

数据序列(Table)

mdb.models['Model-1'].materials['steel'].Elastic(table=((210000.0, 0.1), ))

如上段程序中定义材料的弹性模量和泊松比使用了该类型序列,使用type来查看该对象:

type(mdb.models['Model-1'].materials['steel'].Elastic(table=((210000.0, 0.1), )))

<type 'tuple'>

可以看出这个数据序列就是标准的Python提供的二元数组,但是其他三个序列均是Abaqus所特有的的数据类型。

几何序列(GeomSequence)

这里的几何包括点(Vertex),边(Edge)、面(Face)和体(Cell)。对象名字分别是:VertexArray、EdgeArray、FaceArray和CellArray。这几种序列通常在定义边界条件和载荷,绘制网格以及赋予材料界面截面属性等函数的主要输入。

如下定义边界条件(左端加入固定约束):

a = mdb.models['Model-1'].rootAssembly

v1 = a.instances['beam-1'].vertices

verts1 = v1.getSequenceFromMask(mask=('[#1 ]', ), )

region = a.Set(vertices=verts1, name='Set-1')

mdb.models['Model-1'].DisplacementBC(name='BC-1', createStepName='Step-1',

region=region, u1=0.0, u2=0.0, u3=0.0, ur1=0.0, ur2=0.0, ur3=0.0,

amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='',

localCsys=None)

 

Abaqus提供了几种可以根据一个集合序列生成一个细心地集合序列的方法:

findAt(..)

使用一组坐标来查找并生成满足条件的集合序列

getSequenceFromMask(...)

使用压缩序列生成几何序列

getByBoundingBox(...)

生成在指定方形区域中的几何组成的几何序列

getByBoundingCylinder(...)

生成在指定圆柱区域中的几何组成的几何序列

getByBoundingSphere(...)

生成在指定圆形区域中的几何组成的几何序列

getBoundingBox(...)

获取某个几何序列的坐标极限

 

网格序列(MeshSequence):

这里序列由一系列的网格节点(node)、单元(element)以及其表面(Face)和边(Edge)所组成序列。MeshNodeArray、MeshElementArray、MeshFaceArray和MeshEdgeArray。

 

sequenceFromLabels(...)

通过指定网格或者节点的编号来建立对应的网格序列

getSequenceFromMask(...)

使用压缩序列生成网格序列

getByBoundingBox(...)

生成在指定方形区域中的网格或者节点组成的网格序列

getByBoundingCylinder(...)

生成在指定圆柱区域中的网格或者节点组成的网格序列

getByBoundingSphere(...)

生成在指定圆形区域中的网格或者节点组成的网格序列

getBoundingBox(...)

获取某个网格序列的坐标极限

 

表面序列(SurfaceSequence):

表面序列是一种特殊的符合序列,其中的元素可以是边,面,单元或者节点。该类型中的面需要考虑方向,因此其参数中常常包含便是方向的参数。比如,对于一般的部件表面,存在两个参数side1Face/side2Face来指明面的取向;而对于六面体网格,每个面都分别使用face1Elements/face2Elements等来指定具体的面。

 

5,仓库(Repositories)

仓库是用来存储特定对象的容器,例如step仓库用来存储模型中定义的所有steps。一个仓库映射一系列的信息,就和Python中的字典一样,但是仓库中的对象只能是同一类型的。

例如,下免得仓库包含模型数据库中所有的model:

mdb.models

下面仓库则包含Model—1中所有的部件:

mdb.models['Model-1'].parts

和字典一样,你可以通过键值访问仓库中的对象,键值通常是你建立对象时在构建函数命令中提供的名称。例如,Viewport构造函数创建了新的Viewport对象在viewports仓库中:

session.Viewport(name='Side view', origin = (10,10), width=50, height=50)

这个Viewport对象的键值就是'Side view',可以使用这个键值去访问这个特定的Viewport对象,例如:

session.viewports['Side view'].viewportAnnotationOptions.\ setValues(legend=OFF, title=OFF)

通过将一个仓库中的对象进行命名可以增加程序的可读性,例如,可以将Viewport命名为myViewport来重新编写上述声明:

myViewport = session.viewports['Side view'] myViewport.viewportAnnotationOptions.setValues( legend=OFF, title=OFF)

通常,如果使用者可以创建对象,他的仓库键值是一个字符串。在一些情况下爱Abaqus/CAE创建的对象的键值可以使字符串、整数或者SymbolicConstant

和字典一样,你可以使用keys()去访问仓库键值。

>>> session.Viewport(name='Side view')

>>> session.Viewport(name='Top view')

>>> session.Viewport(name='Front view')

>>> for key in session.viewports.keys():

... print key

Front view

Top view

Side view

使用changeKey()方法来修改字典中键值名称:

myPart = mdb.models['Model-1'].Part(name='housing', dimensionality=THREE_D, type=DEFORMABLE_BODY) mdb.models['Model-1'].parts.changeKey(fromName='housing', toName='form')

参考:

[1]《ABAQUS Python二次开发攻略》

[2]http://dsk.ippt.pan.pl/docs/abaqus/v6.13/books/cmd/default.htm

 

 


http://www.ppmy.cn/news/703191.html

相关文章

掉期交易与利率平价

掉期交易与利率平价 – 潘登同学的期汇操作笔记 文章目录 掉期交易与利率平价 -- 潘登同学的期汇操作笔记 掉期交易进行掉期交易的目的即期对远期的掉期交易即期对次日(Spot/Next)即期对一周(Spot/Next)即期对整数月 即期对即期的掉期交易远期对远期的掉期交易基于掉期率的计算…

二层(链路层)数据包发送过程分析

说明&#xff1a;本系列博文所涉及内核版本为2.6.32 当上层准备好一个包之后&#xff0c;交给链路层&#xff0c;链路层数据包发送主要通过dev_queue_xmit函数处理。数据包的发送可分为两种&#xff0c;一种是正常的传输流程&#xff0c;即通过网卡驱动&#xff0c;另一种是通过…

俯卧撑你真做标准了嘛?敢不敢用Python来测试一下 (¬‿¬)

前言&#xff1a; 在此次冬奥会上&#xff0c;谷爱凌“一飞冲天”&#xff0c;苏翊鸣“一鸣惊人”&#xff0c;短道速滑梦之队“一往无前”……运动健儿们挑战极限、攀登顶峰的精神无一不让无数观众热血澎湃&#xff01; 这些燃爆冬奥赛场的运动健儿们&#xff0c;洋溢着蓬勃…

健身也内卷?这届网友用 Python 掌握了做标准俯卧撑的秘诀

编者按&#xff1a;自己在家锻炼时&#xff0c;我们很难知道自己的动作是否标准。本文作者用Python写了一个可以检测俯卧撑动作是否标准的程序&#xff0c;一起来看看他是怎么做的。 原文链接&#xff1a;https://aryanvij02.medium.com/push-ups-with-python-mediapipe-open-…

俯卧撑计数 opencv-python + mediapipe

分享一个国外的趣味项目&#xff0c;俯卧撑计数自动计数项目&#xff0c;这个准确度还可以&#xff0c;考虑因素比较全&#xff0c;据说是新加坡军方使用的。 原文链接&#xff1a;https://aryanvij02.medium.com/push-ups-with-python-mediapipe-open-a544bd9b4351 github 地…

【AI生成PPT】美图 vs Mindshow 谁更值得推荐?

概要 本文为大家安利两款人工智能生成PPT软件的不错办法&#xff0c;同时做一个简单的比较分析。 笔者写下这篇博文时是2023年的夏天&#xff0c;彼时国内直接可用的AI自动生成工具正在逐步完善。在呼声较高的国产PPT生成工具中&#xff0c;笔者着重比较了 美图 和 Mindshow 两…

瑞吉外卖-全网最全笔记-Day01

业务开发Day1-01-本章内容介绍 项目效果展示 登录界面 登录成功界面 管理界面展示 员工管理分类管理菜品管理套餐管理订单明细 前端开发使用HTML5技术&#xff08;自适应屏幕大小功能&#xff09; 目录 软件开发整体介绍瑞吉外卖项目介绍开发环境搭建 业务开发Day1-02…

苹果手机无法kx上网的问题

突然一下的不能小上网了&#xff0c;小火箭没有问题&#xff0c;网络没有问题&#xff0c;重启手机&#xff0c;重新下小火箭&#xff0c;重置网络设置&#xff0c;什么都试过了都不行。节点是没问题的pc端连的相同wifi都能上&#xff0c;实在是想不出来哪里出问题了。有大佬遇…