Assignments
If there is a symmetric rank 2 tensor type(Tensor2s) :: T2
on the left and a rank 2 tensor type(Tensor2) :: T1
on the right hand side of the assignment =
operator then the function T2 = asvoigt(T1)
is automatically called. So it is possible to write the following examples:
type(Tensor2) :: F
type(Tensor2) :: C ! full 3x3 tensor
C = transpose(F)*F
Now it is super simple to switch between full tensor and Voigt matrix storage with only one litte change:
type(Tensor2) :: F
type(Tensor2s) :: C ! now stored as 6x1 matrix
C = transpose(F)*F
The same assignments are also possible for rank 4 Tensor data types.