######################################

## Fundamentschwingungsstudie ##

## nur geeignet fuer ABAQUS

6.4-1 ##

## erstellt

von D.Chen in 2009 ##

######################################

#开头的为注释行.

第一步, 建立建模环境, 这一步中py将从abaqus中导入建模所需的所有程序模块.

from part import *

接下来定义草图环境

mdb.models['Model-1'].Sketch(name='__profile__',

sheetSize=200.0)

mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(constructionGeometry=ON,

decimalPlaces=2, dimensionTextHeight=5.0, grid=ON,

gridFrequency=2, gridSpacing=5.0, sheetSize=200.0,

viewStyle=AXISYM)

上面的设定为大小200*200, 格栅间距为5, 文字标注高度为5.

mdb.models['Model-1'].sketches['__profile__'].ObliqueConstructionLine(point1=(0.0,

-100.0), point2=(0.0, 100.0))

本句语句设定轴对称模型的对称轴线位置

mdb.models['Model-1'].sketches['__profile__'].rectangle(point1=(0.0,

0.0),point2=(40.0, -40.0))

该语句绘制矩形, 从点0,0 至点40,-40

mdb.models['Model-1'].Part(dimensionality=AXISYMMETRIC,

name='Boden', type=DEFORMABLE_BODY)

定义模型为轴对称, 名字为boden,为可变形体

mdb.models['Model-1'].parts['Boden'].BaseShell(sketch=mdb.models['Model-1'].sketches['__profile__'])

del mdb.models['Model-1'].sketches['__profile__']

绘图完成不要忘记收回建模环境所占的内存

第二节, 材料定义

from material import *

from section import *

从ABAQUS提供的接口中导入材料库和组件库

mdb.models['Model-1'].Material(name='Boden')

定义材料名

mdb.models['Model-1'].materials['Boden'].Density(table=((2000.0, ),

))

定义材料密度

mdb.models['Model-1'].materials['Boden'].Elastic(table=((210546.3,

0.3333), ))

定义材料线弹性模量和泊松比, 其它的材料, 如弹塑性, 粘弹性材料均对应不同的对象函数.

mdb.models['Model-1'].HomogeneousSolidSection(material='Boden',

name='boden',thickness=1.0)

mdb.models['Model-1'].parts['Boden'].assignSection(region=Region(faces=mdb.models['Model-1'].parts['Boden'].faces[0:1]),

sectionName='boden')

设定组件为坐标无关性材料,厚度为单位厚度, 并将属性附给所用的组件

第三节, 装配

from assembly import *

首先, 导入装配所用到的对象

mdb.models['Model-1'].rootAssembly.DatumCsysByThreePoints(coordSysType=CYLINDRICAL,

origin=(0.0, 0.0, 0.0), point1=(1.0, 0.0, 0.0), point2=(0.0,0.0,

-1.0))

定义坐标类型为柱坐标, 原点0,0,0,另外两个为单位向量, 确定该坐标轴的方向.

mdb.models['Model-1'].rootAssembly.Instance(name='Boden-1',

part=mdb.models['Model-1'].parts['Boden'])

生成草图对像boden的实体, 名字叫Boden-1. 无偏移插入

from part import *

from material import *

from section import *

from assembly import *

第四节, 定义分析步

from step import *

象其它步一样, 先导入分析步要用到的模块

mdb.models['Model-1'].ImplicitDynamicsStep(initialInc=0.005,

maxNumInc=1024,name='Step-1', noStop=OFF, nohaf=OFF,

previous='Initial',timeIncrementationMethod=FIXED,

timePeriod=5.12)

定义对动力隐式分析, 时长为0.005*1024=5.12个时间单位, 前一步为Initial

mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(variables=('U',))

定义输出到ODB文件的数据, 这里只定义了位移输出

mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(frequency=1)

定义位移输出的频率为每步都输出

mdb.models['Model-1'].steps['Step-1'].Restart(frequency=1,

overlay=ON)

定义重启动析, 每一步记录, 只记录最后一次的正确状态

第五节, 定义接触

from interaction import *

依然是先导入所用的模块

mdb.models['Model-1'].rootAssembly.PartitionEdgeByParam(edges=(mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[3],

), parameter=0.975)

在上部即第3面的97.5%的地方设定一个点, 用于定义接触

mdb.models['Model-1'].ContactProperty('IntProp-1')

定义接触属性名

mdb.models['Model-1'].interactionProperties['IntProp-1'].TangentialBehavior(formulation=FRICTIONLESS)

mdb.models['Model-1'].interactionProperties['IntProp-1'].NormalBehavior(allowSeparation=OFF,

augmentedLagrange=OFF, pressureOverclosure=HARD)

定义接触特性,为无摩擦硬接触不允许分开

mdb.models['Model-1'].SurfaceToSurfaceContactStd(adjustMethod=NONE,

createStepName='Initial', interactionProperty='IntProp-1',

master=Region(

side1Edges=mdb.models['Model-1'].rootAssembly.instances['fun-1'].edges[0:1])

,

name='Int-1', slave=Region(

side1Edges=mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[4:5])

,

sliding=FINITE)

