diff --git a/applications/utilities/postProcessing/dataConversion/hashSetUnion.H b/applications/utilities/postProcessing/dataConversion/hashSetUnion.H deleted file mode 100644 index 0651431f12..0000000000 --- a/applications/utilities/postProcessing/dataConversion/hashSetUnion.H +++ /dev/null @@ -1,53 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::hashSetUnionEqOp - -Description - Union operation to combine hash sets - Usage: combineReduce(myWordHashSet, unionEqOp()); - -\*---------------------------------------------------------------------------*/ - -namespace Foam -{ - template - class hashSetUnionEqOp - { - public: - void operator()(HashSet& x, const HashSet& y) const - { - forAllConstIter(typename HashSet, y, iter) - { - x.insert(iter.key()); - } - } - }; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/utilities/postProcessing/dataConversion/hashTableUnion.H b/applications/utilities/postProcessing/dataConversion/hashTableUnion.H deleted file mode 100644 index a8aa3be587..0000000000 --- a/applications/utilities/postProcessing/dataConversion/hashTableUnion.H +++ /dev/null @@ -1,53 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Foam::hashTableUnionEqOp - -Description - Union operation to combine hash sets - Usage: combineReduce(myWordHashSet, unionEqOp()); - -\*---------------------------------------------------------------------------*/ - -namespace Foam -{ - template - class hashTableUnionEqOp - { - public: - void operator()(HashTable& x, const HashTable& y) const - { - forAllConstIter(typename HashTable, y, iter) - { - x.insert(iter.key(), iter()); - } - } - }; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/bin/tools/inlineReplace b/bin/tools/inlineReplace new file mode 100755 index 0000000000..310787935a --- /dev/null +++ b/bin/tools/inlineReplace @@ -0,0 +1,28 @@ +#!/bin/sh + +# $0 string1 string2 file1 .. filen +# +if [ $# -lt 3 ]; then + echo "Usage: `basename $0` [-f] .. " + echo "" + echo "Replaces all occurrences of string1 by string2 in files." + echo "(replacement of sed -i on those systems that don't support it)" + exit 1 +fi + +FROMSTRING=$1 +shift +TOSTRING=$1 +shift + +for f in $* +do + if grep "$FROMSTRING" "$f" >/dev/null + then + cp "$f" "${f}_bak" + sed -e "s@$FROMSTRING@$TOSTRING@g" "${f}"_bak > "$f" + rm -f "${f}"_bak + #else + # echo "String $FROMSTRING not present in $f" + #fi +done diff --git a/bin/tools/replaceAllShellSun b/bin/tools/replaceAllShellSun new file mode 100755 index 0000000000..6c9fc5b70a --- /dev/null +++ b/bin/tools/replaceAllShellSun @@ -0,0 +1,15 @@ +#!/usr/xpg4/bin/sh + +# Replace all shell script headers with +if [ $# -ne 1 -o ! -d "$1" ]; then + echo "Usage: `basename $0` " + echo "" + echo "Replaces all occurrences of #!/bin/sh with #!/usr/xpg4/bin/sh inside a directory tree." + exit 1 +fi + +#- note that below does not work since {} does not get replaced +#find $1 -type f -exec /usr/xpg4/bin/sh -c "grep '^#\!/bin/sh' {} >/dev/null && echo {} && mv {} {}_bak && sed -e 's@^#\!/bin/sh@#\!/usr/xpg4/bin/sh@' {}_bak > {}" ';' + +find $1 -exec $WM_PROJECT_DIR/bin/tools/inlineReplace '^#\!/bin/sh' '#\!/usr/xpg4/bin/sh' {} \; -print + diff --git a/src/OpenFOAM/db/Time/Time.C b/src/OpenFOAM/db/Time/Time.C index f2096b7968..26d2182e95 100644 --- a/src/OpenFOAM/db/Time/Time.C +++ b/src/OpenFOAM/db/Time/Time.C @@ -610,20 +610,6 @@ Foam::Time& Foam::Time::operator+=(const dimensionedScalar& deltaT) Foam::Time& Foam::Time::operator+=(const scalar deltaT) { - readModifiedObjects(); - - if (!subCycling_) - { - if (timeIndex_ == startTimeIndex_) - { - functionObjects_.start(); - } - else - { - functionObjects_.execute(); - } - } - setDeltaT(deltaT); operator++(); diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletUniformVelocity/pressureInletUniformVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletUniformVelocity/pressureInletUniformVelocityFvPatchVectorField.C index 3e9ec64a87..12db67822b 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletUniformVelocity/pressureInletUniformVelocityFvPatchVectorField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletUniformVelocity/pressureInletUniformVelocityFvPatchVectorField.C @@ -104,7 +104,7 @@ void pressureInletUniformVelocityFvPatchVectorField::updateCoeffs() pressureInletVelocityFvPatchVectorField::updateCoeffs(); - operator==(patch().nf()*sum(patch().Sf() & *this)/sum(patch().magSf())); + operator==(patch().nf()*gSum(patch().Sf() & *this)/gSum(patch().magSf())); } @@ -115,7 +115,7 @@ void pressureInletUniformVelocityFvPatchVectorField::operator= const fvPatchField& pvf ) { - operator==(patch().nf()*sum(patch().Sf() & pvf)/sum(patch().magSf())); + operator==(patch().nf()*gSum(patch().Sf() & pvf)/gSum(patch().magSf())); } diff --git a/src/lagrangian/dieselSpray/parcel/parcel.C b/src/lagrangian/dieselSpray/parcel/parcel.C index 0e71e1e4d7..1af2699201 100644 --- a/src/lagrangian/dieselSpray/parcel/parcel.C +++ b/src/lagrangian/dieselSpray/parcel/parcel.C @@ -297,7 +297,7 @@ bool Foam::parcel::move(spray& sDB) ms() -= ms()*(oTotMass-m())/oTotMass; // remove parcel if it is 'small' - if (m() < 1.0e-20) + if (m() < 1.0e-12) { keepParcel = false; @@ -574,6 +574,56 @@ void Foam::parcel::updateParcelProperties // Prevent droplet temperature to go too low // Mainly a numerical stability issue Tnew = max(200.0, Tnew); + scalar Td = Tnew; + + scalar pAtSurface = fuels.pv(pg, Td, X()); + scalar pCompare = 0.999*pg; + scalar boiling = pAtSurface >= pCompare; + if (boiling) + { + // can not go above boiling temperature + scalar Terr = 1.0e-3; + label n=0; + scalar dT = 1.0; + scalar pOld = pAtSurface; + while (dT > Terr) + { + n++; + pAtSurface = fuels.pv(pg, Td, X()); + if ((pAtSurface < pCompare) && (pOld < pCompare)) + { + Td += dT; + } + else + { + if ((pAtSurface > pCompare) && (pOld > pCompare)) + { + Td -= dT; + } + else + { + dT *= 0.5; + if ((pAtSurface > pCompare) && (pOld < pCompare)) + { + Td -= dT; + } + else + { + Td += dT; + } + } + } + pOld = pAtSurface; + if (debug) + { + if (n>100) + { + Info << "n = " << n << ", T = " << Td << ", pv = " << pAtSurface << endl; + } + } + } + Tnew = Td; + } } // Evaporate droplet! diff --git a/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.H b/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.H index e92eacbbd7..2b5b4f4ae5 100644 --- a/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.H +++ b/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.H @@ -90,16 +90,10 @@ public: : liquid(60.056, 705.0, 9.050e+6, 0.218, 0.337, 405.85, 9.3131e+1, 465.0, 1.52e-29, 0.3449, 4.7813e+4), rho_(1230.006936, 0, 0, 0, 0, 0), - pv_(12.06, -3992.0, 0, 0, 0), -// hl_(1463034.50113228, 0, 0, 0, 0, 0), -// NN. we cant use constant heat of vapourisation, the below value is linear (sqrt) interpolation to critical temp + pv_(3015.15611544, -185497.059684, -430.223621983, 0.00017405122622, 2.0), hl_(705.0, 2534249.0, 0.5, 0.0, 0.0, 0.0), cp_(2006.46063673904, 0, 0, 0, 0, 0), - // NN: enthalpy, h_, is not used in the sprayModel. - // For consistency, the enthalpy is derived from hlat and hl. - // It is, however, convenient to have it available. h_(-6154107.41641135, 2006.46063673904, 0, 0, 0, 0), - cpg_(811.875582789397, 2099.04089516451, 1627.3, 1603.63660583455, 724.41), B_(-0.000383641934194752, 0.447249234048222, -469062.208605302, 5.5628080458239e+18, -2.3040162514986e+21), mu_(-51.964, 3670.6, 5.7331, -5.3495e-29, 10), @@ -107,7 +101,7 @@ public: K_(-0.4267, 0.0056903, -8.0065e-06, 1.815e-09, 0, 0), Kg_(6.977e-05, 1.1243, 844.9, -148850), sigma_(705.0, 1.0, 0.0, 0.0, 0.0, 0), // set to constant - D_(147.18, 20.1, 60.056, 28) // NN: Same as nHeptane + D_(147.18, 20.1, 60.056, 28) // Same as nHeptane {} CH4N2O ( diff --git a/src/turbulenceModels/compressible/RAS/LRR/LRR.C b/src/turbulenceModels/compressible/RAS/LRR/LRR.C index e0e7c1cccd..6521d8130c 100644 --- a/src/turbulenceModels/compressible/RAS/LRR/LRR.C +++ b/src/turbulenceModels/compressible/RAS/LRR/LRR.C @@ -337,7 +337,7 @@ void LRR::correct() RASModel::correct(); volSymmTensorField P = -twoSymm(R_ & fvc::grad(U_)); - volScalarField G("G", 0.5*tr(P)); + volScalarField G("G", 0.5*mag(tr(P))); // Update espsilon and G at the wall epsilon_.boundaryField().updateCoeffs(); @@ -376,7 +376,7 @@ void LRR::correct() { label faceCelli = curPatch.faceCells()[facei]; P[faceCelli] - *= min(G[faceCelli]/(0.5*tr(P[faceCelli]) + SMALL), 100.0); + *= min(G[faceCelli]/(0.5*mag(tr(P[faceCelli])) + SMALL), 100.0); } } } diff --git a/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C b/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C index 7f7b91a91a..4a9987131f 100644 --- a/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C +++ b/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C @@ -367,7 +367,7 @@ void LaunderGibsonRSTM::correct() } volSymmTensorField P = -twoSymm(R_ & fvc::grad(U_)); - volScalarField G("G", 0.5*tr(P)); + volScalarField G("G", 0.5*mag(tr(P))); // Update espsilon and G at the wall epsilon_.boundaryField().updateCoeffs(); @@ -406,7 +406,7 @@ void LaunderGibsonRSTM::correct() { label faceCelli = curPatch.faceCells()[facei]; P[faceCelli] *= - min(G[faceCelli]/(0.5*tr(P[faceCelli]) + SMALL), 100.0); + min(G[faceCelli]/(0.5*mag(tr(P[faceCelli])) + SMALL), 100.0); } } } diff --git a/src/turbulenceModels/incompressible/RAS/LRR/LRR.C b/src/turbulenceModels/incompressible/RAS/LRR/LRR.C index a0fd4c9ebf..f720a0312d 100644 --- a/src/turbulenceModels/incompressible/RAS/LRR/LRR.C +++ b/src/turbulenceModels/incompressible/RAS/LRR/LRR.C @@ -297,7 +297,7 @@ void LRR::correct() } volSymmTensorField P = -twoSymm(R_ & fvc::grad(U_)); - volScalarField G("G", 0.5*tr(P)); + volScalarField G("G", 0.5*mag(tr(P))); // Update espsilon and G at the wall epsilon_.boundaryField().updateCoeffs(); @@ -307,6 +307,7 @@ void LRR::correct() ( fvm::ddt(epsilon_) + fvm::div(phi_, epsilon_) + - fvm::Sp(fvc::div(phi_), epsilon_) //- fvm::laplacian(Ceps*(K/epsilon_)*R, epsilon_) - fvm::laplacian(DepsilonEff(), epsilon_) == @@ -336,7 +337,7 @@ void LRR::correct() { label faceCelli = curPatch.faceCells()[facei]; P[faceCelli] - *= min(G[faceCelli]/(0.5*tr(P[faceCelli]) + SMALL), 1.0); + *= min(G[faceCelli]/(0.5*mag(tr(P[faceCelli])) + SMALL), 1.0); } } } @@ -346,6 +347,7 @@ void LRR::correct() ( fvm::ddt(R_) + fvm::div(phi_, R_) + - fvm::Sp(fvc::div(phi_), R_) //- fvm::laplacian(Cs*(k_/epsilon_)*R_, R_) - fvm::laplacian(DREff(), R_) + fvm::Sp(Clrr1_*epsilon_/k_, R_) diff --git a/src/turbulenceModels/incompressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C b/src/turbulenceModels/incompressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C index 48f4c5ab7c..6f130f2a31 100644 --- a/src/turbulenceModels/incompressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C +++ b/src/turbulenceModels/incompressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C @@ -329,7 +329,7 @@ void LaunderGibsonRSTM::correct() } volSymmTensorField P = -twoSymm(R_ & fvc::grad(U_)); - volScalarField G("G", 0.5*tr(P)); + volScalarField G("G", 0.5*mag(tr(P))); // Update espsilon and G at the wall epsilon_.boundaryField().updateCoeffs(); @@ -339,6 +339,7 @@ void LaunderGibsonRSTM::correct() ( fvm::ddt(epsilon_) + fvm::div(phi_, epsilon_) + - fvm::Sp(fvc::div(phi_), epsilon_) //- fvm::laplacian(Ceps*(k_/epsilon_)*R_, epsilon_) - fvm::laplacian(DepsilonEff(), epsilon_) == @@ -368,7 +369,7 @@ void LaunderGibsonRSTM::correct() { label faceCelli = curPatch.faceCells()[facei]; P[faceCelli] *= - min(G[faceCelli]/(0.5*tr(P[faceCelli]) + SMALL), 1.0); + min(G[faceCelli]/(0.5*mag(tr(P[faceCelli])) + SMALL), 1.0); } } } @@ -379,6 +380,7 @@ void LaunderGibsonRSTM::correct() ( fvm::ddt(R_) + fvm::div(phi_, R_) + - fvm::Sp(fvc::div(phi_), R_) //- fvm::laplacian(Cs*(k_/epsilon_)*R_, R_) - fvm::laplacian(DREff(), R_) + fvm::Sp(Clg1_*epsilon_/k_, R_) diff --git a/src/turbulenceModels/incompressible/RAS/SpalartAllmaras/SpalartAllmaras.C b/src/turbulenceModels/incompressible/RAS/SpalartAllmaras/SpalartAllmaras.C index d1fa78134a..c69d403575 100644 --- a/src/turbulenceModels/incompressible/RAS/SpalartAllmaras/SpalartAllmaras.C +++ b/src/turbulenceModels/incompressible/RAS/SpalartAllmaras/SpalartAllmaras.C @@ -249,7 +249,7 @@ tmp SpalartAllmaras::epsilon() const ( IOobject ( - "epslion", + "epsilon", runTime_.timeName(), mesh_ ),