Question for visco-elastic rheology

Hi all,
I am currently interest in studying ‘thermal softening’ by using ASPECT. Basically, it involves a visco-plastic-elastic rheology, i am gold that ASPECT has provided related codes for such rheology, which has helped me to use ASPECT to study this phenomenon. Appreciate!
However, the thermal softening needs to involve the viscous-dissipation, which follows H_{D} = \tau_{ij}\dot{\epsilon_{ij}}, but in this case, I notice that in the code (e.g., visco_plastic.cc) that the computed (deviatoric) stress (e.g., double current stress) is of type double while the strain_rate (viscous component) is of type SymmetricTensor<2,dim>. Is there a good way in ASPECT to perform such operation on a double and a tensor?
Best,
Xie

Hi Xie,

Welcome to the forum and thank you for posting the question here! Likewise, great to hear ASPECT is well suited for studying the phenomenon you are interested in.

For reference, the computed deviatoric stress has type double as early on in the visco_plastic we compute the second invariant of the deviatoric strain rate tensor, which gives a scalar value (type double). This invariant is then multiplied by the viscosity to give the deviatoric stress.

To answer your question, there is no issue with multiplying a tensor by a scalar. As an example, consider the following variables (var_symmetric_tensor_2d and var_scalar). var_scalar is type double and var_symmetric_tensor_2d is type SymmetricTensor<2,dim>.

Multiplying them together to make a new variable of type SymmetricTensor<2,dim> would be done as follows:
`SymmetricTensor<2,dim> new_variable = var_scalar * var_symmetric_tensor_2d;

My question is whether your need the viscous dissipation value to be a tensor or scalar? If the latter (scalar), could you just multiply the viscous stress (scalar) by the strain-rate invariant?

Could you perhaps provide an overview of what you would like the implementation to look like step by step?

Cheers,
John

Hi John,

Thanks for replying, I’m afraid what I need is a scalar, in my opinion, the viscous dissipation here is the double product of the deviatoric stress tensor (including viscous component and elastic contribution) and deviatoric strain rate tensor (only viscous component), I’m not sure whether the strain-rate invariant is ok. Of course, since the result is a scalar, both multipliers can be tensor or scalar.

About the overview, considering a linear Maxwell model (visco-elastic rheology), the first step is to compute the deviatoric stress and the deviatoric strain rate (viscous), then calculate the viscous dissipation and add it to the heating model.

Best,
Xie

Dear Xie,

As John is probably asleep at the moment, I’ll chip in.

ASPECT already incorporates shear heating in the energy equation for viscous (and viscoplastic) models (see Equation 3 of the ASPECT manual). However, the ASPECT implementation is not yet appropriate for use with the visco-plastic-elastic material model, because not all of the mechanical work is dissipated as heat (some is stored as elastic strain energy).

One solution is to modify the shear heating calculation in ASPECT using outputs from the material model. Something similar is already done in the grain size material model, where part of the total strain work is used to change the grain size rather than increase the temperature. The key part of material_model/grain_size.cc is the creation of the “DislocationViscosityOutputs”. These outputs are then used in heating_model/shear_heating.cc.

grain_size.cc is probably a good starting point for fixing up the VEP shear heating calculation. It may be a good idea at this point to standardize the outputs used by the shear heating plugin, as ASPECT development now includes material anisotropy, grain size and elasticity, all of which affect the shear heating term.

Perhaps one of the maintainers could chip in at this point with specific suggestions.

Best wishes,
Bob

Hi Bob,

Thanks for replying, indeed, not all of the mechanical work is dissipated as heat, that is why we sometimes assume a simplified model with a thermal conversion efficiency of 100%, cos things like changing the grain size is not our primary concern, or for first-order approximation, such assumption is acceptable for me.

In fact, I was also trying to modify the shear heating plugin to achieve my purpose, but what confused me
was that the stress I got from VEP model was of type double while the strain rate is a tensor, apparently, a double and tensor can not get a scalar, which is what I want.

Best,
Xie

Dear Xie,

  • The components of the full stress tensor in the VP and VEP models are currently stored in compositional fields. Search for stress_old in visco_plastic.cc and you’ll see how they can be used to construct the stress tensor calculated from the previous time step.
  • One of the points I was trying to make in my previous message is that the shear heating enthalpy \neq \tau_{ij}\dot{\varepsilon}_{ij}. The discrepancy is because part of the mechanical work goes into changing the elastic strain energy, rather than being dissipated as heat. This may already be obvious to you, but I just wanted to make sure that we were on the same page.
  • I suggested the grain size model as an example of how “additional named outputs” can be used to provide an interface between the material model and shear heating plugin. I wasn’t advocating the addition of grain size variations in your model. Sorry if that was unclear.

I hope this is helpful!

Best wishes,
Bob

Dear Bob,

Sorry for replying late, I believe we were on the same page :), the grain size model would be a good try for me to rewrite the shear heating plugin to satisfy my needs.

Best,
Xie