这一句是建立接触对, 分别为两个面上的一条边, 这里边的定义由ABAQUS内定, 具体可以查阅参考手册.

第六节, 荷载边界定义

from load import *

mdb.models['Model-1'].PeriodicAmplitude(a_0=1.0, data=((3.0, 1.1),

(3.2, 1.7)), frequency=2.5, name='Fourier',start=0.0,

timeSpan=STEP)

定义fourier级数表示的荷载

mdb.models['Model-1'].Pressure(amplitude='Fourier',

createStepName='Step-1', distribution=UNIFORM, magnitude=50.0,

name='Load-1', region=Region(

side1Edges=mdb.models['Model-1'].rootAssembly.instances['fun-1'].edges[2:3]))

定义压强, 设定加载的分析步,区域及放大系数

mdb.models['Model-1'].DisplacementBC(amplitude=UNSET,

createStepName='Initial',distribution=UNIFORM, localCsys=None,

name='BC-1', region=Region(

edges=mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[0:1]+mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[2:3]+mdb.models['Model-1'].rootAssembly.instances['fun-1'].edges[3:4]),

u1=SET,u2=UNSET, ur3=UNSET)

mdb.models['Model-1'].DisplacementBC(amplitude=UNSET,

createStepName='Initial', distribution=UNIFORM, localCsys=None,

name='BC-2', region=Region(

edges=mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[1:2]),

u1=UNSET, u2=SET, ur3=UNSET)

设定边界位移为0的边界条件, 注意语法中对象相加的方法.

第七节, 网格划分控制

from mesh import *

import mesh

导入网格划分模块

elemType1 = mesh.ElemType(elemCode=CAX8,

elemLibrary=STANDARD,secondOrderAccuracy=OFF,

hourglassControl=STIFFNESS, distortionControl=OFF)

elemType2 = mesh.ElemType(elemCode=CAX6M,

elemLibrary=STANDARD)

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

f1 = a1.instances['Boden-1'].faces

faces1 = f1[0:1]

regions =(faces1, )

a1.setElementType(regions=regions, elemTypes=(elemType1,

elemType2))

定义其中一个物体的网格为二次8结点单元, 如果其中有无法划分成四边形单元的情况, 则用三角形二次6结点单元.

elemType1 = mesh.ElemType(elemCode=CAX4,

elemLibrary=STANDARD)

elemType2 = mesh.ElemType(elemCode=CAX3,

elemLibrary=STANDARD)

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

f1 = a1.instances['fun-1'].faces

faces1 = f1[0:1]

regions =(faces1, )

a1.setElementType(regions=regions, elemTypes=(elemType1,

elemType2))

定义其中一个物体的网格为一次4结点单元,如果其中有无法划分成四边形单元的情况, 则用三角形一次3结点单元.

mdb.models['Model-1'].rootAssembly.seedPartInstance(regions=(mdb.models['Model-1'].rootAssembly.instances['fun-1'],

), size=0.5)

mdb.models['Model-1'].rootAssembly.seedPartInstance(regions=(mdb.models['Model-1'].rootAssembly.instances['Boden-1'],

), size=1)

定义网格划分全局单元大小.

mdb.models['Model-1'].rootAssembly.generateMesh(regions=(mdb.models['Model-1'].rootAssembly.instances['Boden-1'],mdb.models['Model-1'].rootAssembly.instances['fun-1']))

按照定义划分单元

# Save by CHEN on Thu Feb 19 15:16:26 2009

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 *

第八节, 任务提交及杂项功能

mdb.models.changeKey(fromName='Model-1',

toName='Fall-Muster')

修改模型名称

mdb.Model(name='Fall-015',

objectToCopy=mdb.models['Fall-Muster'])

拷贝模型

mdb.models['Fall-015'].materials['Boden'].elastic.setValues(table=((210546.3,

0.15),))

修改模型中的材料属性

mdb.Job(contactPrint=OFF, description='', echoPrint=OFF,

explicitPrecision=

SINGLE,

historyPrint=OFF, model='Fall-015', modelPrint=OFF,

multiprocessingMode=THREADS, name='Job-015',

nodalOutputPrecision=SINGLE,

numCpus=1,

numDomains=1, parallelizationMethodExplicit=LOOP,

parallelizationMethodStandard=TREE, preMemory=1024.0,

scratch='',

standardMemory=2048.0, standardMemoryPolicy=MODERATE,

type=ANALYSIS,

userSubroutine='')

生成任务

mdb.saveAs(pathName='D:/temp/FundamentSchwingungStudie')

保存模型

mdb.jobs['Job-015'].submit()

提交任务

mdb.jobs['Job-015'].waitForCompletion()

关于如何在python中提交多个任务的问题:

如果您使用下面这样的命令做的提交

mdb.jobs['Job-01'].submit()

mdb.jobs['Job-02'].submit()

mdb.jobs['Job-03'].submit()

