自己做的一个简单的案例,用python用于abaqus的模拟比较省时间,留作参考

在abaqus中,点击file——run script——运行脚本就可以了,abaqus工作目录下的.rpy文件是abaqus的日志,进行每一步操作也有相应的代码,可以直接拷贝过来用

#!/usr/bin/env/ python
# -*- coding:utf-8 -*-# === 导入必要的模块 ===
from abaqus import *
from abaqusConstants import *
import mesh
import regionToolset
import job
#----------------------------------------------------------------# === 设置参数 ====
modelName = "mixed_mode_2d"length = 3.0
height = 6.0
width = 1.0crack_len = 1.5
crack_y = 0.05                          # 裂缝在y方向平移的距离YM = 2.10E+11                           # 杨氏模量(Pa)
MU = 0.3                                # 泊松比
MAXPS = 2.2E+08                        # 损伤开始的最大主应力
DTOL = 0.05                             # 损伤容限
GI = 42200.0                            # 断裂能
ETA = 1.0                               # Power-law的指数#----------------------------------------------------------------# === 创建模型和视图设置 ===Mdb()viewportName = session.Viewport(name=modelName)
viewportName.makeCurrent()
viewportName.maximize()plateModel = mdb.Model(name=modelName)
del mdb.models['Model-1']#----------------------------------------------------------------# === 创建部件,首先是平板部件 ===
plateSketch = plateModel.ConstrainedSketch(name='plateProfile',sheetSize=height)
plateSketch.rectangle(point1=(0.0, -height/2.0),point2=(length,height/2.0))
platePart = plateModel.Part(dimensionality=TWO_D_PLANAR,name='plate',type=DEFORMABLE_BODY)
platePart.BaseShell(sketch=plateModel.sketches['plateProfile'])# === 创建裂缝几何部件 ===
crackSketch = plateModel.ConstrainedSketch(name='crackProfile',sheetSize=height)
crackSketch.Line(point1=(0.0,crack_y),point2=(crack_len,crack_y))
crackPart=plateModel.Part(dimensionality=TWO_D_PLANAR,name='crack',type=DEFORMABLE_BODY)
crackPart.BaseWire(sketch=plateModel.sketches['crackProfile'])#----------------------------------------------------------------# === 创建一些集合(Set)===
platePart.Set(faces=platePart.faces[:],name='ALL')e1 = platePart.edges.findAt(((length/2.0, -height/2.0, 0.0),))
platePart.Set(edges=e1,name='bottom')e1 = platePart.edges.findAt(((length/2.0, +height/2.0, 0.0),))
platePart.Set(edges=e1,name='top')platePart.Set(faces=crackPart.faces[:],name='crack')#----------------------------------------------------------------# === 定义材料和截面属性 ===
plateMat1 = plateModel.Material(name='elas')plateMat1.Elastic(table=((YM,MU),))
plateMat1.MaxpsDamageInitiation(table=((MAXPS,),),tolerance=DTOL)
plateMat1.maxpsDamageInitiation.DamageEvolution(mixedModeBehavior=POWER_LAW, power=ETA, table=((GI,GI,GI),),type=ENERGY)
plateMat1.maxpsDamageInitiation.DamageStabilizationCohesive(cohesiveCoeff=0.001)
plateModel.HomogeneousSolidSection(material='elas',name='solid',thickness=width)#----------------------------------------------------------------# === 赋给材料截面属性和方向 ===
platePart.MaterialOrientation(fieldName='', localCsys=None, orientationType=GLOBAL,region=platePart.sets['ALL'],stackDirection=STACK_3)platePart.SectionAssignment(region=platePart.sets['ALL'],sectionName='solid')#----------------------------------------------------------------# ===网格控制和划分网格===# 单元类型
elemType1 = mesh.ElemType(elemCode=CPE4R, elemLibrary=STANDARD, secondOrderAccuracy=OFF, hourglassControl=DEFAULT, distortionControl=DEFAULT)
elemType2 = mesh.ElemType(elemCode=CPE3, elemLibrary=STANDARD, secondOrderAccuracy=OFF, distortionControl=DEFAULT)
p1 = mdb.models['mixed_mode_2d'].parts['plate']
f = p1.faces
faces = f.getSequenceFromMask(mask=('[#1 ]', ), )
pickedRegions =(faces, )
p1.setElementType(regions=pickedRegions, elemTypes=(elemType1, elemType2))# 单元划分技术
pickedRegions = f.getSequenceFromMask(mask=('[#1 ]', ), )
p1.setMeshControls(regions=pickedRegions, elemShape=QUAD, technique=STRUCTURED)# 网格种子
ex = 30
ey = 60
e1 = platePart.edges.findAt(( (length/2.0, -height/2.0, 0.0), ))
platePart.seedEdgeByNumber(edges=e1, number=ex)e1 = platePart.edges.findAt(( (length, 0.0, 0.0), ))
platePart.seedEdgeByNumber(edges=e1, number=ey)platePart.generateMesh()
# === 部件部分结束 ===#----------------------------------------------------------------# === 装配 ===
plateModel.rootAssembly.DatumCsysByDefault(CARTESIAN)
plateModel.rootAssembly.Instance(dependent=ON, name='plate_ 1', part=platePart)
plateModel.rootAssembly.Instance(dependent=ON, name='crack_ 1', part=crackPart)# 创建参考点,以用于施加位移边界条件
rp_db = plateModel.rootAssembly.ReferencePoint(point=(length, -height/2.0, 0.0))
plateModel.rootAssembly.features.changeKey(fromName='RP-1', toName='db')#----------------------------------------------------------------# ===创建装配体下的集台(set) ===
v1 = (plateModel. rootAssembly .referencePoints[rp_db.id], )
plateModel.rootAssembly.Set(name='bdisp', referencePoints=v1)# ===装配结束===#----------------------------------------------------------------# === 创建的束方程,以用于施加边界条件 ===
mdb.models['mixed_mode_2d'].Equation(name='ce_bot', terms=((1.0, 'plate_ 1.bottom', 1), (-1.0, 'bdisp', 1)))
#plateModel.Equation(name='ce_bot', terms=((1.0, 'plate_1.bottom',1),(-1.0,'bdisp',1)))#----------------------------------------------------------------# === 创建分析步和输出设置 ===
plateModel.StaticStep(initialInc=0.005,maxInc=0.01, maxNumInc=10000,minInc=1e-09,name='Static', nlgeom=ON, previous='Initial')plateModel.steps['Static']. control. setValues(allowPropagation=OFF,discontinuous=ON,resetDefaultValues=OFF,timeIncrementation=(8.0, 10.0, 9.0,16.0, 10.0, 4.0, 12.0, 20.0, 6.0, 3.0,50.0))mdb.models['mixed_mode_2d'].fieldOutputRequests['F-Output-1'].setValues(variables=('S', 'LE', 'U', 'RF', 'PHILSM', 'STATUSXFEM'))           mdb.models['mixed_mode_2d'].HistoryOutputRequest(createStepName='Static',name='H-0utput-2', rebar=EXCLUDE, region=mdb.models[modelName].rootAssembly.sets['bdisp'],sectionPoints=DEFAULT, variables=('U1', 'RF1'))#----------------------------------------------------------------# === 施加边界条件 ===
plateModel. DisplacementBC( amplitude=UNSET, createStepName='Static', distributionType=UNIFORM, fieldName='', fixed=OFF, localCsys=None,name='rp', region=plateModel.rootAssembly.sets['bdisp'], u1=0.0027,u2=UNSET, ur3=UNSET)plateModel. DisplacementBC ( amplitude=UNSET, createStepName='Static', distributionType=UNIFORM, fieldName='', fixed=OFF, localCsys=None,name='bot', region=plateModel.rootAssembly.instances['plate_ 1'].sets['bottom'],u1=UNSET,u2=-0.00162,ur3=UNSET)plateModel. DisplacementBC( amplitude=UNSET, createStepName='Static', distributionType=UNIFORM, fieldName='', fixed=OFF, localCsys=None,name='top',region=plateModel.rootAssembly.instances['plate_ 1'].sets['top'],u1=-0.0027,u2=0.00162, ur3=UNSET)#----------------------------------------------------------------# === 定义扩充和初始裂纹 ===
plateModel.ContactProperty('contact')
a = mdb.models['mixed_mode_2d'].rootAssembly
crackDomain = a.instances['plate_ 1'].sets['ALL']
a = mdb.models['mixed_mode_2d'].rootAssembly
e1 = a.instances['crack_ 1'].edges
edges1 = e1.getSequenceFromMask(mask=('[#1 ]', ), )
crackLocation = regionToolset.Region(edges=edges1)
a = mdb.models['mixed_mode_2d'].rootAssembly
a.engineeringFeatures.XFEMCrack(name='enrl', crackDomain=crackDomain, interactionProperty='contact', crackLocation=crackLocation)
#----------------------------------------------------------------# ===创建Job并提交===
mdb.Job(model=modelName, name='mixed_mode_xfem_cpe4',description='Crack propagation in a plate under mixed-mode loading (XFEM)')
mdb.jobs['mixed_mode_xfem_cpe4'].submit()
#----------------------------------------------------------------

