Showing results for 
Search instead for 
Do you mean 
Solved! Go to solution

Ball bearing simulation

[ Edited ]



I am trying to model the motion of a ball in a ball bearing. 


My model consists of a sphere, which I am trying to rotate about its own axis (call this rot1) and simultaneously around the axis of the shaft (call this rot2); in other words, the sphere is offset from the global x-axis, and I want it to orbit around it.


So for rot1:

I created a spherical CSYS at the center of the ball and applied an enforced displacement on DOF2 (2mm) and set the other DOFs to 0. I applied the BC on an edge splitting the ball into two identical hemispheres.



For rot2:

I created a cylinderical CSYS at the global origin, and applied an enforced displacement constraint on the face splitting the ball into two hemispheres (and excluded the edge on which rot3 is applied because it causes a conflict, and when I try to resolve it by adding the two BCs, one of them gets defined in the CSYS of the other). I set the DOF2 (T-DOF) to a given displacement (3 mm) and the rest to zeros.


I created twosubcases to test this setup


1. rot1_only

Applying rot1 ALONE gives the correct results in terms of numbers - I mean when i post-process the results, the deformation values obtained are exactly 2mm on that edge. However, for some reason the ball seems to deform in the spherical radial direction, although I set its value to zero and its shows on the plot to be zero (and deformation scale = 1)


2. rot2_only

When I apply rot2 ALONE, the ball seems to move the 3 mm in the DOF2 direction BUT on the global cartesian CSYS not the cylinderical one - the ball is just translating not orbiting



What I eventuall want to do is to be able to apply both BCs at the same time, without conflicts.


My questions are:

1. Why am I getting the strange behaviors in the two subcases above ?

2. How can I correctly apply both BCs simultaneously ?


Thanks in advance for your help

The .dat file is attached


Betreff: Ball bearing simulation



it is difficult for me to understand your problem in the right way and maybe I misunderstand you. Then sorry for that.


I have no NX here so I can't open your dat file but I see SOL101 in header.

Do you try to simulate something like a double rotation of the ball with parallel rotation axes, one in the center of the shaft and one in the center of the ball? And the rotation shall be linked like having the ball rolling on a cylindrical surface of the bearing like an epicycloid?


What solver do you use? As you try to use linear static solver, I believe that can't work. -  It looks for me like as trying to simulate large rotations with a linear solver. But such rotations are very bad for linear simulations.


First, if you want to have a real rotation of a point you should have to modify both directions (radial and tangential) in an cylindrical coordinate system with sinus and cosinus of rotation angle.

If a grid point shall move on a circle line, one displacement is R*sin(teta) and the other is R*(1-cos(teta)). The rotation axis shall be fixed. R is not the radius of the sphere but the distance of the grid point from the rotation axis.


But second, I think it will not work. I can't describe it in English, it's not my native language. It depends on how to interpret strains as changings of displacements or something like that. There are no real free rotations witch yield in linked displacements in linear solution systems.


You should think about using a solver for large displacements / rotations and large strains or maybe try to simulate the movement with direct time integration solver (SOL701) or something like that.


Best wishes,


Betreff: Ball bearing simulation

[ Edited ]

Hi Michael


Thanks for your answer. That's exactly what I am trying to do.

I am right now struggling how to get this working in NX.


What I am doing now is: First, I used the NX advanced non-linear solver (SOL106, 601). I define my BC on the global cartesian CSYS (loctaed at the shafts center). I use the x and y functions of the epitrochoid as BCs. I am now having to new issues:


1. The epitrochoid function gives the x(t) and y(t) coordinates and not the displacement ux and uy. In order to define displacements, I would suppose I need to do something like ux(t) = x(t) - x(t-dt), and similarily for y. Is that a correct way or is there a better approach ? and how to obtain the current coordinates of a node ?


2. The second problem: as far as I understand, the theta parameter in the epitrochoid function is measured at the center of the ball (or the rolling element). Should this be defined simply as the spinning speed of the ball multiplied by time ? 


Thanks a lot

