In this example, using the support files, you will create a Static Structural analysis, execute a sequence of python journal commands that will setup and solve a Interface Delamination analysis.
This example begins in the Mechanical application. It requires you to download the following Ansys DesignModeler and python files.
Interface_Delamination_Example.agdb
Interface_Delamination_Example.py
Interface_Delamination_Example_Mat1.xml
Interface_Delamination_Example_Mat2.xml
These files are available here.
Procedure
Open Workbench and insert a Static Structural system into the Project Schematic.
Double-click the Engineering Data cell to open the workspace.
Select > , navigate to the proper folder location and select Interface_Delamination_Example_Mat1.xml. Repeat this for Interface_Delamination_Example_Mat2.xml
Return to the Project tab.
Right-click the Geometry cell and select .
Enable the Named Selections check box under the Basic Geometry Options category.
Set the Analysis Type property to under the Advanced Geometry Options category.
Right-click the Geometry cell and select > and then navigate to the proper folder location and select Interface_Delamination_Example.agdb.
Open Mechanical directly without importing a geometry or specifying an analysis type. This can be done through Start Menu.
Select the Automation tab and select the Scripting option to open the Mechanical Scripting pane.
Select the Open Script option (
) from the Editor toolbar. Navigate to the
proper folder location and select
Interface_Delamination_Example.py.Select the Run Script option (
) from the Editor toolbar.
Scripts Illustrated
In this example, the python file automatically performs the following actions:
# Scenario 1 Store main Tree Object items
MODEL = Model
GEOMETRY = Model.Geometry
PART = [x for x in ExtAPI.DataModel.Tree.AllObjects if x.Name == 'Part 2'][0]
MAT_GRP = MODEL.Materials
MAT_BODY = [i for i in MAT_GRP.GetChildren[Ansys.ACT.Automation.Mechanical.Material](True) if i.Name == 'Interface Body Material'][0]
MAT_CZM = [i for i in MAT_GRP.GetChildren[Ansys.ACT.Automation.Mechanical.Material](True) if i.Name == 'CZM Material'][0]
COORDINATE_SYSTEMS = Model.CoordinateSystems
GLOBAL_COORDINATE_SYSTEM = [i for i in COORDINATE_SYSTEMS.GetChildren[Ansys.ACT.Automation.Mechanical.CoordinateSystem](True) if i.Name == 'Global Coordinate System'][0]
CONNECTIONS_GRP = ExtAPI.DataModel.Project.Model.Connections
CONTACTS = [i for i in CONNECTIONS_GRP.GetChildren[Ansys.ACT.Automation.Mechanical.Connections.ConnectionGroup](True) if i.Name == 'Contacts'][0]
CONTACT_REGION = [i for i in CONTACTS.GetChildren[Ansys.ACT.Automation.Mechanical.Connections.ContactRegion](True) if i.Name == 'Contact Region'][0]
MESH = Model.Mesh
NAMED_SELECTIONS = ExtAPI.DataModel.Project.Model.NamedSelections
NS_EDGE_HIGH = [i for i in NAMED_SELECTIONS.GetChildren[Ansys.ACT.Automation.Mechanical.NamedSelection](True) if i.Name == 'High_Edge'][0]
NS_EDGE_LOW = [i for i in NAMED_SELECTIONS.GetChildren[Ansys.ACT.Automation.Mechanical.NamedSelection](True) if i.Name == 'Low_Edge'][0]
NS_EDGES_SHORT = [i for i in NAMED_SELECTIONS.GetChildren[Ansys.ACT.Automation.Mechanical.NamedSelection](True) if i.Name == 'Short_Edges'][0]
NS_EDGES_LONG = [i for i in NAMED_SELECTIONS.GetChildren[Ansys.ACT.Automation.Mechanical.NamedSelection](True) if i.Name == 'Long_Edges'][0]
NS_EDGES_FIXED = [i for i in NAMED_SELECTIONS.GetChildren[Ansys.ACT.Automation.Mechanical.NamedSelection](True) if i.Name == 'Fixed_Edges'][0]
NS_VERTEX_DISP1 = [i for i in NAMED_SELECTIONS.GetChildren[Ansys.ACT.Automation.Mechanical.NamedSelection](True) if i.Name == 'Disp1_Vertex'][0]
NS_VERTEX_DISP2 = [i for i in NAMED_SELECTIONS.GetChildren[Ansys.ACT.Automation.Mechanical.NamedSelection](True) if i.Name == 'Disp2_Vertex'][0]
NS_FACES_BOTH = [i for i in NAMED_SELECTIONS.GetChildren[Ansys.ACT.Automation.Mechanical.NamedSelection](True) if i.Name == 'Both_Faces'][0]
STATIC_STRUCTURAL = ExtAPI.DataModel.AnalysisByName("Static Structural")
ANALYSIS_SETTINGS = STATIC_STRUCTURAL.AnalysisSettings
SOLUTION= STATIC_STRUCTURAL.Solution
# Scenario 2 Set Display Unit
ExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardNMM
# Scenario 3 Set 2D Behavior
GEOMETRY.Activate()
GEOMETRY.Model2DBehavior=Model2DBehavior.PlaneStrain
# Scenario 4 Assign Material
PART.Activate()
PART.Material = MAT_BODY.Name
# Scenario 5 Suppress the Contact Region
CONTACT_REGION.Activate()
CONTACT_REGION.Suppressed = True
# Scenario 6 Add local Coordinates
COORDINATE_SYSTEMS.Activate()
COORDINATE_SYSTEM = COORDINATE_SYSTEMS.AddCoordinateSystem()
COORDINATE_SYSTEM.OriginLocation = NS_EDGE_HIGH
COORDINATE_SYSTEM.Name = 'High Coordinate System'
COORDINATE_SYSTEMS.Activate()
COORDINATE_SYSTEM2 = COORDINATE_SYSTEMS.AddCoordinateSystem()
COORDINATE_SYSTEM2.OriginLocation = NS_EDGE_LOW
COORDINATE_SYSTEM2.Name = 'Low Coordinate System'
# Scenario 7 Define Mesh controls and generate mesh
MESH.Activate()
MESH.ElementOrder=ElementOrder.Quadratic
MESH.UseAdaptiveSizing=False
MESH.ElementSize = Quantity('0.75 [mm]')
MESH.Activate()
MATCH_CONTROL = MESH.AddMatchControl()
SEL=ExtAPI.SelectionManager.AddSelection(NS_EDGE_HIGH)
SEL2=ExtAPI.SelectionManager.CurrentSelection
MATCH_CONTROL.HighGeometrySelection = SEL2
ExtAPI.SelectionManager.ClearSelection()
SEL3=ExtAPI.SelectionManager.AddSelection(NS_EDGE_LOW)
SEL4=ExtAPI.SelectionManager.CurrentSelection
MATCH_CONTROL.LowGeometrySelection = SEL4
ExtAPI.SelectionManager.ClearSelection()
MATCH_CONTROL.Transformation = 1 # For setting to Arbitrary option
MATCH_CONTROL.HighCoordinateSystem = COORDINATE_SYSTEM
MATCH_CONTROL.LowCoordinateSystem = COORDINATE_SYSTEM2
MATCH_CONTROL.Suppressed = True
MATCH_CONTROL.Suppressed = False
SIZING_MESH = MESH.AddSizing()
SIZING_MESH.Location = NS_EDGES_SHORT
SIZING_MESH.ElementSize = Quantity('0.75 [mm]')
SIZING_MESH.Behavior=SizingBehavior.Hard
SIZING_MESH2 = MESH.AddSizing()
SIZING_MESH2.Location = NS_EDGES_LONG
SIZING_MESH2.ElementSize = Quantity('0.5 [mm]')
SIZING_MESH2.Behavior=SizingBehavior.Hard
FACE_MESHING = MESH.AddFaceMeshing()
FACE_MESHING.Location = NS_FACES_BOTH
FACE_MESHING.Method=FaceMeshingMethod.Quadrilaterals
MESH.Activate()
MESH.GenerateMesh()
# Scenario 8 Add Interface Delamination object
MODEL.Activate()
FRACTURE = MODEL.AddFracture()
INTERFACE_DELAMINATION = FRACTURE.AddInterfaceDelamination()
INTERFACE_DELAMINATION.Method=DelaminationMethod.CZM
INTERFACE_DELAMINATION.Material= MAT_CZM.Name
INTERFACE_DELAMINATION.GenerationMethod=DelaminationGenerationMethod.MatchedMeshing
INTERFACE_DELAMINATION.MatchControl=MATCH_CONTROL
# Scenario 9 Define Analysis Settings
ANALYSIS_SETTINGS.Activate()
ANALYSIS_SETTINGS.AutomaticTimeStepping=AutomaticTimeStepping.On
ANALYSIS_SETTINGS.DefineBy=TimeStepDefineByType.Substeps
ANALYSIS_SETTINGS.MaximumSubsteps=40
ANALYSIS_SETTINGS.InitialSubsteps=40
ANALYSIS_SETTINGS.MinimumSubsteps=40
ANALYSIS_SETTINGS.LargeDeflection=True
# Scenario 10 Define boundary conditions
STATIC_STRUCTURAL.Activate()
FIXED_SUPPORT = STATIC_STRUCTURAL.AddFixedSupport()
FIXED_SUPPORT.Location = NS_EDGES_FIXED
STATIC_STRUCTURAL.Activate()
DISPLACEMENT = STATIC_STRUCTURAL.AddDisplacement()
DISPLACEMENT.Location = NS_VERTEX_DISP1
DISPLACEMENT.DefineBy = LoadDefineBy.Components
DISPLACEMENT.YComponent.Output.DiscreteValues=[Quantity('10 [mm]')]
STATIC_STRUCTURAL.Activate()
DISPLACEMENT2 = STATIC_STRUCTURAL.AddDisplacement()
DISPLACEMENT2.Location = NS_VERTEX_DISP2
DISPLACEMENT2.DefineBy = LoadDefineBy.Components
DISPLACEMENT2.YComponent.Output.DiscreteValues=[Quantity('-10 [mm]')]
# Scenario 11 Add results
SOLUTION.Activate()
DIRECTIONAL_DEFORMATION = SOLUTION.AddDirectionalDeformation()
DIRECTIONAL_DEFORMATION.NormalOrientation=NormalOrientationType.YAxis
FORCE_REACTION = SOLUTION.AddForceReaction()
FORCE_REACTION.BoundaryConditionSelection = DISPLACEMENT
# Scenario 12 Solve and review Results
STATIC_STRUCTURAL.Activate()
STATIC_STRUCTURAL.Solve(True)
DIRECTIONAL_DEFORMATION.Activate()
MIN_DIRECTIONAL_DEFORMATION = DIRECTIONAL_DEFORMATION.Minimum.Value
MAX_DIRECTIONAL_DEFORMATION = DIRECTIONAL_DEFORMATION.Maximum.Value
FORCE_REACTION.Activate()
Y_AXIS_FORCE_REACTION = FORCE_REACTION.YAxis.Value
MOT_Y_AXIS_FORCE_REACTION = FORCE_REACTION.MaximumYAxis.ValueSummary
This example demonstrates how scripting in Mechanical can be used to automate your actions.