Hm, you're right, "Pre Strain" does have an effect on the simulations, but I can only see it when stress load is active too.
I've been playing with isotropic deformations of the unit disk because it's easy to track numerically and analytically (displacement of the perimeter is the same magnitude as the strain). I've attached the minorly updated script, you can just set the isotropic Pre Strain and Strain Load values in the top two lines.
The analytical equations are straight-forward. If I start with a disk of radius 1 and uniform isotropic strain, then I can rearrange
Code: Select all
total_strain = (1 - analytical_radius) / analytical_radius
to get
Code: Select all
analytical_radius - 1 = - total_strain / (1 + total_strain)
This passes my sanity checks (a disk of analytical_radius=1/2m stretched to a radius of 1m will have total_strain=1, similarly analytical_radius=2m compressed to 1m has total_strain = -0.5)
On the other hand, the numerical output I get in the VTU files is quite clear:
Code: Select all
simulated_radius - 1 = + strain_load / (1 + strain_load + pre_strain)
This equation is exact for the 12 pairs of (strain_load, pre_strain) that I've tried between -0.5 and 6.
Comparing the analytical and simulated radii/displacements, there are two things which don't look right to me:
- With pre_strain=0, the sign of the displacement and strain is wrong. The combination of strain_load = -0.5, pre_strain=0 predicts the disk shrinking to a point! The predicted strain is consistent with this (xx = yy = -1, xy = 0). If the sign had been flipped, then it would indicate exactly doubling the radius, which would be correct
- With large pre_strain, I would expect to get large displacement. Instead it seems to be missing from the top of the fraction (which is why it doesn't look like it's having an effect) which means it just dampens the strain load effect.
In both cases it looks like elmer is using "displacement = force / stiffness" where the stiffness matrix is being computed correctly but the force ignores Pre Strain and flips Strain Load.
Does this look like a bug to you?