Superposition of two move/mesh rotations

Submitted by Alexander Haber on Wed, 10/04/2017 - 11:43

Hi,
I'm trying to superpose two move/mesh rotate commands. The application is like a robot arm with two parts and the rotation axis of the second part changes with the movement of the first part.
The manual says, that for style rotate, the origin of the rotation axis would be in local reference, if there is a move command before. I think, however, that the vector of the rotation axis always remains in the same direction. Is this correct or is there a way to change the vector of rotation axis, according to a move / mesh command before it?

Following the command for moving the two parts of the robot:
#Motion of Part 1 (Rotation about the y-axis):
fix move1_1 all move/mesh mesh cad1 rotate origin 0 0 0 axis 0 -1 0 period 1

#Motion of Part 2 (Rotation about the y-axis with Part 1 and rotion about z-axis OF PART 1)
fix move2_1 all move/mesh mesh cad2 rotate origin origin 0 0 0 axis 0 -1 0 period 1
fix move2_2 all move/mesh mesh cad2 rotate origin 0 0 -0.5 axis 0 0 1 period 0.2

In this case the vector of the rotaion axis of move2_2 is (0 0 1), but only at the beginning. For example at a rotaion of 90° of part 1 about the y-axis the vector of the rotation axis of part 2 should be (1 0 0).

Maybe it is possible to use a variable for the changing rotation axis or is it easier than I think?
Thanks for any help!
Alex

40044600's picture

40044600 | Mon, 10/09/2017 - 15:46

Hello Alex,
I think I am having the same issue as yourself. I've posted previously a few months ago (see link - https://www.cfdem.com/forums/simulating-biaxial-rotation-mesh)
The only response I got was that it is something that should be solved in the next update.
I'm unsure if that update has yet been released or if it is in fact included in it.

Out of interest, is the application of your work to do with rotational moulding?

Regards,
Jonathan

Alexander Haber | Fri, 10/13/2017 - 19:40

Hi Jonathan,

yes, it seems you have a similar problem like me. In my case, I found a solution for my problem, but its hard for me to describe it.

Let me start with the problem again: Due to the rotational movement of the first part, the vector of the axis of rotation is time-dependent for the second part , but it is not possible in LIGGGHTS-Public to change the direction of the rotational axis in a single move/mesh command.

And now the solution: In my case it was possible to "combine" two (or more) move/mesh commands to achieve the right movement.
Here arre some lines of code to show what I mean with "combine":

--------------
variable omega21 equal 20*cos(14.836*step*dt)
variable omega22 equal 20*sin(14.836*step*dt)

fix move1_1 all move/mesh mesh cad1 rotate origin 0 0 0 axis 0 -1 0 period 0.4235 #rotating rod (part 1)
fix move2_1 all move/mesh mesh cad2 rotate origin 0 0 0 axis 0 -1 0 period 0.4235 #rotation of a disk (part 2), which is mounted at the outer end of the rod (without spinning around itself)
fix move2_21 all move/mesh mesh cad2 rotate/variable origin 0 0 -0.5 axis 0 0 1 omega v_omega21 #1: spinning of the disk around the right axis at 0° of part 1
fix move2_22 all move/mesh mesh cad2 rotate/variable origin 0 0 -0.5 axis -1 0 0 omega v_omega22 #2: spinning of the disk around the right axis at 90° of part 1
---------

The sine and cosine function in the equation for the variable angular velocity provides a rotating axis of rotation. The angular velocity in the sin/cos-function must correspond to the angular velocity of Part 1 (2*PI/0,4235=14,836). In summary, I have two move/mesh commands to get a time-dependet axis of rotation.

Maybe this will help you in your case too untill an update is available.
The application of my work is by the way a bulk material conveying system.

Best regards,
Alex