Sideways moving spring

Hi Ahmed,

I actually think that the second case you’ve described above almost resembles the one I’m thinking about, with the exception that the top plate is not free to move in any direction; I want to keep the top plate parallel with respect to the bottom plate (i.e. no rotation of the top plate) and apply a small sideways movement. What eventually may happen is that the contact between the spring and plates might come loose at some point (at least that’s what I think) and a redistribution of the loads/stresses at the spring-plate connections might occur.

I’ve checked your second case in your model, but couldn’t find any physical contacts? Was the setup of this case maybe overwritten by case 3? Is it possible to show the setup of this case 2 again?

Hey @jvarkevisser!

I got your complete point. So there are certain things you can do:

  1. You have to start with your initial model with three solids.

  2. If the thickness of your plate doesn’t matter in this case, which I presume not since you want to make them rigid and only interested in seeing the stresses in spring. Then make them thick enough so you can make a coarse mesh on them as much as possible i.e. may be consisting of one or two elements. You can have a look at this project to see how it can be done: Mobile Drop Please focus on the coarseness of the floor in this case. Please note that it only make sense if you make those plates rigid.

  3. You don’t need bonded contact in this case. You only need physical contact. Therefore, you have to make two physical contacts for top and bottom connection making sure that master in both cases are the plates.

  4. Next you have to fix the bottom plate completely and make the top plate to move only in pressure direction i.e. Fixed value constraint with y=z=0 and x=unconstrained.

  5. Then you have to apply an elastic support to the spring due to the fact that initially it is free to move. I would suggest to apply this elastic support on one of the middle face or on top and bottom edges. This elastic support actually will hold the spring with small springs. Thus restricting the rigid body motion which could have happened initially. The value of spring stiffness should have to be low enough so that it didn’t effect the overall results. Try to go with a bigger value first and run the simulation only for first iteration to see if it converges. Then start decreasing it 10 times and keep on running new runs until it fails. In this case you have to make sure that in details of Equation solver under Numerics, Stop if singular is set to false since the first iteration normally cuts down and give singularity due to small rigid motion. But will converge afterwards if the elastic support value is enough. For the elastic support definition, please have a llook at this project: Sheet Metal Stamping

  6. You have to then compress the spring first with the pressure you have. This you can do easily by the function as already done in the project I performed previously. Thus you have to make sure it is ramped over time i.e. use function by clicking f(x) button and give 133333*t.

  7. Change Equation solver under Numerics to MUMPS which is quite fast for nonlinear problems. Make sure again that Stop if singular is set to false under Details.

  8. Under Simulation Control, set Number of computing cores to 8 and Number of cores used for the computation to 2 and Maximum runtime [s] to 14400.

  9. Under Result Control, delete the cauchy stress solution field if not needed.

  10. Start the run and see if you can run it without problems. If not, just paste your project link here and then I can see.

This simulation will be your first step. The second step of motion of the above plate we can discuss later. This above discussed procedure is actually the main thing after which every thing hopefully will be simple to do.

If you have any question/s, feel free to ask.

Best,
Ahmed

2 Likes

Hey @jvarkevisser!

I saw your latest simulation case. I think you missed this point due to which your simulation diverged:

Best,
Ahmed

Hi Ahmed!

Thanks for already checking out my work :slight_smile:

Actually, I’d already run the simulation using the function you mentioned above. However, the simulation didn’t converge. The error I got mentioned something about the boundary conditions, but I couldn;t find something strange about it. Therefore, I reran the analysis using a pressure boundary condition.

In the meantime I’ve rerun the analysis again using the function and this time I got the following error:

! Stop due to absence of convergence with the necessary iteration count in the !
! nonlinear algorithm of Newton. !
! The total base is saved. It contains the pitches archived before the stop. !
! !
! Advices: !
! - Increase ITER_GLOB_MAXI. !
! - More often Reactualize the tangent matrix. !
! - Refine your temporal discretization. !
! - Try to activate event management (cutting of the time step for example) in !

I’ve already played around a lot with the iterations, but for some reason I cannot manage to make the solution converge (maybe I should further increase the iterations >30 and reduce the tolerance >0.001?).

As I initially got an error about the boundary conditions, did I maybe select a too flexible constraint (to be honest I didn’t do the check you mentioned but copied the (reasonable?) value of 10000N from your example)?

Cheers

Your elastic support is fine. You can decrease the Friction penalty coefficient by 100 times. It will help converge easily.

After decreasing the coefficients still not converging :disappointed: This time with an error complaining about an uninvertible matrix:

Although I think I can solve the problem by further increasing the stiffness of the flexible constraint, would there be alternative parameters to modify (as I’m afraid an increased stiffness might start to have a negative influence on the results)?

By the way, I’d slightly increased the coulomb coefficients as I assume these resemble normal friction coefficients between the components.

For me it worked fine. Please have a look here: Sideways moving spring v2 - SimScale

1 Like

Hi Ahmed!

It’s working! :slight_smile:

I’ve checked your model and noticed there were actually more items had to be updated:

(1) Penalty coefficient 10^10 --> 10^12
(2) Single slave surface for physical connection 1 --> multiple slave surfaces for physical connection 1
(3) Function = 13333t --> Function = 133333t^2
(4) Tolerance = 0.000001 --> Tolerance = 0.0001
(5) Max iterations = 15 --> Max iterations = 20
(6) Initial time-step length = 0.25 --> Initial time-step length = 0.1

How do items (1) and (6) influence the behaviour on the simulation? And I assume that the need for more slave faces (item (2)) is due to the fact that under compression more surfaces of the spring are likely to get into contact with the bottom plate?

Furthermore, I’ve already tried to model the sideway movement of the spring (200mm in y direction) by updating the following items:
(1) Update the boundary condition of the top plate (fixed connecten, with x = unconstrained, y = 200mm and z = 0mm)
(2) Increase the numer of slave faces for physical connection 2

But this will give convergence issues again… Is the above approach already in the right direction? Do you have more/other suggestions?

1 Like

Hi @jvarkevisser!

Glad that it finally worked! :slight_smile: The changes I made may not be full reason that it worked. It worked for me with the previous changes also.

Item (1) increases the springs stiffness added to the slave nodes in order to reduce penetration. Therefore, higher the value, better will be results but on the other hand it will be hard to converge. Whereas, item (6) is not a big deal since it worked for me for timestep of 0.25 also but in that case solver has to cut down to very small timestep in order to converge. Therefore, starting initially at 0.1 helped to solve this.

Yes you are right. Initially when I do the simulation without giving the spring surfaces as slave, the lower part of the spring crossed the lower plate. For which I need to define the contact on those surfaces in contact also. But I did it in the same contact definition because if you define another contact then solver will give error due to multiple assignment of slave nodes i.e. common nodes between spring lower flat surface and rounded surface.

Moreover,

This is a good technique suggested by @rszoeke. What it does is that rather then increasing the pressure linearly over time, it increase it quadratically. Thus the application of the pressure initially will be less where the solution needs to perform more iterations to converge, and afterwards it will become easier to converge. You can try the two cases with linear and quadratic increment to see the difference in simulation time :wink:

This did effect the solution. By doing this one can achieve more easily in relatively less iterations. But on the other hand, the results accuracy are compromised.

This increased the maximum no. of newton iteration allowance per timestep. It is mostly useful if high nonlinearity is involved and solution just near to convergence with 15 iterations but couldn’t do more due to this restriction. Therefore, sometimes allowing more will let it converge under that timestep. In your case, I think 15 will also work fine.

Well this is bit tricky. Now you have to move your spring sideways while keeping it in the same deformed shape. This can be done via different function combinations. It will be hard to explain here, but I will come back to you with a test case soon whenever I manage to do it.

I hope this helps, If you have any question/s, feel free to ask.

Best,
Ahmed

Hey @jvarkevisser!

I managed to perform a quick case according to your need. You can find it here in the same project under Simulation 2: Sideways moving spring v2 - SimScale

It seems like spring is detaching after certain displacement. Whereas, I think that the displacement shouldn’t be that high in real life example.

Best,
Ahmed

Hi Ahmed!

I’ve managed to get the second part (with moving top plate) as well :slight_smile: Thanks a lot for your help!!

For the moment I just picked a random value for the sideways movement, but in reality the value should be smaller indeed. For the post-processing of the results I was wondering:

  • Is it actually possible to show stresses in a single direction only instead of Von Mises Stress?
  • Can you isolate a certain component/solid for which you only want to see results?
  • I’m a bit surprised I see a constant stress for two plates, while I would expect to see some stress variation along the plates (high peak stress at the contact areas with the spring and low stresses at the ends)? Is this due to scaling of the values or due to the coarse mesh I’ve used?

Cheers

Hey @jvarkevisser!

Glad that it worked for you! :smile:

Yes it is possible! for now I have deleted the cauchy stress solution field. You can again create a new by going in to Solution fields under Result Control and add a new solution field. You have to create a new run and finish it to get the desired solution field results.

Yes you can do that but so far not on the online post-processor. Local Paraview can be used to do so. Please follow this post for post-processing. All you need to do is to apply the Extract Block filter and only extract the volume you need.

