Skip to main content


Showing posts from 2018

CMS Superelement Harmonic Analysis

Fig 1: Project Schematic With the release of Mechanical 19.2, substructuring is now available for Modal & Rigid Dynamics without scripting. That just made my  earlier post on CMS outdated! Note that there is still a key limitation where Generation and Expansion Pass must be performed on your local machine. To get ahead of the game a bit, here is a way to do Harmonic Analysis extending on previous work . (Please go through that before this post). Some points of note: The method of merging the CMS and non-CMS models together into System C is the same. All files related to the superelement has to be copied over to the solver file directory as before. Modal analysis need not be performed first as the example here uses  Full Method  instead of Modal Superposition for simplicity.  The script expands the responses the same way as Modal Analysis does so the script will look familiar. Additional Resources: Example: Harmonic Response to Unbalanced Force using CMS ( Link ) Exa

Learning Python for Ansys and Beyond

Figure 1: Colab by Google Ansys has  ACT extension where users can do some customization using a popular programming language called Python. The barriers to learning Python is now much lower but I'm still stumped by Object Oriented Programming. Hopefully this post would be useful to those who fit the following demographics: Knows simple programming concepts like loops and functions Understand some Calculus Side Notes on Ansys ACT Before You Begin Ansys uses  IronPython 2.7  which is an implementation in the .NET framework. Unfortunately, as I understand it, some libraries such as NumPy are difficult to install . Colabs Colaboratory Research by Google (Fig 1) is a neat tool. All you need is a free Google account and you can execute Python scripts in the browser. No installation required! It has Jupyter notebook running in the background and allows both Python 2 or Python 3. While NumPy and Matplotlib is already installed by default, you could install other librarie

Modal Submodeling

This post was inspired by CAEAI's blog post on modal analysis sub-modeling and an XANSYS question. Their instructions were not explicit and everything was done in Ansys Classic. The goal here is to show modal submodeling in Ansys Workbench. Here's a walk through of an example: Step 1 Solve the coarse model Modal Analysis (System A). Fig 1: Coarse Model Modal Analysis (System A) Step 2 Create a finely meshed submodel Harmonic Response Model (System B). This will be the submodel. Fig 2: Project Schematic After creating the desired mesh, add a named selection at the cut boundaries called  cut_face . Add the following command snippet in the Setup branch. !! Creates cut boundary NODE file ! WB will complain but boundarynodes.node file should be created /prep7 cmsel , s, cut_face nwrite , boundarynodes, node finish /exit The above step writes out a file listing the nodes and their coordinates which will be used for interpolation. After solving for the mode

Ansys Student in the Cloud

Cloud Computing * ? Cloud computing is all the rage now for good reason. It is tempting to own a low cost computer and remote-desktop to a supercomputer. One could, in theory, run Ansys on Chromebook with internet connection by connecting to a Cloud Computing Providers  Virtual Machine. I took a quick look and have the following to report. Setting Up Windows Virtual Machine (VM) : Quick Start Google Compute: YouTube  Micosoft Azure: YouTube1 & YouTube2 Patience is key. After starting up the Virtual Machine for the first time, one has to wait a bit (15 minutes?) before the virtual machine really starts for one to remote login. I fiddled around with the "source IP ranges", setting it to and even my own IP address. It was unclear if that was useful or waiting alone did the trick. Once logged in, one has to override the strict security set by the Internet Explorer to allow download of the free  Ansys Student . Finally, remember to Shut Down from the

Non-linear Convergence

Livin' ON a Prayer * In the few tingling seconds between saving the project and hitting Solve on Ansys, I would mutter a prayer under my breath. There is always an indescribable brief sense of helplessness and hope. Non-linear problems are tough because... they are nonlinear! A small nudge can have disproportional effects.  Learning how to solve non-linear problems takes patience and luck. Here are some resources which I found useful in my journey in learning the secret arts (in no particular order): 1. CAEAI: Best Practices ( link ) ( backup_link ) 2. Joseph Metrisin 1 : contact convergence debugging guidelines ( link ) ( backup_link ) 3. Rod Scholl: contact analysis guidelines ( link ) ( backup_link ) 4. Ansys: Could you give me tips and tricks for Non-linear simulations? ( link ) 5. John Higgins: Obtaining and Optimizing Structural Analysis Convergence ( link ) 6. PADT: Overcoming Convergence Difficulties (Part I & II ) 7. Ansys: Snap Fit Analysis - Be

ACT to Automate Post-Processing

I gushed about the ACT console in a previous post . Here's another example of automatically populating some post processing objects for all time steps inside Mechanical after a solve.  Copy-and-paste it in Mechanical ACT Console Command Line, then hit the Enter key. Text file of script: Link . # Extracts at each time step... # x, y, z stress components, von Mises stress, max principal stress, total deformation, and x, y, z normal deformation components numsteps = ExtAPI.DataModel.Project.Model.Analyses[0].AnalysisSettings.NumberOfSteps for ct in range(numsteps): setTime = str(ct+1) + " [s]" nowTime = str(ct+1) + "s" # Normal Stresses sx=ExtAPI.DataModel.Project.Model.Analyses[0].Solution.AddNormalStress() sx.NormalOrientation =NormalOrientationType.XAxis sx.DisplayTime=Quantity(setTime) sx.Name = "Normal Stress X at "+nowTime sy=ExtAPI.DataModel.Project.Model.Analyses[0].Solution.AddNormalStress() sy.NormalOrientat

Cleaning Up Geometry with SpaceClaim

