ENH: additional Field normalise method (#2444)
- for most field types this is a no-op, but for a field of floatVector or doubleVector (eg, vector and solveVector) it will normalise each element with divide-by-zero protection. More reliable and efficient than dividing a field by the mag of itself (even with VSMALL protection). Applied to FieldField and GeometricField as well. Eg, fld.normalise(); vs. fld /= mag(fld) + VSMALL; ENH: support optional tolerance for vector::normalise - for cases where tolerances larger than ROOTVSMALL are preferable. Not currently available for the field method (a templating question). ENH: vector::removeCollinear method - when working with geometries it is frequently necessary to have a normal vector without any collinear components. The removeCollinear method provides for clearer, compacter code. Eg, vector edgeNorm = ...; const vector edgeDirn = e.unitVec(points()); edgeNorm.removeCollinear(edgeDirn); edgeNorm.normalise(); vs. vector edgeNorm = ...; const vector edgeDirn = e.unitVec(points()); edgeNorm -= edgeDirn*(edgeDirn & edgeNorm); edgeNorm /= mag(edgeNorm);
parent
b59a5b11
Showing
- applications/test/vector/Test-vector.C 44 additions, 2 deletionsapplications/test/vector/Test-vector.C
- src/OpenFOAM/Make/files 1 addition, 0 deletionssrc/OpenFOAM/Make/files
- src/OpenFOAM/fields/FieldFields/FieldField/FieldField.C 11 additions, 1 deletionsrc/OpenFOAM/fields/FieldFields/FieldField/FieldField.C
- src/OpenFOAM/fields/FieldFields/FieldField/FieldField.H 9 additions, 5 deletionssrc/OpenFOAM/fields/FieldFields/FieldField/FieldField.H
- src/OpenFOAM/fields/Fields/Field/Field.C 6 additions, 0 deletionssrc/OpenFOAM/fields/Fields/Field/Field.C
- src/OpenFOAM/fields/Fields/Field/Field.H 10 additions, 4 deletionssrc/OpenFOAM/fields/Fields/Field/Field.H
- src/OpenFOAM/fields/Fields/vectorField/vectorField.C 112 additions, 0 deletionssrc/OpenFOAM/fields/Fields/vectorField/vectorField.C
- src/OpenFOAM/fields/Fields/vectorField/vectorField.H 10 additions, 3 deletionssrc/OpenFOAM/fields/Fields/vectorField/vectorField.H
- src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C 9 additions, 1 deletion...AM/fields/GeometricFields/GeometricField/GeometricField.C
- src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.H 5 additions, 2 deletions...AM/fields/GeometricFields/GeometricField/GeometricField.H
- src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H 10 additions, 11 deletions...fields/pointPatchFields/pointPatchField/pointPatchField.H
- src/OpenFOAM/primitives/Vector/Vector.H 11 additions, 6 deletionssrc/OpenFOAM/primitives/Vector/Vector.H
- src/OpenFOAM/primitives/Vector/VectorI.H 13 additions, 4 deletionssrc/OpenFOAM/primitives/Vector/VectorI.H
- src/OpenFOAM/primitives/Vector2D/Vector2D.H 12 additions, 4 deletionssrc/OpenFOAM/primitives/Vector2D/Vector2D.H
- src/OpenFOAM/primitives/Vector2D/Vector2DI.H 12 additions, 3 deletionssrc/OpenFOAM/primitives/Vector2D/Vector2DI.H
- src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H 2 additions, 0 deletionssrc/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H
- src/OpenFOAM/primitives/quaternion/quaternion.H 50 additions, 28 deletionssrc/OpenFOAM/primitives/quaternion/quaternion.H
- src/OpenFOAM/primitives/quaternion/quaternionI.H 51 additions, 23 deletionssrc/OpenFOAM/primitives/quaternion/quaternionI.H
- src/OpenFOAM/primitives/septernion/septernion.C 1 addition, 1 deletionsrc/OpenFOAM/primitives/septernion/septernion.C
- src/OpenFOAM/primitives/triad/triad.C 1 addition, 1 deletionsrc/OpenFOAM/primitives/triad/triad.C
Please register or sign in to comment