Implementing dynamically changing forces based on structural deformations in CalculiX

Hi everyone,

I am currently working on a project where I need to account for the effects of electrostatic forces on structural deformations. While I’m aware that there are other software options which directly incorporate electrostatic forces, due to constraints with our coupling analysis tools, I am required to use CalculiX for this functionality.

I am trying to implement a feature where the force applied to a structure changes dynamically with the structure’s deformation. It seems that modifying the source code might be the only option to achieve this. I am reaching out for guidance or suggestions on how best to proceed with this implementation in CalculiX.

Could anyone confirm if modifying the code is necessary for this kind of functionality? If so, which parts of the code should I focus on? Given the vast and complex nature of CalculiX’s capabilities, pinpointing the relevant sections would be incredibly helpful and save a lot of time.

Thank you very much for your assistance!

Best regards,
Yang

Couldn’t you just use small steps?

Start with a small load. See what the displacements are calculate the load adjustment. Next increase the load and add the adjustment. Repeat until the required load is reached and equilibrium is obtained.

@rsmith Thank you very much for your reply and suggestions. Could you please elaborate a bit more? I apologize for not clearly describing my problem. Currently, I am working on implementing fluid-structure-electricity coupling modeling for a flexible wave energy converter based on OpenFOAM, CalculiX, and preCICE.

For the electricity field part, I intend to simulate it by considering a dynamically changing force in CalculiX. This is a dynamic problem where the flexible WEC deforms under the influence of fluid force, electricity force, and other forces, which in turn affects the fluid force and electricity force. I need to perform time-domain simulations.

Therefore, I am wondering how to achieve the aforementioned dynamic force functionality. If code modification is required, where should I start? Thanks in advance!

What I meant is using the results of a *STEP (with a suitable small time period) to define the loads for a next *STEP.

You write your first input file with the initial *STEP. Save restart output with *RESTART, WRITE. Also save whatever output you need.

Then use an external program that you write yourself to read the output and use that to create the loads for the next step.
In the next run, you use *RESTART, READ and then a *STEP with the newly calculated loads.

Repeat this process as long as necessary.

I can confirm that you need to modify the source code to achieve this. In Abaqus, you would only need to add the optional parameter , FOLLOWER to the *CLOAD card.

Thank you very much for your detailed explanation. It is indeed a good approach. However, it doesn’t quite fit my current issue because CalculiX also needs to be coupled with OpenFOAM for FSI simulations. Anyway, I appreciate your help.

Thank you for confirming. Do you have any thoughts or suggestions on where specifically I should start?

Yes, but this only works for elements with rotational DOFs (beams, shells) because it allows the direction of the load to rotate with the rotation of the node.

1 Like

Maybe you could start looking at how general gravitational loading was coded in ccx and extend it. There is an analogy between gravitational and electric field that could be explored.
Look at this post if it can give you some initial idea.