Transient Structural Cylindrical Joint Analysis

In this example, using the support files, you will insert a Transient Structural analysis object into an undefined Mechanical session and execute a sequence of python journal commands that specify a Joint as Cylindrical, define mesh and boundary and result objects and solve the analysis.

This example begins in the Mechanical application. It requires you to download the following Ansys DesignModeler and python files.

  • Cylindrical_Joint_Example.agbd

  • Cylindrical_Joint_Example.py

These files are available here.

Procedure

  1. Open Mechanical directly without importing a geometry or specifying an analysis type. This can be done through Start Menu.

  2. From the Analysis drop-down menu of the Insert group on the Home tab, insert a Transient Structural system into the tree.

  3. Select the Geometry object and select the Attach Geometry option from the Geometry group on the Geometry Context tab. Navigate to the proper folder location and select Cylindrical_Joint_Example.agbd.

     

  4. Select the Automation tab and select the Scripting option to open the Mechanical Scripting pane.

  5. Select the Open Script option ( ) from the Editor toolbar. Navigate to the proper folder location and select Cylindrical_Joint_Example.py.

  6. Select the Run Script option ( ) from the Editor toolbar.

Scripts Illustrated

In this example, the python file automatically performs the following actions:

# Scenario 1 - Set up the Units System

ExtAPI.Application.ActiveUnitSystem = MechanicalUnitSystem.StandardCGS


# Scenario 2 - Set up the Tree Object Items

GEOMETRY = Model.Geometry
CONNECTION_GROUP = Model.Connections
MESH = Model.Mesh
TRANSIENT_STRUCTURAL = Model.Analyses[0]
ANALYSIS_SETTINGS = TRANSIENT_STRUCTURAL.Children[1]
TRANSIENT_STRUCTURAL_SOLUTION = TRANSIENT_STRUCTURAL.Solution


# Scenario 3 - Set the Stiffness Behavior of bodies as Rigid

PART1 = GEOMETRY.Children[0].Children[0]
PART2 = GEOMETRY.Children[1].Children[0]
PART1.StiffnessBehavior = StiffnessBehavior.Rigid
PART2.StiffnessBehavior = StiffnessBehavior.Rigid


# Scenario 4 - Define Named Selections

NS_FACE_1 = DataModel.GetObjectsByName("NS_Face_1")[0]
NS_FACE_2 = DataModel.GetObjectsByName("NS_Face_2")[0]
NS_FACE_3 = DataModel.GetObjectsByName("NS_Face_3")[0]
NS_FORCE_1 = DataModel.GetObjectsByName("NS_Force_1")[0]
NS_FORCE_2 = DataModel.GetObjectsByName("NS_Force_2")[0]


# Scenario 5 - Define Cylindrical Joint and Fixed Joint
   	
CONNECTION_GROUP.Activate()
JOINT_CYLINDRICAL = CONNECTION_GROUP.AddJoint()
JOINT_CYLINDRICAL.Name = "CYLINDRICAL_JOINT"
JOINT_CYLINDRICAL.ConnectionType = JointScopingType.BodyToBody
JOINT_CYLINDRICAL.Type = JointType.Cylindrical
JOINT_CYLINDRICAL.ReferenceLocation = NS_FACE_3
JOINT_CYLINDRICAL.MobileLocation= NS_FACE_2
# User can set the value of Torsional Stiffness and Torsional Damping using below commands.
JOINT_CYLINDRICAL.TorsionalStiffness = Quantity ("1e6 [dyne cm deg^-1]")
JOINT_CYLINDRICAL.TorsionalDamping= Quantity ("1e6 [dyne cm s deg^-1]")

CONNECTION_GROUP.Activate()
JOINT_FIXED = CONNECTION_GROUP.AddJoint()
JOINT_FIXED.Name = "FIXED_JOINT"
JOINT_FIXED.ConnectionType = JointScopingType.BodyToGround
JOINT_FIXED.Type = JointType.Fixed
JOINT_FIXED.MobileLocation= NS_FACE_1


# Scenario 6 - Define Analysis Settings
   	
ANALYSIS_SETTINGS.Activate()
ANALYSIS_SETTINGS.AutomaticTimeStepping = AutomaticTimeStepping.Off
ANALYSIS_SETTINGS.TimeStep = Quantity("1e-2 [s]")


# Scenario 7 - Insert Remote Force BC

TRANSIENT_STRUCTURAL.Activate()
REMOTE_FORCE_BC = TRANSIENT_STRUCTURAL.AddRemoteForce()
REMOTE_FORCE_BC.Location = NS_FORCE_2
REMOTE_FORCE_BC.DefineBy = LoadDefineBy.Components
REMOTE_FORCE_BC.YComponent.Output.DiscreteValues = [Quantity("1e11 [dyne]")]
REMOTE_FORCE_BC.ZComponent.Output.DiscreteValues = [Quantity("1e11 [dyne]")]


# Scenario 8 - Insert Results

DIRECTIONAL_DEFORMATION = TRANSIENT_STRUCTURAL_SOLUTION.AddDirectionalDeformation()
DIRECTIONAL_DEFORMATION.NormalOrientation = NormalOrientationType.ZAxis

