From cdc2a2e13a56c209a68e468e4b5f4920c0804d3f Mon Sep 17 00:00:00 2001 From: Sergio Ferraris Date: Fri, 16 Aug 2013 10:18:08 +0100 Subject: [PATCH 1/3] Optimization of greyDiffusiveRadiationMixed and wideBandDiffusiveRadiationMixed to avoid lagging the calculation of Qin. --- ...iffusiveRadiationMixedFvPatchScalarField.C | 9 +++- ...iffusiveRadiationMixedFvPatchScalarField.C | 41 +++++++++++-------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C index 7237f30307..e15fea1f66 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C @@ -197,7 +197,14 @@ updateCoeffs() const vector& myRayId = dom.IRay(rayId).d(); - const scalarField& Ir = dom.Qin().boundaryField()[patchI]; + // Use updated Ir while iterating over rays + // avoids to used lagged Qin + scalarField Ir = dom.IRay(0).Qin().boundaryField()[patchI]; + + for (label rayI=1; rayI < dom.nRay(); rayI++) + { + Ir += dom.IRay(rayI).Qin().boundaryField()[patchI]; + } forAll(Iw, faceI) { diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C index e6e7b4b225..0bce57efeb 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -187,7 +187,9 @@ updateCoeffs() radiativeIntensityRay& ray = const_cast(dom.IRay(rayId)); - ray.Qr().boundaryField()[patchI] += Iw*(n & ray.dAve()); + const scalarField nAve(n & ray.dAve()); + + ray.Qr().boundaryField()[patchI] += Iw*nAve; const scalarField Eb ( @@ -196,23 +198,20 @@ updateCoeffs() scalarField temissivity = emissivity(); + scalarField& Qem = ray.Qem().boundaryField()[patchI]; + scalarField& Qin = ray.Qin().boundaryField()[patchI]; + + // Use updated Ir while iterating over rays + // avoids to used lagged Qin + scalarField Ir = dom.IRay(0).Qin().boundaryField()[patchI]; + + for (label rayI=1; rayI < dom.nRay(); rayI++) + { + Ir += dom.IRay(rayI).Qin().boundaryField()[patchI]; + } + forAll(Iw, faceI) { - scalar Ir = 0.0; - for (label rayI=0; rayI < dom.nRay(); rayI++) - { - const vector& d = dom.IRay(rayI).d(); - - const scalarField& IFace = - dom.IRay(rayI).ILambda(lambdaId).boundaryField()[patchI]; - - if ((-n[faceI] & d) < 0.0) // qin into the wall - { - const vector& dAve = dom.IRay(rayI).dAve(); - Ir = Ir + IFace[faceI]*mag(n[faceI] & dAve); - } - } - const vector& d = dom.IRay(rayId).d(); if ((-n[faceI] & d) > 0.0) @@ -222,9 +221,12 @@ updateCoeffs() valueFraction()[faceI] = 1.0; refValue()[faceI] = ( - Ir*(1.0 - temissivity[faceI]) + Ir[faceI]*(1.0 - temissivity[faceI]) + temissivity[faceI]*Eb[faceI] )/pi; + + // Emmited heat flux from this ray direction + Qem[faceI] = refValue()[faceI]*nAve[faceI]; } else { @@ -232,6 +234,9 @@ updateCoeffs() valueFraction()[faceI] = 0.0; refGrad()[faceI] = 0.0; refValue()[faceI] = 0.0; //not used + + // Incident heat flux on this ray direction + Qin[faceI] = Iw[faceI]*nAve[faceI]; } } From 61ce6eec5d7b8d15273bf0210dd8dc34b663deb9 Mon Sep 17 00:00:00 2001 From: mattijs Date: Fri, 16 Aug 2013 16:10:45 +0100 Subject: [PATCH 2/3] BUG: nastran: interpolated values not normalised --- .../writers/nastran/nastranSurfaceWriterTemplates.C | 1 + 1 file changed, 1 insertion(+) diff --git a/src/sampling/sampledSurface/writers/nastran/nastranSurfaceWriterTemplates.C b/src/sampling/sampledSurface/writers/nastran/nastranSurfaceWriterTemplates.C index fc0a283d75..fe1e6a998a 100644 --- a/src/sampling/sampledSurface/writers/nastran/nastranSurfaceWriterTemplates.C +++ b/src/sampling/sampledSurface/writers/nastran/nastranSurfaceWriterTemplates.C @@ -201,6 +201,7 @@ void Foam::nastranSurfaceWriter::writeTemplate { v += values[f[fptI]]; } + v /= f.size(); writeFaceValue(nasFieldName, v, ++n, os); } From 5414ff8f318bc122b2e1ed26ae79760f3c16a6ed Mon Sep 17 00:00:00 2001 From: mattijs Date: Fri, 16 Aug 2013 16:13:28 +0100 Subject: [PATCH 3/3] ENH: globalIndex: handling 180 degree periodic --- .../polyMesh/globalMeshData/globalPoints.C | 10 ++- .../globalIndexAndTransform.H | 5 +- .../globalIndexAndTransformI.H | 63 ++++++++++++++----- 3 files changed, 57 insertions(+), 21 deletions(-) diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C index caad93731c..2b6b17da92 100644 --- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C +++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -90,6 +90,11 @@ Foam::labelPairList Foam::globalPoints::addSendTransform const labelPairList& info ) const { + scalar tol = refCast + ( + mesh_.boundaryMesh()[patchI] + ).matchTolerance(); + labelPairList sendInfo(info.size()); forAll(info, i) @@ -111,7 +116,8 @@ Foam::labelPairList Foam::globalPoints::addSendTransform ( globalIndexAndTransform::transformIndex(info[i]), patchI, - true // patchI is sending side + true, // patchI is sending side + tol // tolerance for comparison ) ); } diff --git a/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransform.H b/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransform.H index 408b1f2d32..7cb4bab495 100644 --- a/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransform.H +++ b/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransform.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -195,7 +195,8 @@ public: ( const label transformIndex, const label patchI, - const bool isSendingSide = true + const bool isSendingSide = true, + const scalar tol = SMALL ) const; //- Combine two transformIndices diff --git a/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransformI.H b/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransformI.H index bb72f8d43d..9227e6a990 100644 --- a/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransformI.H +++ b/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransformI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -190,7 +190,8 @@ Foam::label Foam::globalIndexAndTransform::addToTransformIndex ( const label transformIndex, const label patchI, - const bool isSendingSide + const bool isSendingSide, + const scalar tol ) const { const Pair