Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"calculate_isostrain_viscosities" function in diffusion_dislocation.cc #4419

Closed
lhy11009 opened this issue Nov 29, 2021 · 3 comments
Closed

Comments

@lhy11009
Copy link
Contributor

There is a function called "calculate_isostrain_viscosities" in the diffusion_dislocation.cc while the implementation of that looks "isostress" to me. There, the value of the nonlinear rheology is iterated for, with some sort of harmonic averaging going on.
It puzzles me this way. Moreover, in the comments of the "visco_plastic.cc" where this is called in the "evaluate" function, it says:"
// Currently, the viscosities for each of the compositional fields are calculated assuming // isostrain amongst all compositions, allowing calculation of the viscosity ratio. // TODO: This is only consistent with viscosity averaging if the arithmetic averaging // scheme is chosen. It would be useful to have a function to calculate isostress viscosities.
Could a second eye take a look at this function and tell me that I am wrong about this?

@bobmyhill
Copy link
Member

bobmyhill commented Nov 30, 2021

I assume you were able to answer your own question :)

For anyone interested, diffusion_dislocation assumes that all compositions see the same (total) strain rate, but within each composition, all deformation mechanisms (i.e. diffusion and dislocation creep) see the same stress.

The VEP rheologies currently have a lot of potential flexibility. Several of the development team are working on outstanding todos, and I expect that 2022 will see some significant changes and improvements.

@lhy11009
Copy link
Contributor Author

Hi Bob

Thanks for clarifying this issue. Now I know what isostrain actually means - among compositions.
I closed the issue because I saw I was confused between the calculate_isostrain_viscosity in diffusion_dislocation.cc and the one in the rheology/visco_plastic.cc. They both have the same name. And by reading the code, I think the first one is doing iteration for the nonlinearity but the second one seems to just perform a harmonic average between the diffusion and dislocation creep.

@bobmyhill
Copy link
Member

No worries :)
Yes, your reading of the code is correct - diffusion_dislocation creep decomposes the strain (which is computationally expensive), while the harmonic averaging in visco_plastic is a cheap first order approximation to that decomposition. The approximation is very good except in the crossover region, and is used in many production codes other than ASPECT.

Next year I hope we will finish the CompositeViscoPlastic scheme (#4239), which will do the decomposition for all deformation mechanisms, and allow different averaging amongst compositions (#3922). Prerequisites are the in-progress changes to the elasticity module, and I'm sure we'll have to tweak the solver scheme. I'm not going to have much time between now and May though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants