前言

从未打开过Abaqus开始的二次开发。参考书籍《Abaqus Python二次开发攻略》,书里写的很详细。
参考RVE教程:https://www.bilibili.com/video/BV1c64y1b7dz?spm_id_from=333.337.search-card.all.click
Abaqus版本:2020

初始rpy文件

# -*- coding: mbcs -*-
#
# Abaqus/CAE Release 2020 replay file
# Internal Version: 2019_09_14-01.49.31 163176
# Run by Administrator on Thu May 19 11:05:34 2022
## 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=250.050506591797, height=145.686111450195)
session.viewports['Viewport: 1'].makeCurrent()
session.viewports['Viewport: 1'].maximize()
from caeModules import *
from driverUtils import executeOnCaeStartup
executeOnCaeStartup()
session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(referenceRepresentation=ON)

4个import导入必要的模块;
其余行生成Viewport:1用于显示。

RVE建立

模型建立

GUI操作,建立一个边长10的正方体作为基体

s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=STANDALONE)
s.rectangle(point1=(0.0, 0.0), point2=(10.0, 10.0))
p = mdb.models['Model-1'].Part(name='MATRIX', dimensionality=THREE_D, type=DEFORMABLE_BODY)
p = mdb.models['Model-1'].parts['MATRIX']
p.BaseSolidExtrude(sketch=s, depth=10.0)
s.unsetPrimaryObject()
p = mdb.models['Model-1'].parts['MATRIX']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
del mdb.models['Model-1'].sketches['__profile__']

前5行建立草图对象s;
6-10行使用草图s生成Solid部件p;
最后两行书上没说,但看意思大概就是设定一下当前显示对象,然后删掉草图。可以看到,草图对象是在mdb.models仓库里的。

GUI操作,创建纤维,其实就是在方体一个面上画圆,后期算法主要针对这里的圆圈生成

p = mdb.models['Model-1'].parts['MATRIX']
f, e = p.faces, p.edges
t = p.MakeSketchTransform(sketchPlane=f[4], sketchUpEdge=e[7], sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(5.0, 5.0, 10.0))
s1 = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=34.64, gridSpacing=0.86, transform=t)
g, v, d, c = s1.geometry, s1.vertices, s1.dimensions, s1.constraints
s1.setPrimaryObject(option=SUPERIMPOSE)
p = mdb.models['Model-1'].parts['MATRIX']
p.projectReferencesOntoSketch(sketch=s1, filter=COPLANAR_EDGES)
s1.CircleByCenterPerimeter(center=(0.0, 0.0), point1=(1.72, 0.0))
p = mdb.models['Model-1'].parts['MATRIX']
f1, e1 = p.faces, p.edges
p.SolidExtrude(sketchPlane=f1[4], sketchUpEdge=e1[7], sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s1, depth=10.0, flipExtrudeDirection=ON, keepInternalBoundaries=ON)
s1.unsetPrimaryObject()
del mdb.models['Model-1'].sketches['__profile__']

材料属性

GUI操作,分别为基体和纤维创建材料属性,FIBER属性与MATRIX类似

session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=ON, engineeringFeatures=ON)
session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(referenceRepresentation=OFF)
mdb.models['Model-1'].Material(name='MATRIX')
mdb.models['Model-1'].materials['MATRIX'].Elastic(table=((7000.0, 0.38), ))
mdb.models['Model-1'].Material(name='FIBER')
mdb.models['Model-1'].materials['FIBER'].Elastic(table=((220000.0, 0.2), ))

创建截面

为纤维和基体创建两个截面,并赋予