Python abaqus实现二维裂纹扩展(XFEM)相关推荐

  1. 如何用python制作动态二维码,提升表白成功率?

    来源:凹凸数据 本文约1000字,建议阅读5分钟. 本文教你用python制作动态二维码,助你表白成功! 关注数据派THU(DatapiTHU)后台回复"20200520"获取完整 ...

  2. 深入浅出python机器学习_如何用python画(绘制)二维函数(二维图)?

    参考文档 python 如何绘制二维函数? from matplotlib import pyplot as plt import numpy as np low=lambda x:10000 if ...

  3. Python+OpenCV:二维直方图(2D Histograms)

    Python+OpenCV:二维直方图(2D Histograms) ################################################################# ...

  4. 用Python玩转二维码

    二维码(Quick Response Code)几乎已经渗透到我们日常生活的每一个角落. 二维码是 1994 年发明的一种矩阵条形码. 实际上,二维码通常包含指向网站或应用程序的定位器.标识符或跟踪器 ...

  5. Python生成动态二维码,运用神库:qrcode

    一.介绍 1.1 二维码 二维码又称二维条码,常见的二维码为 QR Code,QR 全称 Quick Response.是一个近几年来移动设备上超流行的一种编码方式,在现在的生活中二维码随处可见.我们 ...

  6. python myqr制作二维码生成器_用Python生成动态二维码,只要5行代码,拥有你的个性二维码!...

    原标题:用Python生成动态二维码,只要5行代码,拥有你的个性二维码! 前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. P ...

  7. python随机生成二维列表_对python产生随机的二维数组实例详解

    对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...

  8. python:实现9×9二维数组数独算法(附完整源码)

    python:实现9×9二维数组数独算法 from __future__ import annotationsMatrix = list[list[int]]# assigning initial v ...

  9. Python qrcode制作二维码

    Python制作二维码 Python传言是万能语言,那么,今天就用Python做个二维码 准备 先下载qrcode pip install qrcode 下不了的可以参照我写的pip错误解决方法 里面 ...

