#
# Adaptive Remeshing with ABAQUS/Standard
# Reactor Pressure Vessel
#
'''
-----------------------------------------------------------------------------
Full model of a 3D reactor vessel
-----------------------------------------------------------------------------
'''
from abaqus import *
from abaqusConstants import *
import part, material, section, assembly, step, interaction
import regionToolset, displayGroupMdbToolset as dgm, mesh, load, job
import os, testUtils
from caeModules import *
from driverUtils import executeOnCaeStartup
# using old default for allowMapped option in order to preserve base results
session.defaultMesherOptions.setValues(allowMapped=OFF)
executeOnCaeStartup()
#----------------------------------------------------------------------------
# Fetch .sat files
def fetchJob(fileName):
import uti
from driverUtils import getDriverName
abaArgs = []
abaArgs.append("fetch")
abaArgs.append("-j")
abaArgs.append(fileName)
status = uti.spawnAndWait(getDriverName(), abaArgs)
return status
satFiles = ('full_nut', 'full_stud', 'head', 'omega_seal', 'vessel_top')
for fname in satFiles:
filename = fname+'.sat'
import sys
fetchJob(filename)
# Create a model
Mdb()
modelName = 'adaptReactorVesselHT'
myModel = mdb.Model(name=modelName)
del mdb.models['Model-1']
# Create a new viewport in which to display the model
# and the results of the analysis.
myViewport = session.Viewport(name=modelName)
myViewport.makeCurrent()
myViewport.maximize()
#---------------------------------------------------------------------------
# Import the parts from geometry files
acis = mdb.openAcis('full_nut.sat',
scaleFromFile=OFF)
myModel.PartFromGeometryFile(name='full_nut', geometryFile=acis,
dimensionality=THREE_D, type=DEFORMABLE_BODY)
pNut = myModel.parts['full_nut']
acis = mdb.openAcis('full_stud.sat',
scaleFromFile=OFF)
myModel.PartFromGeometryFile(name='full_stud', geometryFile=acis,
dimensionality=THREE_D, type=DEFORMABLE_BODY)
pStud = myModel.parts['full_stud']
acis = mdb.openAcis('head.sat',
scaleFromFile=OFF)
myModel.PartFromGeometryFile(name='head', geometryFile=acis,
dimensionality=THREE_D, type=DEFORMABLE_BODY)
pHead = myModel.parts['head']
acis = mdb.openAcis('omega_seal.sat',
scaleFromFile=OFF)
myModel.PartFromGeometryFile(name='omega_seal',
geometryFile=acis, dimensionality=THREE_D, type=DEFORMABLE_BODY)
pSeal = myModel.parts['omega_seal']
acis = mdb.openAcis('vessel_top.sat',
scaleFromFile=OFF)
myModel.PartFromGeometryFile(name='vessel_top',
geometryFile=acis, dimensionality=THREE_D, type=DEFORMABLE_BODY)
pVessel = myModel.parts['vessel_top']
myViewport.setValues(displayedObject=pStud)
#---------------------------------------------------------------------------
# Assign material properties
# Create linear elastic material
myMaterial = myModel.Material(name='Steel')
myMaterial.Conductivity(table=((2.25, ), ))
myMaterial.SpecificHeat(table=((0.11, ), ))
myMaterial.Density(table=((0.284, ), ))
myModel.HomogeneousSolidSection(name='SolidHomogeneous',
material='Steel', thickness=1.0)
c1 = pNut.cells.findAt(((3.4375,12.,0.),),)
c2 = pNut.cells.findAt(((0,12.,4.),),)
region = regionToolset.Region(cells=c1+c2)
pNut.SectionAssignment(region=region, sectionName='SolidHomogeneous', offset=0.0)
c1 = pStud.cells.findAt(((2.875,0,90),),)
c2 = pStud.cells.findAt(((0.,2.875,90.),),)
region = regionToolset.Region(cells=c1+c2)
pStud.SectionAssignment(region=region, sectionName='SolidHomogeneous', offset=0.0)
cells = pSeal.cells
c1 = pSeal.cells.findAt((64.550397,187.5E-03,5.080226),)
region = regionToolset.Region(cells=cells[c1.index:(c1.index+1)])
pSeal.SectionAssignment(region=region, sectionName='SolidHomogeneous', offset=0.0)
cells = pHead.cells
c1 = pHead.cells.findAt((0.,91.75,0.),)
region = regionToolset.Region(cells=cells[c1.index:(c1.index+1)])
pHead.SectionAssignment(region=region, sectionName='SolidHomogeneous', offset=0.0)
cells = pVessel.cells
c1 = pVessel.cells.findAt((0,0,0),)
region = regionToolset.Region(cells=cells[c1.index:(c1.index+1)])
pVessel.SectionAssignment(region=region, sectionName='SolidHomogeneous', offset=0.0)
# Create partitions on the head
v1 = pHead.vertices.findAt((0.,83.5,0.),)
v2 = pHead.vertices.findAt((50.077051,10.,12.022436),)
datum = pHead.DatumPlaneByTwoPoint(point1=v1, point2=v2)
pickedCells = pHead.cells.findAt(((51.535606,10.,12.372604),),)
d = pHead.datums
pHead.PartitionCellByDatumPlane(datumPlane=d[datum.id], cells=pickedCells)
faces = pHead.faces.findAt((65.250455,29.,10.617652),)
pt = pHead.vertices.findAt((58.099103,32.,13.94836),)
datum = pHead.DatumPlaneByOffset(plane=faces, point=pt)
pickedCells = pHead.cells.findAt((51.535606,10.,12.372604),)
d = pHead.datums
pHead.PartitionCellByDatumPlane(datumPlane=d[datum.id], cells=pickedCells)
# Create partitions on the vessel shell
v1 = pVessel.vertices.findAt((61.137759,259.25,14.677877),)
v2 = (61.137759,161.5,14.677877)
datum = pVessel.DatumPlaneByTwoPoint(point1=v1, point2=v2)
pickedCells = pVessel.cells.findAt((61.137759,161.5,14.677877),)
d = pVessel.datums
pVessel.PartitionCellByDatumPlane(datumPlane=d[datum.id], cells=pickedCells)
faces = pVessel.faces.findAt((68.829813,294.75,13.781166),)
pt = pVessel.vertices.findAt((61.137759,259.25,14.677877),)
datum = pVessel.DatumPlaneByOffset(plane=faces, point=pt)
pickedCells = pVessel.cells.findAt((61.137759,259.25,14.677877),)
d = pVessel.datums
pVessel.PartitionCellByDatumPlane(datumPlane=d[datum.id], cells=pickedCells)
#---------------------------------------------------------------------------
# Create an assembly
myAssembly = myModel.rootAssembly
myAssembly.DatumCsysByDefault(CARTESIAN)
iNut1 = myAssembly.Instance(name='full_nut-1', part=pNut, dependent=OFF)
iNut2 = myAssembly.Instance(name='full_nut-2', part=pNut, dependent=OFF)
iStud = myAssembly.Instance(name='full_stud-1', part=pStud, dependent=OFF)
iSeal = myAssembly.Instance(name='omega_seal-1', part=pSeal, dependent=OFF)
iHead = myAssembly.Instance(name='head-1', part=pHead, dependent=OFF)
iVessel = myAssembly.Instance(name='vessel-1', part=pVessel, dependent=OFF)
f1 = iHead.faces.findAt((58,0,12),)
f2 = iVessel.faces.findAt((55,300.75,10),)
myAssembly.FaceToFace(movablePlane=f1, fixedPlane=f2, flip=ON, clearance=0.0)
f1 = iStud.faces.findAt((0.,2.875,40.),)
f2 = iVessel.faces.findAt((68.091234,294,10.784592),)
myAssembly.Coaxial(movableAxis=f1, fixedAxis=f2, flip=OFF)
iStud.translate(vector=(0.0, 345.75, 0.0))
f1 = iNut1.faces.findAt((0,10,4),)
f2 = iVessel.faces.findAt((68.091234,290,10.784592),)
myAssembly.Coaxial(movableAxis=f1, fixedAxis=f2, flip=OFF)
iNut1.translate(vector=(0.0, 259.75, 0.0))
f1 = iNut2.faces.findAt((0,10,4),)
f2 = iVessel.faces.findAt((68.091234,290,10.784592),)
myAssembly.Coaxial(movableAxis=f1, fixedAxis=f2, flip=OFF)
iNut2.translate(vector=(0.0, 329.75, 0.0))
f1 = iSeal.faces.findAt((62.71821,0.,9.5),)
f2 = iHead.faces.findAt((62.0,303.25,12),)
myAssembly.FaceToFace(movablePlane=f1, fixedPlane=f2, flip=ON, clearance=0.0)
f1 = iSeal.faces.findAt((64.,304.528583,0.),)
f2 = iHead.faces.findAt((64.051939,320.,5.040997),)
myAssembly.FaceToFace(movablePlane=f1, fixedPlane=f2, flip=OFF, clearance=0.0)
myViewport.setValues(displayedObject=myAssembly)
# Partition faces
#left
f1 = iHead.faces.findAt((25.117495,378,6.030177),)
e1 = iHead.edges.findAt((0.,388.375,0.),)
t = myAssembly.MakeSketchTransform(sketchPlane=f1, sketchUpEdge=e1,
sketchPlaneSide=SIDE1, sketchOrientation=LEFT, origin=(25.073121,
379.503374, 6.019524))
s = myModel.ConstrainedSketch(name='__profile__',
sheetSize=795.03, gridSpacing=19.87, transform=t)
s.setPrimaryObject(option=SUPERIMPOSE)
myAssembly.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES)
l1 = s.Line(point1=(-20.93, 50), point2=(-20.93, -400.0))
l2 = s.Line(point1=(-25.79, 50), point2=(-25.79, -400.0))
s.VerticalConstraint(entity=l1)
ws_adapt_reactor_abaquspython_ABAQUS_自适应网格_
5星 · 超过95%的资源 37 浏览量
2021-10-01
14:50:48
上传
评论 1
收藏 6KB RAR 举报
耿云鹏
- 粉丝: 61
- 资源: 4760
最新资源
- IMG_0694.GIF
- 基于图像的三维模型重建C++源代码+文档说明(高分课程设计)
- 基于聚焦法的工件立体测量方案,根据数据进行三维重建 使用HALCON处理图像,MATLAB拟合数据+源代码+数据集+效果图
- 锄战三国村 修改:货币使用不减 v1.10(2) 原创 (中文).apk
- 基于python实现的单目双目视觉三维重建+源代码+图像图片(高分课程设计)
- 基于C+++OPENCV的全景图像拼接源码(课程设计)
- 基于Python+OpenCV对多张图片进行全景图像拼接,消除鬼影,消除裂缝+源代码+文档说明+界面截图(高分课程设计)
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
- 基于matlab实现眼部判别的疲劳检测系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论3