ANSYS v12 - Rotordynamics

1. Nov 13, 2009

minger

Here are some things I've learned with the new version of ANSYS. I don't yet see a sticky for help/tutorials, so I'll just post here. Read at your own risk!

Rotordynamics is the dynamic study of rotating shafts systems. Typically, the focus of said analysis regards obtaining values known as critical speeds. This reference will describe the process which an ANSYS 12 user can model and find the critical speed values by performing a modal analysis.

Specifically, the critical speed is the theoretical angular velocity which self-excites the natural frequency of a rotating object. When designing rotor systems, it is important to identify these areas such that minimum time is spent accelerating through these zones.

In ANSYS, the user has several options for element types. The easiest is simply SOLID elements. For example, the standard SOLID185 and SOLID186 element types can now (with v12) be used for rotordynamic analyses.

I find it useful to often times do coupled analyses. Since stiffness properties can often times change greatly with temperature, thermal analysis is sometimes required before the dynamic analysis. For this reason, coupled field elements can be very useful. The 3D solid versions are SOLID226 and SOLID227.

The last of the SOLID elements that I've used are the new general axisymmetric solids. These are SOLID272 and SOLID273. These are pretty neat elements because they operate in the nodal coordinate system rather than the element coordinate system. This means that while an axisymmetric model is ran, non-axisymmetric loads and boundary conditions can be easily applied.

You typically want to stay away from standard axisymmetric elements because they are just that, axisymmetric. You can't really predict a bending mode using these because radial deflections must be the same circumferentially.

With that said, this tutorial here will use the general axisymmetric elements because they require some additional commands, so I might as well show them.

With rotordynamic analyses, there are two more components that are typically involved: bearings and disks. In the world of turbomachinery, we really don't want, or even need to model the disk blades. We would need a 3D model, and use coupling, and things would get messy. So, we model them as idealized disks, with mass and moment of inertia properties. To model these, we will use MASS21 elements.

For bearings, typically one would use COMBIN14 1D longitudinal elements, however, the recent addition of COMBI214 elements will make the job a little easier.

Enough talk, let's start coding. This is an example that I have from a complete shaft assembly. I will assume that you have a model made of lines, with the following line components.

- ballbearingline
- rollerbearingline

Now let's set some fake properties for the bearings and disks.
Code (Text):

k_ball       = 75000.
k_roller     = 20000.
comp_mass    = 0.500
comp_Iyy     = 0.750
turbine_mass = 0.400
turbine_Iyy  = 0.600
small        = 1.e-8

Let's define the elements
Code (Text):

ET,1,272
KEYOPT,1,2,12

ET,2,214
KEYOPT,2,2,2
R,2,k_ball
R,3,k_roller

ET,4,21
KEYOPT,4,1,0
KEYOPT,4,3,0
R,4,small,small
R,5,comp_mass,comp_Iyy
R,6,turbine_mass,turbine_Iyy

Let's explain these a little. The keyopt for the 272 specifies how many "nodal planes" there will be. When you use these elements, you actually mesh a 2D region with nodes and elements. You then generate n nodal planes for which there are nodes only. Obviously the greater the nodal planes, the more accuracy you'll get.

The keyopt for the 214 tells the program that the element lies in the XZ plane. For this run, I have the geometry such that it is Y-axial. Another very nice feature with general axisymmetric elements: You can specify the axis in ANY direction. Out of habit though, I have it y-axial here.

For the MASS21 elements, the first keyopt says to interpret the real constants as masses and moments of inertia. You can alternately specify volumes and moments of inertias, but this requires a material definition. The second keyopt says that we only want UX,UY,and ROTZ as degrees of freedom. I have then defined three real sets corresponding to the compressor disk, the turbine disk, and a small value, which we will see the reasoning behind soon (100% necessary). Note that the real constants are actually wrong here, it requires 3 masses and 3 I values for that keyopt...still needed though.

My next step is to simply mesh
Code (Text):

AL,ALL
AESIZE,ALL,0.05
AMESH,ALL

Now we will the general axisymmetric elements which axis we want. There are many options here in v12, please review the updated command for more information.
Code (Text):

SECTYPE,1,AXIS
SECDATA,1, 0,0,0, 0,1,0
NAXIS,GEN,AUTO

That secdata defines two points for the axis of rotation. You can also simply specify an axis corresponding to a coordinate system. The next line actually generates the nodal planes.

If you plot your nodes, you will now see a circular array of nodes, but only one single plane of elements. That means were on the right track. I like to have a component for my "master" plane of nodes, so:
Code (Text):

NSEL,S,LOC,Z,0.0,0.0
NSEL,R,LOC,X,0.0,10000.0
CM,masternodes,NODE

