Merge branch 'master' of ssh://noisy/home/noisy3/OpenFOAM/OpenFOAM-dev
This commit is contained in:
commit
ef537003c6
@ -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<word>());
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
template<class Type>
|
||||
class hashSetUnionEqOp
|
||||
{
|
||||
public:
|
||||
void operator()(HashSet<Type>& x, const HashSet<Type>& y) const
|
||||
{
|
||||
forAllConstIter(typename HashSet<Type>, y, iter)
|
||||
{
|
||||
x.insert(iter.key());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
@ -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<word>());
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
template<class Type>
|
||||
class hashTableUnionEqOp
|
||||
{
|
||||
public:
|
||||
void operator()(HashTable<Type>& x, const HashTable<Type>& y) const
|
||||
{
|
||||
forAllConstIter(typename HashTable<Type>, y, iter)
|
||||
{
|
||||
x.insert(iter.key(), iter());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
28
bin/tools/inlineReplace
Executable file
28
bin/tools/inlineReplace
Executable file
@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
|
||||
# $0 string1 string2 file1 .. filen
|
||||
#
|
||||
if [ $# -lt 3 ]; then
|
||||
echo "Usage: `basename $0` [-f] <string1> <string2> <file1> .. <filen>"
|
||||
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
|
15
bin/tools/replaceAllShellSun
Executable file
15
bin/tools/replaceAllShellSun
Executable file
@ -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` <dir>"
|
||||
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
|
||||
|
@ -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++();
|
||||
|
||||
|
@ -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<vector>& pvf
|
||||
)
|
||||
{
|
||||
operator==(patch().nf()*sum(patch().Sf() & pvf)/sum(patch().magSf()));
|
||||
operator==(patch().nf()*gSum(patch().Sf() & pvf)/gSum(patch().magSf()));
|
||||
}
|
||||
|
||||
|
||||
|
@ -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!
|
||||
|
@ -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
|
||||
(
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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_)
|
||||
|
@ -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_)
|
||||
|
@ -249,7 +249,7 @@ tmp<volScalarField> SpalartAllmaras::epsilon() const
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"epslion",
|
||||
"epsilon",
|
||||
runTime_.timeName(),
|
||||
mesh_
|
||||
),
|
||||
|
Loading…
Reference in New Issue
Block a user