mdb.models['Model-1'].HomogeneousSolidSection(name='FIBER-SEC', material='FIBER', thickness=None)
mdb.models['Model-1'].HomogeneousSolidSection(name='MATRIX-SET', material='MATRIX', thickness=None)
p = mdb.models['Model-1'].parts['MATRIX']
c = p.cells
cells = c.getSequenceFromMask(mask=('[#1 ]', ), )
region = p.Set(cells=cells, name='Set-1')
p = mdb.models['Model-1'].parts['MATRIX']
p.SectionAssignment(region=region, sectionName='FIBER-SEC', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION)
p = mdb.models['Model-1'].parts['MATRIX']
c = p.cells
cells = c.getSequenceFromMask(mask=('[#2 ]', ), )
region = p.Set(cells=cells, name='Set-2')
p = mdb.models['Model-1'].parts['MATRIX']
p.SectionAssignment(region=region, sectionName='MATRIX-SET', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION)

创建装配体

a = mdb.models['Model-1'].rootAssembly
session.viewports['Viewport: 1'].setValues(displayedObject=a)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(optimizationTasks=OFF, geometricRestrictions=OFF, stopConditions=OFF)
a = mdb.models['Model-1'].rootAssembly
a.DatumCsysByDefault(CARTESIAN)
p = mdb.models['Model-1'].parts['MATRIX']
a.Instance(name='MATRIX-1', part=p, dependent=OFF)

Mesh


布种为0.5

session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=ON)
session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues(meshTechnique=ON)
a = mdb.models['Model-1'].rootAssembly
c1 = a.instances['MATRIX-1'].cells
pickedRegions = c1.getSequenceFromMask(mask=('[#3 ]', ), )
a.setMeshControls(regions=pickedRegions, elemShape=WEDGE)
a = mdb.models['Model-1'].rootAssembly
partInstances =(a.instances['MATRIX-1'], )
a.seedPartInstance(regions=partInstances, size=0.5, deviationFactor=0.1, minSizeFactor=0.1)
a = mdb.models['Model-1'].rootAssembly
partInstances =(a.instances['MATRIX-1'], )
a.generateMesh(regions=partInstances)
session.viewports['Viewport: 1'].enableMultipleColors()
session.viewports['Viewport: 1'].setColor(initialColor='#BDBDBD')
cmap=session.viewports['Viewport: 1'].colorMappings['Material']
session.viewports['Viewport: 1'].setColor(colorMapping=cmap)
session.viewports['Viewport: 1'].disableMultipleColors()

EasyPBC

这里模型名字一定要输入对,之所以Instance name不是Part-1-1是因为之前的装配体名字搞成MATRIX-1了。不过名字什么的无所谓。

import sys
sys.path.insert(8, r'e:/CAE/abaqus_plugins/EasyPBC V.1.4')
import easypbc
easypbc.feasypbc(part='Model-1', inst='MATRIX-1', meshsens=1E-07, CPU=1, E11=True, E22=True, E33=False, G12=True, G13=False, G23=False, onlyPBC=False, CTE=False, intemp=0, fntemp=100)
#: ----------------------------------
#: -------- Start of EasyPBC --------
#: ----------------------------------
#: ------ End of Sets Creation ------
#: Job job-E11: Analysis Input File Processor completed successfully.
#: Job job-E11: Abaqus/Standard completed successfully.
#: Job job-E11 completed successfully.
#: 模型: E:/CAE/job-E11.odb
#: 装配件个数:         1
#: 装配件实例个数: 0
#: 部件实例的个数:     1
#: 网格数:             2
#: 单元集合数:       3
#: 结点集合数:          5298
#: 分析步的个数:              1
#: Job job-E22: Analysis Input File Processor completed successfully.
#: Job job-E22: Abaqus/Standard completed successfully.
#: Job job-E22 completed successfully.
#: 模型: E:/CAE/job-E22.odb
#: 装配件个数:         1
#: 装配件实例个数: 0
#: 部件实例的个数:     1
#: 网格数:             2
#: 单元集合数:       3
#: 结点集合数:          5298
#: 分析步的个数:              1
#: Job job-G12: Analysis Input File Processor completed successfully.
#: Job job-G12: Abaqus/Standard completed successfully.
#: Job job-G12 completed successfully.
#: 模型: E:/CAE/job-G12.odb
#: 装配件个数:         1
#: 装配件实例个数: 0
#: 部件实例的个数:     1
#: 网格数:             2
#: 单元集合数:       3
#: 结点集合数:          5302
#: 分析步的个数:              1
#: ----------------------------------------------------
#: ----------------------------------------------------
#: The homogenised elastic properties:
#: E11=9143.64375 Stress units
#: V12=0.522747412324 ratio
#: V13=0.123966928571 ratio
#: E22=9144.00390625 Stress units
#: V21=0.522768005729 ratio
#: V23=0.123966354877 ratio
#: E33=N/A Stress units
#: V31=N/A ratio
#: V32=N/A ratio
#: G12=2924.36738281 Stress units
#: G13=N/A Stress units
#: G23=N/A Stress units
#: CTE X=N/A N/A
#: CTE Y=N/A N/A
#: CTE Z=N/A N/A
#: ----------------------------------------------------
#: Total mass=None Mass units
#: Homogenised density=0 Density units
#: ----------------------------------------------------
#: Processing duration 199.296000004 seconds
#: ----------------------------------------------------
#: The homogenised elastic properties are saved in ABAQUS Work Directory under Model-1_elastic_properties.txt
#: Citation: Omairey S, Dunning P, Sriramula S (2018) Development of an ABAQUS plugin tool for periodic RVE homogenisation.
#: Engineering with Computers. https://doi.org/10.1007/s00366-018-0616-4
#: ----------------------------------------------------
#: ---------------------------------------
#: --------- End of EasyPBC (3D) ---------
#: ---------------------------------------

