Skip to content

Corotational 2D. Rigid rotation only.#28

Open
th-skam wants to merge 3 commits into
main-freefem-sofafrom
corotational-2D
Open

Corotational 2D. Rigid rotation only.#28
th-skam wants to merge 3 commits into
main-freefem-sofafrom
corotational-2D

Conversation

@th-skam

@th-skam th-skam commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

Started working backwards from #27. Going for 3D now is a bit ambitious. Let's work on 2D. I modified the scripts to take a force_field parameter so that we can check other components.

In the end, our MMS should look like:

$$u_{ex} = R X_{ref} + u_d$$

or possibly:

$$u_{ex} = R ( X_{ref} + u_d)$$

with the rotation applied on the displacement solution. I think the second one is more appropriate.

There are many tests and sanity checks we should do to verify the force field works correctly and build the test step by step. For example, my expectation is that the CorotationalFEMForceField without a rotated u_d should give the same solution as the LinearSmallStrainFEMForceField.

For now, let's say that $u_{ex} = R X_{ref}$. So the nodes are rotated rigidly about the z axis.

  • First, I rotated the boundary and let the static solver find an equilibrium point for the two different force fields.
    • I expected the corotational to solve correctly and the linear-small-strain to fail. Both work.
    • Seemingly, the linear-small-strain finds the correct equilibrium point by interpreting the rotations as deformations.
      So we need to up-scale the test.
  • I also tried to work with energy, expecting the potential energy to be:
    • Zero in the co-rotated frame with the CorotationalFEMForceField
    • Non-zero by the LinearSmallStrainFEMForceField
    • Problem is, the potentialEnergy computation is not implemented currently.
  • What the test measures are the forces generated by the two force fields in the co-rotated frame. To do this, I simply move all the points and keep the reference state at its initial positions.
    • Corotational understands it's a rigid body rotation and computes zero force
    • Linear-small-strain treats it as displacement and computes internal forces.

The next step would be to find a way to make the one force field fail and the other one to work. Or both fail and we fix the co-rotational.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant