Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions src/python/hermite_prolate_spheroid_mechanics.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,21 +59,26 @@
equationsSetUserNumber = 1
problemUserNumber = 1

worldRegion = iron.Region()
iron.Context.WorldRegionGet(worldRegion)

# Get the number of computational nodes and this computational node number
# for when running in parallel with MPI
numberOfComputationalNodes = iron.ComputationalNumberOfNodesGet()
computationalNodeNumber = iron.ComputationalNodeNumberGet()
computationEnvironment = iron.ComputationEnvironment()
iron.Context.ComputationEnvironmentGet(computationEnvironment)
numberOfComputationalNodes = computationEnvironment.NumberOfWorldNodesGet()
computationalNodeNumber = computationEnvironment.WorldNodeNumberGet()

# Create a 3D rectangular cartesian coordinate system
coordinateSystem = iron.CoordinateSystem()
coordinateSystem.CreateStart(coordinateSystemUserNumber)
coordinateSystem.CreateStart(coordinateSystemUserNumber,iron.Context)
coordinateSystem.DimensionSet(3)
coordinateSystem.CreateFinish()

# Create a region within the world region and
# assign the coordinate system to the region
region = iron.Region()
region.CreateStart(regionUserNumber, iron.WorldRegion)
region.CreateStart(regionUserNumber, worldRegion)
region.LabelSet("ProlateSpheroid")
region.CoordinateSystemSet(coordinateSystem)
region.CreateFinish()
Expand Down Expand Up @@ -106,7 +111,7 @@
geometricField.CreateFinish()

# Use the prolate spheroid geometry to set the geometric field parameters
geometry.setGeometry(geometricField)
geometry.setGeometry(computationEnvironment,geometricField)

# Create a fibre field and attach it to the geometric field
# This has three components describing fibre orientations as
Expand All @@ -125,7 +130,7 @@
fibreField.CreateFinish()

# Use the prolate spheroid geometry to set up the fibre field values
geometry.setFibres(fibreField)
geometry.setFibres(computationEnvironment,fibreField)

# Create the equations set and equations set field
# This defines the type of equations to solve
Expand Down Expand Up @@ -231,7 +236,7 @@
problemSpecification = [iron.ProblemClasses.ELASTICITY,
iron.ProblemTypes.FINITE_ELASTICITY,
iron.ProblemSubtypes.NONE]
problem.CreateStart(problemUserNumber, problemSpecification)
problem.CreateStart(problemUserNumber,iron.Context,problemSpecification)
problem.CreateFinish()

# Create the problem control loops
Expand Down Expand Up @@ -279,14 +284,14 @@
boundaryConditions = iron.BoundaryConditions()
solverEquations.BoundaryConditionsCreateStart(boundaryConditions)

def getDomainNodes(geometry, decomposition, component):
def getDomainNodes(computationEnvironment, geometry, decomposition, component):
component_name = interpolations[component - 1]
computationalNodeNumber = iron.ComputationalNodeNumberGet()
computationalNodeNumber = computationEnvironment.WorldNodeNumberGet()
nodes = geometry.componentNodes(component_name)
meshComponent = geometry.meshComponent(component_name)
return set(node for node in nodes
if decomposition.NodeDomainGet(node, meshComponent) == computationalNodeNumber)
geometricDomainNodes = getDomainNodes(geometry, decomposition, geometricMeshComponent)
geometricDomainNodes = getDomainNodes(computationEnvironment, geometry, decomposition, geometricMeshComponent)

# Fix epicardium nodes at the base:
baseNodes = set(geometry.nodeGroup('base'))
Expand Down
10 changes: 5 additions & 5 deletions src/python/prolate_spheroid_geometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,11 @@ def generateMesh(self, region):
mesh.CreateFinish()
return mesh

def setGeometry(self, geometricField):
def setGeometry(self, computationEnvironment, geometricField):
decomposition = iron.Decomposition()
geometricField.MeshDecompositionGet(decomposition)
geometricInterpolation = self.interpolations[0]
compNodeNumber = iron.ComputationalNodeNumberGet()
compNodeNumber = computationEnvironment.WorldNodeNumberGet()
geometricMeshComponent = 1
# Set the geometric field parameters from the prolate spheroid geometry
for nodeNum, values in enumerate(self.nodeValues(), 1):
Expand Down Expand Up @@ -169,12 +169,12 @@ def setGeometry(self, geometricField):
iron.FieldVariableTypes.U,
iron.FieldParameterSetTypes.VALUES)

def setFibres(self, fibreField):
def setFibres(self, computationEnvironment,fibreField):
endocardiumFibreAngle = self.endocardiumFibreAngle
epicardiumFibreAngle = self.epicardiumFibreAngle
sheetAngle = self.sheetAngle
geometricMeshComponent = 1
compNodeNumber = iron.ComputationalNodeNumberGet()
compNodeNumber = computationEnvironment.WorldNodeNumberGet()

hasQuadratic = self.interpolations[0] == 'quadratic'
if hasQuadratic:
Expand Down Expand Up @@ -252,7 +252,7 @@ def makeBasis(userNumber, interpolationName, collapsed):
}
interpolation = cmissInterpolations[interpolationName]
basis = iron.Basis()
basis.CreateStart(basisUserNumber)
basis.CreateStart(basisUserNumber,iron.Context)
basis.TypeSet(iron.BasisTypes.LAGRANGE_HERMITE_TP)
basis.NumberOfXiSet(3)
basis.InterpolationXiSet([interpolation] * 3)
Expand Down