I am trying to find a way (Python code) such that the exterior element surfaces can automatically be detected. However, the following states that this is not possible in Abaqus/CAE (https://classes.engineering.wustl.edu/2009/spring/mase5513/abaqus/docs/v6.6/books/usb/default.htm?startat=pt01ch02s03aus16.html). Is there another way in which I can approach this problem?
My goal is to automatically put (pressure) forces on only the outside element surfaces.
For now this is my code:
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 optimization import *
from job import *
from sketch import *
from visualization import *
from connectorBehavior import *
import subprocess #Python script in abaqus
ss = 0.5 #Seed size
session.journalOptions.setValues(replayGeometry=COORDINATE, recoverGeometry=COORDINATE)
Mdb()
#: A new model database has been created.
#: The model "Model-1" has been created.
argument = 'Circle.cae'
openMdb(
pathName='X:/temp/30_May/'+argument)
p = mdb.models['Model-1'].parts['Part-1']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
p.seedPart(size=ss, deviationFactor=0.1, minSizeFactor=0.1)
p.generateMesh()
#Create Sin Amplitude
mdb.models['Model-1'].PeriodicAmplitude(name='Sin', timeSpan=STEP,
frequency=6.28319, start=0.0, a_0=0.0, data=((0.0, 1.0), ))
#Material
mdb.models['Model-1'].Material(name='AluminumAlloy')
mdb.models['Model-1'].materials['AluminumAlloy'].Density(table=((2770.0, ), ))
mdb.models['Model-1'].materials['AluminumAlloy'].Elastic(table=((71000000000.0,
0.33), ))
mdb.models['Model-1'].materials['AluminumAlloy'].Damping(alpha=0.01)
#Section
c = p.cells
cells = c.findAt(((0.0, 9.854317, 0.0), ))
region = p.Set(cells=cells, name='Set-1')
mdb.models['Model-1'].HomogeneousSolidSection(name='Section-1',
material='AluminumAlloy', thickness=None)
region = p.sets['Set-1']
p.SectionAssignment(region=region, sectionName='Section-1', offset=0.0,
offsetType=MIDDLE_SURFACE, offsetField='',
thicknessAssignment=FROM_SECTION)
mdb.save()
#: The model database has been saved to "C:\\Users\\tshar\\OneDrive\\Documenten\\Toloue\\Research Project\\Abaqus Files\\26_May\\Circle.cae".
#Assembly-Instance is created
a = mdb.models['Model-1'].rootAssembly
a.DatumCsysByDefault(CARTESIAN)
a.Instance(name='Part-1-1', part=p, dependent=ON)
#Step is created
mdb.models['Model-1'].ImplicitDynamicsStep(name='LoadingStep',
previous='Initial', description='SineLoadingStep', timePeriod=50.0,
maxNumInc=10000, initialInc=0.1, minInc=0.0005, maxInc=0.1)
import random
maxelements = len(mdb.models['Model-1'].parts['Part-1'].elements)
x = random.randint(0,20)
for i in range(1,15,1):
q = random.randint(0,maxelements)
#Surface is created
f = p.elements
side1Elements1 = f[q-1:q]
p.Surface(side1Elements=side1Elements1, name='Surf-'+str(i))
#Load is created
region = a.instances['Part-1-1'].surfaces['Surf-'+str(i)]
mdb.models['Model-1'].Pressure(name='Load-'+str(i), createStepName='LoadingStep',
region=region, distributionType=UNIFORM, field='', magnitude=1.0,
amplitude='Sin')