I sometimes come across a very ugly UGLY message when I try to mesh. The description is especially misleading. Figure 1: Error!  The problem is often fixable in SpaceClaim. Here's something to try: 1. Select everything (Ctrl-A), Right-Mouse-Button then Detach All . 2. Under the Repair tab, click on Stitch and click the green check mark to complete all. Hopefully the first step would solve all problems. You could verify this using the Check Geometry feature. It's not full proof but worth a shot. Figure 2: Check Geometry This would highlight any outstanding problem areas. Other repair tools such as repairing  gaps and missing faces usually does the job. Otherwise, it may be necessary to get more fancy by removing the difficult surface by cutting it (Ctrl-X), then replacing it with blending or  fill .  A really neat trick with fill is Patch Fill. First click on Fill without selecting any geometry. Under the options, the default is Extend Fill . If any geo

Tension Only LINK180

Figure 1: Von Mises Stress Animation LINK180 is a very interesting element which allows tension but not compression. A snippet in a Beam element does the trick of configuring beams in Workbench into tension only beams. et, matid, 180 *get, area, secp, matid, prop, area sectype, matid, link secdata,  area seccontrol,, 1 ! Tension only The example problem has a thin plate that has a Revolute joint in the middle that rotates \(\pm3^o\). The two chain LINK180 on each sides of the plate will thus take turns being in tension and be relaxed. Figure 2: Displacement Animation The forces plotted using SMISC1 shows forces in tension. Figure 3: Force Animation V18.2 Archived Workbench File: Link

APDL Pseudoinverse Least Square Fit

Curve fitting is a frequently used tool in engineering. I wished my linear algebra teacher taught me pseudoinverse. As used in the previous blog post  script, it computes the least-square curve fit for linear equations. This can come in handy for fitting 2D or even 9D variables. For a simple 2D straight line, the equation is \( y = m \cdot x + c\). Writing it matrix form, we have: \(y = \begin{bmatrix} x & 1 \end{bmatrix} \cdot \begin{bmatrix} m\\c \end{bmatrix}\) With multiple data points in space (e.g. \((x_1,y_1), (x_2,y_2),\dots\) ) the equation looks like this... \( \begin{bmatrix}y_1\\y_2 \\y_3\\ \vdots \end{bmatrix} = \begin{bmatrix} x_1 & 1\\ x_2 & 1 \\ x_3 & 1 \\ \vdots & \vdots \end{bmatrix} \cdot \begin{bmatrix} m\\c \end{bmatrix} \) This matrix looks similar to \(y = A \cdot b\) where our \(A = \begin{bmatrix} x_1 & 1 \\ x_2 & 1 \\ x_3 & 1 \\ \vdots & \vdots \end{bmatrix} \) and \(b = \begin{bmatrix} m\\c \end{bmatrix} \)

Extract Translation & Euler Angle Rotation

Figure 1:  Z-X'-Y '' Rotation of the 'Grip' PADT has a recent post on Extracting Relative Displacements in ANSYS Mechanical. The macro only works for small angles (in the order of 5 degrees). The accompanied PDF file shows: \(u = dR \cdot (x-\overline{x}) + \overline{u}\) Their nomenclature:    \(dR\) : Small rotation matrix    \(x\) : Nodal position vector    \(\overline{x}\) : Center of Gravity (CG) position vector    \(u\) : Nodal displacement vector    \(\overline{u}\) : CG displacement vector To extend their work to account for large deflection, I've added some terms: \(x + u - \overline{x} \approx R \cdot (x - \overline{x}) + \overline{u} \)    \(R\) : Rotation Matrix The left side of the equation is the final deformed body. The right side of the equation is the rigid body rotation and translation. As the rotation is applied at the center of the body, \(\overline{x}\) is accounted for on both sides of the equation. Note that '

Reuse CMS Superelement in Ansys Workbench with Expansion

Figure 1: CMS Reuse Project Schematic In the previous two posts ( here and here ), the workflow requires another generation pass when reusing the model. This diminishes the advantage of using a component mode synthesis (CMS) superelement model. The difficulty is that when the model changes, the superelement node numbering no longer matches the new workbench (WB) model. Everything gets shuffled around. To reuse a superelement body, we need the  nodes to persist in the final Analysis for expansion. Strategy We start out with an original modal analysis ( Analysis A ) that would have worked on it's own. Next, the original modal analysis is duplicated (becoming Analysis B ). Analysis A will be modified to only have the superelement body while  Analysis B will be modified to have the geometry and mesh of non-superelement body. When both analysis are assembled into a new modal Analysis C , Analysis B 's element and nodes are automatically offset so that the ordering is

Component Mode Synthesis (CMS) with Results Expansion in Ansys Workbench

Figure 1: Results from Full Model (Left) and CMS (Right) Background In a previous post on Component Mode Synthesis (CMS) in Ansys Workbench, the expansion of the results were omitted. This is remedied in this post. Figure 1 compares the results favorably between the full model to a model with the mid-section as a CMS part. Resources 1. The archived workbench file (R18) can be downloaded  here  (download icon at top-right). 2. Script that is used as solution snippet can be downloaded here . 3. A key resource is available in the help documentation . 4. Some fancy graphics describing the process here . General Setup Figure 2: Overall Geometry (Left) & CMS Part (Right) This example has a few prerequisites: 1. Multi-parts with shared topology  (Figure 2) 2. Named Selection of the CMS part (Body1 in example) 3. Named Selection of interface on CMS part (c1a & c2a in example) 4. Command snippet under solution does everything. Between steps, no suppressing and u