Commit 72e9a0ba authored by Henry's avatar Henry
Browse files

Merge branch 'master' of ssh://dm/home/dm4/OpenFOAM/OpenFOAM-dev

parents 3ac2d3e6 8fb58d0e
......@@ -97,34 +97,35 @@ void Foam::patchToPoly2DMesh::createNeighbours()
Foam::labelList Foam::patchToPoly2DMesh::internalFaceOrder()
{
const labelListList& cellFaces = patch_.faceEdges();
const labelListList& faceEdges = patch_.faceEdges();
labelList oldToNew(owner_.size(), -1);
label newFaceI = 0;
forAll(cellFaces, cellI)
forAll(faceEdges, faceI)
{
const labelList& cFaces = cellFaces[cellI];
// Neighbouring cells
SortableList<label> nbr(cFaces.size(), -1);
const labelList& fEdges = faceEdges[faceI];
// Neighbouring faces
SortableList<label> nbr(fEdges.size(), -1);
forAll(cFaces, cfI)
forAll(fEdges, feI)
{
if (cFaces[cfI] < neighbour_.size())
if (fEdges[feI] < neighbour_.size())
{
label nbrFaceI = neighbour_[cFaces[cfI]];
// Internal edge. Get the face on other side.
// Internal face. Get cell on other side.
if (nbrFaceI == cellI)
label nbrFaceI = neighbour_[fEdges[feI]];
if (nbrFaceI == faceI)
{
nbrFaceI = owner_[cellI];
nbrFaceI = owner_[fEdges[feI]];
}
if (cellI < nbrFaceI)
if (faceI < nbrFaceI)
{
// CellI is master
nbr[cfI] = nbrFaceI;
// faceI is master
nbr[feI] = nbrFaceI;
}
}
}
......@@ -135,7 +136,7 @@ Foam::labelList Foam::patchToPoly2DMesh::internalFaceOrder()
{
if (nbr[i] != -1)
{
oldToNew[cFaces[nbr.indices()[i]]] = newFaceI++;
oldToNew[fEdges[nbr.indices()[i]]] = newFaceI++;
}
}
}
......@@ -302,6 +303,33 @@ Foam::patchToPoly2DMesh::~patchToPoly2DMesh()
void Foam::patchToPoly2DMesh::createMesh()
{
for (label edgeI = 0; edgeI < patch_.nInternalEdges(); edgeI++)
{
if (patch_.edgeFaces()[edgeI].size() != 2)
{
FatalErrorIn("patchToPoly2DMesh::patchToPoly2DMesh(..)")
<< "internal edge:" << edgeI
<< " patch.edgeFaces()[edgeI]:" << patch_.edgeFaces()[edgeI]
<< abort(FatalError);
}
}
for
(
label edgeI = patch_.nInternalEdges();
edgeI < patch_.nEdges();
edgeI++
)
{
if (patch_.edgeFaces()[edgeI].size() != 1)
{
FatalErrorIn("patchToPoly2DMesh::patchToPoly2DMesh(..)")
<< "boundary edge:" << edgeI
<< " patch.edgeFaces()[edgeI]:" << patch_.edgeFaces()[edgeI]
<< abort(FatalError);
}
}
createPolyMeshComponents();
label startFace = patch_.nInternalEdges();
......
......@@ -542,7 +542,7 @@ void Foam::CV2D::newPoints()
alignmentDirsB[0].x()
);
Field<vector2D> alignmentDirs(2);
Field<vector2D> alignmentDirs(alignmentDirsA);
forAll(alignmentDirsA, aA)
{
......
......@@ -209,7 +209,7 @@ int main(int argc, char *argv[])
// Set all times on processor meshes equal to reconstructed mesh
forAll(databases, procI)
{
databases[procI].setTime(runTime.timeName(), runTime.timeIndex());
databases[procI].setTime(runTime);
}
......
......@@ -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
......@@ -323,8 +323,8 @@ Foam::fileName Foam::IOobject::filePath() const
)
{
fileName parentObjectPath =
rootPath()/caseName()
/".."/instance()/db_.dbDir()/local()/name();
rootPath()/time().globalCaseName()
/instance()/db_.dbDir()/local()/name();
if (isFile(parentObjectPath))
{
......
......@@ -386,7 +386,9 @@ Foam::Time::Time
:
TimePaths
(
args.parRunControl().parRun(),
args.rootPath(),
args.globalCaseName(),
args.caseName(),
systemName,
constantName
......@@ -702,13 +704,27 @@ Foam::instantList Foam::Time::times() const
Foam::word Foam::Time::findInstancePath(const instant& t) const
{
instantList timeDirs = findTimes(path(), constant());
const fileName directory = path();
const word& constantName = constant();
// Read directory entries into a list
fileNameList dirEntries(readDir(directory, fileName::DIRECTORY));
forAll(dirEntries, i)
{
scalar timeValue;
if (readScalar(dirEntries[i].c_str(), timeValue) && t.equal(timeValue))
{
return dirEntries[i];
}
}
forAllReverse(timeDirs, timeI)
if (t.equal(0.0))
{
if (timeDirs[timeI] == t)
// Looking for 0 or constant. 0 already checked above.
if (isDir(directory/constantName))
{
return timeDirs[timeI].name();
return constantName;
}
}
......
......@@ -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
......@@ -35,11 +35,41 @@ Foam::TimePaths::TimePaths
const word& constantName
)
:
processorCase_(caseName.find("processor") != string::npos),
processorCase_(false),
rootPath_(rootPath),
case_(caseName),
system_(systemName),
constant_(constantName)
{
std::string::size_type pos = caseName.find("processor");
if (pos != string::npos)
{
processorCase_ = true;
globalCaseName_ = caseName(pos-1);
}
else
{
globalCaseName_ = caseName;
}
}
Foam::TimePaths::TimePaths
(
const bool processorCase,
const fileName& rootPath,
const fileName& globalCaseName,
const fileName& caseName,
const word& systemName,
const word& constantName
)
:
processorCase_(processorCase),
rootPath_(rootPath),
globalCaseName_(globalCaseName),
case_(caseName),
system_(systemName),
constant_(constantName)
{}
......
......@@ -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
......@@ -52,10 +52,11 @@ class TimePaths
// Private data
bool processorCase_;
fileName rootPath_;
fileName case_;
word system_;
word constant_;
const fileName rootPath_;
fileName globalCaseName_;
const fileName case_;
const word system_;
const word constant_;
public:
......@@ -72,6 +73,18 @@ public:
);
//- Construct given database name, rootPath and casePath
TimePaths
(
const bool processorCase,
const fileName& rootPath,
const fileName& globalCaseName,
const fileName& caseName,
const word& systemName,
const word& constantName
);
// Member functions
//- Return true if this is a processor case
......@@ -86,6 +99,12 @@ public:
return rootPath_;
}
//- Return global case name
const fileName& globalCaseName() const
{
return globalCaseName_;
}
//- Return case name
const fileName& caseName() const
{
......
......@@ -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
......@@ -54,15 +54,19 @@ Foam::instant::instant(const word& tname)
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool Foam::instant::equal(const scalar b) const
{
return (value_ < b + SMALL && value_ > b - SMALL);
}
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
bool Foam::operator==(const instant& a, const instant& b)
{
return
(
a.value_ < b.value_ + SMALL
&& a.value_ > b.value_ - SMALL
);
return a.equal(b.value_);
}
......
......@@ -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
......@@ -99,10 +99,10 @@ public:
instant(const scalar, const word&);
//- Construct from time value
instant(const scalar);
explicit instant(const scalar);
//- Construct from word
instant(const word&);
explicit instant(const word&);
// Member Functions
......@@ -133,6 +133,9 @@ public:
return name_;
}
//- Comparison used for instants to be equal
bool equal(const scalar) const;
// Friend Operators
......
......@@ -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
......@@ -229,8 +229,24 @@ curvatureSeparation::curvatureSeparation
deltaByR1Min_(coeffs().lookupOrDefault<scalar>("deltaByR1Min", 0.0)),
definedPatchRadii_(),
magG_(mag(owner.g().value())),
gHat_(owner.g().value()/magG_)
gHat_(vector::zero)
{
if (magG_ < ROOTVSMALL)
{
FatalErrorIn
(
"curvatureSeparation::curvatureSeparation"
"("
"const surfaceFilmModel&, "
"const dictionary&"
")"
)
<< "Acceleration due to gravity must be non-zero"
<< exit(FatalError);
}
gHat_ = owner.g().value()/magG_;
List<Tuple2<word, scalar> > prIn(coeffs().lookup("definedPatchRadii"));
const wordList& allPatchNames = owner.regionMesh().boundaryMesh().names();
......
......@@ -57,8 +57,7 @@ namespace Foam
( \
SS##Comp##SThermo##GThermo, \
(word(SS::typeName_()) + "<"#Comp"," + SThermo::typeName() + "," + \
GThermo::typeName() + \
">").c_str(), \
GThermo::typeName() + ">").c_str(), \
0 \
);
......
......@@ -52,8 +52,8 @@ namespace Foam
defineTemplateTypeNameAndDebugWithName \
( \
SS##Schem##Comp##SThermo##GThermo, \
(#SS"<"#Schem"<"#Comp"," + SThermo::typeName() + "," \
+ GThermo::typeName() + ">>").c_str(), \
(#SS"<" + word(Schem::typeName_()) + "<"#Comp"," + SThermo::typeName()\
+ "," + GThermo::typeName() + ">>").c_str(), \
0 \
); \
\
......@@ -76,7 +76,6 @@ namespace Foam
GThermo \
); \
\
\
makeSolidChemistrySolverType \
( \
ode, \
......
......@@ -33,6 +33,7 @@ laplacianSchemes
{
default none;
laplacian(thermo:alpha,h) Gauss linear uncorrected;
laplacian(kappa,T) Gauss harmonic uncorrected;
}
interpolationSchemes
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment