diff --git a/src/functionObjects/graphics/runTimePostProcessing/dummy/runTimePostProcessingDummy.H b/src/functionObjects/graphics/runTimePostProcessing/dummy/runTimePostProcessingDummy.H
index b71e771351..3ea20d753e 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/dummy/runTimePostProcessingDummy.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/dummy/runTimePostProcessingDummy.H
@@ -22,14 +22,14 @@ License
along with OpenFOAM. If not, see .
Class
- Foam::functionObjects::runTimePostPro::runTimePostProcessingDummy
+ Foam::functionObjects::runTimePostProcessingDummy
Group
grpGraphicsFunctionObjects
Description
- Dummy implementation of runTimePostProcessing to report when
- the real version is unavailable.
+ Dummy implementation of Foam::functionObjects::runTimePostProcessing
+ to report when the real version is unavailable.
SourceFiles
runTimePostProcessingDummy.C
diff --git a/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.C b/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.C
index 1a804abc4e..7d76795a1e 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.C
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -49,9 +49,11 @@ License
const Foam::Enum
<
- Foam::functionObjects::fieldVisualisationBase::colourByType
+ Foam::functionObjects::runTimePostPro::fieldVisualisationBase::
+ colourByType
>
-Foam::functionObjects::fieldVisualisationBase::colourByTypeNames
+Foam::functionObjects::runTimePostPro::fieldVisualisationBase::
+colourByTypeNames
({
{ colourByType::cbColour, "colour" },
{ colourByType::cbField, "field" },
@@ -59,9 +61,11 @@ Foam::functionObjects::fieldVisualisationBase::colourByTypeNames
const Foam::Enum
<
- Foam::functionObjects::fieldVisualisationBase::colourMapType
+ Foam::functionObjects::runTimePostPro::fieldVisualisationBase::
+ colourMapType
>
-Foam::functionObjects::fieldVisualisationBase::colourMapTypeNames
+Foam::functionObjects::runTimePostPro::fieldVisualisationBase::
+colourMapTypeNames
({
{ colourMapType::cmRainbow, "rainbow" },
{ colourMapType::cmBlueWhiteRed, "blueWhiteRed" },
@@ -72,7 +76,8 @@ Foam::functionObjects::fieldVisualisationBase::colourMapTypeNames
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
-void Foam::functionObjects::fieldVisualisationBase::setColourMap
+void Foam::functionObjects::runTimePostPro::fieldVisualisationBase::
+setColourMap
(
vtkLookupTable* lut
) const
@@ -130,7 +135,8 @@ void Foam::functionObjects::fieldVisualisationBase::setColourMap
}
-void Foam::functionObjects::fieldVisualisationBase::addScalarBar
+void Foam::functionObjects::runTimePostPro::fieldVisualisationBase::
+addScalarBar
(
const scalar position,
vtkRenderer* renderer,
@@ -239,7 +245,8 @@ void Foam::functionObjects::fieldVisualisationBase::addScalarBar
}
-void Foam::functionObjects::fieldVisualisationBase::setField
+void Foam::functionObjects::runTimePostPro::fieldVisualisationBase::
+setField
(
const scalar position,
const word& colourFieldName,
@@ -272,11 +279,11 @@ void Foam::functionObjects::fieldVisualisationBase::setField
// Note: if both point and cell data exists, preferentially
// choosing point data. This is often the case when using
// glyphs
- if (pData->GetPointData()->HasArray(fieldName) == 1)
+ if (pData->GetPointData()->HasArray(fieldName))
{
mapper->SetScalarModeToUsePointFieldData();
}
- else if (pData->GetCellData()->HasArray(fieldName) == 1)
+ else if (pData->GetCellData()->HasArray(fieldName))
{
mapper->SetScalarModeToUseCellFieldData();
}
@@ -302,8 +309,8 @@ void Foam::functionObjects::fieldVisualisationBase::setField
}
-
-void Foam::functionObjects::fieldVisualisationBase::addGlyphs
+void Foam::functionObjects::runTimePostPro::fieldVisualisationBase::
+addGlyphs
(
const scalar position,
const word& scaleFieldName,
@@ -320,20 +327,49 @@ void Foam::functionObjects::fieldVisualisationBase::addGlyphs
glyph->SetInputData(data);
glyph->ScalingOn();
- bool ok = true;
+
+ bool needPointData = false;
// Determine whether we have scalar or vector data
+ // and if we need to convert CellData -> PointData
+
label nComponents = -1;
const char* scaleFieldNameChar = scaleFieldName.c_str();
- if (data->GetPointData()->HasArray(scaleFieldNameChar) == 1)
+ if (data->GetPointData()->HasArray(scaleFieldNameChar))
{
nComponents =
data->GetPointData()->GetArray(scaleFieldNameChar)
->GetNumberOfComponents();
}
- else if (data->GetCellData()->HasArray(scaleFieldNameChar) == 1)
+ else if (data->GetCellData()->HasArray(scaleFieldNameChar))
+ {
+ // Need to convert CellData to PointData
+ needPointData = true;
+
+ nComponents =
+ data->GetCellData()->GetArray(scaleFieldNameChar)
+ ->GetNumberOfComponents();
+ }
+ else
+ {
+ WarningInFunction
+ << "Cannot add glyphs. No such cell or point field: "
+ << scaleFieldName << endl;
+ return;
+ }
+
+
+ const bool ok = (nComponents == 1 || nComponents == 3);
+
+ if (!ok)
+ {
+ WarningInFunction
+ << "Glyphs can only be added to scalar or vector data. "
+ << "Unable to process field " << scaleFieldName << endl;
+ return;
+ }
+ else if (needPointData)
{
- // Need to convert cell data to point data
auto cellToPoint = vtkSmartPointer::New();
cellToPoint->SetInputData(data);
cellToPoint->Update();
@@ -342,16 +378,8 @@ void Foam::functionObjects::fieldVisualisationBase::addGlyphs
// Store in main vtkPolyData
data->GetPointData()->AddArray(pData);
+ }
- nComponents = pData->GetNumberOfComponents();
- }
- else
- {
- WarningInFunction
- << "Glyphs can only be added to scalar or vector data. "
- << "Unable to process field " << scaleFieldName << endl;
- return;
- }
if (nComponents == 1)
{
@@ -367,18 +395,16 @@ void Foam::functionObjects::fieldVisualisationBase::addGlyphs
if (maxGlyphLength > 0)
{
- double range[2];
+ // Can get range from point data:
- // Can use values to find range
+ // double range[2];
// vtkDataArray* values =
// data->GetPointData()->GetScalars(scaleFieldNameChar);
// values->GetRange(range);
// Set range according to user-supplied limits
- range[0] = range_.first();
- range[1] = range_.second();
glyph->ClampingOn();
- glyph->SetRange(range);
+ glyph->SetRange(range_.first(), range_.second());
// If range[0] != min(value), maxGlyphLength behaviour will not
// be correct...
@@ -450,15 +476,7 @@ void Foam::functionObjects::fieldVisualisationBase::addGlyphs
scaleFieldNameChar
);
}
- else
- {
- WarningInFunction
- << "Glyphs can only be added to scalar and vector fields."
- << " Field " << scaleFieldName << " has " << nComponents
- << " components" << endl;
- ok = false;
- }
if (ok)
{
@@ -477,10 +495,11 @@ void Foam::functionObjects::fieldVisualisationBase::addGlyphs
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
-Foam::functionObjects::fieldVisualisationBase::fieldVisualisationBase
+Foam::functionObjects::runTimePostPro::fieldVisualisationBase::
+fieldVisualisationBase
(
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
colours_(colours),
@@ -504,16 +523,17 @@ Foam::functionObjects::fieldVisualisationBase::fieldVisualisationBase
colourMapTypeNames.readIfPresent("colourMap", dict, colourMap_);
- const dictionary& sbarDict = dict.subDict("scalarBar");
- sbarDict.readEntry("visible", scalarBar_.visible_);
+ const dictionary& sbDict = dict.subDict("scalarBar");
+ sbDict.readEntry("visible", scalarBar_.visible_);
+
if (scalarBar_.visible_)
{
- sbarDict.readEntry("vertical", scalarBar_.vertical_);
- sbarDict.readEntry("position", scalarBar_.position_);
- sbarDict.readEntry("title", scalarBar_.title_);
- sbarDict.readEntry("fontSize", scalarBar_.fontSize_);
- sbarDict.readEntry("labelFormat", scalarBar_.labelFormat_);
- sbarDict.readEntry("numberOfLabels", scalarBar_.numberOfLabels_);
+ sbDict.readEntry("vertical", scalarBar_.vertical_);
+ sbDict.readEntry("position", scalarBar_.position_);
+ sbDict.readEntry("title", scalarBar_.title_);
+ sbDict.readEntry("fontSize", scalarBar_.fontSize_);
+ sbDict.readEntry("labelFormat", scalarBar_.labelFormat_);
+ sbDict.readEntry("numberOfLabels", scalarBar_.numberOfLabels_);
}
break;
}
@@ -523,21 +543,23 @@ Foam::functionObjects::fieldVisualisationBase::fieldVisualisationBase
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
-Foam::functionObjects::fieldVisualisationBase::~fieldVisualisationBase()
+Foam::functionObjects::runTimePostPro::fieldVisualisationBase::
+~fieldVisualisationBase()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
const Foam::HashPtrTable, Foam::word>&
-Foam::functionObjects::fieldVisualisationBase::colours() const
+Foam::functionObjects::runTimePostPro::fieldVisualisationBase::colours() const
{
return colours_;
}
const Foam::word&
-Foam::functionObjects::fieldVisualisationBase::fieldName() const
+Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldName()
+const
{
return fieldName_;
}
diff --git a/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.H b/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.H
index 4f8341a619..afc6477137 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/fieldVisualisationBase.H
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see .
Class
- Foam::functionObjects::fieldVisualisationBase
+ Foam::functionObjects::runTimePostPro::fieldVisualisationBase
Description
Base class for scene objects
@@ -42,26 +42,29 @@ SourceFiles
#include "HashPtrTable.H"
#include "Function1.H"
+// VTK includes
#include "vtkSmartPointer.h"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Forward declarations
class vtkActor;
class vtkLookupTable;
+class vtkMapper;
class vtkPolyData;
class vtkPolyDataMapper;
class vtkRenderer;
-
-class vtkMapper;
-
namespace Foam
{
namespace functionObjects
{
-
+// Forward declarations
class runTimePostProcessing;
+namespace runTimePostPro
+{
+
/*---------------------------------------------------------------------------*\
Class fieldVisualisationBase Declaration
\*---------------------------------------------------------------------------*/
@@ -91,20 +94,9 @@ public:
static const Enum colourMapTypeNames;
-private:
-
- // Private Member Functions
-
- //- No copy construct
- fieldVisualisationBase(const fieldVisualisationBase&) = delete;
-
- //- No copy assignment
- void operator=(const fieldVisualisationBase&) = delete;
-
-
protected:
- // Protected data
+ // Protected Data
struct scalarBar
{
@@ -118,7 +110,7 @@ protected:
};
//- Colours
- const HashPtrTable, word>& colours_;
+ const HashPtrTable>& colours_;
//- Field name
word fieldName_;
@@ -171,6 +163,12 @@ protected:
vtkRenderer* renderer
) const;
+ //- No copy construct
+ fieldVisualisationBase(const fieldVisualisationBase&) = delete;
+
+ //- No copy assignment
+ void operator=(const fieldVisualisationBase&) = delete;
+
public:
@@ -180,7 +178,7 @@ public:
fieldVisualisationBase
(
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
@@ -190,18 +188,19 @@ public:
// Member Functions
- // Access
+ // Access
- //- Return the colours
- const HashPtrTable, word>& colours() const;
+ //- Return the colours
+ const HashPtrTable>& colours() const;
- //- Return the field name
- const word& fieldName() const;
+ //- Return the field name
+ const word& fieldName() const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+} // End namespace runTimePostPro
} // End namespace functionObjects
} // End namespace Foam
diff --git a/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.C b/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.C
index 11475a3b2a..28d4fbffb3 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.C
@@ -79,7 +79,7 @@ Foam::functionObjects::runTimePostPro::functionObjectBase::functionObjectBase
(
const stateFunctionObject& state,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
fieldVisualisationBase(dict, colours),
diff --git a/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.H b/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.H
index 7515024521..47647fc5e7 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/functionObjectBase.H
@@ -109,13 +109,13 @@ protected:
// \note does not change the stateFunctionObject
bool removeFile(const word& keyword, const word& subDictName);
-
//- No copy construct
functionObjectBase(const functionObjectBase&) = delete;
//- No copy assignment
void operator=(const functionObjectBase&) = delete;
+
public:
//- Run-time type information
@@ -129,7 +129,7 @@ public:
(
const stateFunctionObject& state,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
diff --git a/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.C b/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.C
index ce98b41226..e8645f118b 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.C
@@ -35,10 +35,12 @@ License
#include "vtkSmartPointer.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
-#include "vtkXMLPolyDataReader.h"
-#include "vtkPolyDataReader.h"
#include "vtkProperty.h"
+// VTK Readers
+#include "vtkPolyDataReader.h"
+#include "vtkXMLPolyDataReader.h"
+
// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
namespace Foam
@@ -60,7 +62,7 @@ Foam::functionObjects::runTimePostPro::functionObjectCloud::functionObjectCloud
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
pointData(parent, dict, colours),
@@ -101,7 +103,6 @@ addGeometryToScene
// containing all fields.
inputFileName_ = getFileName("file", cloudName_);
- inputFileName_.expand();
if (inputFileName_.empty())
{
@@ -113,6 +114,7 @@ addGeometryToScene
return;
}
+
vtkSmartPointer dataset;
if (inputFileName_.hasExt("vtp"))
@@ -128,9 +130,17 @@ addGeometryToScene
// Invalid name - ignore.
// Don't support VTK legacy format at all - it is too wasteful
// and cumbersome.
+
+ WarningInFunction
+ << "Could not read "<< inputFileName_ << nl
+ << "Only VTK (.vtp) files are supported"
+ << ". Cloud will not be processed"
+ << endl;
+
inputFileName_.clear();
}
+
if (dataset)
{
auto mapper = vtkSmartPointer::New();
diff --git a/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.H b/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.H
index 74888b234d..121e815a01 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/functionObjectCloud.H
@@ -56,20 +56,9 @@ class functionObjectCloud
public pointData,
public functionObjectBase
{
-private:
-
- // Private Member Functions
-
- //- No copy construct
- functionObjectCloud(const functionObjectCloud&) = delete;
-
- //- No copy assignment
- void operator=(const functionObjectCloud&) = delete;
-
-
protected:
- // Protected data
+ // Protected Data
//- Name of functionObjectCloud
word cloudName_;
@@ -83,6 +72,16 @@ protected:
//- Actor
vtkSmartPointer actor_;
+
+ // Protected Member Functions
+
+ //- No copy construct
+ functionObjectCloud(const functionObjectCloud&) = delete;
+
+ //- No copy assignment
+ void operator=(const functionObjectCloud&) = delete;
+
+
public:
//- Run-time type information
@@ -96,7 +95,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
diff --git a/src/functionObjects/graphics/runTimePostProcessing/functionObjectLine.C b/src/functionObjects/graphics/runTimePostProcessing/functionObjectLine.C
index ca0ba78ac8..3eeffed2c6 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/functionObjectLine.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/functionObjectLine.C
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -30,11 +30,15 @@ License
// VTK includes
#include "vtkActor.h"
+#include "vtkPolyData.h"
+#include "vtkPolyDataMapper.h"
+#include "vtkProperty.h"
#include "vtkRenderer.h"
#include "vtkSmartPointer.h"
-#include "vtkPolyDataMapper.h"
+
+// VTK Readers
#include "vtkPolyDataReader.h"
-#include "vtkProperty.h"
+#include "vtkXMLPolyDataReader.h"
// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
@@ -51,13 +55,51 @@ namespace runTimePostPro
}
+// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
+
+namespace
+{
+
+static vtkSmartPointer getPolyDataFile(const Foam::fileName& fName)
+{
+ // Not extremely elegant...
+ vtkSmartPointer dataset;
+
+ if (fName.ext() == "vtk")
+ {
+ auto reader = vtkSmartPointer::New();
+
+ reader->SetFileName(fName.c_str());
+ reader->Update();
+ dataset = reader->GetOutput();
+
+ return dataset;
+ }
+
+ if (fName.ext() == "vtp")
+ {
+ auto reader = vtkSmartPointer::New();
+
+ reader->SetFileName(fName.c_str());
+ reader->Update();
+ dataset = reader->GetOutput();
+
+ return dataset;
+ }
+
+ return dataset;
+}
+
+} // End anonymous namespace
+
+
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::functionObjects::runTimePostPro::functionObjectLine::functionObjectLine
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
pathline(parent, dict, colours),
@@ -99,21 +141,28 @@ addGeometryToScene
return;
}
- if (fName.hasExt("vtk"))
+
+ auto polyData = getPolyDataFile(fName);
+
+ if (!polyData || polyData->GetNumberOfPoints() == 0)
{
- auto lines = vtkSmartPointer::New();
- lines->SetFileName(fName.c_str());
- lines->Update();
-
- auto mapper = vtkSmartPointer::New();
- setField(position, fieldName_, mapper, renderer, lines->GetOutput());
-
- actor_->SetMapper(mapper);
-
- addLines(position, actor_, lines->GetOutput());
-
- renderer->AddActor(actor_);
+ WarningInFunction
+ << "Could not read "<< fName << nl
+ << "Only VTK (.vtp, .vtk) files are supported"
+ << endl;
+ return;
}
+
+
+ auto mapper = vtkSmartPointer::New();
+
+ setField(position, fieldName_, mapper, renderer, polyData);
+
+ actor_->SetMapper(mapper);
+
+ addLines(position, actor_, polyData);
+
+ renderer->AddActor(actor_);
}
@@ -126,6 +175,7 @@ void Foam::functionObjects::runTimePostPro::functionObjectLine::updateActors
actor_->GetProperty()->SetOpacity(opacity(position));
}
+
bool Foam::functionObjects::runTimePostPro::functionObjectLine::clear()
{
if (functionObjectBase::clear())
diff --git a/src/functionObjects/graphics/runTimePostProcessing/functionObjectLine.H b/src/functionObjects/graphics/runTimePostProcessing/functionObjectLine.H
index f4e31d0d95..1d4b43d1c7 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/functionObjectLine.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/functionObjectLine.H
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -56,9 +56,15 @@ class functionObjectLine
public pathline,
public functionObjectBase
{
-private:
+protected:
- // Private Member Functions
+ // Protected Data
+
+ //- Actor
+ vtkSmartPointer actor_;
+
+
+ // Protected Member Functions
//- No copy construct
functionObjectLine(const functionObjectLine&) = delete;
@@ -67,14 +73,6 @@ private:
void operator=(const functionObjectLine&) = delete;
-protected:
-
- // Protected data
-
- //- Actor
- vtkSmartPointer actor_;
-
-
public:
//- Run-time type information
@@ -88,7 +86,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
diff --git a/src/functionObjects/graphics/runTimePostProcessing/functionObjectSurface.C b/src/functionObjects/graphics/runTimePostProcessing/functionObjectSurface.C
index 1d2e4d737a..f7f694b50d 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/functionObjectSurface.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/functionObjectSurface.C
@@ -30,12 +30,16 @@ License
// VTK includes
#include "vtkActor.h"
+#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
-#include "vtkPolyDataReader.h"
#include "vtkProperty.h"
#include "vtkRenderer.h"
#include "vtkSmartPointer.h"
+// VTK Readers
+#include "vtkPolyDataReader.h"
+#include "vtkXMLPolyDataReader.h"
+
// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
namespace Foam
@@ -51,6 +55,44 @@ namespace runTimePostPro
}
+// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
+
+namespace
+{
+
+static vtkSmartPointer getPolyDataFile(const Foam::fileName& fName)
+{
+ // Not extremely elegant...
+ vtkSmartPointer dataset;
+
+ if (fName.ext() == "vtk")
+ {
+ auto reader = vtkSmartPointer::New();
+
+ reader->SetFileName(fName.c_str());
+ reader->Update();
+ dataset = reader->GetOutput();
+
+ return dataset;
+ }
+
+ if (fName.ext() == "vtp")
+ {
+ auto reader = vtkSmartPointer::New();
+
+ reader->SetFileName(fName.c_str());
+ reader->Update();
+ dataset = reader->GetOutput();
+
+ return dataset;
+ }
+
+ return dataset;
+}
+
+} // End anonymous namespace
+
+
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::functionObjects::runTimePostPro::functionObjectSurface::
@@ -58,7 +100,7 @@ functionObjectSurface
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
geometrySurface(parent, dict, colours, List()),
@@ -99,37 +141,38 @@ addGeometryToScene
}
+ auto polyData = getPolyDataFile(fName);
+
+ if (!polyData || polyData->GetNumberOfPoints() == 0)
+ {
+ WarningInFunction
+ << "Could not read "<< fName << nl
+ << "Only VTK (.vtp, .vtk) files are supported"
+ << endl;
+ return;
+ }
+
if (representation_ == rtGlyph)
{
- auto surf = vtkSmartPointer::New();
- surf->SetFileName(fName.c_str());
- surf->Update();
-
addGlyphs
(
position,
fieldName_,
fieldName_,
maxGlyphLength_,
- surf->GetOutput(),
+ polyData,
surfaceActor_,
renderer
);
- return;
}
-
- if (fName.hasExt("vtk"))
+ else
{
- auto surf = vtkSmartPointer::New();
- surf->SetFileName(fName.c_str());
- surf->Update();
-
- addFeatureEdges(renderer, surf->GetOutput());
+ addFeatureEdges(renderer, polyData);
auto mapper = vtkSmartPointer::New();
- mapper->SetInputConnection(surf->GetOutputPort());
+ mapper->SetInputData(polyData);
- setField(position, fieldName_, mapper, renderer, surf->GetOutput());
+ setField(position, fieldName_, mapper, renderer, polyData);
surfaceActor_->SetMapper(mapper);
@@ -137,12 +180,6 @@ addGeometryToScene
renderer->AddActor(surfaceActor_);
}
- else
- {
- WarningInFunction
- << "Only VTK file types are supported"
- << endl;
- }
}
diff --git a/src/functionObjects/graphics/runTimePostProcessing/functionObjectSurface.H b/src/functionObjects/graphics/runTimePostProcessing/functionObjectSurface.H
index f8176288c0..d7ee396eb0 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/functionObjectSurface.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/functionObjectSurface.H
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -56,10 +56,9 @@ class functionObjectSurface
public geometrySurface,
public functionObjectBase
{
+protected:
-private:
-
- // Private Member Functions
+ // Protected Member Functions
//- No copy construct
functionObjectSurface(const functionObjectSurface&) = delete;
@@ -81,7 +80,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
diff --git a/src/functionObjects/graphics/runTimePostProcessing/geometryBase.C b/src/functionObjects/graphics/runTimePostProcessing/geometryBase.C
index 7edb7f1748..299c2ee761 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/geometryBase.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/geometryBase.C
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -27,6 +27,7 @@ License
#include "runTimePostProcessing.H"
#include "Constant.H"
+// VTK includes
#include "vtkActor.h"
#include "vtkProperty.h"
@@ -81,7 +82,7 @@ Foam::functionObjects::runTimePostPro::geometryBase::geometryBase
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
parent_(parent),
@@ -96,7 +97,7 @@ Foam::functionObjects::runTimePostPro::geometryBase::geometryBase
{
if (dict.found("opacity"))
{
- opacity_.reset(Function1::New("opacity", dict).ptr());
+ opacity_.reset(Function1::New("opacity", dict));
}
else
{
diff --git a/src/functionObjects/graphics/runTimePostProcessing/geometryBase.H b/src/functionObjects/graphics/runTimePostProcessing/geometryBase.H
index 2ed82fe9c9..24ac7026f5 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/geometryBase.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/geometryBase.H
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -43,6 +43,7 @@ SourceFiles
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Forward declarations
class vtkRenderer;
class vtkActor;
@@ -51,6 +52,7 @@ namespace Foam
namespace functionObjects
{
+// Forward declarations
class runTimePostProcessing;
namespace runTimePostPro
@@ -78,17 +80,6 @@ public:
static const Enum renderModeTypeNames;
-private:
-
- // Private Member Functions
-
- //- No copy construct
- geometryBase(const geometryBase&) = delete;
-
- //- No copy assignment
- void operator=(const geometryBase&) = delete;
-
-
protected:
// Protected data
@@ -109,7 +100,7 @@ protected:
autoPtr> opacity_;
//- Reference to the colours
- const HashPtrTable, word>& colours_;
+ const HashPtrTable>& colours_;
// Protected functions
@@ -117,6 +108,12 @@ protected:
//- Initialise actor
void initialiseActor(vtkActor* actor) const;
+ //- No copy construct
+ geometryBase(const geometryBase&) = delete;
+
+ //- No copy assignment
+ void operator=(const geometryBase&) = delete;
+
public:
@@ -127,7 +124,7 @@ public:
(
const runTimePostProcessing& parent_,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
@@ -137,24 +134,26 @@ public:
// Member Functions
- // Access
+ // Access
- //- Return the reference to the parent function object
- const runTimePostProcessing& parent() const;
+ //- Return the reference to the parent function object
+ const runTimePostProcessing& parent() const;
- //- Return the name
- const word& name() const;
+ //- Return the name
+ const word& name() const;
- //- Return the visible flag
- bool visible() const;
+ //- Return the visible flag
+ bool visible() const;
- //- Return the opacity
- scalar opacity(const scalar position) const;
+ //- Return the opacity
+ scalar opacity(const scalar position) const;
- //- Return reference to the colours
- const HashPtrTable, word>& colours() const;
+ //- Return reference to the colours
+ const HashPtrTable>& colours() const;
+ // Scene interaction
+
//- Add geometry to scene
virtual void addGeometryToScene
(
diff --git a/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.C b/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.C
index 06cb8123bf..583ec45fcd 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.C
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -26,7 +26,8 @@ License
// OpenFOAM includes
#include "geometrySurface.H"
#include "stringOps.H"
-#include "triSurface.H"
+#include "foamVtkTools.H"
+#include "MeshedSurfaces.H"
#include "runTimePostProcessing.H"
#include "addToRunTimeSelectionTable.H"
@@ -42,7 +43,12 @@ License
#include "vtkProperty.h"
#include "vtkRenderer.h"
#include "vtkSmartPointer.h"
-#include "vtkTriangle.h"
+
+// VTK Readers
+#include "vtkOBJReader.h"
+#include "vtkSTLReader.h"
+#include "vtkPolyDataReader.h"
+#include "vtkXMLPolyDataReader.h"
// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
@@ -58,6 +64,78 @@ namespace runTimePostPro
}
}
+
+// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
+
+namespace
+{
+
+static vtkSmartPointer getPolyDataFile(const Foam::fileName& fName)
+{
+ // Not extremely elegant...
+ vtkSmartPointer dataset;
+
+ if (fName.ext() == "vtk")
+ {
+ auto reader = vtkSmartPointer::New();
+
+ reader->SetFileName(fName.c_str());
+ reader->Update();
+ dataset = reader->GetOutput();
+
+ return dataset;
+ }
+
+ if (fName.ext() == "vtp")
+ {
+ auto reader = vtkSmartPointer::New();
+
+ reader->SetFileName(fName.c_str());
+ reader->Update();
+ dataset = reader->GetOutput();
+
+ return dataset;
+ }
+
+ if (fName.ext() == "obj")
+ {
+ auto reader = vtkSmartPointer::New();
+
+ reader->SetFileName(fName.c_str());
+ reader->Update();
+ dataset = reader->GetOutput();
+
+ return dataset;
+ }
+
+ if (fName.ext() == "stl" || fName.ext() == "stlb")
+ {
+ auto reader = vtkSmartPointer::New();
+
+ reader->SetFileName(fName.c_str());
+ reader->Update();
+ dataset = reader->GetOutput();
+
+ return dataset;
+ }
+
+
+ // Fallback to using OpenFOAM to read the surface and convert afterwards
+ Foam::meshedSurface surf(fName);
+
+ dataset = Foam::vtk::Tools::Patch::mesh(surf);
+
+ dataset->GetCellData()->SetNormals
+ (
+ Foam::vtk::Tools::Patch::faceNormals(surf)
+ );
+
+ return dataset;
+}
+
+} // End anonymous namespace
+
+
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
void Foam::functionObjects::runTimePostPro::geometrySurface::addGeometryToScene
@@ -74,53 +152,22 @@ void Foam::functionObjects::runTimePostPro::geometrySurface::addGeometryToScene
<< " object" << exit(FatalError);
}
- triSurface surf(fName);
+ auto surf = getPolyDataFile(fName);
- const Field& surfPoints = surf.points();
- const Field& surfFaceNormals = surf.faceNormals();
-
- auto points = vtkSmartPointer::New();
- auto triangles = vtkSmartPointer::New();
- auto faceNormals = vtkSmartPointer::New();
-
- faceNormals->SetNumberOfComponents(3);
-
- forAll(surfPoints, i)
+ if (!surf || surf->GetNumberOfPoints() == 0)
{
- const point& pt = surfPoints[i];
- points->InsertNextPoint(pt.x(), pt.y(), pt.z());
+ FatalErrorInFunction
+ << "Could not read "<< fName << nl
+ << exit(FatalError);
}
- forAll(surf, i)
- {
- const Foam::face& f = surf[i];
-
- auto triangle = vtkSmartPointer::New();
- triangle->GetPointIds()->SetId(0, f[0]);
- triangle->GetPointIds()->SetId(1, f[1]);
- triangle->GetPointIds()->SetId(2, f[2]);
- triangles->InsertNextCell(triangle);
-
- double n[3];
- n[0] = surfFaceNormals[i].x();
- n[1] = surfFaceNormals[i].y();
- n[2] = surfFaceNormals[i].z();
-
- faceNormals->InsertNextTuple(n);
- }
-
- surf.clearOut();
-
- auto polyData = vtkSmartPointer::New();
- polyData->SetPoints(points);
- polyData->SetPolys(triangles);
- polyData->GetCellData()->SetNormals(faceNormals);
-
auto mapper = vtkSmartPointer::New();
- mapper->ScalarVisibilityOff();
- mapper->SetInputData(polyData);
- addFeatureEdges(renderer, polyData);
+ mapper->ScalarVisibilityOff();
+
+ mapper->SetInputData(surf);
+
+ addFeatureEdges(renderer, surf);
surfaceActor_->SetMapper(mapper);
@@ -136,7 +183,7 @@ Foam::functionObjects::runTimePostPro::geometrySurface::geometrySurface
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
surface(parent, dict, colours),
@@ -150,7 +197,7 @@ Foam::functionObjects::runTimePostPro::geometrySurface::geometrySurface
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours,
+ const HashPtrTable>& colours,
const List& fileNames
)
:
@@ -159,12 +206,6 @@ Foam::functionObjects::runTimePostPro::geometrySurface::geometrySurface
{}
-// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
-
-Foam::functionObjects::runTimePostPro::geometrySurface::~geometrySurface()
-{}
-
-
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void Foam::functionObjects::runTimePostPro::geometrySurface::addGeometryToScene
@@ -178,10 +219,10 @@ void Foam::functionObjects::runTimePostPro::geometrySurface::addGeometryToScene
return;
}
- forAll(fileNames_, i)
+ for (fileName f : fileNames_) // Use a copy
{
- fileName fName = fileNames_[i].expand();
- addGeometryToScene(position, renderer, fName);
+ f.expand();
+ addGeometryToScene(position, renderer, f);
}
}
@@ -210,8 +251,8 @@ void Foam::functionObjects::runTimePostPro::geometrySurface::updateActors
bool Foam::functionObjects::runTimePostPro::geometrySurface::clear()
{
- // Note: not removing geometry files
- // - these are usually static files that are used e.g. for meshing
+ // Note: do not remove geometry files
+ // - often static files used for other purposes as well (eg meshing)
return true;
}
diff --git a/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.H b/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.H
index 634a5e4877..2f5cdacae8 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/geometrySurface.H
@@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see .
Class
- Foam::geometrySurface
+ Foam::functionObjects::runTimePostPro::geometrySurface
Description
Visualisation of surface geometry data
@@ -39,6 +39,7 @@ SourceFiles
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Forward declarations
class vtkPolyData;
namespace Foam
@@ -56,17 +57,6 @@ class geometrySurface
:
public surface
{
-private:
-
- // Private Member Functions
-
- //- No copy construct
- geometrySurface(const geometrySurface&) = delete;
-
- //- No copy assignment
- void operator=(const geometrySurface&) = delete;
-
-
protected:
// Protected data
@@ -85,6 +75,12 @@ protected:
const fileName& fName
) const;
+ //- No copy construct
+ geometrySurface(const geometrySurface&) = delete;
+
+ //- No copy assignment
+ void operator=(const geometrySurface&) = delete;
+
public:
@@ -99,7 +95,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
//- Construct from components
@@ -107,18 +103,18 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours,
+ const HashPtrTable>& colours,
const List& fileNames
);
//- Destructor
- virtual ~geometrySurface();
+ virtual ~geometrySurface() = default;
// Member Functions
- //- Add surface(s) to scene
+ //- Add geometry surface(s) to scene
virtual void addGeometryToScene
(
const scalar position,
diff --git a/src/functionObjects/graphics/runTimePostProcessing/pathline.C b/src/functionObjects/graphics/runTimePostProcessing/pathline.C
index f85cbd8a2a..ed6355728f 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/pathline.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/pathline.C
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -78,7 +78,7 @@ void Foam::functionObjects::runTimePostPro::pathline::addLines
actor->GetProperty()->SetColor(colour[0], colour[1], colour[2]);
vtkPolyDataMapper* mapper =
- vtkPolyDataMapper::SafeDownCast(actor->GetMapper());
+ vtkPolyDataMapper::SafeDownCast(actor->GetMapper());
switch (representation_)
{
@@ -123,7 +123,7 @@ Foam::functionObjects::runTimePostPro::pathline::pathline
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
geometryBase(parent, dict, colours),
@@ -136,7 +136,7 @@ Foam::functionObjects::runTimePostPro::pathline::pathline
{
if (dict.found("lineColour"))
{
- lineColour_.reset(Function1::New("lineColour", dict).ptr());
+ lineColour_.reset(Function1::New("lineColour", dict));
}
else
{
@@ -174,7 +174,7 @@ Foam::functionObjects::runTimePostPro::pathline::New
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours,
+ const HashPtrTable>& colours,
const word& pathlineType
)
{
diff --git a/src/functionObjects/graphics/runTimePostProcessing/pathline.H b/src/functionObjects/graphics/runTimePostProcessing/pathline.H
index 7b452b48eb..59f43c5911 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/pathline.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/pathline.H
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd
+ \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -22,9 +22,10 @@ License
along with OpenFOAM. If not, see .
Class
- Foam::pathline
+ Foam::functionObjects::runTimePostPro::pathline
Description
+ Visualisation of line data (eg, streamlines)
SourceFiles
pathline.C
@@ -40,6 +41,7 @@ SourceFiles
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Forward declarations
class vtkActor;
class vtkPolyData;
class vtkPolyDataMapper;
@@ -74,17 +76,6 @@ public:
static const Enum representationTypeNames;
-private:
-
- // Private Member Functions
-
- //- No copy construct
- pathline(const pathline&) = delete;
-
- //- No copy assignment
- void operator=(const pathline&) = delete;
-
-
protected:
// Protected data
@@ -109,6 +100,12 @@ protected:
vtkPolyData* data
) const;
+ //- No copy construct
+ pathline(const pathline&) = delete;
+
+ //- No copy assignment
+ void operator=(const pathline&) = delete;
+
public:
@@ -126,7 +123,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
),
(parent, dict, colours)
);
@@ -139,7 +136,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
@@ -150,7 +147,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours,
+ const HashPtrTable>& colours,
const word& pathlineName
);
diff --git a/src/functionObjects/graphics/runTimePostProcessing/pointData.C b/src/functionObjects/graphics/runTimePostProcessing/pointData.C
index ce4e9bd692..112c115bc2 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/pointData.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/pointData.C
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -93,7 +93,7 @@ Foam::functionObjects::runTimePostPro::pointData::pointData
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
geometryBase(parent, dict, colours),
@@ -106,7 +106,7 @@ Foam::functionObjects::runTimePostPro::pointData::pointData
{
if (dict.found("pointColour"))
{
- pointColour_.reset(Function1::New("pointColour", dict).ptr());
+ pointColour_.reset(Function1::New("pointColour", dict));
}
else
{
@@ -135,7 +135,7 @@ Foam::functionObjects::runTimePostPro::pointData::New
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours,
+ const HashPtrTable>& colours,
const word& pointDataType
)
{
diff --git a/src/functionObjects/graphics/runTimePostProcessing/pointData.H b/src/functionObjects/graphics/runTimePostProcessing/pointData.H
index 7d81b5cca3..595f48a976 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/pointData.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/pointData.H
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -25,6 +25,7 @@ Class
Foam::functionObjects::runTimePostPro::pointData
Description
+ Visualisation of point data
SourceFiles
pointData.C
@@ -40,6 +41,7 @@ SourceFiles
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Forward declarations
class vtkActor;
class vtkPolyData;
class vtkPolyDataMapper;
@@ -72,17 +74,6 @@ public:
static const Enum representationTypeNames;
-private:
-
- // Private Member Functions
-
- //- No copy construct
- pointData(const pointData&) = delete;
-
- //- No copy assignment
- void operator=(const pointData&) = delete;
-
-
protected:
// Protected data
@@ -108,6 +99,12 @@ protected:
vtkPolyData* data
) const;
+ //- No copy construct
+ pointData(const pointData&) = delete;
+
+ //- No copy assignment
+ void operator=(const pointData&) = delete;
+
public:
@@ -125,7 +122,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
),
(parent, dict, colours)
);
@@ -138,7 +135,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
@@ -149,7 +146,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours,
+ const HashPtrTable>& colours,
const word& pointDataName
);
diff --git a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C
index 5aa639a049..b90b7976e3 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C
@@ -39,7 +39,6 @@ License
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkSmartPointer.h"
-
#include "vtkLight.h"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -60,6 +59,48 @@ namespace functionObjects
}
+// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+template
+static void addGeometryToScene
+(
+ PtrList& objects,
+ const scalar position,
+ vtkRenderer* renderer
+)
+{
+ for (Type& obj : objects)
+ {
+ obj.addGeometryToScene(position, renderer);
+ }
+}
+
+
+template
+static void updateActors(PtrList& objects, const scalar position)
+{
+ for (Type& obj : objects)
+ {
+ obj.updateActors(position);
+ }
+}
+
+
+template
+static void cleanup(PtrList& objects)
+{
+ for (Type& obj : objects)
+ {
+ obj.clear();
+ }
+}
+
+} // End namespace Foam
+
+
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::functionObjects::runTimePostProcessing::runTimePostProcessing
@@ -95,7 +136,6 @@ bool Foam::functionObjects::runTimePostProcessing::read(const dictionary& dict)
outputDict.readEntry("width", output_.width_);
outputDict.readEntry("height", output_.height_);
-
readObjects(dict.subOrEmptyDict("points"), points_);
readObjects(dict.subOrEmptyDict("lines"), lines_);
readObjects(dict.subOrEmptyDict("surfaces"), surfaces_);
@@ -107,16 +147,19 @@ bool Foam::functionObjects::runTimePostProcessing::read(const dictionary& dict)
if (!dEntry.isDict())
{
FatalIOErrorInFunction(textDict)
+ << textDict.dictName()
<< "text must be specified in dictionary format"
<< exit(FatalIOError);
}
+ const dictionary& objectDict = dEntry.dict();
+
text_.append
(
new runTimePostPro::text
(
*this,
- dEntry.dict(),
+ objectDict,
scene_.colours()
)
);
@@ -167,76 +210,27 @@ bool Foam::functionObjects::runTimePostProcessing::write()
renderWindow->AddRenderer(renderer);
- // Add the points
- forAll(points_, i)
- {
- points_[i].addGeometryToScene(0, renderer);
- }
- // Add the lines
- forAll(lines_, i)
- {
- lines_[i].addGeometryToScene(0, renderer);
- }
-
- // Add the surfaces
- forAll(surfaces_, i)
- {
- surfaces_[i].addGeometryToScene(0, renderer);
- }
-
- // Add the text
- forAll(text_, i)
- {
- text_[i].addGeometryToScene(0, renderer);
- }
+ addGeometryToScene(points_, 0, renderer);
+ addGeometryToScene(lines_, 0, renderer);
+ addGeometryToScene(surfaces_, 0, renderer);
+ addGeometryToScene(text_, 0, renderer);
while (scene_.loop(renderer))
{
- scalar position = scene_.position();
+ const scalar position = scene_.position();
- // Update the text
- forAll(text_, i)
- {
- text_[i].updateActors(position);
- }
-
- // Update the points
- forAll(points_, i)
- {
- points_[i].updateActors(position);
- }
-
- // Update the lines
- forAll(lines_, i)
- {
- lines_[i].updateActors(position);
- }
-
- // Update the surfaces
- forAll(surfaces_, i)
- {
- surfaces_[i].updateActors(position);
- }
+ updateActors(text_, position);
+ updateActors(points_, position);
+ updateActors(lines_, position);
+ updateActors(surfaces_, position);
}
- // Clean up
- forAll(text_, i)
- {
- text_[i].clear();
- }
- forAll(points_, i)
- {
- points_[i].clear();
- }
- forAll(lines_, i)
- {
- lines_[i].clear();
- }
- forAll(surfaces_, i)
- {
- surfaces_[i].clear();
- }
+ // Cleanup
+ cleanup(text_);
+ cleanup(points_);
+ cleanup(lines_);
+ cleanup(surfaces_);
// Instead of relying on the destructor, manually restore the previous
diff --git a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.H b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.H
index 8fd76343ba..5fc14178e2 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.H
@@ -21,8 +21,15 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see .
+Namespace
+ Foam::functionObjects::runTimePostPro
+
+Description
+ Classes and objects used in the implementation of
+ Foam::functionObjects::runTimePostProcessing
+
Class
- Foam::functionObjects::runTimePostPro::runTimePostProcessing
+ Foam::functionObjects::runTimePostProcessing
Group
grpGraphicsFunctionObjects
@@ -34,9 +41,9 @@ Description
which provide a broad set of functionality for scene composition and
manipulation.
- Images are generated using a combination of function object output, and
- additional data e.gg triangulated surfaces and text. Current capabilities
- include support for:
+ Images are generated using a combination of function object output
+ and additional data - eg, surfaces and text.
+ Current capabilities include support for:
- Camera
- Objects
- Points
@@ -45,6 +52,8 @@ Description
- Scalar bars
- Annotations
- Selection of colour maps
+ .
+
Scene configuration is performed using standard OpenFOAM dictionaries, using
the main headings of: output=, camera, colours, points, lines,
surfaces and text.
@@ -65,6 +74,7 @@ SourceFiles
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Forward declarations
class vtkRenderer;
class vtkRenderWindow;
@@ -74,10 +84,11 @@ namespace functionObjects
{
namespace runTimePostPro
{
- class pointData;
- class pathline;
- class surface;
- class text;
+// Forward declarations
+class pointData;
+class pathline;
+class surface;
+class text;
}
/*---------------------------------------------------------------------------*\
diff --git a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessingTemplates.C b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessingTemplates.C
index 5651e8a393..593fbe1c67 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessingTemplates.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessingTemplates.C
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
diff --git a/src/functionObjects/graphics/runTimePostProcessing/scene.C b/src/functionObjects/graphics/runTimePostProcessing/scene.C
index 63b4542113..72cc6b402c 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/scene.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/scene.C
@@ -38,7 +38,6 @@ License
#include "vtkRenderWindow.h"
#include "vtkWindowToImageFilter.h"
-
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
void Foam::functionObjects::runTimePostPro::scene::readCamera
diff --git a/src/functionObjects/graphics/runTimePostProcessing/scene.H b/src/functionObjects/graphics/runTimePostProcessing/scene.H
index 713831bd09..48353f35e3 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/scene.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/scene.H
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -70,6 +70,7 @@ SourceFiles
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Forward declarations
class vtkActor;
class vtkRenderer;
class vtkRenderWindow;
@@ -123,7 +124,7 @@ protected:
// Protected data
//- Colours
- HashPtrTable, word> colours_;
+ HashPtrTable> colours_;
// Camera settings
@@ -197,26 +198,27 @@ public:
// Member Functions
- // Access
+ // Access
- //- Return the colours
- const HashPtrTable, word>& colours() const;
+ //- Return the colours
+ const HashPtrTable>& colours() const;
- //- Return the current frame index
- label frameIndex() const;
+ //- Return the current frame index
+ label frameIndex() const;
- //- Return the current position (in range 0-1)
- scalar position() const;
+ //- Return the current position (in range 0-1)
+ scalar position() const;
- void read(const dictionary& dict);
- void initialise(vtkRenderer* renderer, const word& outputName);
+ void read(const dictionary& dict);
- //- Main control loop
- bool loop(vtkRenderer* renderer);
+ void initialise(vtkRenderer* renderer, const word& outputName);
- //- Save image to file
- void saveImage(vtkRenderWindow* renderWindow) const;
+ //- Main control loop
+ bool loop(vtkRenderer* renderer);
+
+ //- Save image to file
+ void saveImage(vtkRenderWindow* renderWindow) const;
};
diff --git a/src/functionObjects/graphics/runTimePostProcessing/surface.C b/src/functionObjects/graphics/runTimePostProcessing/surface.C
index 8449b5f327..0a170c9525 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/surface.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/surface.C
@@ -83,7 +83,7 @@ void Foam::functionObjects::runTimePostPro::surface::setRepresentation
}
case rtWireframe:
{
- // note: colour is set using general SetColour, not setEdgeColor
+ // note: colour is set using general SetColor, not SetEdgeColor
actor->GetProperty()->SetRepresentationToWireframe();
break;
}
@@ -143,7 +143,7 @@ Foam::functionObjects::runTimePostPro::surface::surface
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
geometryBase(parent, dict, colours),
@@ -163,10 +163,7 @@ Foam::functionObjects::runTimePostPro::surface::surface
if (dict.found("surfaceColour"))
{
- surfaceColour_.reset
- (
- Function1::New("surfaceColour", dict).ptr()
- );
+ surfaceColour_.reset(Function1::New("surfaceColour", dict));
}
else
{
@@ -175,7 +172,7 @@ Foam::functionObjects::runTimePostPro::surface::surface
if (dict.found("edgeColour"))
{
- edgeColour_.reset(Function1::New("edgeColour", dict).ptr());
+ edgeColour_.reset(Function1::New("edgeColour", dict));
}
else
{
@@ -200,7 +197,7 @@ Foam::functionObjects::runTimePostPro::surface::New
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours,
+ const HashPtrTable>& colours,
const word& surfaceType
)
{
diff --git a/src/functionObjects/graphics/runTimePostProcessing/surface.H b/src/functionObjects/graphics/runTimePostProcessing/surface.H
index ce98897250..d8eefe6ebe 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/surface.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/surface.H
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -25,6 +25,7 @@ Class
Foam::functionObjects::runTimePostPro::surface
Description
+ Visualisation of surface data
SourceFiles
surface.C
@@ -37,11 +38,11 @@ SourceFiles
#include "geometryBase.H"
#include "Enum.H"
#include "runTimeSelectionTables.H"
-
#include "vtkSmartPointer.h"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Forward declarations
class vtkActor;
class vtkRenderer;
class vtkPolyData;
@@ -77,17 +78,6 @@ public:
static const Enum representationTypeNames;
-private:
-
- // Private Member Functions
-
- //- No copy construct
- surface(const surface&) = delete;
-
- //- No copy assignment
- void operator=(const surface&) = delete;
-
-
protected:
// Protected data
@@ -126,6 +116,12 @@ protected:
vtkPolyData* data
) const;
+ //- No copy construct
+ surface(const surface&) = delete;
+
+ //- No copy assignment
+ void operator=(const surface&) = delete;
+
public:
@@ -143,7 +139,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
),
(parent, dict, colours)
);
@@ -156,7 +152,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
@@ -167,7 +163,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours,
+ const HashPtrTable>& colours,
const word& surfaceName
);
diff --git a/src/functionObjects/graphics/runTimePostProcessing/text.C b/src/functionObjects/graphics/runTimePostProcessing/text.C
index 160ec5be4f..8c57916f5a 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/text.C
+++ b/src/functionObjects/graphics/runTimePostProcessing/text.C
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -40,7 +40,7 @@ Foam::functionObjects::runTimePostPro::text::text
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
)
:
geometryBase(parent, dict, colours),
@@ -55,7 +55,7 @@ Foam::functionObjects::runTimePostPro::text::text
if (dict.found("colour"))
{
- colour_.reset(Function1::New("colour", dict).ptr());
+ colour_.reset(Function1::New("colour", dict));
}
else
{
diff --git a/src/functionObjects/graphics/runTimePostProcessing/text.H b/src/functionObjects/graphics/runTimePostProcessing/text.H
index 551fcf6b7c..fd8835db52 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/text.H
+++ b/src/functionObjects/graphics/runTimePostProcessing/text.H
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
- \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
+ \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@@ -25,6 +25,8 @@ Class
Foam::functionObjects::runTimePostPro::text
Description
+ Define text element for runTimePostProcessing
+
Example of text object specification:
\verbatim
text1
@@ -39,10 +41,22 @@ Description
// colour (0 1 1);
// Optional entry
- timeStamp yes; //Append solution time to string
+ timeStamp yes; // Append solution time to string
}
\endverbatim
+ Dictionary controls
+ \table
+ Property | Description | Required | Default
+ visible | Display the text | yes |
+ string | Text to display | yes |
+ position | The (x y) viewport position | yes |
+ size | The font size in points | yes |
+ bold | Use bold font | yes |
+ colour | Override default text colour | no |
+ timeStamp | Append solution timeName to string | no | false
+ \endtable
+
SourceFiles
text.C
@@ -56,6 +70,7 @@ SourceFiles
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Forward declarations
class vtkRenderer;
namespace Foam
@@ -73,20 +88,9 @@ class text
:
public geometryBase
{
-private:
-
- // Private Member Functions
-
- //- No copy construct
- text(const text&) = delete;
-
- //- No copy assignment
- void operator=(const text&) = delete;
-
-
protected:
- // Protected data
+ // Protected Data
//- Text
string string_;
@@ -107,6 +111,15 @@ protected:
bool timeStamp_;
+ // Protected Member Functions
+
+ //- No copy construct
+ text(const text&) = delete;
+
+ //- No copy assignment
+ void operator=(const text&) = delete;
+
+
public:
// Constructors
@@ -116,7 +129,7 @@ public:
(
const runTimePostProcessing& parent,
const dictionary& dict,
- const HashPtrTable, word>& colours
+ const HashPtrTable>& colours
);
diff --git a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/Allclean b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/Allclean
index e2f275d9fd..08f9ce2fad 100755
--- a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/Allclean
+++ b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/Allclean
@@ -4,4 +4,7 @@ cd ${0%/*} || exit 1 # Run from this directory
cleanCase0
+rm -f ppGeometry.vtp 2>/dev/null
+
+
#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/Allrun.pre b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/Allrun.pre
index f98d8e1402..800108cf41 100755
--- a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/Allrun.pre
+++ b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/Allrun.pre
@@ -19,6 +19,9 @@ runApplication topoSet
runApplication createPatch -overwrite
+runApplication surfaceMeshTriangulate \
+ -patches hole ppGeometry.vtp -constant -time ''
+
echo "End"
#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/controlDict b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/controlDict
index ba2cede19c..091fdbca08 100644
--- a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/controlDict
+++ b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/controlDict
@@ -15,6 +15,8 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+libs ("libOpenFOAM.so" "libfieldFunctionObjects.so");
+
application pimpleFoam;
startFrom latestTime;
@@ -49,10 +51,10 @@ adjustTimeStep yes;
maxCo 0.2;
-
functions
{
#include "sampling"
+ #include "streamLines"
#include "runTimePostProcessing"
}
diff --git a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/runTimePostProcessing b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/runTimePostProcessing
index b14879f52c..47fd9e977a 100644
--- a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/runTimePostProcessing
+++ b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/runTimePostProcessing
@@ -29,12 +29,12 @@ postPro1
// Parallel projection flag
parallelProjection yes;
- clipBox (-0.2 -0.2 0)(1.65 0.2 1.25); // optional
+ // clipBox is optional
position (-2.28 1.28 2.24);
- focalPoint (0.003 0.008 0.024);
+ focalPoint (0 0.008 0.024);
up (0.26 0.930 -0.266);
- zoom 1.25;
+ zoom 1.75;
}
// Default colours
@@ -44,7 +44,7 @@ postPro1
{
background (0.317647 0.341176 0.431373);
background2 ${background};
- text (0 0 0);
+ text (0.75 0.75 0.75);
edge (1 0 0);
surface (0.5 0.5 0.5);
line (1 0 0);
@@ -52,9 +52,24 @@ postPro1
lines
{
+ streamline
+ {
+ type functionObjectLine;
+ functionObject streamLines;
+ representation tube;
+ visible yes;
+ tubeRadius 0.0025;
+ colourBy field;
+ field U;
+ range (0 10);
+ opacity 0.6;
+ scalarBar
+ {
+ visible no;
+ }
+ }
}
-
_plane
{
type functionObjectSurface;
@@ -77,6 +92,17 @@ postPro1
surfaces
{
+ geom
+ {
+ type geometry;
+ files ("/ppGeometry.vtp");
+ renderMode phong;
+ representation surface;
+ edgeColour (0.5 0.5 0.5);
+ visible yes;
+ featureEdges no;
+ opacity 0.8;
+ }
plane0
{
${_plane};
@@ -104,11 +130,11 @@ postPro1
{
text1
{
- string "elipsekkLOmega";
- position (0.1 0.05);
- size 24;
- bold no;
- visible yes;
+ string "ellipse kkLOmega";
+ position (0.6 0.05);
+ size 18;
+ bold yes;
+ visible yes;
}
}
}
diff --git a/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/streamLines b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/streamLines
new file mode 100644
index 0000000000..21bbef69bb
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/system/streamLines
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: v1806 |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+
+streamLines
+{
+ type streamLine;
+
+ writeControl writeTime;
+
+ setFormat vtk;
+
+ // Velocity field to use for tracking.
+ U U;
+
+ // Tracked forwards (+U) or backwards (-U)
+ trackForward true;
+
+ // Names of fields to sample. Should contain above velocity field!
+ fields (p U);
+
+ // Steps particles can travel before being removed
+ lifeTime 10000;
+
+ // Number of steps per cell (estimate). Set to 1 to disable subcycling.
+ nSubCycle 5;
+
+ // Cloud name to use
+ cloud particleTracks;
+
+ // Seeding method.
+ seedSampleSet
+ {
+ type uniform;
+ axis x; //distance;
+
+ // Note: tracks slightly offset so as not to be on a face
+ start (-0.70 -0.25 0.025);
+ end (-0.70 0.25 0.025);
+ nPoints 20;
+ }
+}
+
+
+// ************************************************************************* //