结束之后文件结果如图

一个简单的二次开发

对于本案例,改改纤维直径、材料属性参数就可以了

fiberR = 2
matrixE = 2000
matrixV = 0.4
fiberE = 220000
fiberV = 0.2from abaqus import *
from abaqusConstants import *
session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=250.050506591797, height=145.686111450195)
session.viewports['Viewport: 1'].makeCurrent()
session.viewports['Viewport: 1'].maximize()
from caeModules import *
from driverUtils import executeOnCaeStartup
executeOnCaeStartup()
session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(referenceRepresentation=ON)s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=STANDALONE)
s.rectangle(point1=(0.0, 0.0), point2=(10.0, 10.0))
p = mdb.models['Model-1'].Part(name='MATRIX', dimensionality=THREE_D, type=DEFORMABLE_BODY)
p = mdb.models['Model-1'].parts['MATRIX']
p.BaseSolidExtrude(sketch=s, depth=10.0)
s.unsetPrimaryObject()
p = mdb.models['Model-1'].parts['MATRIX']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
del mdb.models['Model-1'].sketches['__profile__']
p = mdb.models['Model-1'].parts['MATRIX']
f, e = p.faces, p.edges
t = p.MakeSketchTransform(sketchPlane=f[4], sketchUpEdge=e[7], sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(5.0, 5.0, 10.0))
s1 = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=34.64, gridSpacing=0.86, transform=t)
g, v, d, c = s1.geometry, s1.vertices, s1.dimensions, s1.constraints
s1.setPrimaryObject(option=SUPERIMPOSE)
p = mdb.models['Model-1'].parts['MATRIX']
p.projectReferencesOntoSketch(sketch=s1, filter=COPLANAR_EDGES)
s1.CircleByCenterPerimeter(center=(0.0, 0.0), point1=(fiberR, 0.0))
p = mdb.models['Model-1'].parts['MATRIX']
f1, e1 = p.faces, p.edges
p.SolidExtrude(sketchPlane=f1[4], sketchUpEdge=e1[7], sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s1, depth=10.0, flipExtrudeDirection=ON, keepInternalBoundaries=ON)
s1.unsetPrimaryObject()
del mdb.models['Model-1'].sketches['__profile__']
session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=ON, engineeringFeatures=ON)
session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(referenceRepresentation=OFF)
mdb.models['Model-1'].Material(name='MATRIX')
mdb.models['Model-1'].materials['MATRIX'].Elastic(table=((matrixE, matrixV), ))
mdb.models['Model-1'].Material(name='FIBER')
mdb.models['Model-1'].materials['FIBER'].Elastic(table=((fiberE, fiberV), ))
mdb.models['Model-1'].HomogeneousSolidSection(name='FIBER-SEC', material='FIBER', thickness=None)
mdb.models['Model-1'].HomogeneousSolidSection(name='MATRIX-SET', material='MATRIX', thickness=None)
p = mdb.models['Model-1'].parts['MATRIX']
c = p.cells
cells = c.getSequenceFromMask(mask=('[#1 ]', ), )
region = p.Set(cells=cells, name='Set-1')
p = mdb.models['Model-1'].parts['MATRIX']
p.SectionAssignment(region=region, sectionName='FIBER-SEC', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION)
p = mdb.models['Model-1'].parts['MATRIX']
c = p.cells
cells = c.getSequenceFromMask(mask=('[#2 ]', ), )
region = p.Set(cells=cells, name='Set-2')
p = mdb.models['Model-1'].parts['MATRIX']
p.SectionAssignment(region=region, sectionName='MATRIX-SET', offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION)
a = mdb.models['Model-1'].rootAssembly
session.viewports['Viewport: 1'].setValues(displayedObject=a)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(optimizationTasks=OFF, geometricRestrictions=OFF, stopConditions=OFF)
a = mdb.models['Model-1'].rootAssembly
a.DatumCsysByDefault(CARTESIAN)
p = mdb.models['Model-1'].parts['MATRIX']
a.Instance(name='MATRIX-1', part=p, dependent=OFF)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=ON)
session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues(meshTechnique=ON)
a = mdb.models['Model-1'].rootAssembly
c1 = a.instances['MATRIX-1'].cells
pickedRegions = c1.getSequenceFromMask(mask=('[#3 ]', ), )
a.setMeshControls(regions=pickedRegions, elemShape=WEDGE)
a = mdb.models['Model-1'].rootAssembly
partInstances =(a.instances['MATRIX-1'], )
a.seedPartInstance(regions=partInstances, size=0.5, deviationFactor=0.1, minSizeFactor=0.1)
a = mdb.models['Model-1'].rootAssembly
partInstances =(a.instances['MATRIX-1'], )
a.generateMesh(regions=partInstances)
session.viewports['Viewport: 1'].enableMultipleColors()
session.viewports['Viewport: 1'].setColor(initialColor='#BDBDBD')
cmap=session.viewports['Viewport: 1'].colorMappings['Material']
session.viewports['Viewport: 1'].setColor(colorMapping=cmap)
session.viewports['Viewport: 1'].disableMultipleColors()
import sys
sys.path.insert(8, r'e:/CAE/abaqus_plugins/EasyPBC V.1.4')
import easypbc
easypbc.feasypbc(part='Model-1', inst='MATRIX-1', meshsens=1E-07, CPU=1, E11=True, E22=True, E33=False, G12=True, G13=False, G23=False, onlyPBC=False, CTE=False, intemp=0, fntemp=100)

运行结果如下,可以看到结果有所不同

Abaqus-python-二次开发学习笔记-单向长纤维RVE相关推荐

  1. abaqus python二次开发攻略.pdf 百度云_ABAQUS Python二次开发攻略 CAE分析大系

    内容推荐 本书是作者结合自己多年Abaqus 使用经验,在汲取国内外大量资料的基础上编写的一本Python 二次开发知识点笔记.内容涉及开发环境的搭建.Python 基础语法知识.Abaqus Pyt ...

  2. Revit二次开发学习笔记

    Revit二次开发学习笔记1 20220314: 概念:Application与Document 接口函数:IExternalCommand.ActiveView与Selection 20220316 ...

  3. python二次开发攻略-ABAQUS Python二次开发攻略

    第一部分 引言 第1章 Abaqus二次开发简介 12 1.1 为什么是Python 12 1.2 Python.FORTRAN与Abaqus 13 1.3 基于Python二次开发 14 第2章 P ...

  4. abaqus python二次开发攻略_基于CAE二次开发进行弹簧批量建模

    一. 为什么要进行弹簧批量建模 当一个公司或者学者从事科研任务时,往往通过有限元进行建模分析,建模的时间通常与工作效率挂钩.例如ABAQUS/CAE建模,想必很多老用户都有某种共同的感受,那就是实体模 ...

  5. abaqus python二次开发攻略_Abaqus有限元分析常见问题解答与实用技巧 12天后上架...

    Abaqus有限元分析常见问题解答与实用技巧已印刷完毕,1-2天后上架,先睹为快.现在某些网站上的售卖信息,不靠谱.温馨提示:封底无防伪标均为盗版! 序  言 Abaqus是是国际上先进的大型通用非线 ...

  6. abaqus python二次开发攻略_Abaqus二次开发Python脚本二次开发

    在上一篇博文中简要介绍了Abaqus中FORTRAN子程序二次开发,那么这次将对Abaqus的Python脚本二次开发进行概述. 就像在上一篇博文中提到的,基于Python的脚本开发又可以细分为如下三 ...

  7. abaqus python二次开发攻略_Python 进行 Abaqus 二次开发的基础知识

    1.Python 一切皆对象的特点 Object(对象):可以是数据,可以是函数,也可以是包含若干数据和函数的打包整体.对象可以包括成员和方法. Member(成员):对象包含的子对象,子对象可以是数 ...

  8. 基于C#的中望CAD二次开发学习笔记(1)环境测试

    目录 前言 一.ZRXSDK的安装使用 二.创建项目 三.编写环境测试代码 四.在ZWCAD中测试 参考资料 总结 前言 作为一个设计院搬砖人,和各种CAD打交道是必不可少的.当然,其中最为正统的是A ...

  9. 引用:基于C#的中望CAD二次开发学习笔记

    目录 前言 一.ZRXSDK的安装使用 二.创建项目 三.编写环境测试代码 四.在ZWCAD中测试 参考资料 总结 前言 作为一个设计院搬砖人,和各种CAD打交道是必不可少的.当然,其中最为正统的是A ...