OK, so the next thing we'll do is place the bearings. These bearings require two nodes. We want one node to be connected to the shaft, and the other fixed. So the plan is to find the location of the line component, and place two coincident nodes at the axial center of the line, on the axis. We will then fix one of the nodes and couple the other node to the line element. Let's see what it looks like.

Code (Text):

CMSEL,S,ballbearingline
NSLL
CM,ballbearingnode,NODE
*GET,ball_min,NODE,0,MNLOC,Y
*GET,ball_max,NODE,0,MXLOC,Y
ball_cent = (ball_min + ball_max) / 2.0
N,99999,0.0,ball_cent,0.0
N,99998,0.0,ball_cent,0.0
TYPE,2
REAL,2
E,99998,99999
NSEL,S,NODE,,99999
CM,ball_contact,NODE
NSEL,S,NODE,,99998
CM,ball_fixed  ,NODE

The last few lines are just for record-keeping as I like things neatly into components. The same procedure is then done for the roller bearing. At this point comes a very important point which took me a LONG time researching and on the phone to solve.

The COMBI214 only have two degrees of freedom, UX, and UZ. We want to couple the COMBI214 elements to the SOLID272 though, which have 6 DOFs. In order to do this, we place a small MASS21 element on the ends of the springs to give them the additional degrees of freedom. If you don't do this, the coupling won't work!

Code (Text):

!--Apply MASS21 element on end of COMBIN14
TYPE,4
REAL,4
E,99999
E,99997

We then use CERIG commands to define a rigid region between the end node of the COMBI214 spring and the bearing locations.
Code (Text):
!--Define the rigid region
CMSEL,S,rollerbearingnode
NSEL,A,NODE,,99997
CERIG,99997,ALL,UXYZ

The next thing is to add the blades in the form of MASS21 elements. This is pretty identical to the bearings, with the obvious exception that we are not fixing the node. It would be helpful to have the centroid of the blades as a variable, and then create the node there, e.g.
Code (Text):

N,99989,0.0,centroid,0.0
TYPE,5
REAL,5
E,99989
CMSEL,S,comp-od-line
NSEL,A,NODE,,99989
CERIG,99989,ALL,UXYZ

So, here we created the node, attached the element to it, and then created a rigid region between the element and disk OD. Let's get to solving.

Here's what I used for my last run.
Code (Text):

/SOLU
ANTYPE,MODAL
OMEGA,,0.,,OFF
CORIOLIS,ON,,,ON
modopt,qrdamp,13,,,on
mxpand,13,,,yes
solve
omega,,1000.0,,OFF
solve
finish

! *** campbell diagram
/post1
plcamp
prcamp,,1,rpm
finish

First, in order to get the critical speeds, we solve with no rotation. The CORIOLIS command turns on the necessary gyroscopic effects. MODOPT is a required command that tells which solver to use; 13 is the number of modes to find. We then added a small beta damping for stability. The MXPAND command expands the modes so that we can actually see them.

From there, you solve, and then change the rotating frequency and solve again. With two data points, you can now get a campbell diagram. PLCAMP prints the campbell results to the output file (which I like) and PRCAMP plots it. The 1 indicates that you want a 1x slope (typical) and I want my units to be in RPM.

I have used both ANSYS and what I'll call analytical-style solvers (e.g. Dyrobes) which use cones and cylinders to solve analytically, and both have their pros and cons. With a program like Dyrobes, the modeling is long and time-consuming as you need to take a "organic" line and break it up into straight edged cones. In addition to that, "real" geometry effects are negated as the program only sees your rotor as a series of masses and moments of inertias. Thin sections and other effects are unknown to it.

On the other hand, the bearing modeling is far more powerful and more simple. Some of the bearing effects could be duplicated in ANSYS, but with much effort. Conversely, while ANSYS might not be up to snuff with the bearing modeling, it more than makes up in design iteration of shaft modeling. Once your setup file is creating, making changes to a geometry simply involves changing the model and making sure component names stay defined. Changing geometry in Dyrobes essentially involves recreating the entire thing.

So while they both have their pros and cons, I can typically save a lot of time by modeling using ANSYS. Most importantly is the accuracy though. I did several benchmarks between the two systems. I started with very simplified models and got progressively more complex. The simple models were extremely close in results (1-2%). As the geometries got more complex, they started to diverge, with the final shaft model being having about 7% error between the two.

I would tend to believe the ANSYS in this case because there were areas which should have been less stiff, but as noted before, the analytical model just couldn't "see" them. So, based on this, I definitely think that ANSYS is a tool that can and should be used for rotordynamics, and hopefully with this little tutorial you can try some things out and probably get pretty lost and frustrated.

