Commit 3e2425b7 authored by henry's avatar henry
Browse files
parents c8f03c3b 1665a862
......@@ -89,7 +89,7 @@ int main(int argc, char *argv[])
// ~~~~~~~~~~~~~~~~~~~~~~
scalar minRange = GREAT;
direction extrudeDir = -1;
direction extrudeDir = 4; //illegal value.
for (direction dir = 0; dir < 3; dir++)
{
......
......@@ -36,9 +36,10 @@ Description
- mesh with cells put into cellZones (-makeCellZones)
Note:
- Should work in parallel but cellZone interfaces cannot align with
processor boundaries so use the correct option in decomposition to
preserve those interfaces.
- Should work in parallel.
cellZones can differ on either side of processor boundaries in which case
the faces get moved from processor patch to directMapped patch. Not
ery well tested.
- If a cell zone gets split into more than one region it can detect
the largest matching region (-sloppyCellZones). This will accept any
region that covers more than 50% of the zone. It has to be a subset
......@@ -514,6 +515,10 @@ void getInterfaceSizes
EdgeMap<label>& interfaceSizes
)
{
// Internal faces
// ~~~~~~~~~~~~~~
forAll(mesh.faceNeighbour(), faceI)
{
label ownRegion = cellRegion[mesh.faceOwner()[faceI]];
......@@ -540,6 +545,47 @@ void getInterfaceSizes
}
}
// Boundary faces
// ~~~~~~~~~~~~~~
// Neighbour cellRegion.
labelList coupledRegion(mesh.nFaces()-mesh.nInternalFaces());
forAll(coupledRegion, i)
{
label cellI = mesh.faceOwner()[i+mesh.nInternalFaces()];
coupledRegion[i] = cellRegion[cellI];
}
syncTools::swapBoundaryFaceList(mesh, coupledRegion, false);
forAll(coupledRegion, i)
{
label faceI = i+mesh.nInternalFaces();
label ownRegion = cellRegion[mesh.faceOwner()[faceI]];
label neiRegion = coupledRegion[i];
if (ownRegion != neiRegion)
{
edge interface
(
min(ownRegion, neiRegion),
max(ownRegion, neiRegion)
);
EdgeMap<label>::iterator iter = interfaceSizes.find(interface);
if (iter != interfaceSizes.end())
{
iter()++;
}
else
{
interfaceSizes.insert(interface, 1);
}
}
}
if (sumParallel && Pstream::parRun())
{
if (Pstream::master())
......@@ -672,6 +718,17 @@ autoPtr<mapPolyMesh> createRegionMesh
}
// Neighbour cellRegion.
labelList coupledRegion(mesh.nFaces()-mesh.nInternalFaces());
forAll(coupledRegion, i)
{
label cellI = mesh.faceOwner()[i+mesh.nInternalFaces()];
coupledRegion[i] = cellRegion[cellI];
}
syncTools::swapBoundaryFaceList(mesh, coupledRegion, false);
// Topology change container. Start off from existing mesh.
polyTopoChange meshMod(mesh);
......@@ -691,16 +748,17 @@ autoPtr<mapPolyMesh> createRegionMesh
{
label faceI = exposedFaces[i];
if (!mesh.isInternalFace(faceI))
label ownRegion = cellRegion[mesh.faceOwner()[faceI]];
label neiRegion = -1;
if (mesh.isInternalFace(faceI))
{
FatalErrorIn("createRegionMesh(..)")
<< "Exposed face:" << faceI << " is not an internal face."
<< " fc:" << mesh.faceCentres()[faceI]
<< exit(FatalError);
neiRegion = cellRegion[mesh.faceNeighbour()[faceI]];
}
else
{
neiRegion = coupledRegion[faceI-mesh.nInternalFaces()];
}
label ownRegion = cellRegion[mesh.faceOwner()[faceI]];
label neiRegion = cellRegion[mesh.faceNeighbour()[faceI]];
label otherRegion = -1;
......@@ -1357,22 +1415,14 @@ int main(int argc, char *argv[])
}
}
// Different cellZones on either side of processor patch are not
// allowed for now. Convert to processorPatches or what?
// Different cellZones on either side of processor patch.
forAll(neiZoneID, i)
{
label faceI = i+mesh.nInternalFaces();
if (zoneID[mesh.faceOwner()[faceI]] != neiZoneID[i])
{
//blockedFace[faceI] = true;
FatalErrorIn(args.executable())
<< "Coupled face " << faceI
<< " fc:" << mesh.faceCentres()[faceI]
<< " has cellZone " << zoneID[mesh.faceOwner()[faceI]]
<< " on owner side but cellZone " << neiZoneID[i]
<< " on other side. This is not allowed."
<< exit(FatalError);
blockedFace[faceI] = true;
}
}
}
......
EXE_LIBS = \
-lautoMesh \
-lbarotropicCompressibilityModel \
-lbasicThermophysicalModels \
-lblockMesh \
-lchemistryModel \
-lreactionThermophysicalModels \
-lcoalCombustion \
-lcompressibleLESModels \
-lcompressibleRASModels \
-lcompressibleTurbulenceModel \
-lconversion \
-ldecompositionMethods \
-ldieselSpray \
-ldsmc \
-ldynamicFvMesh \
-ldynamicMesh \
-ledgeMesh \
-lengine \
-lerrorEstimation \
-lfieldFunctionObjects \
-lfiniteVolume \
-lforces \
-lfvMotionSolvers \
-lgenericPatchFields \
-lincompressibleLESModels \
-lincompressibleTransportModels \
-lcompressibleRASModels \
-lincompressibleRASModels \
-lincompressibleTransportModels \
-lincompressibleTurbulenceModel \
-linterfaceProperties \
-llagrangianIntermediate \
-lIOFunctionObjects \
-llagrangian \
-llagrangianIntermediate \
-llaminarFlameSpeedModels \
-lLESdeltas \
-lLESfilters \
-lliquidMixture \
-lliquids \
-lmeshTools \
-lmolecularMeasurements \
-lmolecule \
-lODE \
-lOpenFOAM \
-lpdf \
-lphaseModel \
-lpotential \
-lradiation \
-lrandomProcesses \
-lreactionThermophysicalModels \
-lsampling \
-lsolidMixture \
-lsolidParticle \
-lsolids \
-lspecie \
-lsurfMesh \
-lsystemCall \
-lthermalPorousZone \
-lthermophysicalFunctions \
-ltopoChangerFvMesh \
-ltriSurface \
-lautoMesh \
-lblockMesh
-lutilityFunctionObjects
......@@ -57,6 +57,7 @@ class argList;
class ensightMesh
{
public:
class nFacePrimitives
{
public:
......@@ -75,6 +76,7 @@ class ensightMesh
{}
};
private:
// Private data
......
......@@ -797,7 +797,7 @@ int main(int argc, char *argv[])
(
writer.getFaceField
(
fvc::interpolate(vsf[i])(),
linearInterpolate(vsf[i])(),
faceLabels
)()
);
......@@ -808,7 +808,7 @@ int main(int argc, char *argv[])
(
writer.getFaceField
(
fvc::interpolate(vvf[i])(),
linearInterpolate(vvf[i])(),
faceLabels
)()
);
......@@ -819,7 +819,7 @@ int main(int argc, char *argv[])
(
writer.getFaceField
(
fvc::interpolate(vSpheretf[i])(),
linearInterpolate(vSpheretf[i])(),
faceLabels
)()
);
......@@ -830,7 +830,7 @@ int main(int argc, char *argv[])
(
writer.getFaceField
(
fvc::interpolate(vSymmtf[i])(),
linearInterpolate(vSymmtf[i])(),
faceLabels
)()
);
......@@ -841,7 +841,7 @@ int main(int argc, char *argv[])
(
writer.getFaceField
(
fvc::interpolate(vtf[i])(),
linearInterpolate(vtf[i])(),
faceLabels
)()
);
......@@ -1094,7 +1094,7 @@ int main(int argc, char *argv[])
(
writer.getFaceField
(
fvc::interpolate(vsf[i])(),
linearInterpolate(vsf[i])(),
pp
)()
);
......@@ -1105,7 +1105,7 @@ int main(int argc, char *argv[])
(
writer.getFaceField
(
fvc::interpolate(vvf[i])(),
linearInterpolate(vvf[i])(),
pp
)()
);
......@@ -1116,7 +1116,7 @@ int main(int argc, char *argv[])
(
writer.getFaceField
(
fvc::interpolate(vSpheretf[i])(),
linearInterpolate(vSpheretf[i])(),
pp
)()
);
......@@ -1127,7 +1127,7 @@ int main(int argc, char *argv[])
(
writer.getFaceField
(
fvc::interpolate(vSymmtf[i])(),
linearInterpolate(vSymmtf[i])(),
pp
)()
);
......@@ -1138,7 +1138,7 @@ int main(int argc, char *argv[])
(
writer.getFaceField
(
fvc::interpolate(vtf[i])(),
linearInterpolate(vtf[i])(),
pp
)()
);
......
......@@ -172,7 +172,7 @@ template<class ListType>
ListType createWithValues
(
const label sz,
const typename ListType::const_reference initValue,
typename ListType::const_reference initValue,
const UList<label>& indices,
typename ListType::const_reference setValue
);
......
......@@ -129,28 +129,29 @@ void Foam::SHA1::processBytes(const void *data, size_t len)
}
// Process available complete blocks
if (len >= 64)
{
#if !_STRING_ARCH_unaligned
# define alignof(type) offsetof (struct { char c; type x; }, x)
# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
if (UNALIGNED_P (data))
{
while (len > 64)
// if (len >= 64)
// {
//#if !_STRING_ARCH_unaligned
//# define alignof(type) offsetof (struct { char c; type x; }, x)
//# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
// if (UNALIGNED_P (data))
// {
// while (len > 64)
while (len >= 64)
{
processBlock(memcpy (buffer_, data, 64), 64);
data = reinterpret_cast<const unsigned char*>(data) + 64;
len -= 64;
}
}
else
#endif
{
processBlock(data, len & ~63);
data = reinterpret_cast<const unsigned char*>(data) + (len & ~63);
len &= 63;
}
}
// }
// else
//#endif
// {
// processBlock(data, len & ~63);
// data = reinterpret_cast<const unsigned char*>(data) + (len & ~63);
// len &= 63;
// }
// }
// Move remaining bytes in internal buffer.
if (len > 0)
......
......@@ -157,14 +157,14 @@ namespace fvc
);
//- Interpolate tmp field onto faces using central differencing
//- Interpolate tmp field onto faces using 'interpolate(<name>)'
template<class Type>
static tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > interpolate
(
const tmp<GeometricField<Type, fvPatchField, volMesh> >& tvf
);
//- Interpolate field onto faces using central differencing
//- Interpolate tmp field onto faces using 'interpolate(<name>)'
template<class Type>
static tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > interpolate
(
......
......@@ -67,6 +67,10 @@ Foam::word Foam::PatchInteractionModel<CloudType>::interactionTypeToWord
return "other";
}
}
#ifdef __ICC
// Prevent Icc complaining about missing return statement.
return word::null;
#endif
}
......
Supports Markdown
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