ENH: robuster handling inv() of singular tensor for finite-area LSQ (#2724)
- with the current handling of small edges (finite-area), the LSQ vectors can result in singular/2D tensors. However, the regular 2D handling in field inv() only detects based on the first element. Provide a 'failsafe' inv() method for symmTensor and tensor that follows a similar logic for avoiding zero determinates, but it is applied on a per element basis, instead of deciding based on the first field element. The symmTensor::inv(bool) and tensor::inv(bool) methods have a fairly modest additional overhead. - unroll the field inv() function to avoid creating an intermediate field. Reduce the number of operations when adjusting/re-adjusting the diagonal.
Showing
- src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C 40 additions, 27 deletionssrc/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C
- src/OpenFOAM/fields/Fields/tensorField/tensorField.C 37 additions, 24 deletionssrc/OpenFOAM/fields/Fields/tensorField/tensorField.C
- src/OpenFOAM/primitives/SymmTensor/SymmTensor.H 3 additions, 2 deletionssrc/OpenFOAM/primitives/SymmTensor/SymmTensor.H
- src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H 50 additions, 2 deletionssrc/OpenFOAM/primitives/SymmTensor/SymmTensorI.H
- src/OpenFOAM/primitives/Tensor/Tensor.H 3 additions, 2 deletionssrc/OpenFOAM/primitives/Tensor/Tensor.H
- src/OpenFOAM/primitives/Tensor/TensorI.H 51 additions, 2 deletionssrc/OpenFOAM/primitives/Tensor/TensorI.H
- src/finiteArea/finiteArea/gradSchemes/leastSquaresFaGrad/leastSquaresFaVectors.C 23 additions, 5 deletions...ea/gradSchemes/leastSquaresFaGrad/leastSquaresFaVectors.C
Please register or sign in to comment