Easy way to calculate second-deviatoric tensor

33 views
Skip to first unread message

JAEKWANG KIM

unread,
Oct 16, 2016, 7:49:38 PM10/16/16
to deal.II User Group


Hi, all. 

I am really receiving a lot of help from this group whenever I visit here. 

I have a question today. 


I am developing FEM code for analyzing non-newtonian fluids using deal.ii library, which is amazing tool. 

In many cases, I have to calculate 'The second invariant of rate-of-strain tensor'. 

I wonder there is a easy way to get this value. 

As in step-20 or other fluid problems, we get rate of strain tensor from the rank-2 tensor of symmetrize gradient. 


For example....


std::vector<SymmetricTensor<2,dim> > symgrad_phi_u (dofs_per_cell);

.....

symgrad_phi_u[k] = fe_values[velocities].symmetric_gradient (k, q)


From this symmetric gradient tensor, do we have one easy way to calculate the following "the second invariant of rate-of-strain tensor"? 



Regards, 

Jaekwang Kim 

 

Daniel Arndt

unread,
Oct 17, 2016, 5:36:42 AM10/17/16
to deal.II User Group
Jaekwang,


From this symmetric gradient tensor, do we have one easy way to calculate the following "the second invariant of rate-of-strain tensor"? 

There is SymmetricTensor::second_invariant [1] which is defined as I2 = 1/2[ (trace sigma)^2 - trace (sigma^2) ]
and SymmetricTensor::first_invariant [1] which just the trace I_1=trace sigma.
According to Wikipedia [2], your \Pi_\gamma can then be expressed as \Pi_\gamma^2 = 1/2(I1^2 -2 I2).

Best,
Daniel

[1] https://www.dealii.org/8.4.0/doxygen/deal.II/classSymmetricTensor.html#a7bbdfc57da6931de6a1757a0fa7ee982
[2] https://en.wikipedia.org/wiki/Invariants_of_tensors



Regards, 

Jaekwang Kim 

 

Wolfgang Bangerth

unread,
Oct 18, 2016, 10:58:07 AM10/18/16
to dea...@googlegroups.com
On 10/17/2016 03:36 AM, Daniel Arndt wrote:
>
> From this symmetric gradient tensor, do we have one easy way to calculate
> the following "the second invariant of rate-of-strain tensor"?
>
> There is SymmetricTensor::second_invariant [1] which is defined as I2 = 1/2[
> (trace sigma)^2 - trace (sigma^2) ]
> and SymmetricTensor::first_invariant [1] which just the trace I_1=trace sigma.
> According to Wikipedia [2], your \Pi_\gamma can then be expressed as
> \Pi_\gamma^2 = 1/2(I1^2 -2 I2).

You can also compute it directly: if you have the symmetric gradient eps(u)
already computed, then
Pi_gamma = std::sqrt (2*eps*eps);

Best
W.

--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/

JAEKWANG KIM

unread,
Oct 18, 2016, 12:01:24 PM10/18/16
to deal.II User Group
Thank you all guys who replied here!! 
Reply all
Reply to author
Forward
0 new messages