mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge commit 'OpenCFD/master' into olesenm
This commit is contained in:
@ -316,6 +316,11 @@ meshQualityControls
|
||||
//must be >0 for Fluent compatibility
|
||||
minTriangleTwist -1;
|
||||
|
||||
//- if >0 : preserve single cells with all points on the surface if the
|
||||
// resulting volume after snapping is larger than minVolFraction times old
|
||||
// volume. If <0 : delete always.
|
||||
minVolFraction 0.1;
|
||||
|
||||
|
||||
// Advanced
|
||||
|
||||
|
||||
@ -23,16 +23,13 @@ Foam::label Foam::checkGeometry(const polyMesh& mesh, const bool allGeometry)
|
||||
scalar minDistSqr = magSqr(1e-6 * globalBb.span());
|
||||
|
||||
// Non-empty directions
|
||||
const Vector<label> validDirs = (mesh.directions() + Vector<label>::one)/2;
|
||||
const Vector<label> validDirs = (mesh.geometricD() + Vector<label>::one)/2;
|
||||
Info<< " Mesh (non-empty, non-wedge) directions " << validDirs << endl;
|
||||
|
||||
Info<< " Mesh (non-empty) directions " << validDirs << endl;
|
||||
const Vector<label> solDirs = (mesh.solutionD() + Vector<label>::one)/2;
|
||||
Info<< " Mesh (non-empty) directions " << solDirs << endl;
|
||||
|
||||
scalar nGeomDims = mesh.nGeometricD();
|
||||
|
||||
Info<< " Mesh (non-empty, non-wedge) dimensions "
|
||||
<< nGeomDims << endl;
|
||||
|
||||
if (nGeomDims < 3)
|
||||
if (mesh.nGeometricD() < 3)
|
||||
{
|
||||
pointSet nonAlignedPoints(mesh, "nonAlignedEdges", mesh.nPoints()/100);
|
||||
|
||||
|
||||
@ -59,7 +59,6 @@ processorVolPatchFieldDecomposer
|
||||
addressing_(addressingSlice.size()),
|
||||
weights_(addressingSlice.size())
|
||||
{
|
||||
const scalarField& weights = mesh.weights().internalField();
|
||||
const labelList& own = mesh.faceOwner();
|
||||
const labelList& neighb = mesh.faceNeighbour();
|
||||
|
||||
@ -72,15 +71,22 @@ processorVolPatchFieldDecomposer
|
||||
{
|
||||
// This is a regular face. it has been an internal face
|
||||
// of the original mesh and now it has become a face
|
||||
// on the parallel boundary
|
||||
addressing_[i].setSize(2);
|
||||
weights_[i].setSize(2);
|
||||
// on the parallel boundary.
|
||||
// Give face the value of the neighbour.
|
||||
|
||||
addressing_[i][0] = own[ai];
|
||||
addressing_[i][1] = neighb[ai];
|
||||
addressing_[i].setSize(1);
|
||||
weights_[i].setSize(1);
|
||||
weights_[i][0] = 1.0;
|
||||
|
||||
weights_[i][0] = weights[ai];
|
||||
weights_[i][1] = 1.0 - weights[ai];
|
||||
if (addressingSlice[i] >= 0)
|
||||
{
|
||||
// I have the owner so use the neighbour value
|
||||
addressing_[i][0] = neighb[ai];
|
||||
}
|
||||
else
|
||||
{
|
||||
addressing_[i][0] = own[ai];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -89,7 +95,7 @@ processorVolPatchFieldDecomposer
|
||||
// do the interpolation properly (I would need to look
|
||||
// up the different (face) list of data), so I will
|
||||
// just grab the value from the owner cell
|
||||
//
|
||||
|
||||
addressing_[i].setSize(1);
|
||||
weights_[i].setSize(1);
|
||||
|
||||
|
||||
@ -30,16 +30,16 @@
|
||||
|
||||
<!-- Global settings -->
|
||||
|
||||
<!-- Extrapolate Walls check-box -->
|
||||
<!-- Extrapolate Patches check-box -->
|
||||
<IntVectorProperty
|
||||
name="ExtrapolateWalls"
|
||||
command="SetExtrapolateWalls"
|
||||
name="ExtrapolatePatches"
|
||||
command="SetExtrapolatePatches"
|
||||
number_of_elements="1"
|
||||
default_values="0"
|
||||
animateable="0">
|
||||
<BooleanDomain name="bool"/>
|
||||
<Documentation>
|
||||
Extrapolate internalField to wall and empty patches
|
||||
Extrapolate internalField to non-constraint patches
|
||||
</Documentation>
|
||||
</IntVectorProperty>
|
||||
|
||||
|
||||
@ -64,7 +64,7 @@ vtkPV3FoamReader::vtkPV3FoamReader()
|
||||
|
||||
CacheMesh = 1;
|
||||
|
||||
ExtrapolateWalls = 0;
|
||||
ExtrapolatePatches = 0;
|
||||
IncludeSets = 0;
|
||||
IncludeZones = 0;
|
||||
ShowPatchNames = 0;
|
||||
|
||||
@ -65,9 +65,9 @@ public:
|
||||
vtkGetMacro(CacheMesh, int);
|
||||
|
||||
// Description:
|
||||
// FOAM extrapolate internal values onto the walls
|
||||
vtkSetMacro(ExtrapolateWalls, int);
|
||||
vtkGetMacro(ExtrapolateWalls, int);
|
||||
// FOAM extrapolate internal values onto the patches
|
||||
vtkSetMacro(ExtrapolatePatches, int);
|
||||
vtkGetMacro(ExtrapolatePatches, int);
|
||||
|
||||
// FOAM read sets control
|
||||
vtkSetMacro(IncludeSets, int);
|
||||
@ -183,7 +183,7 @@ private:
|
||||
int TimeStepRange[2];
|
||||
int CacheMesh;
|
||||
|
||||
int ExtrapolateWalls;
|
||||
int ExtrapolatePatches;
|
||||
int IncludeSets;
|
||||
int IncludeZones;
|
||||
int ShowPatchNames;
|
||||
|
||||
@ -659,29 +659,55 @@ void Foam::vtkPV3Foam::addPatchNames(vtkRenderer* renderer)
|
||||
}
|
||||
}
|
||||
|
||||
// Count number of zones we're actually going to display. This is truncated
|
||||
// to a max per patch
|
||||
|
||||
const label MAXPATCHZONES = 20;
|
||||
|
||||
label displayZoneI = 0;
|
||||
|
||||
forAll(pbMesh, patchI)
|
||||
{
|
||||
displayZoneI += min(MAXPATCHZONES, nZones[patchI]);
|
||||
}
|
||||
|
||||
|
||||
zoneCentre.shrink();
|
||||
|
||||
if (debug)
|
||||
{
|
||||
Info<< "patch zone centres = " << zoneCentre << nl
|
||||
<< "displayed zone centres = " << displayZoneI << nl
|
||||
<< "zones per patch = " << nZones << endl;
|
||||
}
|
||||
|
||||
// Set the size of the patch labels to max number of zones
|
||||
patchTextActorsPtrs_.setSize(zoneCentre.size());
|
||||
patchTextActorsPtrs_.setSize(displayZoneI);
|
||||
|
||||
if (debug)
|
||||
{
|
||||
Info<< "constructing patch labels" << endl;
|
||||
}
|
||||
|
||||
// Actor index
|
||||
displayZoneI = 0;
|
||||
|
||||
// Index in zone centres
|
||||
label globalZoneI = 0;
|
||||
|
||||
forAll(pbMesh, patchI)
|
||||
{
|
||||
const polyPatch& pp = pbMesh[patchI];
|
||||
|
||||
// Only selected patches will have a non-zero number of zones
|
||||
for (label i=0; i<nZones[patchI]; i++)
|
||||
label nDisplayZones = min(MAXPATCHZONES, nZones[patchI]);
|
||||
label increment = 1;
|
||||
if (nZones[patchI] >= MAXPATCHZONES)
|
||||
{
|
||||
increment = nZones[patchI]/MAXPATCHZONES;
|
||||
}
|
||||
|
||||
for (label i = 0; i < nDisplayZones; i++)
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
@ -719,14 +745,15 @@ void Foam::vtkPV3Foam::addPatchNames(vtkRenderer* renderer)
|
||||
|
||||
// Maintain a list of text labels added so that they can be
|
||||
// removed later
|
||||
patchTextActorsPtrs_[globalZoneI] = txt;
|
||||
patchTextActorsPtrs_[displayZoneI] = txt;
|
||||
|
||||
globalZoneI++;
|
||||
globalZoneI += increment;
|
||||
displayZoneI++;
|
||||
}
|
||||
}
|
||||
|
||||
// Resize the patch names list to the actual number of patch names added
|
||||
patchTextActorsPtrs_.setSize(globalZoneI);
|
||||
patchTextActorsPtrs_.setSize(displayZoneI);
|
||||
|
||||
if (debug)
|
||||
{
|
||||
|
||||
@ -132,8 +132,8 @@ void Foam::vtkPV3Foam::convertVolFields
|
||||
isType<emptyFvPatchField<Type> >(ptf)
|
||||
||
|
||||
(
|
||||
typeid(patches[patchId]) == typeid(wallPolyPatch)
|
||||
&& reader_->GetExtrapolateWalls()
|
||||
reader_->GetExtrapolatePatches()
|
||||
&& !polyPatch::constraintType(patches[patchId].type())
|
||||
)
|
||||
)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user