Author Topic: How to set a boundary condition in cylindrical coordinates? (constant radius?)  (Read 2319 times)

JoGe

  • Jr. Member
  • **
  • Posts: 18
Dear FEAP users,

I want to analyze a body that rotates around an axis with a fixed radius at a certain constant rotational velocity. For the sake of simplicity let´s take a cube as geometry.

I figured out so far that one option is to use the <global, omega> command in a (quasi) static structural analysis. That way the centrifugal force is given respect to as the body forces are computed.

If you want to solve a transient structural analysis where you also capture the actual rotation of the body, my approach would be to define the constant rotational velocity with the <init,spin> command. I furthermore would define the coordinates of the nodes in the cylindrical system. (I am aware of the fact that finally the data has to be transformed into the cartesian system which is done by the <polar> command.) This I would do because theoretically this would be the form which allows you to give the boundary condition of a constant radius intuitively. In the example of the rotating cube I would want to set the radial DOF of all bottom nodes to be fixed.

To visualize what I am describing I attached an image of a cube. You look on the top of the cube (10mm x 10mm x 10mm) and you are able to see the coordinate system ~ 30 mm below the cube´s bottom surface. In my scenario the cube shall rotate around the 3rd axis.

My problem: In the input file, when I define the mesh in cylindrical coordinates then the boundary condition as <1,0,1> (meaning that the r- and z-coordinate shall be fixed) and then set the <polar> command the solution shows me that the boundary condition was interpreted as cartesian coordinates.

My question: How can I define this kind of boundary condition that the distance between a node and an axis should be constant?

Thank you for your help!

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2647
I do not think there is any current command that would make this easy to do.  I would suggest you write a UMESH command to  perform the set of the ANGLe command to be what you want and then just use EBOU to set the 1 and 3 dof to be fixed.  The angle array would be hr(np(45)) and the coordinate array is hr(np(43)) -- you would set the angle for each node to be (in degrees) making the axis radial  basically

angle = atan2(x(2,node) - y_center, x(1,node) - x_center) * 180/pi

for all nodes a z  = x(3,node) = 0.0 (or whereever you want to do it.

Let us know if you need more information.

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2647
What version of FEAP are you using?  Ver8.5 has a load group SPIN command that rotates nodes at constant radius.  Mesh is defined in a Cartesian frame and a constraint used.

You fix all the dof's for the radius, the  z can be either restrained or not.

See manual for more information.

JoGe

  • Jr. Member
  • **
  • Posts: 18
I tried to use the <spin> command, yet without success. Could you give me a hint?

JoGe

  • Jr. Member
  • **
  • Posts: 18
Here is my mpirun command:

mpirun -n 40 $PARFEAP -ksp_type cg -pc_type gamg -pc_gamg_type agg -pc_gamg_agg_nsmooths 1 -ksp_monitor -memory_info -malloc_log -log_view |& tee petscReport

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2647
Here is a working version in my code

You do not need parallel if you use opti

JoGe

  • Jr. Member
  • **
  • Posts: 18
Dear Prof. Taylor,

I could ran the input file you´ve provided successfully with my installation. I now know how to model the actual movement of a rotating part and have an alternative for the <global,omega> command.

Thank you very much for your support!

Best regards,
JoGe