geodynamics / aspect

A parallel, extensible finite element code to simulate convection in both 2D and 3D models.
https://aspect.geodynamics.org/
Other
224 stars 235 forks source link

Issue with strain values when using plastic strain #4178

Open erinheilman opened 3 years ago

erinheilman commented 3 years ago

In some models you can get unrealistic values of strain (in this case plastic strain) when using strain-weakening and strain-healing. There are very negative values and really high positive values as well. It's occurred in some large 3D models as well as simpler cylindrical models. I've included the parameter file for the simpler cylindrical case.

Screen Shot 2021-07-12 at 10 38 47 AM Screen Shot 2021-07-12 at 9 55 32 AM

strain_case.txt

bangerth commented 3 years ago

I don't know what might be wrong, but the pictures are cool!

gassmoeller commented 3 years ago

You are right negative strain values are certainly not realistic, but we will need some more details to find the reason for this. @naliboff may have some more ideas, but here is what I would suggest:

bangerth commented 3 years ago

Regarding a limit for the strain rate: From a physical perspective, the stress has to be a continuous function and because the stress is viscosity * strain rate, this means that the strain rate should be a function of the sort continuous function / viscosity. So if the viscosity becomes very small in some region, then the strain rate can become very large there.

Of course, this is exactly what happens in a fault: the viscosity becomes quite small and the strain rate becomes quite large.

Whether that is what happens here is a question to which I have nothing to contribute, though :-)

bangerth commented 3 years ago

That said, about the bottom left picture with the point of high strain rate: Given that strain rate = continuous function / viscosity, and given that you plot the viscosity with a log scale at the bottom right, it would make sense to show the strain rate on a log scale as well. If you do, I bet you will see an inverted pattern from the viscosity -- or at least that's what I would expect if the simulation is correct.

gassmoeller commented 3 years ago

@bangerth: The plots and problem exist in the integrated plastic strain (i.e. the time integral of the part of the strain rate that is accomodated by plastic deformation), not necessarily in the strain rate itself, although that is of course one possibility. All of your comments still apply, but we additionally advect and integrate this property over time, which could also be part of the problem (i.e. overshooting in the advection solution could cause the negative strain). Plotting the strain in log scale is certainly useful to check if the positive spike is really anomolous. Paraview will complain that there are negative values, but I think it will still display the values > 0.

erinheilman commented 3 years ago

@gassmoeller I'm looking into this now, @naliboff agreed that it may be an issue with the long timescales the models are run for and the advection causing over/undershoots as well

naliboff commented 3 years ago

@gassmoeller @bangerth - as mentioned above, @erinheilman, @bobmyhill, @anne-glerum, and I discussed this yesterday.

We all agree a likely source for the large negative strains is overshooting during the advection solution. Small negative strains are almost observed in the models @anne-glerum and I run, but the finite deformations are simply much larger in the models here.

@erinheilman - I agree with @gassmoeller that a good next step is to try a coarser 2D model with much stricter solver tolerances. I typically never adjust the advection solver tolerances, but the Stokes systems I would use a non-linear solver tolerance of 1e-4 or 1-e-5. The single Advection, iterated defect correction Stokes solver scheme should allow fairly faster convergence. See the following for an example of the parameters once could set for this scheme:

set Nonlinear solver scheme                = single Advection, iterated defect correction Stokes
set Nonlinear solver tolerance             = 1e-4
set Max nonlinear iterations               = 100

subsection Solver parameters
  subsection Stokes solver parameters
    set Number of cheap Stokes solver steps = 0
  end
  subsection Newton solver parameters
    set Max pre-Newton nonlinear iterations      = 100
    set Maximum linear Stokes solver tolerance   = 1e-2
    set Nonlinear Newton solver switch tolerance = 1e-4
    set Use Eisenstat Walker method for Picard iterations = true
  end
end

@erinheilman - In addition to the various testing suggested above, I think it would be great to add the strain healing law to the visco_plastic particle properties (larger rework of that code to happen later). We can also try doing some tests with simpler models to see how the strain values compare with compositional fields verses particles.