最新文章

  1. 亚马逊首席科学家李沐「实训营」国内独家直播,马上报名 !
  2. 用链表生成前序二叉树
  3. springcloud上传文件_Spring Cloud实战:服务链路追踪Spring Cloud Sleuth
  4. 简单好用!利用Spring AOP技术10分钟实现一个数据库读写分离方案
  5. 视频光端机在安防监控工程中的常见技术问题
  6. java学习(142):file类的基本创建
  7. kibana-7.3.0安装配置
  8. 离开小厂进大厂的第一周:我“后悔”了
  9. python数学建模可视化,[Python与数学建模-数据处理与可视化]-3数据处理工具Pandas...
  10. 每日一码——链表基本操作
  11. C++中头文件iostream介绍
  12. java近义词,【LeetCode(Java) - 1258】近义词句子
  13. 开源一个win10二十四节气壁纸自动更换的程序
  14. MyBatis -- resultType 和 resultMap
  15. 中兴ZTEWCDMA3G模块MF206
  16. Java学习手册:(数据结构与算法-数组)如何求绝对值最小的数?
  17. Android:判断App是否是首次focuse
  18. 关闭mac电脑的安全机制
  19. 【Android -- 动画】如何学习 Android 动画?
  20. oracle 添加,修改,删除表字段以及备注和重命名表,重命名列

热门文章

  1. 在docker中使用U盘
  2. Camera2实现二维码扫描功能(qrcode scanner)
  3. 模糊相似矩阵_主要代码实现
  4. 福建两会声音| 自强自立,加快建设创新型省份
  5. 数据库服务器选购注意事项
  6. python怎么安装itchat工具包_Python与微信——itchat包
  7. 【物联网毕设】基于Arduino与树莓派的智能鱼缸【二】
  8. java jude_Java注解
  9. 三边定位_位置解析(C++)
  10. JAVA 实现贪吃蛇