Note about SOLID272 elements. These elements only have 3 DOFS, translations. So, if you would like to combine non-axisymmetric features, there are a couple things you can do. First, you cannot simply mesh the objects line-to-line. Let's assume that you have some gussets or braces that you'd like to incorporate. You have 6 braces, so you define 6 nodal planes. You must first copy the area, such that the braces no longer share nodes/lines with the 272 elements. Then simply use CPINTF commands to sew the areas together. If you simply mesh it all together, you'll run into errors.

If you want to incorporate struts or other things like that, you can model the struts as beam elements, and then use CERIG commands using the beam endpoints as the master node. Good luck!

2. Nov 13, 2009

FredGarvin

Sweet. I hope we get to upgrade to V12 soon. I don't know if that is going to happen or not.

Is the rotordynamics package a separate license?

3. Nov 13, 2009

Mech_Engineer

We're running V12 and overall I've been pretty happy with it. I kind of miss the layout of V11 Workbench though...

4. Nov 13, 2009

minger

No, the capabilities are simply added to the element types, and again the analysis type is simply MODAL.

As far as the workbench layout, most people here don't like it. However, I find that it eliminates a lot of the hassle of bringing in boundary conditions from CFD.

One great thing about the new Simulation though; it meshes MUCH better and faster than v11.

5. Nov 13, 2009

Mech_Engineer

It's true, multiphysics linking is easier and more obvious now...

Very true, I have found meshing to be much better in V12.

6. Jul 9, 2010

HI #
can any one send the final code all togather?

Regards

ALI

7. Jul 10, 2010

Turbodog

Thanks minger! This is a very interesting discussion for me as I at one point worked on the v11 and v12 Workbench Development team as a co-op and now I work for a turbomachinery OEM.

The real test for model accuracy is how the predicted critical speeds line up with the vibration measurements on the test floor. Models also should take into account the cross coupling damping effects that labyrinth seals can produce. Then make sure that the highest predicted amplitudes don't cause the seals to rub. My company uses a lumped mass model like you described that uses a lot of empirical data for bearing and seal characteristics. It's not too bad, but it takes a while to model non-standard rotors.

I'm sure it's possible, but do you ever do string torsionals with ANSYS?

Thanks for the post

8. Jul 20, 2010

bgprodigy85

hey everybody
I was wondering, how do you place bearing (well spring element) and/or mass if you have hollow section of a shaft (how can it be properly connected). If you use some, no density, low Young modulus, material for an element that will fill the hollow part, so that could have continuous nodes for connection, i guess modal results wouldn't be good?
Can it be done by creating a non revolting outer surface with contact elements and specified stifness (for simulating bearing)?

cheers

9. Jul 21, 2010

minger

If you look up at the walkthrough I try and explain it best I can. The idea is to use a 2D spring, COMBI214. Because of the spring has stiffness and damping in both UX, and UZ, we need to have the rotor lie along the Y axis.

Now, I have line elements which define the position of my bearings. I select the line and then NSLL (nodes select from line). At this point, I find the max and min Y location of the nodes, and simply divide by two to get the middle.

At this point, you'll need to do everything via script, because there will be a few coincident nodes, so graphically picking them will be confusing. We create two coincident nodes on the Y-axis at that bearing location. We then switch to the spring element, and create an element with those two nodes. If your nodes are not coincident and on the Y-axis, it won't work.

Then, we simply use CERIG from one of the spring nodes to the all of the bearing location nodes. At this point we must realize our 3D elements though. Again, you cannot use axisymmetric elements for rotordynamics. So, while we have lines and elements only on a single plane, nodes exist in 3D.

So, when we couple the single spring node to the bearing nodes, we need to make sure we get all the nodes, from each nodal plane that we defined as part of our elemental keyopt. If you're not sure what I'm talking about, I might have described it better above with the SOLID272/273 elements.

Whoops, I missed a step. This is important. The spring elements by default have only two degrees of freedom, while the solid elements have all 6. If we simply couple the springs to the solids, you will get a coupling error at runtime.

To avoid this, we add a MASS21 element to the non-fixed spring node. The mass element has all 6 DOFs as well, so when we couple that node to the solid elements, everything will be cool. If you don't do this, it won't work.

As far as placing the bearings themselves. It doesn't matter what your shaft looks like, the bearing element must be on the Y-axis, even if the shaft is solid, or hollow, or whatever.

10. Jul 21, 2010

bgprodigy85

Thank you very much for such a quick response. I don't use Ansys,for now, but was trying to help a colleague and already had some similar ideas how to do this analysis, i'm gonna try this little instructions of yours, to see how it all works out.
You sir are a living example of how internet can be a great thing, i am going to surf this forum more often now and try to be a useful member.
cheers

