Commit a7d1ef36 authored by Mark Olesen's avatar Mark Olesen
Browse files

Merge commit 'OpenCFD/master' into olesenm

parents 07d8a616 a972933b
......@@ -55,5 +55,6 @@ if (closedVolume)
{
p += (initialMass - fvc::domainIntegrate(thermo->psi()*p))
/fvc::domainIntegrate(thermo->psi());
pd == p - (rho*gh + pRef);
rho = thermo->rho();
}
volScalarField rUA = 1.0/UEqn().A();
U = rUA*UEqn().H();
UEqn.clear();
phi = fvc::interpolate(rho)*(fvc::interpolate(U) & mesh.Sf());
bool closedVolume = adjustPhi(phi, U, p);
phi -= fvc::interpolate(rho*gh*rUA)*fvc::snGrad(rho)*mesh.magSf();
......@@ -46,6 +47,7 @@ if (closedVolume)
{
p += (initialMass - fvc::domainIntegrate(thermo->psi()*p))
/fvc::domainIntegrate(thermo->psi());
pd == p - (rho*gh + pRef);
}
rho = thermo->rho();
......
......@@ -46,6 +46,7 @@ if (closedVolume)
{
p += (initialMass - fvc::domainIntegrate(thermo->psi()*p))
/fvc::domainIntegrate(thermo->psi());
pd == p - (rho*gh + pRef);
}
rho = thermo->rho();
......
......@@ -51,7 +51,7 @@
)
- fvc::domainIntegrate(thermof[i].psi()*thermof[i].p())
)/fvc::domainIntegrate(thermof[i].psi());
pdf[i] == thermof[i].p() - (rhof[i]*ghf[i] + pRef);
rhof[i] = thermof[i].rho();
}
......
......@@ -140,6 +140,7 @@ buildParaView ()
{
# set general options
addCMakeVariable "BUILD_SHARED_LIBS:BOOL=ON"
addCMakeVariable "VTK_USE_RPATH:BOOL=OFF"
addCMakeVariable "CMAKE_BUILD_TYPE:STRING=Release"
# set paraview environment
......
......@@ -44,6 +44,7 @@ void Foam::Time::readDict()
);
}
scalar oldWriteInterval = writeInterval_;
if (controlDict_.readIfPresent("writeInterval", writeInterval_))
{
if (writeControl_ == wcTimeStep && label(writeInterval_) < 1)
......@@ -58,6 +59,22 @@ void Foam::Time::readDict()
controlDict_.lookup("writeFrequency") >> writeInterval_;
}
if (oldWriteInterval != writeInterval_)
{
switch(writeControl_)
{
case wcRunTime:
case wcAdjustableRunTime:
// Recalculate outputTimeIndex_ to be in units of current
// writeInterval.
outputTimeIndex_ *= oldWriteInterval/writeInterval_;
break;
default:
break;
}
}
if (controlDict_.readIfPresent("purgeWrite", purgeWrite_))
{
if (purgeWrite_ < 0)
......
......@@ -248,7 +248,7 @@ Foam::label Foam::autoRefineDriver::surfaceOnlyRefine
refineParams.keepPoints()[0],
refineParams.curvature(),
PtrList<featureEdgeMesh>(0), // dummy featureMeshes;
PtrList<featureEdgeMesh>(), // dummy featureMeshes;
labelList(0), // dummy featureLevels;
false, // featureRefinement
......@@ -389,7 +389,7 @@ Foam::label Foam::autoRefineDriver::shellRefine
refineParams.keepPoints()[0],
refineParams.curvature(),
PtrList<featureEdgeMesh>(0), // dummy featureMeshes;
PtrList<featureEdgeMesh>(), // dummy featureMeshes;
labelList(0), // dummy featureLevels;
false, // featureRefinement
......
......@@ -155,17 +155,35 @@ void Foam::duplicatePoints::setRefinement
zoneFlip = fZone.flipMap()[fZone.whichFace(faceI)];
}
meshMod.modifyFace
(
newFace, // modified face
faceI, // label of face being modified
mesh_.faceOwner()[faceI], // owner
-1, // neighbour
false, // face flip
patches.whichPatch(faceI), // patch for face
zoneID, // zone for face
zoneFlip // face flip in zone
);
if (mesh_.isInternalFace(faceI))
{
meshMod.modifyFace
(
newFace, // modified face
faceI, // label of face being modified
mesh_.faceOwner()[faceI], // owner
mesh_.faceNeighbour()[faceI], // neighbour
false, // face flip
-1, // patch for face
zoneID, // zone for face
zoneFlip // face flip in zone
);
}
else
{
meshMod.modifyFace
(
newFace, // modified face
faceI, // label of face being modified
mesh_.faceOwner()[faceI], // owner
-1, // neighbour
false, // face flip
patches.whichPatch(faceI), // patch for face
zoneID, // zone for face
zoneFlip // face flip in zone
);
}
}
......
......@@ -43,15 +43,22 @@ class minEqOpFace
{
public:
void operator()( face& x, const face& y ) const
void operator()(face& x, const face& y) const
{
forAll(x, i)
if (x.size() > 0)
{
x[i] = min(x[i], y[i]);
label j = 0;
forAll(x, i)
{
x[i] = min(x[i], y[j]);
j = y.rcIndex(j);
}
}
};
};
// Dummy transform for faces. Used in synchronisation
void transformList
(
......@@ -103,6 +110,7 @@ bool Foam::localPointRegion::isDuplicate
void Foam::localPointRegion::countPointRegions
(
const polyMesh& mesh,
const boolList& candidatePoint,
const Map<label>& candidateFace,
faceList& minRegion
)
......@@ -120,7 +128,7 @@ void Foam::localPointRegion::countPointRegions
forAllConstIter(Map<label>, candidateFace, iter)
{
label faceI = iter();
label faceI = iter.key();
if (!mesh.isInternalFace(faceI))
{
......@@ -137,43 +145,75 @@ void Foam::localPointRegion::countPointRegions
forAll(f, fp)
{
label pointI = f[fp];
label region = minRegion[faceI][fp];
if (minPointRegion[pointI] == -1)
{
minPointRegion[pointI] = region;
}
else if (minPointRegion[pointI] != region)
// Even points which were not candidates for splitting might
// be on multiple baffles that are being split so check.
if (candidatePoint[pointI])
{
// Multiple regions for this point. Add.
Map<label>::iterator iter = meshPointMap_.find(pointI);
if (iter != meshPointMap_.end())
label region = minRegion[faceI][fp];
if (minPointRegion[pointI] == -1)
{
labelList& regions = pointRegions[iter()];
if (findIndex(regions, region) == -1)
{
label sz = regions.size();
regions.setSize(sz+1);
regions[sz] = region;
}
minPointRegion[pointI] = region;
}
else
else if (minPointRegion[pointI] != region)
{
label localPointI = meshPointMap_.size();
meshPointMap_.insert(pointI, localPointI);
labelList regions(2);
regions[0] = minPointRegion[pointI];
regions[1] = region;
pointRegions.append(regions);
// Multiple regions for this point. Add.
Map<label>::iterator iter = meshPointMap_.find(pointI);
if (iter != meshPointMap_.end())
{
labelList& regions = pointRegions[iter()];
if (findIndex(regions, region) == -1)
{
label sz = regions.size();
regions.setSize(sz+1);
regions[sz] = region;
}
}
else
{
label localPointI = meshPointMap_.size();
meshPointMap_.insert(pointI, localPointI);
labelList regions(2);
regions[0] = minPointRegion[pointI];
regions[1] = region;
pointRegions.append(regions);
}
label meshFaceMapI = meshFaceMap_.size();
meshFaceMap_.insert(faceI, meshFaceMapI);
}
}
}
}
}
minPointRegion.clear();
// Add internal faces that use any duplicated point. Can only have one
// region!
forAllConstIter(Map<label>, candidateFace, iter)
{
label faceI = iter.key();
if (mesh.isInternalFace(faceI))
{
const face& f = mesh.faces()[faceI];
forAll(f, fp)
{
// Note: candidatePoint test not really necessary but
// speeds up rejection.
if (candidatePoint[f[fp]] && meshPointMap_.found(f[fp]))
{
label meshFaceMapI = meshFaceMap_.size();
meshFaceMap_.insert(faceI, meshFaceMapI);
}
}
}
}
minPointRegion.clear();
// Transfer to member data
pointRegions.shrink();
pointRegions_.setSize(pointRegions.size());
......@@ -285,7 +325,7 @@ void Foam::localPointRegion::calcPointRegions
faceList minRegion(mesh.nFaces());
forAllConstIter(Map<label>, candidateFace, iter)
{
label faceI = iter();
label faceI = iter.key();
const face& f = mesh.faces()[faceI];
if (mesh.isInternalFace(faceI))
......@@ -391,7 +431,7 @@ void Foam::localPointRegion::calcPointRegions
// Count regions per point
countPointRegions(mesh, candidateFace, minRegion);
countPointRegions(mesh, candidatePoint, candidateFace, minRegion);
minRegion.clear();
......
......@@ -92,6 +92,7 @@ class localPointRegion
void countPointRegions
(
const polyMesh& mesh,
const boolList& candidatePoint,
const Map<label>& candidateFace,
faceList& minRegion
);
......
......@@ -30,14 +30,9 @@ License
#include "volFields.H"
#include "basicThermo.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
(
const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF
......@@ -53,7 +48,7 @@ wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
}
wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
(
const wallHeatTransferFvPatchScalarField& ptf,
const fvPatch& p,
......@@ -67,7 +62,7 @@ wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
{}
wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
(
const fvPatch& p,
const DimensionedField<scalar, volMesh>& iF,
......@@ -96,7 +91,7 @@ wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
}
wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
(
const wallHeatTransferFvPatchScalarField& tppsf
)
......@@ -107,7 +102,7 @@ wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
{}
wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
(
const wallHeatTransferFvPatchScalarField& tppsf,
const DimensionedField<scalar, volMesh>& iF
......@@ -121,7 +116,7 @@ wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void wallHeatTransferFvPatchScalarField::autoMap
void Foam::wallHeatTransferFvPatchScalarField::autoMap
(
const fvPatchFieldMapper& m
)
......@@ -132,7 +127,7 @@ void wallHeatTransferFvPatchScalarField::autoMap
}
void wallHeatTransferFvPatchScalarField::rmap
void Foam::wallHeatTransferFvPatchScalarField::rmap
(
const fvPatchScalarField& ptf,
const labelList& addr
......@@ -148,7 +143,7 @@ void wallHeatTransferFvPatchScalarField::rmap
}
void wallHeatTransferFvPatchScalarField::updateCoeffs()
void Foam::wallHeatTransferFvPatchScalarField::updateCoeffs()
{
if (updated())
{
......@@ -159,13 +154,13 @@ void wallHeatTransferFvPatchScalarField::updateCoeffs()
(
"thermophysicalProperties"
);
const label patchi = patch().index();
const scalarField& Tw = thermo.T().boundaryField()[patchi];
scalarField Cpw = thermo.Cp(Tw, patchi);
valueFraction() =
valueFraction() =
1.0/
(
1.0
......@@ -177,7 +172,7 @@ void wallHeatTransferFvPatchScalarField::updateCoeffs()
}
void wallHeatTransferFvPatchScalarField::write(Ostream& os) const
void Foam::wallHeatTransferFvPatchScalarField::write(Ostream& os) const
{
fvPatchScalarField::write(os);
Tinf_.writeEntry("Tinf", os);
......@@ -188,10 +183,9 @@ void wallHeatTransferFvPatchScalarField::write(Ostream& os) const
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField(fvPatchScalarField, wallHeatTransferFvPatchScalarField);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
namespace Foam
{
makePatchTypeField(fvPatchScalarField, wallHeatTransferFvPatchScalarField);
}
// ************************************************************************* //
......@@ -128,7 +128,7 @@ public:
// Member Functions
// fundamaental properties
// Fundamaental properties
//- Heat capacity at constant pressure [J/(kmol K)]
inline scalar cp(const scalar T) const;
......@@ -152,10 +152,8 @@ public:
// Member operators
inline eConstThermo& operator=
(
const eConstThermo&
);
inline void operator+=(const hConstThermo&);
inline void operator-=(const hConstThermo&);
// Friend operators
......
......@@ -24,15 +24,9 @@ License
\*---------------------------------------------------------------------------*/
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
// Construct from components
inline eConstThermo::eConstThermo
inline Foam::eConstThermo::eConstThermo
(
const specieThermo& st,
const scalar cv,
......@@ -47,8 +41,11 @@ inline eConstThermo::eConstThermo
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
//- Construct as named copy
inline eConstThermo::eConstThermo(const word& name, const eConstThermo& ct)
inline Foam::eConstThermo::eConstThermo
(
const word& name,
const eConstThermo& ct
)
:
specieThermo(name, ct),
CV(ct.CV),
......@@ -56,10 +53,9 @@ inline eConstThermo::eConstThermo(const word& name, const eConstThermo& ct)
{}
// Construct and return a clone
template<class equationOfState>
inline autoPtr<eConstThermo<equationOfState> > eConstThermo<equationOfState>::
clone() const
inline Foam::autoPtr<eConstThermo<equationOfState> >
Foam::eConstThermo<equationOfState>::clone() const
{
return autoPtr<eConstThermo<equationOfState> >
(
......@@ -68,10 +64,9 @@ clone() const
}
// Selector from Istream
template<class equationOfState>
inline autoPtr<eConstThermo<equationOfState> > eConstThermo<equationOfState>::
New(Istream& is)
inline autoPtr<eConstThermo<equationOfState> >
Foam::eConstThermo<equationOfState>::New(Istream& is)
{
return autoPtr<eConstThermo<equationOfState> >
(
......@@ -82,37 +77,40 @@ New(Istream& is)
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
//- Heat capacity at constant pressure [J/(kmol K)]
inline scalar eConstThermo::cp(const scalar) const
inline Foam::scalar Foam::eConstThermo::cp(const scalar) const
{
return CV*W() + RR;
}
//- Enthalpy [J/kmol]
inline scalar eConstThermo::h(const scalar T) const
inline Foam::scalar Foam::eConstThermo::h(const scalar T) const
{
return cp(T)*T + Hf*W();
}
//- Entropy [J/(kmol K)]
inline scalar eConstThermo::s(const scalar T) const
inline Foam::scalar Foam::eConstThermo::s(const scalar T) const
{
notImplemented("scalar eConstThermo::s(const scalar T) const");
return T;
}
//- Temperature from Enthalpy given an initial temperature T0
inline scalar eConstThermo::TH(const scalar h, const scalar T0) const
inline Foam::scalar Foam::eConstThermo::TH
(
const scalar h,
const scalar T0
) const
{
return (h - Hf)/Cp(T0);
}
//- Temperature from internal energy given an initial temperature T0
inline scalar eConstThermo::TE(const scalar e, const scalar) const
inline Foam::scalar Foam::eConstThermo::TE
(
const scalar e,
const scalar
) const
{
return (e - Hf)/CV;
}
......@@ -120,7 +118,7 @@ inline scalar eConstThermo::TE(const scalar e, const scalar) const
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
inline eConstThermo& eConstThermo::operator=
inline Foam::eConstThermo& Foam::eConstThermo::operator=
(
const eConstThermo& ct
)
......@@ -136,7 +134,7 @@ inline eConstThermo& eConstThermo::operator=
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
inline eConstThermo operator+
inline Foam::eConstThermo Foam::operator+
(
const eConstThermo& ct1,
const eConstThermo& ct2
......@@ -153,7 +151,7 @@ inline eConstThermo operator+
}
inline eConstThermo operator-
inline Foam::eConstThermo Foam::operator-
(
const eConstThermo& ct1,
const eConstThermo& ct2
......@@ -170,7 +168,7 @@ inline eConstThermo operator-
}
inline eConstThermo operator*
inline Foam::eConstThermo Foam::operator*
(
const scalar s,
const eConstThermo& ct
......@@ -185,7 +183,7 @@ inline eConstThermo operator*
}