I have written a python script to make some models in Abaqus. Then without submitting jobs I write inputs and run input files to get the odbs in other python script. As there are now more than 500 models and need to reduce computational time or to save my computer from being crushed , what I want in one python script should do...
- submit one job to write inputs and automatically delete all the files of one job..Then second...third...fourth... To make it clear,for an example::for model-1(i=1),create part,create mesh,write input,close ... model-100(i=100),create part,create mesh,close. So then I do not have anything running before going from one model to others. I am a beginner and do not know much of abaqus python scripting. I have added one simple example similar to my big file. I would appreciate your help.
from abaqus import *
from abaqusConstants import *
import __main__
import section
import regionToolset
import displayGroupMdbToolset as dgm
import part
import material
import assembly
import step
import interaction
import load
import mesh
import optimization
import job
import sketch
import visualization
import xyPlot
import displayGroupOdbToolset as dgo
import connectorBehavior
Beam_h = [20, 50,30] #Beam Height mm
Beam_w = [10, 10,10] #Beam width mm
mesh_size = 2.5 #mesh size mm
Beam_d = 400.0 #Beam length mm
Z1 = [50,385,350]
Z2 = [50,5,10]
Pressure = 50.0 # Applied Pressure [MPa]
Young_m = 190000 #Young's Modulus [MPa]
Poisson_r = 0.32 #Poisson's ratio
session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry=COORDINATE)
for i in range(len(Beam_h)):
mdb.Model(name='Model-%s'%(Beam_h[i]), modelType=STANDARD_EXPLICIT)
session.viewports['Viewport: 1'].setValues(displayedObject=None)
session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=OFF,
engineeringFeatures=OFF)
session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(
referenceRepresentation=ON)
s = mdb.models['Model-%s'%(Beam_h[i])].ConstrainedSketch(name='__profile__',
sheetSize=200.0)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=STANDALONE)
#Create a rectangle using two points
s.setPrimaryObject(option=STANDALONE)
s.Spot(point=(-Beam_w[i]*0.5, Beam_h[i]*0.5))
s.Spot(point=(-Beam_w[i]*0.5, -Beam_h[i]*0.5))
s.Spot(point=(Beam_w[i]*0.5, -Beam_h[i]*0.5))
s.Spot(point=(Beam_w[i]*0.5, Beam_h[i]*0.5))
s.Line(point1=(-Beam_w[i]*0.5, Beam_h[i]*0.5), point2=(-Beam_w[i]*0.5, -Beam_h[i]*0.5))
s.VerticalConstraint(entity=g[2], addUndoState=False)
s.Line(point1=(-Beam_w[i]*0.5, -Beam_h[i]*0.5), point2=(Beam_w[i]*0.5, -Beam_h[i]*0.5))
s.HorizontalConstraint(entity=g[3], addUndoState=False)
s.PerpendicularConstraint(entity1=g[2], entity2=g[3], addUndoState=False)
s.Line(point1=(Beam_w[i]*0.5, -Beam_h[i]*0.5), point2=(Beam_w[i]*0.5, Beam_h[i]*0.5))
s.VerticalConstraint(entity=g[4], addUndoState=False)
s.PerpendicularConstraint(entity1=g[3], entity2=g[4], addUndoState=False)
s.Line(point1=(Beam_w[i]*0.5, Beam_h[i]*0.5), point2=(-Beam_w[i]*0.5, Beam_h[i]*0.5))
s.HorizontalConstraint(entity=g[5], addUndoState=False)
s.PerpendicularConstraint(entity1=g[4], entity2=g[5], addUndoState=False)
p = mdb.models['Model-%s'%(Beam_h[i])].Part(name='Beam', dimensionality=THREE_D,
type=DEFORMABLE_BODY)
p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
#Extrude the sketch "s" over the depth "Beam_d"
p.BaseSolidExtrude(sketch=s, depth=Beam_d)
#Define elastic material
mdb.models['Model-%s'%(Beam_h[i])].Material(name='Steel')
mdb.models['Model-%s'%(Beam_h[i])].materials['Steel'].Elastic(table=((Young_m, Poisson_r), ))
#Define homogeneous solid section
mdb.models['Model-%s'%(Beam_h[i])].HomogeneousSolidSection(name='BeamSection',
material='Steel', thickness=None)
#Create a set into part level, used for section assignment
p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
c = p.cells
cells = c.getSequenceFromMask(mask=('[#1 ]', ), )
region = p.Set(cells=cells, name='Beam')
p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
#Assign the section to a defined "region"
p.SectionAssignment(region=region, sectionName='BeamSection', offset=0.0,
offsetType=MIDDLE_SURFACE, offsetField='',
thicknessAssignment=FROM_SECTION)
session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=OFF,
engineeringFeatures=OFF, mesh=ON)
session.viewports['Viewport: 1'].partDisplay.meshOptions.setValues(
meshTechnique=ON)
p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
p.DatumPlaneByPrincipalPlane(principalPlane=XYPLANE, offset=Z1[i])###first partition in xy plane
p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
p.DatumPlaneByPrincipalPlane(principalPlane=XYPLANE, offset=Beam_d-Z2[i])###2nd partition over xy plane which is total depth-z1
p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
c = p.cells
pickedCells = c.getSequenceFromMask(mask=('[#1 ]', ), )
d1 = p.datums
p.PartitionCellByDatumPlane(datumPlane=d1[3], cells=pickedCells)
p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
c = p.cells
pickedCells = c.getSequenceFromMask(mask=('[#1 ]', ), )
d2 = p.datums
p.PartitionCellByDatumPlane(datumPlane=d2[4], cells=pickedCells)
#Apply general mesh seed
p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
p.seedPart(size=mesh_size, deviationFactor=0.1, minSizeFactor=0.1)
#Generate Mesh
p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
p.generateMesh()
#Import part into the instance
a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
session.viewports['Viewport: 1'].setValues(displayedObject=a)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(
optimizationTasks=OFF, geometricRestrictions=OFF, stopConditions=OFF)
a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
a.DatumCsysByDefault(CARTESIAN)
p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
a.Instance(name='Beam-1', part=p, dependent=ON)
# a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
# f1 = a.instances['Beam-1'].faces
# faces1 = f1.getSequenceFromMask(mask=('[#20 ]', ), )
# a.Set(faces=faces1, name='BC_Set')
# Create a surface set
a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
s1 = a.instances['Beam-1'].faces
#side1Faces1 = s1.findAt(((0.0,Beam_h[i]*0.5,(Beam_d-Z2[i]-Z1[i]), ))for pressure in the middle of the surface
side1Faces1 = s1.findAt(((0.0,Beam_h[i]*0.5,(Z1[i]+0.1)), )) #pressure in the left surface and +0.1 is just a number to flip on right side
a.Surface(side1Faces=side1Faces1, name='PressSurface')
session.viewports['Viewport: 1'].assemblyDisplay.setValues(
adaptiveMeshConstraints=ON)
#Create analysis
mdb.models['Model-%s'%(Beam_h[i])].StaticStep(name='Step-1', previous='Initial',
timePeriod=1.0, maxNumInc=100, initialInc=1.0, minInc=1e-05,
maxInc=1.0, nlgeom=OFF)
session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Step-1')
session.viewports['Viewport: 1'].assemblyDisplay.setValues(loads=ON, bcs=ON,
predefinedFields=ON, connectors=ON, adaptiveMeshConstraints=OFF)
#Define a region using a set
a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
region = a.surfaces['PressSurface']
#Applied Load
mdb.models['Model-%s'%(Beam_h[i])].Pressure(name='Load-1', createStepName='Step-1',
region=region, distributionType=UNIFORM, field='', magnitude=Pressure,
amplitude=UNSET)
#Boundary conditions
a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly #access the root assembly
e1 = a.instances['Beam-1'].edges #access the edges,e1 contains all of the edges
edges1 = e1.findAt(((0.0,-Beam_h[i]*0.5,0.0), ))#but we need only one edge so edge1. findAt needs exact coordinates x,y,z.of the edge
region = a.Set(edges=edges1, name='Set-2')
mdb.models['Model-%s'%(Beam_h[i])].DisplacementBC(name='BC_Set1', createStepName='Step-1',
region=region, u1=0.0, u2=0.0, u3=0.0, ur2=0.0, ur3=0.0,
amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='',
localCsys=None)
a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
e1 = a.instances['Beam-1'].edges
edges2 = e1.findAt(((0.0,-Beam_h[i]*0.5,Beam_d), ))
region = a.Set(edges=edges2, name='Set-3')
mdb.models['Model-%s'%(Beam_h[i])].DisplacementBC(name='BC_Set2', createStepName='Step-1',
region=region, u1=0.0, u2=0.0, ur2=0.0, ur3=0.0,
amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='',
localCsys=None)
mdb.Job(name='Model-Job-%s'%(Beam_h[i]), model='Model-%s'%(Beam_h[i]), contactPrint=OFF, description='', echoPrint=OFF,
explicitPrecision=SINGLE, historyPrint=OFF,
memory=50, memoryUnits=PERCENTAGE, modelPrint=OFF,
multiprocessingMode=DEFAULT, nodalOutputPrecision=SINGLE,
numCpus=1, numGPUs=0, scratch='', type=ANALYSIS,
userSubroutine='')
mdb.jobs['Model-Job-%s'%(Beam_h[i])].writeInput()
``
``
#Then I used script to run the inputs
import os
os.system('abaqus -j Model-Job-20')
``