예제 #1
0
# Set problem parameters
diff_coeff = 22.5  # in mm^2/sec
initial_conc = 0.001
start_time = 0.0
end_time = 0.012
time_step = 0.0005
screen_output_freq = 2  # how many time steps between outputs to screen

(coordinateSystemUserNumber, regionUserNumber, basisUserNumber,
 generatedMeshUserNumber, meshUserNumber, decompositionUserNumber,
 geometricFieldUserNumber, equationsSetFieldUserNumber,
 dependentFieldUserNumber, materialFieldUserNumber, equationsSetUserNumber,
 problemUserNumber) = range(1, 13)

iron.DiagnosticsSetOn(iron.DiagnosticTypes.IN, [1, 2, 3, 4, 5], "Diagnostics",
                      ["DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE"])

# Get the computational nodes information
numberOfComputationalNodes = iron.ComputationalNumberOfNodesGet()
computationalNodeNumber = iron.ComputationalNodeNumberGet()

number_of_dimensions = 3
number_of_mesh_components = 1
total_number_of_elements = len(element_array)
total_number_of_nodes = len(node_array)
mesh_component_number = 1
nodes_per_elem = 4  # for a tet mesh

# Create a RC coordinate system
coordinateSystem = iron.CoordinateSystem()
coordinateSystem.CreateStart(coordinateSystemUserNumber)
예제 #2
0
lastNodeNumber = nodes.numberOfNodes
firstNodeDomain = decomposition.NodeDomainGet(firstNodeNumber, 1)
lastNodeDomain = decomposition.NodeDomainGet(lastNodeNumber, 1)
if firstNodeDomain == computationalNodeNumber:
    boundaryConditions.SetNode(dependentField, iron.FieldVariableTypes.U, 1, 1,
                               firstNodeNumber, 1,
                               iron.BoundaryConditionsTypes.FIXED, 0.0)
if lastNodeDomain == computationalNodeNumber:
    boundaryConditions.SetNode(dependentField, iron.FieldVariableTypes.U, 1, 1,
                               lastNodeNumber, 1,
                               iron.BoundaryConditionsTypes.FIXED, 1.0)
solverEquations.BoundaryConditionsCreateFinish()

## Solve the problem

iron.DiagnosticsSetOn(1, [1, 2, 3, 4, 5], "Diagnostics", ["all"])
problem.Solve()
# iron.DiagnosticsSetOff()

# Export results
baseName = "Diffusion"
dataFormat = "PLAIN_TEXT"
fml = iron.FieldMLIO()
fml.OutputCreate(mesh, "", baseName, dataFormat)
fml.OutputAddFieldNoType(baseName + ".geometric", dataFormat, geometricField,
                         iron.FieldVariableTypes.U,
                         iron.FieldParameterSetTypes.VALUES)
fml.OutputAddFieldNoType(baseName + ".phi", dataFormat, dependentField,
                         iron.FieldVariableTypes.U,
                         iron.FieldParameterSetTypes.VALUES)
fml.OutputWrite("DiffusionExample.xml")