## Potentially redundant set of computations for G object within turbulence models

Some of the turbulence models compute G (the turbulent kinetic energy production rate due to the anisotropic part of the stress tensor). For example, in kEpsilon:

```
volScalarField::Internal G
(
this->GName(),
nut.v()*(dev(twoSymm(tgradU().v())) && tgradU().v())
);
tgradU.clear();
```

Here, we compute a deviatoric-symmetric tensor (`(dev(twoSymm(tgradU().v()))`

) with a full tensor `tgradU().v()`

.

**Any tensor** can be divided into its symmetric and anti-symmetric parts. And any double-inner product of a symmetric tensor and an anti-symmetric tensor is zero.

Therefore, the above double-inner product can be reduced between two symmetric tensors without losing any level of accuracy in the final outcome.

Such reduction seems to be carried out in the more recently implemented turbulence models, e.g. v2f.

Is there any reason why such reduction is/should not performed to your knowledge?