It shouldn’t be a surprising point! it’s due to the fact that both of our upper and lower bodies are completely rigid. For the lower one whole volume is constrained in all directions, whereas for the upper one whole volume is constrained in 2 directions. If you want to make them non-rigid, you have to refine a bit the internal faces of the two plates and then only constrain the upper faces with the same boundary conditions. You will then be able to see the stresses in plates also. But also keep in mind that doing so will increase the computation overhead and may not converge as easily as it did before.

Hope this helps. If you have any question/s, feel free to ask.

Best,
Ahmed

Hi Ahmed!

In the meantime I’m trying t further refine my model with some more detailed end plates:

As you proposed above I’ve further refined the mesh of the end plates and set the load & boundary conditions on the faces of the complete volumes. For the top face (i.e. face 73) this means I have to apply both the fixed boundary condition (including sideways movement) and the load. But when I try to do this I get the following error:

Warning: Displacement and force boundary conditions on the following entities.
faceGroupOnGeoFaces_73

I’m not sure what this error implies? Am I not allowed to define the conditions this way?

Cheers!

Hey @jvarkevisser!

This is not the error. It’s just a warning saying that you have applied load and constraint boundary condition to the same face. This will not effect your simulation run. Therefore, just go ahead and run your simulation.

It will be great if you can give a link of your project but not the public project link. Because most of the time user don’t want to import your project but rather just want to view it. In this case you can also edit your previous comment and add the normal project link rather then public project link. Hope you understand :slight_smile:

Best,
Ahmed

I had a look in to your case, there are two things you can do:

  1. The top and bottom plates are too refined, just coarse them a bit. Moreover, spring is very coarse which is not good. I think you accidentally gave the spring to the coarse mesh refinement zone.

  2. You need to define your contact something like this:

    Where, master will be plate surfaces and slave will be spring surfaces.

I think the error occurred in your simulation is due to rigid body movement of spring along y-axis. Either increase the spring stiffness or give more area to elastic support.

Hope this helps. If you have any question/s, feel free to ask.

Best,
Ahmed

1 Like

Hi Ahmed!

Thanks again for the Help! In the meantime I’ve updated the mesh a bit and also further increased the stiffness of the elastic support (500000N/m). But unfortunately, still convergente issues,. Even when I leave out the sideways movement and reduce the applied load for the moment. Furthermore, the master-slave assignments should be Fine I think?

I Have the feeling that current model shouldn’t be harder to solve than the previous one with the simple End plates and slightly less Extended Spring ends?

Hi Ahmed!

I’ve done some additional analyses with the spring model:

I noticed that when I temporarily select a bonded contact between the spring and top plate (i.e. connection 2) the simulation will eventually converge. So, at this point I think the top plate is causing the convergence problem (as it is constrained in x- and y-direction and unconstrained in z-direction).

In the meantime I’ve done an additional run using an additional elastic support for the top plate (connected to the top face, stiffness 500000N/m), but it’s again not converging anymore… Any ideas how to go on with this?

Cheers

Hey @jvarkevisser!

I will have a look at your project and come back to you as soon as I have some results.

Best,
Ahmed

2 Likes

Hi Ahmed!

Bingo :slight_smile:

After trying many things it suddently came to mind that maybe the final parts of the spring might cause the non-convergence issue (maybe they are too thin to be meshed properly for this non-linear simulation?). I’ve updated the spring (cut-off the final bits of the spring ends) after which I rerun the analysis and this time it converged!

Maybe it’s still possible to succesfully run a simulation with the original spring (with thin ends), but I think I have to further refine these ends. Do you think this reasoning makes sense?

Cheers

1 Like

Hey @jvarkevisser!

Glad that it worked! :smile: Well in a meantime I was always trying to run your case. It seems like you were having the problem with your geometry. The created mesh had some orphan nodes which were not belonging to the mesh. I think in my case the application of elastic support was always on these nodes somehow. Whereas, you were probably lucky to run it without any problem.

So I exported the mesh, removed the orphan nodes but still remained with the multiple overlapping elements. Opening your geometry in one of our CAD tool reveals that one of your spring face was distorted. I think this was the problem. I created a new spring and imported it to check if it works. It did start working but the solution wasn’t stable that much.

On the other side, doing a static test simulation revealed that your plate is quite thin and your spring is having the same material as your plates, this makes the plates to bend if the pressure is applied over it. Either your spring needs to be softer or you can apply a displacement boundary condition on top surface to avoid this bending of the plate. In the real world case also I think these plates are connected to some system which don’t allow them to bend in any direction.

I will try to converge the solution an will return with some results.

Best,
Ahmed