JOINT_PROBE_RELATIVE_DISPLACEMENT = TRANSIENT_STRUCTURAL_SOLUTION.AddJointProbe()
JOINT_PROBE_RELATIVE_DISPLACEMENT.BoundaryConditionSelection = JOINT_CYLINDRICAL
JOINT_PROBE_RELATIVE_DISPLACEMENT.ResultType = ProbeResultType.DeformationProbe
JOINT_PROBE_RELATIVE_DISPLACEMENT.ResultSelection = ProbeDisplayFilter.ZAxis

JOINT_PROBE_RELATIVE_VELOCITY = TRANSIENT_STRUCTURAL_SOLUTION.AddJointProbe()
JOINT_PROBE_RELATIVE_VELOCITY.BoundaryConditionSelection = JOINT_CYLINDRICAL
JOINT_PROBE_RELATIVE_VELOCITY.ResultType = ProbeResultType.VelocityProbe
JOINT_PROBE_RELATIVE_VELOCITY.ResultSelection = ProbeDisplayFilter.ZAxis

JOINT_PROBE_RELATIVE_ACCELERATION = TRANSIENT_STRUCTURAL_SOLUTION.AddJointProbe()
JOINT_PROBE_RELATIVE_ACCELERATION.BoundaryConditionSelection = JOINT_CYLINDRICAL
JOINT_PROBE_RELATIVE_ACCELERATION.ResultType = ProbeResultType.AccelerationProbe
JOINT_PROBE_RELATIVE_ACCELERATION.ResultSelection = ProbeDisplayFilter.ZAxis

JOINT_PROBE_RELATIVE_ROTATION = TRANSIENT_STRUCTURAL_SOLUTION.AddJointProbe()
JOINT_PROBE_RELATIVE_ROTATION.BoundaryConditionSelection = JOINT_CYLINDRICAL
JOINT_PROBE_RELATIVE_ROTATION.ResultType = ProbeResultType.RotationProbe
JOINT_PROBE_RELATIVE_ROTATION.ResultSelection = ProbeDisplayFilter.ZAxis

JOINT_PROBE_RELATIVE_ANGULAR_VELOCITY = TRANSIENT_STRUCTURAL_SOLUTION.AddJointProbe()
JOINT_PROBE_RELATIVE_ANGULAR_VELOCITY.BoundaryConditionSelection = JOINT_CYLINDRICAL
JOINT_PROBE_RELATIVE_ANGULAR_VELOCITY.ResultType = ProbeResultType.AngularVelocityProbe
JOINT_PROBE_RELATIVE_ANGULAR_VELOCITY.ResultSelection = ProbeDisplayFilter.ZAxis

JOINT_PROBE_RELATIVE_ANGULAR_ACCELERATION = TRANSIENT_STRUCTURAL_SOLUTION.AddJointProbe()
JOINT_PROBE_RELATIVE_ANGULAR_ACCELERATION.BoundaryConditionSelection = JOINT_CYLINDRICAL
JOINT_PROBE_RELATIVE_ANGULAR_ACCELERATION.ResultType = ProbeResultType.AngularAccelerationProbe
JOINT_PROBE_RELATIVE_ANGULAR_ACCELERATION.ResultSelection = ProbeDisplayFilter.ZAxis

JOINT_PROBE_TOTAL_FORCE = TRANSIENT_STRUCTURAL_SOLUTION.AddJointProbe()
JOINT_PROBE_TOTAL_FORCE.BoundaryConditionSelection = JOINT_CYLINDRICAL
JOINT_PROBE_TOTAL_FORCE.ResultType = ProbeResultType.ForceReaction
JOINT_PROBE_TOTAL_FORCE.ResultSelection = ProbeDisplayFilter.YAxis

JOINT_PROBE_TOTAL_MOMENT = TRANSIENT_STRUCTURAL_SOLUTION.AddJointProbe()
JOINT_PROBE_TOTAL_MOMENT.BoundaryConditionSelection = JOINT_CYLINDRICAL
JOINT_PROBE_TOTAL_MOMENT.ResultType = ProbeResultType.MomentReaction
JOINT_PROBE_TOTAL_MOMENT.ResultSelection = ProbeDisplayFilter.YAxis


# Scenario 9 - Solve and review the results

TRANSIENT_STRUCTURAL_SOLUTION.Solve(True)

JOINT_PROBE_RELATIVE_DISPLACEMENT_VAL = JOINT_PROBE_RELATIVE_DISPLACEMENT.ZAxis.Value
JOINT_PROBE_RELATIVE_VELOCITY_VAL = JOINT_PROBE_RELATIVE_VELOCITY.ZAxis.Value
JOINT_PROBE_RELATIVE_ACCELERATION_VAL = JOINT_PROBE_RELATIVE_ACCELERATION.ZAxis.Value
JOINT_PROBE_RELATIVE_ROTATION_VAL = JOINT_PROBE_RELATIVE_ROTATION.ZAxis.Value
JOINT_PROBE_RELATIVE_ANGULAR_VELOCITY_VAL = JOINT_PROBE_RELATIVE_ANGULAR_VELOCITY.ZAxis.Value
JOINT_PROBE_RELATIVE_ANGULAR_ACCELERATION_VAL = JOINT_PROBE_RELATIVE_ANGULAR_ACCELERATION.ZAxis.Value
JOINT_PROBE_TOTAL_FORCE_VAL = JOINT_PROBE_TOTAL_FORCE.YAxis.Value
JOINT_PROBE_TOTAL_MOMENT_VAL = JOINT_PROBE_TOTAL_MOMENT.YAxis.Value

Summary

This example demonstrates how scripting in Mechanical can be used to automate your actions.