CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Bugs (https://www.cfd-online.com/Forums/openfoam-bugs/)
-   -   solids4Foam: Restart of solid-solid contact cases not working for some cases (https://www.cfd-online.com/Forums/openfoam-bugs/241815-solids4foam-restart-solid-solid-contact-cases-not-working-some-cases.html)

conza March 21, 2022 11:15

solids4Foam: Restart of solid-solid contact cases not working for some cases
 
Dear All,

I've been running a solid-solid contact case that consists of a spring compression and is very similar to the tutorial case "pipeCrush" (/tutorials/solids/elastoplasticity/pipeCrush).

As the "solidModel" I'm using "nonLinearGeometryUpdatedLagrangian" with the "neoHookeanElastic" to evaluate the stress tensor. To control the displacement of the top plate (the one that compresses the spring), I'm using a "timeVsDisp" table.

I'm facing a problem which I didn't manage to solve, which occurs when I restart the case. I have tried different ways to perform the restart, namely:

1 - Simple restart by setting "startFrom" to "latestTime" in the controlDict;
2 - Use mapFields (e.g.: mapFields /home/CaseToRestart -sourceTime "last time") and follow 1;
3 - Copy the results from the last time-step to the "0" folder, modify the "timeVsDisp" table accordingly and run the case from the "startTime".

None of the three alternatives above has been able to properly restart the cases. For instance, what happens for each of the three alternatives above is:

Alternative 1 - I get the following message:
"...
setCellDisplacements: reading cellDisplacements
Floating point exception (core dumped)"
Alternative 2 - I get the following message:
"...
setCellDisplacements: reading cellDisplacements
Corr, res, relRes, matRes, iters
Floating point exception (core dumped)"
P.S.: Even if I update the "timeVsDisp" table by using linear interpolation or by taking the value from Paraview, I get this error message.
Alternative 3 - I get the following message:
"...
setCellDisplacements: reading cellDisplacements
Corr, res, relRes, matRes, iters
Floating point exception (core dumped)"

I have also tried to follow similar procedures with the tutorial cases "pipeCrush" (/tutorials/solids/elastoplasticity/pipeCrush) and "cylinderCrush" (/tutorials/solids/elastoplasticity/cylinderCrush), but it also doesn't work.

The case I have been running is very similar to the tutorial case "pipeCrush" (/tutorials/solids/elastoplasticity/pipeCrush) without taking into account the "plasticStrainVsYieldStress" table (just using neoHookeanElastic in the "mechanicalProperties").

Do you have any idea why the restart is not working for these cases? Do you have any alternative suggestions for trails I can make to be able to restart the cases?

Thank you so much for your time and attention.

Kind regards,
Conrado

Bana November 5, 2023 07:04

Thank you for posting this issue.

I am here to look for some answers since I am facing the similar problem, but unfortunately there is none as most of the time in the posts of this forum.

The only way I manage to solve it so far is to reduce the time step or Courant number ridiculously too much, but the computational cost isn't worth it. (It is only a restart, it is expected to work with the same time step size and case settings as before!).

I will look more deeply into the problem and will post a solution for the people that may will have this problem in future. (To save them some time!)

conza November 6, 2023 07:30

Hi Mohammad Reza,

Thank you very much for your message.

I am not working on Computational Solid Mechanics any more, however, I would like to share some information with you which may be helpful.

I talked to Philip some time ago and explained this issue. He pushed a very detailed commit with changes to ensure consistent restarting for cases using nonlinear solid models. You can find the commit with the changes on this link https://bitbucket.org/philip_cardiff...mmits/4670d20b

And you can download the solids4Foam version with all those changes already added from the development branch on this link https://bitbucket.org/philip_cardiff...c/development/ , or, I think these changes are already implemented in the new solids4Foam version: https://www.solids4foam.com/

I performed some tests and I remember everything went fine.

Another option would be to do the following:

In this case, fe41 is the alias to source the foam-extend-4.1 bashrc file.

Consider 2 folders:

1. Case_Orig: the one from which you started the simulation (from t = 0 s), and the one from which you want to perform the restart.

2. Case_Restart: the restarted case folder.

First, you need to reconstruct the results for the target time (the one you want to restart from), for instance, t = 12 s, then, in Case_Orig:

$ fe41
$ reconstructPar - time 12

In order to restart your case using mapFields, the general idea is to make a copy of the results from the target time from which you want to restart, and you can do this by using mapFields.

The procedure is

• first copy exactly the same folders 0, constant and system from Case_Orig to Case_Restart;

• then add a mapFields dict to the system folder of Case_Restart;

• then, open a terminal in Case_Restart and type:

$ mapFields ../ Case_Orig - sourceTime * targetTime *

Now you need to do the following:

• In Case_Restart, you have to change the folder name 0 to the value of the target time;

• In Case_Restart, you also need to change in controlDict the startTime to the value of the target time;

• In case you use some table, for instance, a timeVsDisp, you can use a linear interpolation to obtain the value at the target time and update the table, or, in Case_Restart, you can open the target time results in Paraview, then in "Mesh regions" select just the patch where you apply the timeVsDisp table, then select the D results and select "Rescale to Custom Data Range", and then copy the minimum value of the Set Range;

• Now you need to update the timeVsDisp table with the copied D value (i.e., link it to the target value).

Finally, you can run the case following the standard procedure.


Cheers,
Conrado

Bana November 7, 2023 06:10

Thank you Conrado for your extended explaination! It is really appreciated.

I solved my problem but not with any of the recommended modifications you described.

I also mention the mitigation I implemented here:

I am using a linear solid solver of solids4foam that sometimes was crashing after restart. My "Restart" problem was resolved after increasing writing precision from 6 to 12 and until now, my cases are working without Restart problem.


Best regards,
Mohammadreza

conza November 7, 2023 06:52

Hi Mohammad Reza,

Thank you so much for sharing this. =]

Cheers,
Conrado


All times are GMT -4. The time now is 11:48.