最新文章

  1. React-native 官方 demo
  2. 【转】编程思想之消息机制
  3. python语言remove_慎用python的pop和remove方法
  4. IDA __OFSUB__ 测试
  5. vim编辑器常用命令总结
  6. ARM栈帧与编译选项
  7. mysql表级锁和行级锁_MySQL表级锁和行级锁
  8. 谷歌免费GPU,在线Jupyter notebook深度学习环境
  9. 应用随机过程概率模型导论(9th 英文版) Sheldon M.Ross 共享
  10. winform 企业ERP管理系统源码 c# C/S
  11. FPGA学习积累之AM调制解调(解调部分没搞太明白)
  12. 系统时间无法同步 rpc服务器不可用,win7系统时间同步出错RPC服务器不可用的解决手段...
  13. 特拉华大学计算机科学怎么样,2020年特拉华大学排名TFE Times美国最佳计算机科学硕士专业排名第84...
  14. PythonOperator、BashOperator以及Xcom使用
  15. mysqllinux操作,万字解析!
  16. 轻松快捷的安装Testlink,终于可以轻松搞定!
  17. 商用在线客服软件测试报告
  18. Drools入门案例(3/6)
  19. 每日蓝桥-基础练习 字母图形
  20. 看动画,拿 Offer:大厂算法面试真题全解析

热门文章

  1. css引入woff ttf,css引用跨域字体文件woff,eot,ttf问题
  2. 安卓源码,跑步打卡项目app源码
  3. 读书VS整容,出国留学不如当网红?
  4. MFC ODBC 学生成绩管理系统 示例
  5. 分析一下,直播类app开发需要哪些技术
  6. 计算机配色在纺织中的应用,浅析纺织染色电脑配色程序
  7. python黑空间私密相册_手机私密相册,保护个人隐私不外泄!这样操作!
  8. 【机器学习】集成学习及算法详解
  9. C语言 printf 打印输出百分数
  10. ubuntu 20.04 aarch64 平台交叉编译 glib