I am trying to simulate distortion in a cylinder. I started with a simple problem where I create a bulge in the cylinder using displacement boundary conditions. In the subsequent step, I remove the displacement boundary conditions using *BOUNDARY, OP=NEW. When I do this, the step fails to converge. However, if I add a dummy intermediate step with no loads or boundary conditions being changed, all the steps converge. I don’t understand how the dummy step is affecting the solution. I tried running the same calculation in Abaqus and it runs fine without the middle step. Can someone explain how this is happening?
Here’s the Input file. I am using ccx_2.20
The problem is with the discontinuity of your boundary conditions across steps as model discontinuities may result in convergence issues. So let us make the bulge load smooth across the job time: If you define an amplitude to continously increase the load and then to continously decrease it back to zero the job will converge within a single step during which you ramp up and down the load. Attached inp job includes such an *AMPLITUDE definition: Inp job file with single step and ramp amplitude
By default, CalculiX applies and removes loads either using:
- RAMP amplitude (linear increase/decrease over the step) in *STATIC steps
- STEP amplitude (full load applied immediately and held constant) in *DYNAMIC and *MODAL DYNAMIC steps
But sometimes it’s good to use smoother amplitude to aid convergence or eliminate dynamic effects in quasi-static analysis.
Thank you for your solutions. Like I mentioned in the description, I am trying to model distortion in a cylinder. More specifically, I have a cylinder whose distortion is measured in the field. My aim is to model the distorted state with plastic strains and the residual stress. So, I am trying to impose a displacement that causes plastic deformation, remove the boundary condition and obtain the residual stresses and distortion after springback. The plan is to adjust the displacements till the unloaded state matches the measured distortion.
I have tried your solutions but they are not giving me what I want.
@johanngil
Your solution converge but it does not do what I am trying to do. I want the plastic deformation to be present in the cylinder after I remove the boundary condition in the final step. Your solution retracts the applied deformation and brings it all back to zero at the end
@Calc_em
I tried implementing an amplitude for the loading step that increases as “2t-t^2” so that it is smooth at the top. This does not help the convergence of the second step.
The only solution I can think of to “unload” the distortion smoothly is to use a contact model. This would be fine for a single bulge that I am trying to implement here but for my actual problem, I want to be able to impose displacements throughout the cylinder.
Here an updated model with a 2 step approach: The original displacement driven analysis was replaced by load driven approach through a uniform pressure whose value resulted in a max. U1 displacement being equal the original model:
In the first step the uniform pressure load is applied resulting in a plastic deformation. The second step with *DLOAD, OP=MOD then decreases the load back to zero resulting in the final plastic strain shown in the image.
Please note: The thin-walled cylindrical structure of the model with its load definition may be subject to buckling. The above link includes an input file for a buckling analysis of the structure.
One can prepare a supporting rigid mold (mesh) with desired shape +contact and put it on top to avoid distorting the whole model.
I tried and it worked. Pressure is applied locally below the mold area.
The final shape deviates from desired (mold) due to spring back so I think it would be better to use a mold shape scaled x 2 in radius direction.
@johanngil This is an interesting approach. I will try to implement this over more cases that I have. The buckling is a concern like you mentioned. I have been trying a few other approaches in Abaqus and it has been an issue.
@Disla This sounds like the ideal solution for what I am looking for. Could you share your inp file?