diff --git a/applications/utilities/postProcessing/sampling/sample/sampleDict b/applications/utilities/postProcessing/sampling/sample/sampleDict index b3e489a176..db42299d1e 100644 --- a/applications/utilities/postProcessing/sampling/sample/sampleDict +++ b/applications/utilities/postProcessing/sampling/sample/sampleDict @@ -40,7 +40,7 @@ surfaceFormat vtk; // 1] vertex values determined from neighbouring cell-centre values // 2] face values determined using the current face interpolation scheme // for the field (linear, gamma, etc.) -interpolationScheme cellPointFace; +interpolationScheme cellPoint; // Fields to sample. fields @@ -155,21 +155,25 @@ surfaces // Optional: whether to leave as faces (=default) or triangulate } -/* not yet (re)implemented -- + interpolatedIso + { + // Iso surface for interpolated values only + type isoSurface; + isoField rho; + isoValue 0.5; + interpolate true; + //regularise false; //optional: do not simplify + } constantIso { - name iso; - field rho; - value 0.5; + // Iso surface for constant values. Guarantees triangles to not + // cross cells. + type isoSurfaceCell; + isoField rho; + isoValue 0.5; + interpolate false; + //regularise false; //optional: do not simplify } - someIso - { - type iso; - field rho; - value 0.5; - interpolate true; - } - */ ); diff --git a/src/OpenFOAM/db/runTimeSelection/runTimeSelectionTables.H b/src/OpenFOAM/db/runTimeSelection/runTimeSelectionTables.H index 52eb8a0aff..4ca1293054 100644 --- a/src/OpenFOAM/db/runTimeSelection/runTimeSelectionTables.H +++ b/src/OpenFOAM/db/runTimeSelection/runTimeSelectionTables.H @@ -28,6 +28,12 @@ Class Description Macros to enable the easy declaration of run-time selection tables. + declareRunTimeSelectionTable is used to create a run-time selection table + for a base-class which holds constructor pointers on the table. + + declareRunTimeNewSelectionTable is used to create a run-time selection + table for a derived-class which holds "New" pointers on the table. + \*---------------------------------------------------------------------------*/ #include "token.H" @@ -86,6 +92,56 @@ Description static void destroy##argNames##ConstructorTables() +#define declareRunTimeNewSelectionTable\ +(autoPtr,baseType,argNames,argList,parList) \ + \ + /* Construct from argList function pointer type */ \ + typedef autoPtr (*argNames##ConstructorPtr)argList; \ + \ + /* Construct from argList function table type */ \ + typedef HashTable \ + argNames##ConstructorTable; \ + \ + /* Construct from argList function pointer table pointer */ \ + static argNames##ConstructorTable* argNames##ConstructorTablePtr_; \ + \ + /* Class to add constructor from argList to table */ \ + template \ + class add##argNames##ConstructorToTable \ + { \ + public: \ + \ + static autoPtr New##baseType argList \ + { \ + return autoPtr(baseType##Type::New parList.ptr());\ + } \ + \ + add##argNames##ConstructorToTable \ + ( \ + const word& lookup = baseType##Type::typeName \ + ) \ + { \ + construct##argNames##ConstructorTables(); \ + argNames##ConstructorTablePtr_->insert \ + ( \ + lookup, \ + New##baseType \ + ); \ + } \ + \ + ~add##argNames##ConstructorToTable() \ + { \ + destroy##argNames##ConstructorTables(); \ + } \ + }; \ + \ + /* Table Constructor called from the table add function */ \ + static void construct##argNames##ConstructorTables(); \ + \ + /* Table destructor called from the table add function destructor */\ + static void destroy##argNames##ConstructorTables() + + #define defineRunTimeSelectionTableConstructor(baseType,argNames) \ \ /* Table Constructor called from the table add function */ \ diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.C b/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.C index 21686f302b..77b73f0043 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.C +++ b/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.C @@ -125,6 +125,17 @@ dimensionedScalar det(const dimensionedSymmTensor& dt) } +dimensionedSymmTensor cof(const dimensionedSymmTensor& dt) +{ + return dimensionedSymmTensor + ( + "cof("+dt.name()+')', + dt.dimensions(), + cof(dt.value()) + ); +} + + dimensionedSymmTensor inv(const dimensionedSymmTensor& dt) { return dimensionedSymmTensor diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.H b/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.H index 4299c3ff1a..5c03879af8 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.H +++ b/src/OpenFOAM/dimensionedTypes/dimensionedSymmTensor/dimensionedSymmTensor.H @@ -59,6 +59,7 @@ dimensionedSymmTensor twoSymm(const dimensionedSymmTensor&); dimensionedSymmTensor dev(const dimensionedSymmTensor&); dimensionedSymmTensor dev2(const dimensionedSymmTensor&); dimensionedScalar det(const dimensionedSymmTensor&); +dimensionedSymmTensor cof(const dimensionedSymmTensor&); dimensionedSymmTensor inv(const dimensionedSymmTensor&); diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.C b/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.C index 319dee9d29..ba4c2d9260 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.C +++ b/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.C @@ -92,6 +92,17 @@ dimensionedScalar det(const dimensionedTensor& dt) } +dimensionedTensor cof(const dimensionedTensor& dt) +{ + return dimensionedTensor + ( + "cof("+dt.name()+')', + dt.dimensions(), + cof(dt.value()) + ); +} + + dimensionedTensor inv(const dimensionedTensor& dt) { return dimensionedTensor diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.H b/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.H index cb20601ef6..854c58f953 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.H +++ b/src/OpenFOAM/dimensionedTypes/dimensionedTensor/dimensionedTensor.H @@ -56,6 +56,7 @@ dimensionedScalar tr(const dimensionedTensor&); dimensionedTensor dev(const dimensionedTensor&); dimensionedTensor dev2(const dimensionedTensor&); dimensionedScalar det(const dimensionedTensor&); +dimensionedTensor cof(const dimensionedTensor&); dimensionedTensor inv(const dimensionedTensor&); dimensionedSymmTensor symm(const dimensionedTensor&); dimensionedSymmTensor twoSymm(const dimensionedTensor&); diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.C index 60b89638d7..b63d227c05 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.C +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.C @@ -46,6 +46,7 @@ UNARY_FUNCTION(symmTensor, symmTensor, twoSymm, transform) UNARY_FUNCTION(symmTensor, symmTensor, dev, transform) UNARY_FUNCTION(symmTensor, symmTensor, dev2, transform) UNARY_FUNCTION(scalar, symmTensor, det, transform) +UNARY_FUNCTION(symmTensor, symmTensor, cof, cof) UNARY_FUNCTION(symmTensor, symmTensor, inv, inv) diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.H b/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.H index 4c2ff48285..9966c01e2f 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.H +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedSymmTensorField/DimensionedSymmTensorField.H @@ -58,6 +58,7 @@ UNARY_FUNCTION(symmTensor, symmTensor, twoSymm, transform) UNARY_FUNCTION(symmTensor, symmTensor, dev, transform) UNARY_FUNCTION(symmTensor, symmTensor, dev2, transform) UNARY_FUNCTION(scalar, symmTensor, det, transform) +UNARY_FUNCTION(symmTensor, symmTensor, cof, cof) UNARY_FUNCTION(symmTensor, symmTensor, inv, inv) diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedTensorField/DimensionedTensorField.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedTensorField/DimensionedTensorField.C index bdf4edb5fd..36cb451ca7 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedTensorField/DimensionedTensorField.C +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedTensorField/DimensionedTensorField.C @@ -45,6 +45,7 @@ UNARY_FUNCTION(tensor, tensor, skew, transform) UNARY_FUNCTION(tensor, tensor, dev, transform) UNARY_FUNCTION(tensor, tensor, dev2, transform) UNARY_FUNCTION(scalar, tensor, det, transform) +UNARY_FUNCTION(tensor, tensor, cof, cof) UNARY_FUNCTION(tensor, tensor, inv, inv) UNARY_FUNCTION(vector, tensor, eigenValues, sign) UNARY_FUNCTION(tensor, tensor, eigenVectors, transform) diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedTensorField/DimensionedTensorField.H b/src/OpenFOAM/fields/DimensionedFields/DimensionedTensorField/DimensionedTensorField.H index 736628e1da..628b44547a 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedTensorField/DimensionedTensorField.H +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedTensorField/DimensionedTensorField.H @@ -58,6 +58,7 @@ UNARY_FUNCTION(tensor, tensor, skew, transform) UNARY_FUNCTION(tensor, tensor, dev, transform) UNARY_FUNCTION(tensor, tensor, dev2, transform) UNARY_FUNCTION(scalar, tensor, det, transform) +UNARY_FUNCTION(tensor, tensor, cof, cof) UNARY_FUNCTION(tensor, tensor, inv, inv) UNARY_FUNCTION(vector, tensor, eigenValues, sign) UNARY_FUNCTION(tensor, tensor, eigenVectors, transform) diff --git a/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.C b/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.C index de6cb83507..0349bf933f 100644 --- a/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.C +++ b/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.C @@ -48,6 +48,7 @@ UNARY_FUNCTION(symmTensor, symmTensor, twoSymm) UNARY_FUNCTION(symmTensor, symmTensor, dev) UNARY_FUNCTION(symmTensor, symmTensor, dev2) UNARY_FUNCTION(scalar, symmTensor, det) +UNARY_FUNCTION(symmTensor, symmTensor, cof) UNARY_FUNCTION(symmTensor, symmTensor, inv) diff --git a/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.H b/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.H index 0b73d55805..bfa043aece 100644 --- a/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.H +++ b/src/OpenFOAM/fields/FieldFields/symmTensorFieldField/symmTensorFieldField.H @@ -58,6 +58,7 @@ UNARY_FUNCTION(symmTensor, symmTensor, twoSymm) UNARY_FUNCTION(symmTensor, symmTensor, dev) UNARY_FUNCTION(symmTensor, symmTensor, dev2) UNARY_FUNCTION(scalar, symmTensor, det) +UNARY_FUNCTION(symmTensor, symmTensor, cof) UNARY_FUNCTION(symmTensor, symmTensor, inv) diff --git a/src/OpenFOAM/fields/FieldFields/tensorFieldField/tensorFieldField.C b/src/OpenFOAM/fields/FieldFields/tensorFieldField/tensorFieldField.C index 793691bf66..2286b908f7 100644 --- a/src/OpenFOAM/fields/FieldFields/tensorFieldField/tensorFieldField.C +++ b/src/OpenFOAM/fields/FieldFields/tensorFieldField/tensorFieldField.C @@ -47,6 +47,7 @@ UNARY_FUNCTION(tensor, tensor, skew) UNARY_FUNCTION(tensor, tensor, dev) UNARY_FUNCTION(tensor, tensor, dev2) UNARY_FUNCTION(scalar, tensor, det) +UNARY_FUNCTION(tensor, tensor, cof) UNARY_FUNCTION(tensor, tensor, inv) UNARY_FUNCTION(vector, tensor, eigenValues) UNARY_FUNCTION(tensor, tensor, eigenVectors) diff --git a/src/OpenFOAM/fields/FieldFields/tensorFieldField/tensorFieldField.H b/src/OpenFOAM/fields/FieldFields/tensorFieldField/tensorFieldField.H index 52804804de..7dbb90c598 100644 --- a/src/OpenFOAM/fields/FieldFields/tensorFieldField/tensorFieldField.H +++ b/src/OpenFOAM/fields/FieldFields/tensorFieldField/tensorFieldField.H @@ -58,6 +58,7 @@ UNARY_FUNCTION(tensor, tensor, skew) UNARY_FUNCTION(tensor, tensor, dev) UNARY_FUNCTION(tensor, tensor, dev2) UNARY_FUNCTION(scalar, tensor, det) +UNARY_FUNCTION(tensor, tensor, cof) UNARY_FUNCTION(tensor, tensor, inv) UNARY_FUNCTION(vector, tensor, eigenValues) UNARY_FUNCTION(tensor, tensor, eigenVectors) diff --git a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C index 9ed36ba9f1..c3c8ded87c 100644 --- a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C +++ b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C @@ -46,6 +46,7 @@ UNARY_FUNCTION(symmTensor, symmTensor, twoSymm) UNARY_FUNCTION(symmTensor, symmTensor, dev) UNARY_FUNCTION(symmTensor, symmTensor, dev2) UNARY_FUNCTION(scalar, symmTensor, det) +UNARY_FUNCTION(symmTensor, symmTensor, cof) void inv(Field& tf, const UList& tf1) { diff --git a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.H b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.H index dc0ace7e9f..024e2ce683 100644 --- a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.H +++ b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.H @@ -62,6 +62,7 @@ UNARY_FUNCTION(symmTensor, symmTensor, twoSymm) UNARY_FUNCTION(symmTensor, symmTensor, dev) UNARY_FUNCTION(symmTensor, symmTensor, dev2) UNARY_FUNCTION(scalar, symmTensor, det) +UNARY_FUNCTION(symmTensor, symmTensor, cof) UNARY_FUNCTION(symmTensor, symmTensor, inv) diff --git a/src/OpenFOAM/fields/Fields/tensorField/tensorField.C b/src/OpenFOAM/fields/Fields/tensorField/tensorField.C index d1bbaff82d..f2394fcc76 100644 --- a/src/OpenFOAM/fields/Fields/tensorField/tensorField.C +++ b/src/OpenFOAM/fields/Fields/tensorField/tensorField.C @@ -45,6 +45,7 @@ UNARY_FUNCTION(tensor, tensor, skew) UNARY_FUNCTION(tensor, tensor, dev) UNARY_FUNCTION(tensor, tensor, dev2) UNARY_FUNCTION(scalar, tensor, det) +UNARY_FUNCTION(tensor, tensor, cof) void inv(Field& tf, const UList& tf1) { diff --git a/src/OpenFOAM/fields/Fields/tensorField/tensorField.H b/src/OpenFOAM/fields/Fields/tensorField/tensorField.H index 847745d01a..d916678006 100644 --- a/src/OpenFOAM/fields/Fields/tensorField/tensorField.H +++ b/src/OpenFOAM/fields/Fields/tensorField/tensorField.H @@ -62,6 +62,7 @@ UNARY_FUNCTION(tensor, tensor, skew) UNARY_FUNCTION(tensor, tensor, dev) UNARY_FUNCTION(tensor, tensor, dev2) UNARY_FUNCTION(scalar, tensor, det) +UNARY_FUNCTION(tensor, tensor, cof) UNARY_FUNCTION(tensor, tensor, inv) UNARY_FUNCTION(vector, tensor, eigenValues) UNARY_FUNCTION(tensor, tensor, eigenVectors) diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.C b/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.C index 3315643198..737f59c7a0 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.C +++ b/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.C @@ -46,6 +46,7 @@ UNARY_FUNCTION(symmTensor, symmTensor, twoSymm, transform) UNARY_FUNCTION(symmTensor, symmTensor, dev, transform) UNARY_FUNCTION(symmTensor, symmTensor, dev2, transform) UNARY_FUNCTION(scalar, symmTensor, det, transform) +UNARY_FUNCTION(symmTensor, symmTensor, cof, cof) UNARY_FUNCTION(symmTensor, symmTensor, inv, inv) diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.H b/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.H index b2bdfe46c6..a415b21a14 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.H +++ b/src/OpenFOAM/fields/GeometricFields/GeometricSymmTensorField/GeometricSymmTensorField.H @@ -58,6 +58,7 @@ UNARY_FUNCTION(symmTensor, symmTensor, twoSymm, transform) UNARY_FUNCTION(symmTensor, symmTensor, dev, transform) UNARY_FUNCTION(symmTensor, symmTensor, dev2, transform) UNARY_FUNCTION(scalar, symmTensor, det, transform) +UNARY_FUNCTION(symmTensor, symmTensor, cof, cof) UNARY_FUNCTION(symmTensor, symmTensor, inv, inv) diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricTensorField/GeometricTensorField.C b/src/OpenFOAM/fields/GeometricFields/GeometricTensorField/GeometricTensorField.C index eb1663d065..9347d06119 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricTensorField/GeometricTensorField.C +++ b/src/OpenFOAM/fields/GeometricFields/GeometricTensorField/GeometricTensorField.C @@ -45,6 +45,7 @@ UNARY_FUNCTION(tensor, tensor, skew, transform) UNARY_FUNCTION(tensor, tensor, dev, transform) UNARY_FUNCTION(tensor, tensor, dev2, transform) UNARY_FUNCTION(scalar, tensor, det, transform) +UNARY_FUNCTION(tensor, tensor, cof, cof) UNARY_FUNCTION(tensor, tensor, inv, inv) UNARY_FUNCTION(vector, tensor, eigenValues, sign) UNARY_FUNCTION(tensor, tensor, eigenVectors, transform) diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricTensorField/GeometricTensorField.H b/src/OpenFOAM/fields/GeometricFields/GeometricTensorField/GeometricTensorField.H index eaf3be0d42..8de3448272 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricTensorField/GeometricTensorField.H +++ b/src/OpenFOAM/fields/GeometricFields/GeometricTensorField/GeometricTensorField.H @@ -58,6 +58,7 @@ UNARY_FUNCTION(tensor, tensor, skew, transform) UNARY_FUNCTION(tensor, tensor, dev, transform) UNARY_FUNCTION(tensor, tensor, dev2, transform) UNARY_FUNCTION(scalar, tensor, det, transform) +UNARY_FUNCTION(tensor, tensor, cof, cof) UNARY_FUNCTION(tensor, tensor, inv, inv) UNARY_FUNCTION(vector, tensor, eigenValues, sign) UNARY_FUNCTION(tensor, tensor, eigenVectors, transform) diff --git a/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H b/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H index 8e041f4158..fd0f6e37c5 100644 --- a/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H +++ b/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H @@ -33,13 +33,11 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -//- Construct null template inline SymmTensor::SymmTensor() {} -//- Construct given VectorSpace template inline SymmTensor::SymmTensor ( @@ -50,7 +48,6 @@ inline SymmTensor::SymmTensor {} -//- Construct given SphericalTensor template inline SymmTensor::SymmTensor(const SphericalTensor& st) { @@ -60,7 +57,6 @@ inline SymmTensor::SymmTensor(const SphericalTensor& st) } -//- Construct from components template inline SymmTensor::SymmTensor ( @@ -75,7 +71,6 @@ inline SymmTensor::SymmTensor } -//- Construct from Istream template inline SymmTensor::SymmTensor(Istream& is) : @@ -159,7 +154,6 @@ inline Cmpt& SymmTensor::zz() } -//- Return symmetric tensor transpose template inline const SymmTensor& SymmTensor::T() const { @@ -323,22 +317,19 @@ inline Cmpt det(const SymmTensor& st) } -//- Return the cofactor tensor of a symmetric tensor +//- Return the cofactor symmetric tensor of a symmetric tensor template -inline SymmTensor cofactors(const SymmTensor& st) +inline SymmTensor cof(const SymmTensor& st) { return SymmTensor ( st.yy()*st.zz() - st.yz()*st.yz(), st.xz()*st.yz() - st.xy()*st.zz(), - st.xy()*st.yz() - st.yy()*st.xz(), + st.xy()*st.yz() - st.xz()*st.yy(), - st.xz()*st.yz() - st.xy()*st.zz(), st.xx()*st.zz() - st.xz()*st.xz(), st.xy()*st.xz() - st.xx()*st.yz(), - st.xy()*st.yz() - st.xz()*st.yy(), - st.xy()*st.xz() - st.xx()*st.yz(), st.xx()*st.yy() - st.xy()*st.xy() ); } diff --git a/src/OpenFOAM/primitives/Tensor/TensorI.H b/src/OpenFOAM/primitives/Tensor/TensorI.H index 63d74483e6..99aa6f260f 100644 --- a/src/OpenFOAM/primitives/Tensor/TensorI.H +++ b/src/OpenFOAM/primitives/Tensor/TensorI.H @@ -467,7 +467,7 @@ inline Cmpt det(const Tensor& t) //- Return the cofactor tensor of a tensor template -inline Tensor cofactors(const Tensor& t) +inline Tensor cof(const Tensor& t) { return Tensor ( diff --git a/src/OpenFOAM/primitives/Tensor2D/Tensor2DI.H b/src/OpenFOAM/primitives/Tensor2D/Tensor2DI.H index f98d472f92..da278da819 100644 --- a/src/OpenFOAM/primitives/Tensor2D/Tensor2DI.H +++ b/src/OpenFOAM/primitives/Tensor2D/Tensor2DI.H @@ -31,13 +31,11 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -//- Construct null template inline Tensor2D::Tensor2D() {} -//- Construct given VectorSpace template inline Tensor2D::Tensor2D(const VectorSpace, Cmpt, 4>& vs) : @@ -45,7 +43,6 @@ inline Tensor2D::Tensor2D(const VectorSpace, Cmpt, 4>& vs) {} -//- Construct given SphericalTensor2D template inline Tensor2D::Tensor2D(const SphericalTensor2D& st) { @@ -54,7 +51,6 @@ inline Tensor2D::Tensor2D(const SphericalTensor2D& st) } -//- Construct from components template inline Tensor2D::Tensor2D ( @@ -67,7 +63,6 @@ inline Tensor2D::Tensor2D } -//- Construct from Istream template inline Tensor2D::Tensor2D(Istream& is) : @@ -153,7 +148,6 @@ inline Cmpt& Tensor2D::yy() } -//- Return tensor transpose template inline Tensor2D Tensor2D::T() const { @@ -303,17 +297,27 @@ inline Cmpt det(const Tensor2D& t) return(t.xx()*t.yy() - t.xy()*t.yx()); } -//- Return the inverse of a tensor give the determinant + +//- Return the cofactor tensor of a tensor template -inline Tensor2D inv(const Tensor2D& t, const Cmpt dett) +inline Tensor2D cof(const Tensor2D& t) { return Tensor2D ( t.yy(), -t.xy(), -t.yx(), t.xx() - )/dett; + ); } + +//- Return the inverse of a tensor given the determinant +template +inline Tensor2D inv(const Tensor2D& t, const Cmpt dett) +{ + return cof(t)/dett; +} + + //- Return the inverse of a tensor template inline Tensor2D inv(const Tensor2D& t) diff --git a/src/Pstream/mpi/IPread.C b/src/Pstream/mpi/IPread.C index 487749b24b..ac7c2e787a 100644 --- a/src/Pstream/mpi/IPread.C +++ b/src/Pstream/mpi/IPread.C @@ -193,15 +193,13 @@ void Foam::IPstream::waitRequests() { if (IPstream_outstandingRequests_.size() > 0) { - List status(IPstream_outstandingRequests_.size()); - if ( MPI_Waitall ( IPstream_outstandingRequests_.size(), IPstream_outstandingRequests_.begin(), - status.begin() + MPI_STATUSES_IGNORE ) ) { @@ -231,9 +229,7 @@ bool Foam::IPstream::finishedRequest(const label i) } int flag; - MPI_Status status; - - MPI_Test(&IPstream_outstandingRequests_[i], &flag, &status); + MPI_Test(&IPstream_outstandingRequests_[i], &flag, MPI_STATUS_IGNORE); return flag != 0; } diff --git a/src/Pstream/mpi/OPwrite.C b/src/Pstream/mpi/OPwrite.C index 86d9c998ab..d0cdcbd0bc 100644 --- a/src/Pstream/mpi/OPwrite.C +++ b/src/Pstream/mpi/OPwrite.C @@ -131,15 +131,13 @@ void Foam::OPstream::waitRequests() { if (OPstream_outstandingRequests_.size() > 0) { - List status(OPstream_outstandingRequests_.size()); - if ( MPI_Waitall ( OPstream_outstandingRequests_.size(), OPstream_outstandingRequests_.begin(), - status.begin() + MPI_STATUSES_IGNORE ) ) { @@ -169,9 +167,7 @@ bool Foam::OPstream::finishedRequest(const label i) } int flag; - MPI_Status status; - - MPI_Test(&OPstream_outstandingRequests_[i], &flag, &status); + MPI_Test(&OPstream_outstandingRequests_[i], &flag, MPI_STATUS_IGNORE); return flag != 0; } diff --git a/src/Pstream/mpi/Pstream.C b/src/Pstream/mpi/Pstream.C index a6361ab102..caa21b6dcc 100644 --- a/src/Pstream/mpi/Pstream.C +++ b/src/Pstream/mpi/Pstream.C @@ -157,8 +157,6 @@ void Foam::reduce(scalar& Value, const sumOp& bop) if (Pstream::nProcs() <= Pstream::nProcsSimpleSum) { - MPI_Status status; - if (Pstream::master()) { for @@ -180,7 +178,7 @@ void Foam::reduce(scalar& Value, const sumOp& bop) Pstream::procID(slave), Pstream::msgType(), MPI_COMM_WORLD, - &status + MPI_STATUS_IGNORE ) ) { @@ -260,7 +258,7 @@ void Foam::reduce(scalar& Value, const sumOp& bop) Pstream::procID(Pstream::masterNo()), Pstream::msgType(), MPI_COMM_WORLD, - &status + MPI_STATUS_IGNORE ) ) { @@ -279,8 +277,6 @@ void Foam::reduce(scalar& Value, const sumOp& bop) Value = sum; /* - MPI_Status status; - int myProcNo = Pstream::myProcNo(); int nProcs = Pstream::nProcs(); @@ -314,7 +310,7 @@ void Foam::reduce(scalar& Value, const sumOp& bop) Pstream::procID(childProcId), Pstream::msgType(), MPI_COMM_WORLD, - &status + MPI_STATUS_IGNORE ) ) { @@ -370,7 +366,7 @@ void Foam::reduce(scalar& Value, const sumOp& bop) Pstream::procID(parentId), Pstream::msgType(), MPI_COMM_WORLD, - &status + MPI_STATUS_IGNORE ) ) { diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C index f117968fe1..4cfba30501 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C @@ -2875,6 +2875,8 @@ Foam::labelList Foam::hexRef8::consistentSlowRefinement2 } // 2. Extend to 2:1. I don't understand yet why this is not done + // 2. Extend to 2:1. For non-cube cells the scalar distance does not work + // so make sure it at least provides 2:1. PackedList<1> refineCell(mesh_.nCells(), 0); forAll(allCellInfo, cellI) { @@ -2887,6 +2889,25 @@ Foam::labelList Foam::hexRef8::consistentSlowRefinement2 } faceConsistentRefinement(true, refineCell); + while (true) + { + label nChanged = faceConsistentRefinement(true, refineCell); + + reduce(nChanged, sumOp