11. Jul 22, 2010

bgprodigy85

I tried but couldn't workout this instructions that you gave. When you say bearing nodes (nodes on the bearing line etc.) do you mean nodes on the shaft model which corespond ,by an axial coordinate, to actual bearing location. I'm uploading a little picture to be clear.
I don't get it, if i put spring element with two coincident nodes on rotation line and constraint one node and add mass on the other one, how i'm gonna connect it to the nodes of shaft elements cause there is nothing between (hollow section).
If you could post in .txt full code for some simple example (say hollow shaft with two bearings modeled with springs, without analysis setup just element creation) i will be verry grateful.
p.s. Did you have any problems with setting constraints properly, because from other FEM software experience, i know that modal analysis can give wrong results (like oscillation of support elements or masses, before other parts of a model etc. ).

Attached Files:

• Clip.jpg
File size:
5.7 KB
Views:
230
Last edited: Jul 22, 2010
12. Jul 22, 2010

minger

Unfortunately I cannot give you any full text as I no longer have access to my old files at my recently-previous position. To be honest, the (code) sections above constitute essentially all of an input file that I was doing.

Let me try and clarify a little based on what your saying.

Yes, the bearing nodes are the nodes which correspond to the actual bearing-to-shaft interface on the shaft. I typically have this defined as a line component, and then I NSLL.

OK, to your second part, you must have missed the CERIG part. We are going to couple that non-fixed, mass element-added node which we will define as the master node in the CERIG command to all of the "bearing nodes".

Now, what is very important is that while we have elements only in 2D, we have nodes in 3D (see general axisymmetric elements and nodal planes). These additional nodal planes are created when we issue the NAXIS command. After we select our line component which corresponds to the bearing, we need to select the rest of the nodes around the azimuth that correspond to the same radial and axial location.

As far as setting contraints, it's really not that bad, because all we're going to fix is the "foundation". In the example I have above, I'm assuming that the there is only one "spring" between the shaft and ground. I could have easily coupled a few springs in-line to simulate the bearings, bearing housing, outer casing, stand, etc. In the end though, we're only going to fix one single node.

13. Jul 24, 2010

bgprodigy85

Solid elements that you mentioned earlier (226,227,185,186,272,273) do not have 6 DOF's, they have 3 (3 translations + some specials, but no rotations)!?

14. Jul 25, 2010

minger

The standard 185/6 should have all of the typical structural DOFs. The coupled-field elements, 226/7 will have different DOFs depending on the what keypot you chose, defining the coupled analysis type. For example, in a thermostructural analysis, there will be an additional DOF for temperature. I thought that the 3D version of those included rotations, but maybe not.

While 272/3 are 3D elements, they are axisymmetric by nature. So while they can do 3D analysis, it's very difficult to know what exactly is going on with them. While they may not have rotations (I'm not 100% sure either way), you can still predict torsional modes.

15. Jul 31, 2010

bgprodigy85

It worked, i've got pretty close results in comparision with other rotordynamics solvers, and in reasonable limits whit analytical results i've calculated whit much simplified geometry. The real thing is to have real stifness characteristics of foundations on which shaft lies, something that should be measured on a real thing.
Just to recapitulate little (i've used solid272 because of low memory requirements for such model)>
nsel,..nodes with axial coordinate where your bearings are
create node in the center of that section (number one)
create mass element at that node
cerig,..that node and previously selected ones
create another node on same place (number two)
create combi214 whit number one and two nodes
fix number two
It could be also done whit contact and target elements, and some other ways to, but i guess this is by far the simplest.

Thanks Minger!

16. Jul 17, 2011

masoudeng

Hello
I am a student of mechanics. I am in Turkey. Excuse my English is not very good. I'm researching the vibration analysis of turbine generator rotor water. I found that you are very experienced in this subject. I ask that you please help me. Please teach me how to do a simulation in Ansys rotor. Find it natural frequencies and critical speeds. I read your previous posts and I run all the commands, but does not work. More please help really need this analysis.

17. Jul 17, 2011

bgprodigy85

18. Jul 18, 2011

masoudeng

hi dear bgprodigy85
i download this code butt this code not work in matlab. my matlab software version is 2009a. are you test this code?
regard

19. Jul 18, 2011

bgprodigy85

It works perfectly, you have to add path to connect all those functions to your matlab directory. For me it worked with matlab 7.1.

20. Jul 23, 2011

masoudeng

dear bgprodigy85
what you mean ,have i to add path to connect all those functions to your matlab directory?
and How can one apply to the rotor speed from 0 to 20,000 rpm in ansys?