# 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)
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")