你就会看到, 所有的任务是一次性提交的, 多个任务在一起运行, 这肯定不是你想看到的结果, 如何完成一个接着一个的提交呢,

其实很简单, 在每个任务后面加上一句

mdb.jobs['Job-01'].waitForCompletion()

就可以了.

那么上面的语句就改为

mdb.jobs['Job-01'].submit()

mdb.jobs['Job-01'].waitForCompletion()

mdb.jobs['Job-02'].submit()

mdb.jobs['Job-02'].waitForCompletion()

mdb.jobs['Job-03'].submit()

mdb.jobs['Job-03'].waitForCompletion()

......

就一切OK了

python解放二次开发_[转载]Python二次开发程序详解相关推荐

  1. python中读取文件编码_[转载]python中使用文件的读取编码问题

    原文链接:https://www.cnblogs.com/qianboping/p/6524420.html 今天想写个程序合并文件的,以前一直觉得python的编码解码好烦,只要处理文件合并之类的都 ...

  2. python二级选择题及答案_转载 |python二级选择题与分析(6)

    算法的时间复杂度是指 A 执行算法程序所需要的时间 B 算法程序的长度 C 算法程序中的指令条数 D 算法执行过程中所需要的基本运算次数 正确答案: D 下列关于栈的叙述中正确的是 A 在栈中只能插入 ...

  3. python中define的用法_#define用法,C语言#define详解

    C语言中,可以用 #define 定义一个标识符来表示一个常量.其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了. 预编译又叫预处理.预编译不是编译,而是编译前的处理.这 ...

  4. Linux嵌入式开发_主设备号与次设备号详解

    前言 在Linux内核中设备号的作用是用来区分不同的设备类型. 比如: 设备号23,对应的是LED 设备号17,对应的是某个存储设备 等等... 主次设备号 主设备号:对应设备的主号码 次设备号:对应 ...

  5. python符号格式化设置区间_Python 数值区间处理_对interval 库的快速入门详解

    使用 Python 进行数据处理的时候,常常会遇到判断一个数是否在一个区间内的操作.我们可以使用 if else 进行判断,但是,既然使用了 Python,那我们当然是想找一下有没有现成的轮子可以用. ...

  6. python调用shell脚本的参数_使用python执行shell脚本 并动态传参 及subprocess的使用详解

    最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 subpr ...

  7. python整数池_对Python中小整数对象池和大整数对象池的使用详解

    1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提 ...

  8. python计算各类型电影的评分_【Python数据科学实战项目】之 基于MovieLens的影评趋势分析|详解...

    原标题:[Python数据科学实战项目]之 基于MovieLens的影评趋势分析|详解 注:图片源于https://movielens.org/ 1. 项目任务 1.1 数据来源 本项目使用Group ...

  9. Dede二次开发程序详解(dede爱好者必备)

    Dede二次开发程序详解(dede爱好者必备) 调用说明:推荐会员(带用户头像)  [quote] {dede:sql sql="SELECT mid,mtype,userid,uname, ...

最新文章

  1. R语言使用ggpubr包的ggarrange函数组合多张结论图:使用ggpubr包将图像、文本、表格组合在一起展示
  2. php验证年月日的正则表达式,关于正则表达式:在php中验证日期格式
  3. 错误:android.util.SuperNotCalledException
  4. 查找数组B中不在数组A中的元素
  5. Python中实现模糊匹配的魔法库:FuzzyWuzzy
  6. 国产数据库存储引擎X-Engine的科研之路
  7. CMU黑科技,手机录视频,实现人脸3D建模的高度逼真
  8. ApI、toString方法、equals方法、Scanner方法基本知识
  9. java异常网,Java异常实践事项
  10. 【分布式】Zookeeper的服务器角色
  11. 资源过于硬核,8h删!这波福利....请笑纳~
  12. App Tamer Mac版常见问题解答
  13. windows 监控
  14. apache启动失败查看错误信息
  15. mui ajax的值php怎样获取,MUI.ajax是怎么获取数据的
  16. 整合阿里云域名 + 腾讯云 CDN + 又拍云存储的使用流程
  17. Android微博平台设计,基于Android平台的微博系统设计与开发
  18. 如何调用WxJump的API接口实现微信网址链接转二维码
  19. 万台服务器一人挑的奥秘
  20. 环境工程部门怎么实施自动化软件学习时间更多

热门文章

  1. Redis 分布式集群搭建2022版本+密码(linux环境)
  2. VS Code Element 提示 VSCode-Element-Helper 插件
  3. 使用Axios拦截器打印前端请求日志和后端后返回日志
  4. 工作流实战_15_flowable 我发起的流程实例查询
  5. 解决在已办任务菜单中都会抛出异常,由于definitionId=undefined导致的问题
  6. Java 动态加载类
  7. JUC 中断线程的3种方式
  8. JS中split对多个分隔符的处理
  9. python print用法不换行_python3让print输出不换行的方法
  10. android mtk 按键,Android 4.0 虚拟按键、手机模式、平板模式(转)