Harmonic Drive Flex Spline Analysis

I am working on simulating a harmonic gearbox, using implicit dynamic 2d plane strain analysis. I am having trouble getting convergence or any meaningful results in the dynamic portion. I have rigidly fixed the circular spline outer diameter, and made the wave generator a rigid body as well. I am then trying to apply a small boundary condition of rotation to that rigid wave generator to deform the flex spline into the circular spline. Most of my static studies have gone well, so I’m guessing it’s a problem with my rotation / time constraints. I’ve attached pictures of all here. Thanks in advance for any help!

NOTE: I’ve attached only one picture here, I have more but am limited to new user restrictions

Please share the .pmx file (if it’s too large to fit here, you can use some hosting website).

Thanks for the quick response. Try this: https://drive.google.com/file/d/1P2BmFy0uf3KBXRiXjQGnGyOUcL-raguG/view?usp=drive_link

Here are a few remarks:

  1. Does static step work with the same setup ? Dynamic implicit in CalculiX can be really hard to converge, from my experience.
  2. The default amplitude is different in static and dynamic steps - static steps by default ramp loads linearly during the whole time period, while dynamic steps apply the full load right at the start of the analysis, which may not be desired. Thus, you may want to use a custom amplitude with a linear ramp.
  3. Shouldn’t this contact pair be replaced by a tie constraint (or compound geometries), or is it supposed to move as well ?

  1. The default contact stiffness usually needs to be reduced. I use the approach from here: Snap-fit contact snagging problem - #17 by JuanP74 - Analysis issues - CalculiX (official versions are on www.calculix.de, the official GitHub repository is at https://github.com/Dhondtguido/CalculiX).
  2. In 2D analyses, it’s good to make the section of one part in a contact pair wider so that the contact is recognized properly in the extruded 3D model. Sometimes, it turns out to be necessary to just use a one-layer 3D solid model instead (this lets you avoid several limitations of 2D elements in CalculiX).
  3. I would disable Nlgeom at least for debugging. It often caused problems in CalculiX (especially with shells and rigid body constraints, but some other configurations may also be affected).
  4. The reference point with the rotational BC has the translational DOFs unconstrained. Is that necessary in your case ? This leads to underconstrained rigid body motions, which should be avoided in most static and quasi-static cases at least until contact is established.
  5. You could use a coarser mesh for the rigid body to speed up the analysis.
  6. For debugging, you could even try running a small segment of the model (with just a few teeth).
  7. Just in case, it’s best to increase the default maximum number of increments to some large number, especially in dynamic analyses.
  8. You could also play with different alpha damping values (higher should be better) or even use explicit dynamics, although this type is very limited in CalculiX, and you can’t use rigid bodies with 2D elements when choosing it, for instance.
1 Like

Oh I was under the impression that dynamic steps also linearly applied boundary conditions throughout the time steps. After applying a few of your comments, I was able stop it after a few increments and get some expected root stresses.

Two things I am wondering:

  1. I’ve applied a rotation boundary condition which meshes the teeth and allows root bending stress, there should be a reaction moment by the flex spline about the z axis. I am looking to measure this reaction moment is this possible in any of the history outputs?
  2. Ideally instead of applying an initial rotation condition, most papers apply a torque about the flex spline and measure root bending stress. Based on documentation, why isn’t this possible in 2D? In the manual it says it must be a rigid body to apply a torque, but the flex spline must stay flexible to get expected root stresses. Most papers use ABAQUS so don’t know if thats a feature exclusive to that software.

Yeah, this difference in the default load/BC amplitude was clearly the main issue here.

You can request history output for RF from the reference point, but it may not work properly in 2D: Zero reaction moment when reading from ROT NODE in 2D - CalculiX (official versions are on www.calculix.de, the official GitHub repository is at https://github.com/Dhondtguido/CalculiX).

Rotational BC is much better for convergence than torque. However, you could apply torque in the same way as in Abaqus - via reference point of a rigid body constraint (can be applied to a face in 3D or edge in 2D). Some coupling constraints could also help, but they require keyword edits: Different coupling constraints and their limitations - CalculiX (official versions are on www.calculix.de, the official GitHub repository is at https://github.com/Dhondtguido/CalculiX).