Source code for SpindleMesh.generate_mesh
from abaqus import *
from abaqusConstants import *
import mesh
[docs]def standard_mesh(**kwargs):
"""
Generates finite element mesh on each instance of the Mitotic spindle assembly
:param kwargs: model parameters
:type kwargs: object
:return: Null
:rtype: Null
"""
modelname = kwargs['modelname']
a = mdb.models[modelname].rootAssembly
connectorNames = kwargs['ConnectorData'].keys()
aMTnames = kwargs['aMTnames']
ipMTnames = kwargs['ipMTnames']
for name in connectorNames:
a.makeDependent(instances=(a.instances[name],))
for name in aMTnames:
a.makeDependent(instances=(a.instances[name],))
a.makeDependent(instances=(a.instances['centrosome-right'],
a.instances['centrosome-left']))
for name in ipMTnames:
a.makeDependent(instances=(a.instances[name],))
# Connector
for name in connectorNames:
p = mdb.models[modelname].parts[name]
p.seedPart(size=0.005, deviationFactor=0.1, minSizeFactor=0.1)
elemType1 = mesh.ElemType(elemCode=B32, elemLibrary=STANDARD)
e = p.edges
edges = e.getSequenceFromMask(mask=('[#1 ]', ), )
pickedRegions =(edges, )
p.setElementType(regions=pickedRegions, elemTypes=(elemType1, ))
p.generateMesh()
# aMT
for name in aMTnames:
p = mdb.models[modelname].parts[name]
p.seedPart(size=0.1, deviationFactor=0.1, minSizeFactor=0.1)
elemType1 = mesh.ElemType(elemCode=B32, elemLibrary=STANDARD)
e = p.edges
edges = e.getSequenceFromMask(mask=('[#1 ]', ), )
pickedRegions =(edges, )
p.setElementType(regions=pickedRegions, elemTypes=(elemType1, ))
p.generateMesh()
# Centrosome
p = mdb.models[modelname].parts['centrosome']
p.seedPart(size=0.03, deviationFactor=0.1, minSizeFactor=0.1)
c = p.cells
cells = c.getSequenceFromMask(mask=('[#1 ]', ), )
pickedRegions =(cells, )
elemType1 = mesh.ElemType(elemCode=C3D20R, elemLibrary=STANDARD)
elemType2 = mesh.ElemType(elemCode=C3D15, elemLibrary=STANDARD)
elemType3 = mesh.ElemType(elemCode=C3D10, elemLibrary=STANDARD)
p.setElementType(regions=pickedRegions, elemTypes=(elemType1, elemType2,
elemType3))
c = p.cells
pickedRegions = c.getSequenceFromMask(mask=('[#1 ]', ), )
p.setMeshControls(regions=pickedRegions, elemShape=TET, technique=FREE)
p.generateMesh()
# ipMT
for name in ipMTnames:
p = mdb.models[modelname].parts[name]
p.seedPart(size=0.1, deviationFactor=0.1, minSizeFactor=0.1)
elemType1 = mesh.ElemType(elemCode=B32, elemLibrary=STANDARD)
e = p.edges
edges = e.getSequenceFromMask(mask=('[#1 ]', ), )
pickedRegions =(edges, )
p.setElementType(regions=pickedRegions, elemTypes=(elemType1, ))
p.generateMesh()