Accepted by topic author KhalilMohamed
‎05-03-2017 08:54 AM

Betreff: Ball bearing simulation

[ Edited ]



using Sol 601 with large deformations and large strains could work.


I would try to decouple both rotations. I would define a rbe3-spider-connection from surface of ball to center of ball (or from an inner surface of the ball to it's center, may be as alternative with rbe2).


Here you can try to define both rotations in different ways.

1. rotation of center of ball (CoB) around center of shaft (alpha),

2. rotation of ball itself around its center (beta).


ux.CoB = (R.bearing + r.ball) * sin (alpha)

uy.CoB = (R.bearing + r.ball) * cos (alpha)


rz.CoB = beta


Alpha and beta should have to be coupled by using the equality of the length of the unrolled circle line of both circles. I think its

s = r.ball * beta = R.bearing * alpha


I think alpha and beta have to be defined as a function of time.


The main rotation around shaft center is alpha(t) = 2*pi / (60*(sec/min)) * n * t

with n  as revolution speed in rotations per minutes


Maybe now the displacement of the grid points on the surface of the ball provide the coupled movement.



(Edit: Sorry, I get lost a lot of "C"s in the thread because my notebook C-key is mostly in a "hard-bitten" state when pressing ;-)


Betreff: Ball bearing simulation

Hi Michael


When I tried what you proposed, the ball did rotate around the shaft's center, but it didn't spin. To my understanding, the 3D elements don't have any rotational DOFs, so applying the beta BC won't have an effect on the ball.


I tried coupling both dofs in one equation as follows:


ux_BallSurface = R * cos (alpha) + r * cos (alpha + beta) = x_BallCenter + r * cos (alpha + beta)

uy_BallSurface = R * sin(alpha) + r * sin(alpha + beta) = y_BallCenter + r * sin( alpha + beta )


which is basically the circle equation having an offset center, with a radius equal to the ball's radius 'r'. NX in this case treats the ball as a 'whole entity' and applies an equally value of the BC on all the nodes, becuase the value of the ux and uz don't vary in correspondance with the nodal position.


I want to calculate then an angle phi for each node so that the above equations are written as 


ux_BallSurface = x_BallCenter + r * cos (alpha + beta + phi )

uy_BallSurface = y_BallCenter + r * sin( alpha + beta + phi )


do you have an idea how to define phi as a field using an NX function ?

I have found a function "angle2Vectors", which calculate the angle between 2 vectors. I thought I could define one vector v1 from the ball's center to a given node on ball's surface, where phi will be zero. Then I define another vector v2 between the ball's center and any arbitrary node, where phi is the relative angle between this node and the reference node. I don't know how the function's syntax work however !

Do you have any idea or have any recommendation for a documentation for NX functions ?


Thanks a lot

Betreff: Ball bearing simulation

Dear KhalilMohamed,


you wrote:


When I tried what you proposed, the ball did rotate around the shaft's center, but it didn't spin. To my understanding, the 3D elements don't have any rotational DOFs, so applying the beta BC won't have an effect on the ball.


Therefore I intruduced the rbe-spider-connection from an artifical node at center of ball to surface nodes. The center node of the rbe has rotational degrees of freedom too. The relative positions between leg nodes and center node of the rbe element transform the rotation of center node into enforced displacements of all leg nodes.


I would first choose all surface nodes of ball as being leg nodes.

At first step I would try to rotate the ball alone without modifiing alpha.


The advantage is that you only have to define a rotation relationship for one node and not for ALL nodes of ball.


I can't verify that your equations


ux_BallSurface = R * cos (alpha) + r * cos (alpha + beta) = x_BallCenter + r * cos (alpha + beta)

uy_BallSurface = R * sin(alpha) + r * sin(alpha + beta) = y_BallCenter + r * sin( alpha + beta )


are correct.


Best wishes, Michael

Betreff: Ball bearing simulation

Hi Michael


Sorry about the confusion I had in my rpevious reply. Yes you are totally correct about. I applied the spider connection and enforced the DOFs directly there and this worked perfectly for me


Many thanks for your help. I am very grateful