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

New structure for material model rheology #3012

Open
5 of 10 tasks
naliboff opened this issue May 25, 2019 · 5 comments
Open
5 of 10 tasks

New structure for material model rheology #3012

naliboff opened this issue May 25, 2019 · 5 comments

Comments

@naliboff
Copy link
Contributor

naliboff commented May 25, 2019

@gassmoeller has opened a pull request (#3006) to create a new structure for the rheology component of material models.

This structure can be used to compute anything related to rheology (viscosity, stress, grain-size, etc) and is designed to help simplify all material models and eventually help unify some related material models.

The purpose of this issue is to open discussion on what features should be moved to the new structure and the design of individual classes within the new structure.

Below is a preliminary list of features that I think could be moved into the new structure. Each item would be an individual class. If there is an item you would like added, please

  • Dislocation Creep

  • Diffusion Creep

  • Isostrain Diffusion and Dislocation Creep

  • Peierls Creep

  • Drucker Prager Yielding

  • Von Mises Yielding

  • Stress Limiter Yielding

  • Strain Dependent behavior (strain accumulation, softening and additional outputs)

  • Viscoelasticity (viscoelastic stresses, viscosities, and additional outputs)

  • Plastic Outputs?

@naliboff
Copy link
Contributor Author

naliboff commented Oct 4, 2019

There are a number of continuing efforts on this issue, and @anne-glerum, @dansand and I thought it would be good to share a brief overview of some of the things we have been working on:

  1. Changes the ordering of operations and definition of the strain-rate in the viscoelastic_plastic material to exactly match the method of Moresi et al. (2003). Thanks to @dansand for initiating and leading on this!

  2. Adding a new rheology module for DruckerPrager plasticity, which can handle either the visco-plastic or viscoelastic-plastic yielding scenarios.

  3. Adding elasticity to the visco_plastic material model, with the idea that viscoelastic_plastic will not be developed further or removed eventually. This is done, but we will do PRs for items 1 and 2 first.

  4. Peierls creep.

  5. Strain healing.

@anne-glerum, @dansand - other items that I missed?

At some point it would be good to have a discussion regarding what material models should be removed once more features are added to the rheology module, but that is a separate issue.

@anne-glerum
Copy link
Contributor

Other suggestions for future implementations that came up but that are not related to the restructuring:

  1. Elastic moduli strain weakening

  2. Add the method of finding the composite diffusion/dislocation creep viscosity from dislocation_diffusion.cc as an option to viscoelastic_plastic.cc

  3. Additional outputs specific to the Rheology plugin, like yield_stress for the DruckerPrager plugin.

@naliboff
Copy link
Contributor Author

naliboff commented Apr 8, 2020

I've been thinking about how best to implement the method from diffusion_dislocation.cc for composite viscosity into visco_plastic.cc. There is a fair amount of code in diffusion_dislocation.cc and we should definitely not port it directly into visco_plastic.cc.

While we could make a rheology module for composite viscous creep, it unfortunately needs many of the member variables in diffusion_creep.cc and dislocation_creep.cc.

How about the following solution:

  1. We combine diffusion_creep.cc and dislocation_creep.cc into a single module called diffusion_dislocation_creep.cc.
  2. This new rheology module would separate functions for computing the diffusion and dislocation creep viscosity, but also have a module called composite_viscosity that uses the iterative method in diffusion_dislocation.cc for finding the relative stresses of each creep mechanism.

@anne-glerum @jdannberg @gassmoeller @MFraters - does this seem like a reasonable solution?

@gassmoeller
Copy link
Member

I had to think about exactly this issue yesterday (I am currently working on porting the grain size rheology to a rheology module, which also uses a composite rheology). I was planning on having member variables diffusion_rheology and dislocation_rheology inside of the new rheology module. In which lines does diffusion_dislocation.cc access internal member variables? Lines 127-143 should be easy to replace by calls to the smaller modules. Are lines 85 and 90 the problem? Maybe we can come up with reasonable functions for the smaller modules that expose what we need? compute_strain_rate and compute_strain_rate_derivative?

@naliboff
Copy link
Contributor Author

naliboff commented Apr 9, 2020

I think your approach of diffusion_rheology and dislocation_rheology inside of the new rheology module makes sense. As long as there are new functions in diffusion_creep.cc and dislocation_creep.cc to retrieve all the relevant values, I don't see any roadblocks. As long as the strain rate invariant (edot_ii) is passed over to the main function for computing the isostrain viscosity, I think they should be fine without subdividing into smaller functions? In any case, thanks for tackling this! I'll convert dynamic_friction from a material model to a rheology module instead 😄. Let me know if it would help to discuss the details of diffusion_dislocation further calculation further.

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

3 participants