diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/PV3FoamReader_SM.xml b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/PV3FoamReader_SM.xml
index 8506772e5c..18bccb0398 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/PV3FoamReader_SM.xml
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/PV3FoamReader_SM.xml
@@ -16,6 +16,17 @@
+
+
+
+
+ Available timestep values.
+
+
+
-
-
-
-
+
+
+
- Available timestep values.
+ Rescan for updated timesteps/fields.
-
+
-
-
+
+
+
+
+ Skip including the 0/ time directory
+
+
- Searches the polyMesh/sets/ directory
+ Search the polyMesh/sets/ directory
@@ -95,7 +121,7 @@
animateable="0">
- Show patch names in render window.
+ Show patch names in render window
@@ -112,12 +138,13 @@
-
-
+
@@ -129,18 +156,21 @@
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
- information_property="PartArrayInfo"
+ information_property="PartArrayStatus"
animateable="0">
-
+
+
+ This property contains a list of the mesh parts (patches, sets, zones).
+
@@ -152,18 +182,21 @@
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
- information_property="VolFieldArrayInfo"
+ information_property="VolFieldArrayStatus"
animateable="0">
-
+
+
+ This property contains a list of the volume fields
+
@@ -175,18 +208,21 @@
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
- information_property="LagrangianFieldArrayInfo"
+ information_property="LagrangianFieldArrayStatus"
animateable="0">
-
+
+
+ This property contains a list of the lagrangian fields
+
@@ -198,19 +234,26 @@
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
- information_property="PointFieldArrayInfo"
+ information_property="PointFieldArrayStatus"
animateable="0">
-
+
+
+ This property contains a list of the point fields
+
+
+
+
+
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.cxx b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.cxx
index 4f12089f45..7d421cbedd 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.cxx
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.cxx
@@ -32,9 +32,10 @@ License
#include
#include
#include
+#include
#include
-// Paraview<->QT UI
+// Paraview <-> QT UI
#include "pqAnimationScene.h"
#include "pqApplicationCore.h"
#include "pqPipelineRepresentation.h"
@@ -56,51 +57,169 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
QWidget *p
)
:
- pqAutoGeneratedObjectPanel(proxy, p),
- sourceProxy_(vtkSMSourceProxy::SafeDownCast(this->proxy()))
+ pqAutoGeneratedObjectPanel(proxy, p)
{
// create first sublayout (at top of the panel)
- QGridLayout *sect1 = new QGridLayout();
- this->PanelLayout->addLayout(sect1, 0, 0, 1, -1);
+ QGridLayout *form = new QGridLayout();
+ this->PanelLayout->addLayout(form, 0, 0, 1, -1);
+
+ vtkSMProperty* prop = 0;
+
+ // refresh button for updating times/fields
+ if ((prop = this->proxy()->GetProperty("UiRefresh")) != 0)
+ {
+ prop->SetImmediateUpdate(1);
+ QPushButton *refresh = new QPushButton("Refresh Times");
+ refresh->setToolTip("Rescan for updated times/fields.");
+
+ form->addWidget(refresh, 0, 0, Qt::AlignLeft);
+ QObject::connect
+ (
+ refresh,
+ SIGNAL(clicked()),
+ this,
+ SLOT(RefreshPressed())
+ );
+ }
+
+ // checkbox for skip zeroTime
+ if ((prop = this->proxy()->GetProperty("UiZeroTime")) != 0)
+ {
+ // immediate update on the Server Manager side
+ prop->SetImmediateUpdate(true);
+
+ ZeroTime_ = new QCheckBox("Skip Zero Time");
+ ZeroTime_->setChecked
+ (
+ vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
+ );
+ ZeroTime_->setToolTip
+ (
+ "Skip including the 0/ time directory."
+ );
+
+ form->addWidget(ZeroTime_, 0, 1, Qt::AlignLeft);
+ connect
+ (
+ ZeroTime_,
+ SIGNAL(stateChanged(int)),
+ this,
+ SLOT(ZeroTimeToggled())
+ );
+ }
// checkbox for caching mesh
- CacheMesh_ = new QCheckBox("Cache Mesh");
- CacheMesh_->setChecked(true);
+ if ((prop = this->proxy()->GetProperty("UiCacheMesh")) != 0)
+ {
+ // immediate update on the Server Manager side
+ prop->SetImmediateUpdate(true);
- // checkbox for caching mesh
- ShowPatchNames_ = new QCheckBox("Show Patch Names");
- ShowPatchNames_->setChecked(false);
+ CacheMesh_ = new QCheckBox("Cache Mesh");
+ CacheMesh_->setChecked
+ (
+ vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
+ );
+ CacheMesh_->setToolTip
+ (
+ "Cache the fvMesh in memory."
+ );
- connect
- (
- CacheMesh_,
- SIGNAL(stateChanged(int)),
- this,
- SLOT(CacheMeshToggled())
- );
-
- connect
- (
- ShowPatchNames_,
- SIGNAL(stateChanged(int)),
- this,
- SLOT(ShowPatchNamesToggled())
- );
-
- sect1->addWidget(CacheMesh_);
- sect1->addWidget(ShowPatchNames_);
+ form->addWidget(CacheMesh_, 1, 0, Qt::AlignLeft);
+ connect
+ (
+ CacheMesh_,
+ SIGNAL(stateChanged(int)),
+ this,
+ SLOT(CacheMeshToggled())
+ );
+ }
- // immediate update on the Server Manager side
- vtkSMIntVectorProperty::SafeDownCast
- (
- sourceProxy_->GetProperty("UiCacheMesh")
- )->SetImmediateUpdate(true);
- vtkSMIntVectorProperty::SafeDownCast
- (
- sourceProxy_->GetProperty("UiShowPatchNames")
- )->SetImmediateUpdate(true);
+ // checkbox for patch names
+ if ((prop = this->proxy()->GetProperty("UiShowPatchNames")) != 0)
+ {
+ // immediate update on the Server Manager side
+ prop->SetImmediateUpdate(true);
+
+ ShowPatchNames_ = new QCheckBox("Patch Names");
+ ShowPatchNames_->setChecked
+ (
+ vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
+ );
+ ShowPatchNames_->setToolTip
+ (
+ "Show patch names in render window."
+ );
+
+ // row/col 0,1
+ form->addWidget(ShowPatchNames_, 1, 1, Qt::AlignLeft);
+ connect
+ (
+ ShowPatchNames_,
+ SIGNAL(stateChanged(int)),
+ this,
+ SLOT(ShowPatchNamesToggled())
+ );
+ }
+
+
+ // checkbox for include sets
+ if ((prop = this->proxy()->GetProperty("UiIncludeSets")) != 0)
+ {
+ // immediate update on the Server Manager side
+ prop->SetImmediateUpdate(true);
+
+ IncludeSets_ = new QCheckBox("Include Sets");
+ IncludeSets_->setChecked
+ (
+ vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
+ );
+ IncludeSets_->setToolTip
+ (
+ "Search the polyMesh/sets/ directory."
+ );
+
+ // row/col 1,0
+ form->addWidget(IncludeSets_, 2, 0, Qt::AlignLeft);
+ connect
+ (
+ IncludeSets_,
+ SIGNAL(stateChanged(int)),
+ this,
+ SLOT(IncludeSetsToggled())
+ );
+ }
+
+
+ // checkbox for include zones
+ if ((prop = this->proxy()->GetProperty("UiIncludeZones")) != 0)
+ {
+ // immediate update on the Server Manager side
+ prop->SetImmediateUpdate(true);
+
+ IncludeZones_ = new QCheckBox("Include Zones");
+ IncludeZones_->setChecked
+ (
+ vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
+ );
+ IncludeZones_->setToolTip
+ (
+ "ZoneMesh information is used to find {cell,face,point}Zones. "
+ "The polyMesh/ directory is only checked on startup."
+ );
+
+ // row/col 1,1
+ form->addWidget(IncludeZones_, 2, 1, Qt::AlignLeft);
+ connect
+ (
+ IncludeZones_,
+ SIGNAL(stateChanged(int)),
+ this,
+ SLOT(IncludeZonesToggled())
+ );
+ }
+
}
@@ -110,16 +229,43 @@ void pqPV3FoamReaderPanel::CacheMeshToggled()
{
vtkSMIntVectorProperty::SafeDownCast
(
- sourceProxy_->GetProperty("UiCacheMesh")
+ this->proxy()->GetProperty("UiCacheMesh")
)->SetElement(0, CacheMesh_->isChecked());
}
+void pqPV3FoamReaderPanel::RefreshPressed()
+{
+ // update everything
+ vtkSMIntVectorProperty::SafeDownCast
+ (
+ this->proxy()->GetProperty("UiRefresh")
+ )->Modified();
+
+ vtkSMSourceProxy::SafeDownCast(this->proxy())->UpdatePipeline();
+
+ // render all views
+ pqApplicationCore::instance()->render();
+}
+
+
+void pqPV3FoamReaderPanel::ZeroTimeToggled()
+{
+ vtkSMIntVectorProperty::SafeDownCast
+ (
+ this->proxy()->GetProperty("UiZeroTime")
+ )->SetElement(0, ZeroTime_->isChecked());
+
+ // update everything
+ RefreshPressed();
+}
+
+
void pqPV3FoamReaderPanel::ShowPatchNamesToggled()
{
vtkSMIntVectorProperty::SafeDownCast
(
- sourceProxy_->GetProperty("UiShowPatchNames")
+ this->proxy()->GetProperty("UiShowPatchNames")
)->SetElement(0, ShowPatchNames_->isChecked());
// update the active view
@@ -132,4 +278,37 @@ void pqPV3FoamReaderPanel::ShowPatchNamesToggled()
}
+void pqPV3FoamReaderPanel::IncludeSetsToggled()
+{
+ vtkSMProperty* prop;
+
+ vtkSMIntVectorProperty::SafeDownCast
+ (
+ this->proxy()->GetProperty("UiIncludeSets")
+ )->SetElement(0, IncludeSets_->isChecked());
+
+ if ((prop = this->proxy()->GetProperty("PartArrayStatus")) != 0)
+ {
+ this->proxy()->UpdatePropertyInformation(prop);
+ }
+}
+
+
+void pqPV3FoamReaderPanel::IncludeZonesToggled()
+{
+ vtkSMProperty* prop;
+
+ vtkSMIntVectorProperty::SafeDownCast
+ (
+ this->proxy()->GetProperty("UiIncludeZones")
+ )->SetElement(0, IncludeZones_->isChecked());
+
+ if ((prop = this->proxy()->GetProperty("PartArrayStatus")) != 0)
+ {
+ this->proxy()->UpdatePropertyInformation(prop);
+ }
+
+}
+
+
// ************************************************************************* //
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.h b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.h
index fc4f5f9ada..49a3e11eda 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.h
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.h
@@ -37,6 +37,7 @@ SourceFiles
#ifndef pqPV3FoamReaderPanel_h
#define pqPV3FoamReaderPanel_h
+
#include "pqAutoGeneratedObjectPanel.h"
// Forward declaration of QT classes
@@ -62,8 +63,8 @@ class pqPV3FoamReaderPanel
Q_OBJECT;
typedef pqAutoGeneratedObjectPanel Superclass;
- //- Server Manager Source Proxy
- vtkSMSourceProxy* sourceProxy_;
+ //- ZeroTime checkbox
+ QCheckBox* ZeroTime_;
//- CacheMesh checkbox
QCheckBox* CacheMesh_;
@@ -71,10 +72,20 @@ class pqPV3FoamReaderPanel
//- Show Patch Names checkbox
QCheckBox* ShowPatchNames_;
+ //- IncludeSets checkbox
+ QCheckBox* IncludeSets_;
+
+ //- IncludeZones checkbox
+ QCheckBox* IncludeZones_;
+
protected slots:
void CacheMeshToggled();
+ void ZeroTimeToggled();
+ void RefreshPressed();
void ShowPatchNamesToggled();
+ void IncludeSetsToggled();
+ void IncludeZonesToggled();
public:
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx
index 32b01eb795..4e5806b99c 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx
@@ -79,7 +79,9 @@ vtkPV3FoamReader::vtkPV3FoamReader()
TimeStepRange[1] = 0;
CacheMesh = 1;
+ Refresh = 0;
+ SkipZeroTime = 0;
ExtrapolatePatches = 0;
IncludeSets = 0;
IncludeZones = 0;
@@ -336,7 +338,6 @@ int vtkPV3FoamReader::RequestData
foamData_->setTime(nRequestTime, requestTime);
}
-
vtkMultiBlockDataSet* output = vtkMultiBlockDataSet::SafeDownCast
(
outputVector->GetInformationObject(0)->Get
@@ -420,7 +421,39 @@ int vtkPV3FoamReader::RequestData
}
-void vtkPV3FoamReader::SetShowPatchNames(const int val)
+void vtkPV3FoamReader::SetRefresh(int val)
+{
+ Modified();
+}
+
+
+void vtkPV3FoamReader::SetIncludeSets(int val)
+{
+ if (IncludeSets != val)
+ {
+ IncludeSets = val;
+ if (foamData_)
+ {
+ foamData_->updateInfo();
+ }
+ }
+}
+
+
+void vtkPV3FoamReader::SetIncludeZones(int val)
+{
+ if (IncludeZones != val)
+ {
+ IncludeZones = val;
+ if (foamData_)
+ {
+ foamData_->updateInfo();
+ }
+ }
+}
+
+
+void vtkPV3FoamReader::SetShowPatchNames(int val)
{
if (ShowPatchNames != val)
{
@@ -430,7 +463,6 @@ void vtkPV3FoamReader::SetShowPatchNames(const int val)
}
-
void vtkPV3FoamReader::updatePatchNamesView(const bool show)
{
pqApplicationCore* appCore = pqApplicationCore::instance();
@@ -452,7 +484,7 @@ void vtkPV3FoamReader::updatePatchNamesView(const bool show)
// Get all the pqRenderView instances
QList renderViews = smModel->findItems();
- for (int viewI=0; viewIrenderPatchNames
(
@@ -521,7 +553,8 @@ int vtkPV3FoamReader::GetPartArrayStatus(const char* name)
void vtkPV3FoamReader::SetPartArrayStatus(const char* name, int status)
{
- vtkDebugMacro(<<"SetPartArrayStatus");
+ vtkDebugMacro("Set mesh part \"" << name << "\" status to: " << status);
+
if (status)
{
PartSelection->EnableArray(name);
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.h b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.h
index df73979205..f3ac8a5d92 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.h
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.h
@@ -83,6 +83,15 @@ public:
vtkSetMacro(CacheMesh, int);
vtkGetMacro(CacheMesh, int);
+ // Description:
+ // FOAM refresh times/fields
+ virtual void SetRefresh(int);
+
+ // Description:
+ // FOAM Skip/include the 0/ time directory
+ vtkSetMacro(SkipZeroTime, int);
+ vtkGetMacro(SkipZeroTime, int);
+
// Description:
// GUI update control
vtkSetMacro(UpdateGUI, int);
@@ -93,13 +102,14 @@ public:
vtkSetMacro(ExtrapolatePatches, int);
vtkGetMacro(ExtrapolatePatches, int);
+ // Description:
// FOAM read sets control
- vtkSetMacro(IncludeSets, int);
+ virtual void SetIncludeSets(int);
vtkGetMacro(IncludeSets, int);
// Description:
// FOAM read zones control
- vtkSetMacro(IncludeZones, int);
+ virtual void SetIncludeZones(int);
vtkGetMacro(IncludeZones, int);
// Description:
@@ -113,7 +123,7 @@ public:
// Description:
// Parts selection list control
- vtkDataArraySelection* GetPartSelection();
+ virtual vtkDataArraySelection* GetPartSelection();
int GetNumberOfPartArrays();
int GetPartArrayStatus(const char* name);
void SetPartArrayStatus(const char* name, int status);
@@ -121,7 +131,7 @@ public:
// Description:
// volField selection list control
- vtkDataArraySelection* GetVolFieldSelection();
+ virtual vtkDataArraySelection* GetVolFieldSelection();
int GetNumberOfVolFieldArrays();
int GetVolFieldArrayStatus(const char* name);
void SetVolFieldArrayStatus(const char* name, int status);
@@ -129,7 +139,7 @@ public:
// Description:
// pointField selection list control
- vtkDataArraySelection* GetPointFieldSelection();
+ virtual vtkDataArraySelection* GetPointFieldSelection();
int GetNumberOfPointFieldArrays();
int GetPointFieldArrayStatus(const char* name);
void SetPointFieldArrayStatus(const char* name, int status);
@@ -137,7 +147,7 @@ public:
// Description:
// lagrangianField selection list control
- vtkDataArraySelection* GetLagrangianFieldSelection();
+ virtual vtkDataArraySelection* GetLagrangianFieldSelection();
int GetNumberOfLagrangianFieldArrays();
int GetLagrangianFieldArrayStatus(const char* name);
void SetLagrangianFieldArrayStatus(const char* name, int status);
@@ -156,7 +166,6 @@ public:
void SelectionModified();
-
protected:
//- Construct null
@@ -185,9 +194,10 @@ protected:
//- Fill in additional port information
virtual int FillOutputPortInformation(int, vtkInformation*);
- // The observer to modify this object when array selections are modified
+ //- The observer to modify this object when array selections are modified
vtkCallbackCommand* SelectionObserver;
+ //- The file name for this case
char* FileName;
private:
@@ -202,14 +212,16 @@ private:
void updatePatchNamesView(const bool show);
int TimeStepRange[2];
+ int Refresh;
int CacheMesh;
+ int SkipZeroTime;
int ExtrapolatePatches;
int IncludeSets;
int IncludeZones;
int ShowPatchNames;
- //- Dummy variable/switch for invoke a reader update
+ //- Dummy variable/switch to invoke a reader update
int UpdateGUI;
vtkDataArraySelection* PartSelection;
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.C
index 8989a110cb..41933d5ebf 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.C
@@ -50,16 +50,16 @@ defineTypeNameAndDebug(Foam::vtkPV3Foam, 0);
void Foam::vtkPV3Foam::resetCounters()
{
- // Reset mesh part ids and sizes
- partInfoVolume_.reset();
- partInfoPatches_.reset();
- partInfoLagrangian_.reset();
- partInfoCellZones_.reset();
- partInfoFaceZones_.reset();
- partInfoPointZones_.reset();
- partInfoCellSets_.reset();
- partInfoFaceSets_.reset();
- partInfoPointSets_.reset();
+ // Reset array range information (ids and sizes)
+ arrayRangeVolume_.reset();
+ arrayRangePatches_.reset();
+ arrayRangeLagrangian_.reset();
+ arrayRangeCellZones_.reset();
+ arrayRangeFaceZones_.reset();
+ arrayRangePointZones_.reset();
+ arrayRangeCellSets_.reset();
+ arrayRangeFaceSets_.reset();
+ arrayRangePointSets_.reset();
}
@@ -92,21 +92,6 @@ void Foam::vtkPV3Foam::reduceMemory()
int Foam::vtkPV3Foam::setTime(int nRequest, const double requestTimes[])
{
- if (debug)
- {
- Info<< " Foam::vtkPV3Foam::setTime(";
- for (int requestI = 0; requestI < nRequest; ++requestI)
- {
- if (requestI)
- {
- Info<< ", ";
- }
-
- Info<< requestTimes[requestI];
- }
- Info<< ") - previousIndex = " << timeIndex_ << endl;
- }
-
Time& runTime = dbPtr_();
// Get times list
@@ -128,6 +113,22 @@ int Foam::vtkPV3Foam::setTime(int nRequest, const double requestTimes[])
nearestIndex = 0;
}
+ if (debug)
+ {
+ Info<< " Foam::vtkPV3Foam::setTime(";
+ for (int requestI = 0; requestI < nRequest; ++requestI)
+ {
+ if (requestI)
+ {
+ Info<< ", ";
+ }
+
+ Info<< requestTimes[requestI];
+ }
+ Info<< ") - previousIndex = " << timeIndex_
+ << ", nearestIndex = " << nearestIndex << endl;
+ }
+
// see what has changed
if (timeIndex_ != nearestIndex)
@@ -230,15 +231,15 @@ Foam::vtkPV3Foam::vtkPV3Foam
timeIndex_(-1),
meshChanged_(true),
fieldsChanged_(true),
- partInfoVolume_("unzoned"),
- partInfoPatches_("patches"),
- partInfoLagrangian_("lagrangian"),
- partInfoCellZones_("cellZone"),
- partInfoFaceZones_("faceZone"),
- partInfoPointZones_("pointZone"),
- partInfoCellSets_("cellSet"),
- partInfoFaceSets_("faceSet"),
- partInfoPointSets_("pointSet")
+ arrayRangeVolume_("unzoned"),
+ arrayRangePatches_("patches"),
+ arrayRangeLagrangian_("lagrangian"),
+ arrayRangeCellZones_("cellZone"),
+ arrayRangeFaceZones_("faceZone"),
+ arrayRangePointZones_("pointZone"),
+ arrayRangeCellSets_("cellSet"),
+ arrayRangeFaceSets_("faceSet"),
+ arrayRangePointSets_("pointSet")
{
if (debug)
{
@@ -288,7 +289,7 @@ Foam::vtkPV3Foam::vtkPV3Foam
meshRegion_ = caseName.substr(beg+1, end-beg-1);
// some safety
- if (!meshRegion_.size())
+ if (meshRegion_.empty())
{
meshRegion_ = polyMesh::defaultRegion;
}
@@ -352,6 +353,14 @@ void Foam::vtkPV3Foam::updateInfo()
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
+ // there are two ways to ensure we have the correct list of parts:
+ // 1. remove everything and then set particular entries 'on'
+ // 2. build a 'char **' list and call SetArraysWithDefault()
+ //
+ // Nr. 2 has the potential advantage of not touching the modification
+ // time of the vtkDataArraySelection, but the qt/paraview proxy
+ // layer doesn't care about that anyhow.
+
// enable 'internalMesh' on the first call
// or preserve the enabled selections
stringList enabledEntries;
@@ -369,11 +378,11 @@ void Foam::vtkPV3Foam::updateInfo()
partSelection->RemoveAllArrays();
// Update mesh parts list - add Lagrangian at the bottom
- updateInfoInternalMesh();
- updateInfoPatches();
- updateInfoSets();
- updateInfoZones();
- updateInfoLagrangian();
+ updateInfoInternalMesh(partSelection);
+ updateInfoPatches(partSelection);
+ updateInfoSets(partSelection);
+ updateInfoZones(partSelection);
+ updateInfoLagrangian(partSelection);
// restore the enabled selections
setSelectedArrayEntries(partSelection, enabledEntries);
@@ -396,6 +405,8 @@ void Foam::vtkPV3Foam::updateInfo()
if (debug)
{
+ // just for debug info
+ getSelectedArrayEntries(partSelection);
Info<< " Foam::vtkPV3Foam::updateInfo" << endl;
}
@@ -559,11 +570,25 @@ double* Foam::vtkPV3Foam::findTimes(int& nTimeSteps)
nTimes = timeLst.size() - timeI;
- // always skip "constant" time if possible
+ // skip "constant" time whenever possible
if (timeI == 0 && nTimes > 1)
{
- timeI = 1;
- --nTimes;
+ if (timeLst[timeI].name() == "constant")
+ {
+ ++timeI;
+ --nTimes;
+ }
+ }
+
+
+ // skip "0/" time if requested and possible
+ if (nTimes > 1 && reader_->GetSkipZeroTime())
+ {
+ if (mag(timeLst[timeI].value()) < SMALL)
+ {
+ ++timeI;
+ --nTimes;
+ }
}
if (nTimes)
@@ -607,10 +632,10 @@ void Foam::vtkPV3Foam::renderPatchNames(vtkRenderer* renderer, const bool show)
wordHashSet selectedPatches = getSelected
(
reader_->GetPartSelection(),
- partInfoPatches_
+ arrayRangePatches_
);
- if (!selectedPatches.size())
+ if (selectedPatches.empty())
{
return;
}
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H
index 05c8474477..6037e78781 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H
@@ -111,7 +111,7 @@ class vtkPV3Foam
// Private classes
//- Bookkeeping for GUI checklists and the multi-block organization
- class partInfo
+ class arrayRange
{
const char *name_;
int block_;
@@ -120,11 +120,11 @@ class vtkPV3Foam
public:
- partInfo(const char *name, const int blockNo=0)
+ arrayRange(const char *name, const int blockNo=0)
:
name_(name),
block_(blockNo),
- start_(-1),
+ start_(0),
size_(0)
{}
@@ -142,21 +142,25 @@ class vtkPV3Foam
return prev;
}
+ //- Return block name
const char* name() const
{
return name_;
}
+ //- Return array start index
int start() const
{
return start_;
}
+ //- Return array end index
int end() const
{
return start_ + size_;
}
+ //- Return sublist size
int size() const
{
return size_;
@@ -167,16 +171,10 @@ class vtkPV3Foam
return !size_;
}
- void reset()
+ //- Reset the size to zero and optionally assign a new start
+ void reset(const int startAt = 0)
{
- start_ = -1;
- size_ = 0;
- }
-
- //- Assign new start and reset the size
- void operator=(const int i)
- {
- start_ = i;
+ start_ = startAt;
size_ = 0;
}
@@ -282,15 +280,15 @@ class vtkPV3Foam
//- First instance and size of various mesh parts
// used to index into partStatus_ and partDataset_
- partInfo partInfoVolume_;
- partInfo partInfoPatches_;
- partInfo partInfoLagrangian_;
- partInfo partInfoCellZones_;
- partInfo partInfoFaceZones_;
- partInfo partInfoPointZones_;
- partInfo partInfoCellSets_;
- partInfo partInfoFaceSets_;
- partInfo partInfoPointSets_;
+ arrayRange arrayRangeVolume_;
+ arrayRange arrayRangePatches_;
+ arrayRange arrayRangeLagrangian_;
+ arrayRange arrayRangeCellZones_;
+ arrayRange arrayRangeFaceZones_;
+ arrayRange arrayRangePointZones_;
+ arrayRange arrayRangeCellSets_;
+ arrayRange arrayRangeFaceSets_;
+ arrayRange arrayRangePointSets_;
//- Decomposed cells information (mesh regions)
// TODO: regions
@@ -313,7 +311,7 @@ class vtkPV3Foam
(
vtkMultiBlockDataSet* output,
vtkDataSet* dataset,
- const partInfo&,
+ const arrayRange&,
const label datasetNo,
const std::string& datasetName
);
@@ -323,7 +321,7 @@ class vtkPV3Foam
static vtkDataSet* GetDataSetFromBlock
(
vtkMultiBlockDataSet* output,
- const partInfo&,
+ const arrayRange&,
const label datasetNo
);
@@ -332,7 +330,7 @@ class vtkPV3Foam
static label GetNumberOfDataSets
(
vtkMultiBlockDataSet* output,
- const partInfo&
+ const arrayRange&
);
//- Reset data counters
@@ -344,19 +342,19 @@ class vtkPV3Foam
void updateMeshPartsStatus();
//- Internal mesh info
- void updateInfoInternalMesh();
+ void updateInfoInternalMesh(vtkDataArraySelection*);
//- Lagrangian info
- void updateInfoLagrangian();
+ void updateInfoLagrangian(vtkDataArraySelection*);
//- Patch info
- void updateInfoPatches();
+ void updateInfoPatches(vtkDataArraySelection*);
//- Set info
- void updateInfoSets();
+ void updateInfoSets(vtkDataArraySelection*);
//- Zone info
- void updateInfoZones();
+ void updateInfoZones(vtkDataArraySelection*);
//- Read zone names for zoneType from file
wordList readZoneNames(const word& zoneType);
@@ -511,7 +509,7 @@ class vtkPV3Foam
const GeometricField&,
autoPtr >&,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange&,
const List& decompLst
);
@@ -521,7 +519,7 @@ class vtkPV3Foam
(
const GeometricField&,
vtkMultiBlockDataSet* output,
- const partInfo&,
+ const arrayRange&,
const label datasetNo,
const polyDecomp&
);
@@ -533,7 +531,7 @@ class vtkPV3Foam
const word& name,
const Field&,
vtkMultiBlockDataSet* output,
- const partInfo&,
+ const arrayRange&,
const label datasetNo
);
@@ -543,7 +541,7 @@ class vtkPV3Foam
(
const GeometricField&,
vtkMultiBlockDataSet* output,
- const partInfo&,
+ const arrayRange&,
const label datasetNo,
const fvMesh&,
const labelList& faceLabels
@@ -555,7 +553,7 @@ class vtkPV3Foam
(
const GeometricField&,
vtkMultiBlockDataSet* output,
- const partInfo&,
+ const arrayRange&,
const label datasetNo,
const fvMesh&,
const faceSet&
@@ -576,7 +574,7 @@ class vtkPV3Foam
(
const IOField&,
vtkMultiBlockDataSet* output,
- const partInfo&,
+ const arrayRange&,
const label datasetNo
);
@@ -596,7 +594,7 @@ class vtkPV3Foam
(
const GeometricField&,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange&,
const List&
);
@@ -607,7 +605,7 @@ class vtkPV3Foam
const GeometricField&,
const GeometricField&,
vtkMultiBlockDataSet* output,
- const partInfo&,
+ const arrayRange&,
const label datasetNo,
const polyDecomp&
);
@@ -619,7 +617,7 @@ class vtkPV3Foam
const word& name,
const Field&,
vtkMultiBlockDataSet* output,
- const partInfo&,
+ const arrayRange&,
const label datasetNo
);
@@ -640,7 +638,7 @@ class vtkPV3Foam
static wordHashSet getSelected
(
vtkDataArraySelection*,
- const partInfo&
+ const arrayRange&
);
//- Retrieve the current selections
@@ -650,7 +648,7 @@ class vtkPV3Foam
static stringList getSelectedArrayEntries
(
vtkDataArraySelection*,
- const partInfo&
+ const arrayRange&
);
//- Set selection(s)
@@ -661,7 +659,7 @@ class vtkPV3Foam
);
//- Get the first word from the mesh parts selection
- word getPartName(int);
+ word getPartName(const int);
//- Disallow default bitwise copy construct
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamAddToSelection.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamAddToSelection.H
index d6b1f1ed52..b945d6c6a0 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamAddToSelection.H
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamAddToSelection.H
@@ -50,11 +50,17 @@ Foam::label Foam::vtkPV3Foam::addToSelection
{
if (suffix.size())
{
- select->AddArray((names[nameI] + suffix).c_str());
+ select->AddArray
+ (
+ (names[nameI] + suffix).c_str()
+ );
}
else
{
- select->AddArray(names[nameI].c_str());
+ select->AddArray
+ (
+ (names[nameI]).c_str()
+ );
}
}
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFaceField.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFaceField.H
index 14c0d5f9b9..68f551ae5a 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFaceField.H
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFaceField.H
@@ -43,7 +43,7 @@ void Foam::vtkPV3Foam::convertFaceField
(
const GeometricField& tf,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo,
const fvMesh& mesh,
const labelList& faceLabels
@@ -100,7 +100,7 @@ void Foam::vtkPV3Foam::convertFaceField
vtkPolyData::SafeDownCast
(
- GetDataSetFromBlock(output, selector, datasetNo)
+ GetDataSetFromBlock(output, range, datasetNo)
) ->GetCellData()
->AddArray(cellData);
@@ -113,7 +113,7 @@ void Foam::vtkPV3Foam::convertFaceField
(
const GeometricField& tf,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo,
const fvMesh& mesh,
const faceSet& fSet
@@ -173,7 +173,7 @@ void Foam::vtkPV3Foam::convertFaceField
vtkPolyData::SafeDownCast
(
- GetDataSetFromBlock(output, selector, datasetNo)
+ GetDataSetFromBlock(output, range, datasetNo)
) ->GetCellData()
->AddArray(cellData);
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C
index 38cc52f680..b712fdebfe 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C
@@ -51,7 +51,7 @@ void Foam::vtkPV3Foam::pruneObjectList
)
{
// hash all the selected field names
- if (!selected.size())
+ if (selected.empty())
{
objects.clear();
}
@@ -79,7 +79,7 @@ void Foam::vtkPV3Foam::convertVolFields
reader_->GetVolFieldSelection()
);
- if (!selectedFields.size())
+ if (selectedFields.empty())
{
return;
}
@@ -89,7 +89,7 @@ void Foam::vtkPV3Foam::convertVolFields
IOobjectList objects(mesh, dbPtr_().timeName());
pruneObjectList(objects, selectedFields);
- if (!objects.size())
+ if (objects.empty())
{
return;
}
@@ -164,7 +164,7 @@ void Foam::vtkPV3Foam::convertPointFields
reader_->GetPointFieldSelection()
);
- if (!selectedFields.size())
+ if (selectedFields.empty())
{
return;
}
@@ -174,7 +174,7 @@ void Foam::vtkPV3Foam::convertPointFields
IOobjectList objects(mesh, dbPtr_().timeName());
pruneObjectList(objects, selectedFields);
- if (!objects.size())
+ if (objects.empty())
{
return;
}
@@ -229,7 +229,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
vtkMultiBlockDataSet* output
)
{
- partInfo& selector = partInfoLagrangian_;
+ arrayRange& range = arrayRangeLagrangian_;
const fvMesh& mesh = *meshPtr_;
wordHashSet selectedFields = getSelected
@@ -237,7 +237,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
reader_->GetLagrangianFieldSelection()
);
- if (!selectedFields.size())
+ if (selectedFields.empty())
{
return;
}
@@ -248,7 +248,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
printMemory();
}
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
const word cloudName = getPartName(partId);
const label datasetNo = partDataset_[partId];
@@ -270,7 +270,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
);
pruneObjectList(objects, selectedFields);
- if (!objects.size())
+ if (objects.empty())
{
continue;
}
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamLagrangianFields.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamLagrangianFields.H
index 58422d69f4..1b6e2a1568 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamLagrangianFields.H
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamLagrangianFields.H
@@ -42,7 +42,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
const label datasetNo
)
{
- const partInfo& selector = partInfoLagrangian_;
+ const arrayRange& range = arrayRangeLagrangian_;
forAllConstIter(IOobjectList, objects, iter)
{
@@ -50,7 +50,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
if (iter()->headerClassName() == IOField::typeName)
{
IOField tf(*iter());
- convertLagrangianField(tf, output, selector, datasetNo);
+ convertLagrangianField(tf, output, range, datasetNo);
}
}
}
@@ -61,7 +61,7 @@ void Foam::vtkPV3Foam::convertLagrangianField
(
const IOField& tf,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo
)
{
@@ -97,7 +97,7 @@ void Foam::vtkPV3Foam::convertLagrangianField
vtkPolyData::SafeDownCast
(
- GetDataSetFromBlock(output, selector, datasetNo)
+ GetDataSetFromBlock(output, range, datasetNo)
) ->GetPointData()
->AddArray(pointData);
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamMesh.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamMesh.C
index 6550a960e1..516b29d3ef 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamMesh.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamMesh.C
@@ -49,13 +49,13 @@ void Foam::vtkPV3Foam::convertMeshVolume
int& blockNo
)
{
- partInfo& selector = partInfoVolume_;
- selector.block(blockNo); // set output block
+ arrayRange& range = arrayRangeVolume_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
// resize for decomposed polyhedra
- regionPolyDecomp_.setSize(selector.size());
+ regionPolyDecomp_.setSize(range.size());
if (debug)
{
@@ -65,7 +65,7 @@ void Foam::vtkPV3Foam::convertMeshVolume
// Convert the internalMesh
// this looks like more than one part, but it isn't
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
const word partName = "internalMesh";
@@ -82,7 +82,7 @@ void Foam::vtkPV3Foam::convertMeshVolume
if (vtkmesh)
{
- AddToBlock(output, vtkmesh, selector, datasetNo, partName);
+ AddToBlock(output, vtkmesh, range, datasetNo, partName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@@ -109,8 +109,8 @@ void Foam::vtkPV3Foam::convertMeshLagrangian
int& blockNo
)
{
- partInfo& selector = partInfoLagrangian_;
- selector.block(blockNo); // set output block
+ arrayRange& range = arrayRangeLagrangian_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
@@ -120,7 +120,7 @@ void Foam::vtkPV3Foam::convertMeshLagrangian
printMemory();
}
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
const word cloudName = getPartName(partId);
@@ -133,7 +133,7 @@ void Foam::vtkPV3Foam::convertMeshLagrangian
if (vtkmesh)
{
- AddToBlock(output, vtkmesh, selector, datasetNo, cloudName);
+ AddToBlock(output, vtkmesh, range, datasetNo, cloudName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@@ -160,8 +160,8 @@ void Foam::vtkPV3Foam::convertMeshPatches
int& blockNo
)
{
- partInfo& selector = partInfoPatches_;
- selector.block(blockNo); // set output block
+ arrayRange& range = arrayRangePatches_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
const polyBoundaryMesh& patches = mesh.boundaryMesh();
@@ -172,7 +172,7 @@ void Foam::vtkPV3Foam::convertMeshPatches
printMemory();
}
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
const word patchName = getPartName(partId);
const label patchId = patches.findPatchID(patchName);
@@ -192,7 +192,7 @@ void Foam::vtkPV3Foam::convertMeshPatches
if (vtkmesh)
{
- AddToBlock(output, vtkmesh, selector, datasetNo, patchName);
+ AddToBlock(output, vtkmesh, range, datasetNo, patchName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@@ -219,15 +219,15 @@ void Foam::vtkPV3Foam::convertMeshCellZones
int& blockNo
)
{
- partInfo& selector = partInfoCellZones_;
- selector.block(blockNo); // set output block
+ arrayRange& range = arrayRangeCellZones_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
// resize for decomposed polyhedra
- zonePolyDecomp_.setSize(selector.size());
+ zonePolyDecomp_.setSize(range.size());
- if (!selector.size())
+ if (range.empty())
{
return;
}
@@ -239,7 +239,7 @@ void Foam::vtkPV3Foam::convertMeshCellZones
}
const cellZoneMesh& zMesh = mesh.cellZones();
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
const word zoneName = getPartName(partId);
const label zoneId = zMesh.findZoneID(zoneName);
@@ -281,7 +281,7 @@ void Foam::vtkPV3Foam::convertMeshCellZones
// copy pointMap as well, otherwise pointFields fail
zonePolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
- AddToBlock(output, vtkmesh, selector, datasetNo, zoneName);
+ AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@@ -308,13 +308,13 @@ void Foam::vtkPV3Foam::convertMeshCellSets
int& blockNo
)
{
- partInfo& selector = partInfoCellSets_;
- selector.block(blockNo); // set output block
+ arrayRange& range = arrayRangeCellSets_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
// resize for decomposed polyhedra
- csetPolyDecomp_.setSize(selector.size());
+ csetPolyDecomp_.setSize(range.size());
if (debug)
{
@@ -322,7 +322,7 @@ void Foam::vtkPV3Foam::convertMeshCellSets
printMemory();
}
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
const word partName = getPartName(partId);
@@ -363,7 +363,7 @@ void Foam::vtkPV3Foam::convertMeshCellSets
// copy pointMap as well, otherwise pointFields fail
csetPolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
- AddToBlock(output, vtkmesh, selector, datasetNo, partName);
+ AddToBlock(output, vtkmesh, range, datasetNo, partName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@@ -390,12 +390,12 @@ void Foam::vtkPV3Foam::convertMeshFaceZones
int& blockNo
)
{
- partInfo& selector = partInfoFaceZones_;
- selector.block(blockNo); // set output block
+ arrayRange& range = arrayRangeFaceZones_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
- if (!selector.size())
+ if (range.empty())
{
return;
}
@@ -407,7 +407,7 @@ void Foam::vtkPV3Foam::convertMeshFaceZones
}
const faceZoneMesh& zMesh = mesh.faceZones();
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
const word zoneName = getPartName(partId);
const label zoneId = zMesh.findZoneID(zoneName);
@@ -426,7 +426,7 @@ void Foam::vtkPV3Foam::convertMeshFaceZones
vtkPolyData* vtkmesh = faceZoneVTKMesh(mesh, zMesh[zoneId]);
if (vtkmesh)
{
- AddToBlock(output, vtkmesh, selector, datasetNo, zoneName);
+ AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@@ -453,8 +453,8 @@ void Foam::vtkPV3Foam::convertMeshFaceSets
int& blockNo
)
{
- partInfo& selector = partInfoFaceSets_;
- selector.block(blockNo); // set output block
+ arrayRange& range = arrayRangeFaceSets_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
@@ -464,7 +464,7 @@ void Foam::vtkPV3Foam::convertMeshFaceSets
printMemory();
}
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
const word partName = getPartName(partId);
@@ -483,7 +483,7 @@ void Foam::vtkPV3Foam::convertMeshFaceSets
vtkPolyData* vtkmesh = faceSetVTKMesh(mesh, fSet);
if (vtkmesh)
{
- AddToBlock(output, vtkmesh, selector, datasetNo, partName);
+ AddToBlock(output, vtkmesh, range, datasetNo, partName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@@ -510,8 +510,8 @@ void Foam::vtkPV3Foam::convertMeshPointZones
int& blockNo
)
{
- partInfo& selector = partInfoPointZones_;
- selector.block(blockNo); // set output block
+ arrayRange& range = arrayRangePointZones_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
@@ -521,10 +521,10 @@ void Foam::vtkPV3Foam::convertMeshPointZones
printMemory();
}
- if (selector.size())
+ if (range.size())
{
const pointZoneMesh& zMesh = mesh.pointZones();
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
word zoneName = getPartName(partId);
label zoneId = zMesh.findZoneID(zoneName);
@@ -537,7 +537,7 @@ void Foam::vtkPV3Foam::convertMeshPointZones
vtkPolyData* vtkmesh = pointZoneVTKMesh(mesh, zMesh[zoneId]);
if (vtkmesh)
{
- AddToBlock(output, vtkmesh, selector, datasetNo, zoneName);
+ AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@@ -566,8 +566,8 @@ void Foam::vtkPV3Foam::convertMeshPointSets
int& blockNo
)
{
- partInfo& selector = partInfoPointSets_;
- selector.block(blockNo); // set output block
+ arrayRange& range = arrayRangePointSets_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const fvMesh& mesh = *meshPtr_;
@@ -577,7 +577,7 @@ void Foam::vtkPV3Foam::convertMeshPointSets
printMemory();
}
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
word partName = getPartName(partId);
@@ -596,7 +596,7 @@ void Foam::vtkPV3Foam::convertMeshPointSets
vtkPolyData* vtkmesh = pointSetVTKMesh(mesh, pSet);
if (vtkmesh)
{
- AddToBlock(output, vtkmesh, selector, datasetNo, partName);
+ AddToBlock(output, vtkmesh, range, datasetNo, partName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
@@ -616,4 +616,5 @@ void Foam::vtkPV3Foam::convertMeshPointSets
}
}
+
// ************************************************************************* //
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamPatchField.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamPatchField.H
index bfa2d1ac46..7e473a7c74 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamPatchField.H
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamPatchField.H
@@ -45,7 +45,7 @@ void Foam::vtkPV3Foam::convertPatchField
const word& name,
const Field& ptf,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo
)
{
@@ -70,7 +70,7 @@ void Foam::vtkPV3Foam::convertPatchField
vtkPolyData::SafeDownCast
(
- GetDataSetFromBlock(output, selector, datasetNo)
+ GetDataSetFromBlock(output, range, datasetNo)
) ->GetCellData()
->AddArray(cellData);
@@ -85,7 +85,7 @@ void Foam::vtkPV3Foam::convertPatchPointField
const word& name,
const Field& pptf,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo
)
{
@@ -111,7 +111,7 @@ void Foam::vtkPV3Foam::convertPatchPointField
vtkPolyData::SafeDownCast
(
- GetDataSetFromBlock(output, selector, datasetNo)
+ GetDataSetFromBlock(output, range, datasetNo)
) ->GetPointData()
->AddArray(pointData);
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamPointFields.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamPointFields.H
index 5e3ae1df42..697044bc6b 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamPointFields.H
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamPointFields.H
@@ -77,7 +77,7 @@ void Foam::vtkPV3Foam::convertPointFields
(
ptf,
output,
- partInfoVolume_,
+ arrayRangeVolume_,
regionPolyDecomp_
);
@@ -86,7 +86,7 @@ void Foam::vtkPV3Foam::convertPointFields
(
ptf,
output,
- partInfoCellZones_,
+ arrayRangeCellZones_,
zonePolyDecomp_
);
@@ -95,7 +95,7 @@ void Foam::vtkPV3Foam::convertPointFields
(
ptf,
output,
- partInfoCellSets_,
+ arrayRangeCellSets_,
csetPolyDecomp_
);
@@ -105,8 +105,8 @@ void Foam::vtkPV3Foam::convertPointFields
//
for
(
- int partId = partInfoPatches_.start();
- partId < partInfoPatches_.end();
+ int partId = arrayRangePatches_.start();
+ partId < arrayRangePatches_.end();
++partId
)
{
@@ -124,7 +124,7 @@ void Foam::vtkPV3Foam::convertPointFields
fieldName,
ptf.boundaryField()[patchId].patchInternalField()(),
output,
- partInfoPatches_,
+ arrayRangePatches_,
datasetNo
);
}
@@ -137,11 +137,11 @@ void Foam::vtkPV3Foam::convertPointFieldBlock
(
const GeometricField& ptf,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const List& decompLst
)
{
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
const label datasetNo = partDataset_[partId];
@@ -152,7 +152,7 @@ void Foam::vtkPV3Foam::convertPointFieldBlock
ptf,
GeometricField::null(),
output,
- selector,
+ range,
datasetNo,
decompLst[datasetNo]
);
@@ -167,7 +167,7 @@ void Foam::vtkPV3Foam::convertPointField
const GeometricField& ptf,
const GeometricField& tf,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo,
const polyDecomp& decomp
)
@@ -260,7 +260,7 @@ void Foam::vtkPV3Foam::convertPointField
vtkUnstructuredGrid::SafeDownCast
(
- GetDataSetFromBlock(output, selector, datasetNo)
+ GetDataSetFromBlock(output, range, datasetNo)
) ->GetPointData()
->AddArray(pointData);
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInfo.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInfo.C
index 5bb2143c2a..2bed6fabd4 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInfo.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInfo.C
@@ -118,32 +118,39 @@ Foam::wordList Foam::vtkPV3Foam::readZoneNames(const word& zoneType)
}
-void Foam::vtkPV3Foam::updateInfoInternalMesh()
+void Foam::vtkPV3Foam::updateInfoInternalMesh
+(
+ vtkDataArraySelection* arraySelection
+)
{
if (debug)
{
Info<< " Foam::vtkPV3Foam::updateInfoInternalMesh" << endl;
}
- vtkDataArraySelection* partSelection = reader_->GetPartSelection();
-
// Determine mesh parts (internalMesh, patches...)
//- Add internal mesh as first entry
- partInfoVolume_ = partSelection->GetNumberOfArrays();
- partSelection->AddArray("internalMesh");
- partInfoVolume_ += 1;
+ arrayRangeVolume_.reset( arraySelection->GetNumberOfArrays() );
+ arraySelection->AddArray
+ (
+ "internalMesh"
+ );
+ arrayRangeVolume_ += 1;
if (debug)
{
// just for debug info
- getSelectedArrayEntries(partSelection);
+ getSelectedArrayEntries(arraySelection);
Info<< " Foam::vtkPV3Foam::updateInfoInternalMesh" << endl;
}
}
-void Foam::vtkPV3Foam::updateInfoLagrangian()
+void Foam::vtkPV3Foam::updateInfoLagrangian
+(
+ vtkDataArraySelection* arraySelection
+)
{
if (debug)
{
@@ -166,34 +173,35 @@ void Foam::vtkPV3Foam::updateInfoLagrangian()
readDir(dbPtr_->timePath()/lagrangianPrefix, fileName::DIRECTORY)
);
- vtkDataArraySelection* partSelection = reader_->GetPartSelection();
- partInfoLagrangian_ = partSelection->GetNumberOfArrays();
+ arrayRangeLagrangian_.reset( arraySelection->GetNumberOfArrays() );
int nClouds = 0;
forAll(cloudDirs, cloudI)
{
// Add cloud to GUI list
- partSelection->AddArray
+ arraySelection->AddArray
(
(cloudDirs[cloudI] + " - lagrangian").c_str()
);
++nClouds;
}
-
- partInfoLagrangian_ += nClouds;
+ arrayRangeLagrangian_ += nClouds;
if (debug)
{
// just for debug info
- getSelectedArrayEntries(partSelection);
+ getSelectedArrayEntries(arraySelection);
Info<< " Foam::vtkPV3Foam::updateInfoLagrangian" << endl;
}
}
-void Foam::vtkPV3Foam::updateInfoPatches()
+void Foam::vtkPV3Foam::updateInfoPatches
+(
+ vtkDataArraySelection* arraySelection
+)
{
if (debug)
{
@@ -201,8 +209,7 @@ void Foam::vtkPV3Foam::updateInfoPatches()
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
}
- vtkDataArraySelection* partSelection = reader_->GetPartSelection();
- partInfoPatches_ = partSelection->GetNumberOfArrays();
+ arrayRangePatches_.reset( arraySelection->GetNumberOfArrays() );
int nPatches = 0;
if (meshPtr_)
@@ -215,7 +222,7 @@ void Foam::vtkPV3Foam::updateInfoPatches()
if (pp.size())
{
// Add patch to GUI list
- partSelection->AddArray
+ arraySelection->AddArray
(
(pp.name() + " - patch").c_str()
);
@@ -260,7 +267,7 @@ void Foam::vtkPV3Foam::updateInfoPatches()
// Valid patch if nFace > 0 - add patch to GUI list
if (nFaces)
{
- partSelection->AddArray
+ arraySelection->AddArray
(
(patchEntries[entryI].keyword() + " - patch").c_str()
);
@@ -270,19 +277,22 @@ void Foam::vtkPV3Foam::updateInfoPatches()
}
}
}
- partInfoPatches_ += nPatches;
+ arrayRangePatches_ += nPatches;
if (debug)
{
// just for debug info
- getSelectedArrayEntries(partSelection);
+ getSelectedArrayEntries(arraySelection);
Info<< " Foam::vtkPV3Foam::updateInfoPatches" << endl;
}
}
-void Foam::vtkPV3Foam::updateInfoZones()
+void Foam::vtkPV3Foam::updateInfoZones
+(
+ vtkDataArraySelection* arraySelection
+)
{
if (!reader_->GetIncludeZones())
{
@@ -295,7 +305,6 @@ void Foam::vtkPV3Foam::updateInfoZones()
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
}
- vtkDataArraySelection* partSelection = reader_->GetPartSelection();
wordList namesLst;
//
@@ -310,12 +319,15 @@ void Foam::vtkPV3Foam::updateInfoZones()
namesLst = readZoneNames("cellZones");
}
- partInfoCellZones_ = partSelection->GetNumberOfArrays();
+ arrayRangeCellZones_.reset( arraySelection->GetNumberOfArrays() );
forAll(namesLst, elemI)
{
- partSelection->AddArray((namesLst[elemI] + " - cellZone").c_str());
+ arraySelection->AddArray
+ (
+ (namesLst[elemI] + " - cellZone").c_str()
+ );
}
- partInfoCellZones_ += namesLst.size();
+ arrayRangeCellZones_ += namesLst.size();
//
@@ -330,15 +342,15 @@ void Foam::vtkPV3Foam::updateInfoZones()
namesLst = readZoneNames("faceZones");
}
- partInfoFaceZones_ = partSelection->GetNumberOfArrays();
+ arrayRangeFaceZones_.reset( arraySelection->GetNumberOfArrays() );
forAll(namesLst, elemI)
{
- partSelection->AddArray
+ arraySelection->AddArray
(
(namesLst[elemI] + " - faceZone").c_str()
);
}
- partInfoFaceZones_ += namesLst.size();
+ arrayRangeFaceZones_ += namesLst.size();
//
@@ -353,28 +365,30 @@ void Foam::vtkPV3Foam::updateInfoZones()
namesLst = readZoneNames("pointZones");
}
- partInfoPointZones_ = partSelection->GetNumberOfArrays();
+ arrayRangePointZones_.reset( arraySelection->GetNumberOfArrays() );
forAll(namesLst, elemI)
{
- partSelection->AddArray
+ arraySelection->AddArray
(
(namesLst[elemI] + " - pointZone").c_str()
);
}
- partInfoPointZones_ += namesLst.size();
-
+ arrayRangePointZones_ += namesLst.size();
if (debug)
{
// just for debug info
- getSelectedArrayEntries(partSelection);
+ getSelectedArrayEntries(arraySelection);
Info<< " Foam::vtkPV3Foam::updateInfoZones" << endl;
}
}
-void Foam::vtkPV3Foam::updateInfoSets()
+void Foam::vtkPV3Foam::updateInfoSets
+(
+ vtkDataArraySelection* arraySelection
+)
{
if (!reader_->GetIncludeSets())
{
@@ -386,8 +400,6 @@ void Foam::vtkPV3Foam::updateInfoSets()
Info<< " Foam::vtkPV3Foam::updateInfoSets" << endl;
}
- vtkDataArraySelection* partSelection = reader_->GetPartSelection();
-
// Add names of sets
IOobjectList objects
(
@@ -397,26 +409,26 @@ void Foam::vtkPV3Foam::updateInfoSets()
);
- partInfoCellSets_ = partSelection->GetNumberOfArrays();
- partInfoCellSets_ += addToSelection
+ arrayRangeCellSets_.reset( arraySelection->GetNumberOfArrays() );
+ arrayRangeCellSets_ += addToSelection
(
- partSelection,
+ arraySelection,
objects,
" - cellSet"
);
- partInfoFaceSets_ = partSelection->GetNumberOfArrays();
- partInfoFaceSets_ += addToSelection
+ arrayRangeFaceSets_.reset( arraySelection->GetNumberOfArrays() );
+ arrayRangeFaceSets_ += addToSelection
(
- partSelection,
+ arraySelection,
objects,
" - faceSet"
);
- partInfoPointSets_ = partSelection->GetNumberOfArrays();
- partInfoPointSets_ += addToSelection
+ arrayRangePointSets_.reset( arraySelection->GetNumberOfArrays() );
+ arrayRangePointSets_ += addToSelection
(
- partSelection,
+ arraySelection,
objects,
" - pointSet"
);
@@ -424,7 +436,7 @@ void Foam::vtkPV3Foam::updateInfoSets()
if (debug)
{
// just for debug info
- getSelectedArrayEntries(partSelection);
+ getSelectedArrayEntries(arraySelection);
Info<< " Foam::vtkPV3Foam::updateInfoSets" << endl;
}
@@ -450,14 +462,13 @@ void Foam::vtkPV3Foam::updateInfoLagrangianFields()
// have to decide if the second set of fields get mixed in
// or dealt with separately
- const partInfo& selector = partInfoLagrangian_;
- int partId = selector.start();
-
- if (!selector.size() || partId < 0)
+ const arrayRange& range = arrayRangeLagrangian_;
+ if (range.empty())
{
return;
}
+ int partId = range.start();
word cloudName = getPartName(partId);
// use the db directly since this might be called without a mesh,
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUtils.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUtils.C
index f911222944..74a57fb559 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUtils.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUtils.C
@@ -76,12 +76,12 @@ void Foam::vtkPV3Foam::AddToBlock
(
vtkMultiBlockDataSet* output,
vtkDataSet* dataset,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo,
const std::string& datasetName
)
{
- const int blockNo = selector.block();
+ const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@@ -117,7 +117,7 @@ void Foam::vtkPV3Foam::AddToBlock
output->GetMetaData(blockNo)->Set
(
vtkCompositeDataSet::NAME(),
- selector.name()
+ range.name()
);
}
@@ -135,11 +135,11 @@ void Foam::vtkPV3Foam::AddToBlock
vtkDataSet* Foam::vtkPV3Foam::GetDataSetFromBlock
(
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo
)
{
- const int blockNo = selector.block();
+ const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@@ -157,10 +157,10 @@ vtkDataSet* Foam::vtkPV3Foam::GetDataSetFromBlock
Foam::label Foam::vtkPV3Foam::GetNumberOfDataSets
(
vtkMultiBlockDataSet* output,
- const partInfo& selector
+ const arrayRange& range
)
{
- const int blockNo = selector.block();
+ const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@@ -173,7 +173,7 @@ Foam::label Foam::vtkPV3Foam::GetNumberOfDataSets
}
-Foam::word Foam::vtkPV3Foam::getPartName(int partId)
+Foam::word Foam::vtkPV3Foam::getPartName(const int partId)
{
return getFirstWord(reader_->GetPartArrayName(partId));
}
@@ -202,13 +202,13 @@ Foam::wordHashSet Foam::vtkPV3Foam::getSelected
Foam::wordHashSet Foam::vtkPV3Foam::getSelected
(
vtkDataArraySelection* select,
- const partInfo& selector
+ const arrayRange& range
)
{
int nElem = select->GetNumberOfArrays();
wordHashSet selections(2*nElem);
- for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
+ for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
if (select->GetArraySetting(elemI))
{
@@ -262,13 +262,13 @@ Foam::stringList Foam::vtkPV3Foam::getSelectedArrayEntries
Foam::stringList Foam::vtkPV3Foam::getSelectedArrayEntries
(
vtkDataArraySelection* select,
- const partInfo& selector
+ const arrayRange& range
)
{
- stringList selections(selector.size());
+ stringList selections(range.size());
label nElem = 0;
- for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
+ for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
if (select->GetArraySetting(elemI))
{
@@ -281,7 +281,7 @@ Foam::stringList Foam::vtkPV3Foam::getSelectedArrayEntries
if (debug)
{
Info<< "available(";
- for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
+ for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
Info<< " \"" << select->GetArrayName(elemI) << "\"";
}
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamVolFields.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamVolFields.H
index d5387be61f..e28e3940a8 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamVolFields.H
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamVolFields.H
@@ -81,7 +81,7 @@ void Foam::vtkPV3Foam::convertVolFields
tf,
ptfPtr,
output,
- partInfoVolume_,
+ arrayRangeVolume_,
regionPolyDecomp_
);
@@ -91,7 +91,7 @@ void Foam::vtkPV3Foam::convertVolFields
tf,
ptfPtr,
output,
- partInfoCellZones_,
+ arrayRangeCellZones_,
zonePolyDecomp_
);
@@ -101,7 +101,7 @@ void Foam::vtkPV3Foam::convertVolFields
tf,
ptfPtr,
output,
- partInfoCellSets_,
+ arrayRangeCellSets_,
csetPolyDecomp_
);
@@ -117,8 +117,8 @@ void Foam::vtkPV3Foam::convertVolFields
for
(
- int partId = partInfoPatches_.start();
- partId < partInfoPatches_.end();
+ int partId = arrayRangePatches_.start();
+ partId < arrayRangePatches_.end();
++partId
)
{
@@ -155,7 +155,7 @@ void Foam::vtkPV3Foam::convertVolFields
tf.name(),
tpptf(),
output,
- partInfoPatches_,
+ arrayRangePatches_,
datasetNo
);
@@ -164,7 +164,7 @@ void Foam::vtkPV3Foam::convertVolFields
pointFldName,
ppInterpList[patchId].faceToPointInterpolate(tpptf)(),
output,
- partInfoPatches_,
+ arrayRangePatches_,
datasetNo
);
}
@@ -175,7 +175,7 @@ void Foam::vtkPV3Foam::convertVolFields
tf.name(),
ptf,
output,
- partInfoPatches_,
+ arrayRangePatches_,
datasetNo
);
@@ -184,7 +184,7 @@ void Foam::vtkPV3Foam::convertVolFields
pointFldName,
ppInterpList[patchId].faceToPointInterpolate(ptf)(),
output,
- partInfoPatches_,
+ arrayRangePatches_,
datasetNo
);
}
@@ -195,8 +195,8 @@ void Foam::vtkPV3Foam::convertVolFields
//
for
(
- int partId = partInfoFaceZones_.start();
- partId < partInfoFaceZones_.end();
+ int partId = arrayRangeFaceZones_.start();
+ partId < arrayRangeFaceZones_.end();
++partId
)
{
@@ -220,7 +220,7 @@ void Foam::vtkPV3Foam::convertVolFields
(
tf,
output,
- partInfoFaceZones_,
+ arrayRangeFaceZones_,
datasetNo,
mesh,
zMesh[zoneId]
@@ -234,8 +234,8 @@ void Foam::vtkPV3Foam::convertVolFields
//
for
(
- int partId = partInfoFaceSets_.start();
- partId < partInfoFaceSets_.end();
+ int partId = arrayRangeFaceSets_.start();
+ partId < arrayRangeFaceSets_.end();
++partId
)
{
@@ -253,7 +253,7 @@ void Foam::vtkPV3Foam::convertVolFields
(
tf,
output,
- partInfoFaceSets_,
+ arrayRangeFaceSets_,
datasetNo,
mesh,
fSet
@@ -271,11 +271,11 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
const GeometricField& tf,
autoPtr >& ptfPtr,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const List& decompLst
)
{
- for (int partId = selector.start(); partId < selector.end(); ++partId)
+ for (int partId = range.start(); partId < range.end(); ++partId)
{
const label datasetNo = partDataset_[partId];
@@ -285,7 +285,7 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
(
tf,
output,
- selector,
+ range,
datasetNo,
decompLst[datasetNo]
);
@@ -309,7 +309,7 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
ptfPtr(),
tf,
output,
- selector,
+ range,
datasetNo,
decompLst[datasetNo]
);
@@ -323,7 +323,7 @@ void Foam::vtkPV3Foam::convertVolField
(
const GeometricField& tf,
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo,
const polyDecomp& decompInfo
)
@@ -359,7 +359,7 @@ void Foam::vtkPV3Foam::convertVolField
vtkUnstructuredGrid::SafeDownCast
(
- GetDataSetFromBlock(output, selector, datasetNo)
+ GetDataSetFromBlock(output, range, datasetNo)
) ->GetCellData()
->AddArray(celldata);
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/PV3blockMeshReader_SM.xml b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/PV3blockMeshReader_SM.xml
index 2ac4774ff0..b5bb304a65 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/PV3blockMeshReader_SM.xml
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/PV3blockMeshReader_SM.xml
@@ -43,34 +43,40 @@
-
-
+
+
+
-
+
-
+
+
+ This property contains a list of the blocks
+
-
+
@@ -82,13 +88,16 @@
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
- information_property="CurvedEdgesArrayInfo"
+ information_property="CurvedEdgesArrayStatus"
animateable="0">
-
+
+
+ This property contains a list of the curved edges
+
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/pqPV3blockMeshReaderPanel.cxx b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/pqPV3blockMeshReaderPanel.cxx
index 8114a14709..6a56583134 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/pqPV3blockMeshReaderPanel.cxx
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/pqPV3blockMeshReaderPanel.cxx
@@ -32,9 +32,10 @@ License
#include
#include
#include
+#include
#include
-// Paraview<->QT UI
+// Paraview <-> QT UI
#include "pqAnimationScene.h"
#include "pqApplicationCore.h"
#include "pqPipelineRepresentation.h"
@@ -56,34 +57,35 @@ pqPV3blockMeshReaderPanel::pqPV3blockMeshReaderPanel
QWidget *p
)
:
- pqAutoGeneratedObjectPanel(proxy, p),
- sourceProxy_(vtkSMSourceProxy::SafeDownCast(this->proxy()))
+ pqAutoGeneratedObjectPanel(proxy, p)
{
// create first sublayout (at top of the panel)
- QGridLayout *sect1 = new QGridLayout();
- this->PanelLayout->addLayout(sect1, 0, 0, 1, -1);
-
+ QGridLayout *form = new QGridLayout();
+ this->PanelLayout->addLayout(form, 0, 0, 1, -1);
+ vtkSMProperty* prop = 0;
// checkbox for showing point numbers
- ShowPointNumbers_ = new QCheckBox("Show Point Numbers");
- ShowPointNumbers_->setChecked(true);
+ if ((prop = this->proxy()->GetProperty("UiShowPointNumbers")) != 0)
+ {
+ prop->SetImmediateUpdate(true);
- connect
- (
- ShowPointNumbers_,
- SIGNAL(stateChanged(int)),
- this,
- SLOT(ShowPointNumbersToggled())
- );
+ ShowPointNumbers_ = new QCheckBox("Show Point Numbers");
+ ShowPointNumbers_->setToolTip("Show point numbers in render window.");
+ ShowPointNumbers_->setChecked
+ (
+ vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
+ );
- sect1->addWidget(ShowPointNumbers_);
+ form->addWidget(ShowPointNumbers_);
-
- // immediate update on the Server Manager side
- vtkSMIntVectorProperty::SafeDownCast
- (
- sourceProxy_->GetProperty("UiShowPointNumbers")
- )->SetImmediateUpdate(true);
+ connect
+ (
+ ShowPointNumbers_,
+ SIGNAL(stateChanged(int)),
+ this,
+ SLOT(ShowPointNumbersToggled())
+ );
+ }
}
@@ -93,7 +95,7 @@ void pqPV3blockMeshReaderPanel::ShowPointNumbersToggled()
{
vtkSMIntVectorProperty::SafeDownCast
(
- sourceProxy_->GetProperty("UiShowPointNumbers")
+ this->proxy()->GetProperty("UiShowPointNumbers")
)->SetElement(0, ShowPointNumbers_->isChecked());
// update the active view
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/pqPV3blockMeshReaderPanel.h b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/pqPV3blockMeshReaderPanel.h
index 8096338315..0b1929af6d 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/pqPV3blockMeshReaderPanel.h
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/pqPV3blockMeshReaderPanel.h
@@ -62,9 +62,6 @@ class pqPV3blockMeshReaderPanel
Q_OBJECT;
typedef pqAutoGeneratedObjectPanel Superclass;
- //- Server Manager Source Proxy
- vtkSMSourceProxy* sourceProxy_;
-
//- Show Point Numbers checkbox
QCheckBox* ShowPointNumbers_;
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/vtkPV3blockMeshReader.cxx b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/vtkPV3blockMeshReader.cxx
index bf17a60ca3..ab38d1bf4a 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/vtkPV3blockMeshReader.cxx
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/vtkPV3blockMeshReader.cxx
@@ -64,7 +64,7 @@ vtkPV3blockMeshReader::vtkPV3blockMeshReader()
ShowPointNumbers = 1;
UpdateGUI = 0;
- PartSelection = vtkDataArraySelection::New();
+ BlockSelection = vtkDataArraySelection::New();
CurvedEdgesSelection = vtkDataArraySelection::New();
// Setup the selection callback to modify this object when an array
@@ -77,7 +77,7 @@ vtkPV3blockMeshReader::vtkPV3blockMeshReader()
SelectionObserver->SetClientData(this);
- PartSelection->AddObserver
+ BlockSelection->AddObserver
(
vtkCommand::ModifiedEvent,
this->SelectionObserver
@@ -109,11 +109,11 @@ vtkPV3blockMeshReader::~vtkPV3blockMeshReader()
delete [] FileName;
}
- PartSelection->RemoveObserver(this->SelectionObserver);
+ BlockSelection->RemoveObserver(this->SelectionObserver);
CurvedEdgesSelection->RemoveObserver(this->SelectionObserver);
SelectionObserver->Delete();
- PartSelection->Delete();
+ BlockSelection->Delete();
}
@@ -292,50 +292,50 @@ void vtkPV3blockMeshReader::PrintSelf(ostream& os, vtkIndent indent)
// ----------------------------------------------------------------------
-// Parts selection list control
+// Block selection list control
-vtkDataArraySelection* vtkPV3blockMeshReader::GetPartSelection()
+vtkDataArraySelection* vtkPV3blockMeshReader::GetBlockSelection()
{
- vtkDebugMacro(<<"GetPartSelection");
- return PartSelection;
+ vtkDebugMacro(<<"GetBlockSelection");
+ return BlockSelection;
}
-int vtkPV3blockMeshReader::GetNumberOfPartArrays()
+int vtkPV3blockMeshReader::GetNumberOfBlockArrays()
{
- vtkDebugMacro(<<"GetNumberOfPartArrays");
- return PartSelection->GetNumberOfArrays();
+ vtkDebugMacro(<<"GetNumberOfBlockArrays");
+ return BlockSelection->GetNumberOfArrays();
}
-const char* vtkPV3blockMeshReader::GetPartArrayName(int index)
+const char* vtkPV3blockMeshReader::GetBlockArrayName(int index)
{
- vtkDebugMacro(<<"GetPartArrayName");
- return PartSelection->GetArrayName(index);
+ vtkDebugMacro(<<"GetBlockArrayName");
+ return BlockSelection->GetArrayName(index);
}
-int vtkPV3blockMeshReader::GetPartArrayStatus(const char* name)
+int vtkPV3blockMeshReader::GetBlockArrayStatus(const char* name)
{
- vtkDebugMacro(<<"GetPartArrayStatus");
- return PartSelection->ArrayIsEnabled(name);
+ vtkDebugMacro(<<"GetBlockArrayStatus");
+ return BlockSelection->ArrayIsEnabled(name);
}
-void vtkPV3blockMeshReader::SetPartArrayStatus
+void vtkPV3blockMeshReader::SetBlockArrayStatus
(
const char* name,
int status
)
{
- vtkDebugMacro(<<"SetPartArrayStatus");
+ vtkDebugMacro(<<"SetBlockArrayStatus");
if (status)
{
- PartSelection->EnableArray(name);
+ BlockSelection->EnableArray(name);
}
else
{
- PartSelection->DisableArray(name);
+ BlockSelection->DisableArray(name);
}
}
@@ -399,14 +399,7 @@ void vtkPV3blockMeshReader::SelectionModifiedCallback
void*
)
{
- static_cast(clientdata)->SelectionModified();
-}
-
-
-void vtkPV3blockMeshReader::SelectionModified()
-{
- vtkDebugMacro(<<"SelectionModified");
- Modified();
+ static_cast(clientdata)->Modified();
}
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/vtkPV3blockMeshReader.h b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/vtkPV3blockMeshReader.h
index ae704d4a3b..ee2228f5da 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/vtkPV3blockMeshReader.h
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/vtkPV3blockMeshReader.h
@@ -84,15 +84,15 @@ public:
// Description:
- // Parts (blocks) selection list control
- vtkDataArraySelection* GetPartSelection();
- int GetNumberOfPartArrays();
- int GetPartArrayStatus(const char*);
- void SetPartArrayStatus(const char*, int status);
- const char* GetPartArrayName(int index);
+ // Blocks selection list control
+ vtkDataArraySelection* GetBlockSelection();
+ int GetNumberOfBlockArrays();
+ int GetBlockArrayStatus(const char*);
+ void SetBlockArrayStatus(const char*, int status);
+ const char* GetBlockArrayName(int index);
// Description:
- // Parts (blocks) selection list control
+ // CurvedEdges selection list control
vtkDataArraySelection* GetCurvedEdgesSelection();
int GetNumberOfCurvedEdgesArrays();
int GetCurvedEdgesArrayStatus(const char*);
@@ -110,8 +110,6 @@ public:
void* calldata
);
- void SelectionModified();
-
protected:
@@ -164,7 +162,7 @@ private:
//- Dummy variable/switch to invoke a reader update
int UpdateGUI;
- vtkDataArraySelection* PartSelection;
+ vtkDataArraySelection* BlockSelection;
vtkDataArraySelection* CurvedEdgesSelection;
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.C
index e9d36ec91e..b039087398 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.C
@@ -49,13 +49,16 @@ defineTypeNameAndDebug(Foam::vtkPV3blockMesh, 0);
void Foam::vtkPV3blockMesh::resetCounters()
{
// Reset mesh part ids and sizes
- partInfoBlocks_.reset();
- partInfoEdges_.reset();
- partInfoCorners_.reset();
+ arrayRangeBlocks_.reset();
+ arrayRangeEdges_.reset();
+ arrayRangeCorners_.reset();
}
-void Foam::vtkPV3blockMesh::updateInfoBlocks()
+void Foam::vtkPV3blockMesh::updateInfoBlocks
+(
+ vtkDataArraySelection* arraySelection
+)
{
if (debug)
{
@@ -63,8 +66,7 @@ void Foam::vtkPV3blockMesh::updateInfoBlocks()
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
}
- vtkDataArraySelection* selection = reader_->GetPartSelection();
- partInfoBlocks_ = selection->GetNumberOfArrays();
+ arrayRangeBlocks_.reset( arraySelection->GetNumberOfArrays() );
const blockMesh& blkMesh = *meshPtr_;
const int nBlocks = blkMesh.size();
@@ -81,22 +83,25 @@ void Foam::vtkPV3blockMesh::updateInfoBlocks()
}
// Add blockId and zoneName to GUI list
- selection->AddArray(partName.c_str());
+ arraySelection->AddArray(partName.c_str());
}
- partInfoBlocks_ += nBlocks;
+ arrayRangeBlocks_ += nBlocks;
if (debug)
{
// just for debug info
- getSelectedArrayEntries(selection);
+ getSelectedArrayEntries(arraySelection);
Info<< " Foam::vtkPV3blockMesh::updateInfoBlocks" << endl;
}
}
-void Foam::vtkPV3blockMesh::updateInfoEdges()
+void Foam::vtkPV3blockMesh::updateInfoEdges
+(
+ vtkDataArraySelection* arraySelection
+)
{
if (debug)
{
@@ -104,8 +109,7 @@ void Foam::vtkPV3blockMesh::updateInfoEdges()
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
}
- vtkDataArraySelection* selection = reader_->GetCurvedEdgesSelection();
- partInfoEdges_ = selection->GetNumberOfArrays();
+ arrayRangeEdges_.reset( arraySelection->GetNumberOfArrays() );
const blockMesh& blkMesh = *meshPtr_;
const curvedEdgeList& edges = blkMesh.edges();
@@ -119,15 +123,15 @@ void Foam::vtkPV3blockMesh::updateInfoEdges()
<< edges[edgeI].type();
// Add "beg:end - type" to GUI list
- selection->AddArray(ostr.str().c_str());
+ arraySelection->AddArray(ostr.str().c_str());
}
- partInfoEdges_ += nEdges;
+ arrayRangeEdges_ += nEdges;
if (debug)
{
// just for debug info
- getSelectedArrayEntries(selection);
+ getSelectedArrayEntries(arraySelection);
Info<< " Foam::vtkPV3blockMesh::updateInfoEdges" << endl;
}
@@ -145,9 +149,9 @@ Foam::vtkPV3blockMesh::vtkPV3blockMesh
reader_(reader),
dbPtr_(NULL),
meshPtr_(NULL),
- partInfoBlocks_("block"),
- partInfoEdges_("edges"),
- partInfoCorners_("corners")
+ arrayRangeBlocks_("block"),
+ arrayRangeEdges_("edges"),
+ arrayRangeCorners_("corners")
{
if (debug)
{
@@ -243,7 +247,7 @@ void Foam::vtkPV3blockMesh::updateInfo()
resetCounters();
- vtkDataArraySelection* partSelection = reader_->GetPartSelection();
+ vtkDataArraySelection* blockSelection = reader_->GetBlockSelection();
vtkDataArraySelection* edgeSelection = reader_->GetCurvedEdgesSelection();
// enable 'internalMesh' on the first call
@@ -251,33 +255,33 @@ void Foam::vtkPV3blockMesh::updateInfo()
stringList enabledParts;
stringList enabledEdges;
bool firstTime = false;
- if (!partSelection->GetNumberOfArrays() && !meshPtr_)
+ if (!blockSelection->GetNumberOfArrays() && !meshPtr_)
{
firstTime = true;
}
else
{
- enabledParts = getSelectedArrayEntries(partSelection);
+ enabledParts = getSelectedArrayEntries(blockSelection);
enabledEdges = getSelectedArrayEntries(edgeSelection);
}
// Clear current mesh parts list
- partSelection->RemoveAllArrays();
+ blockSelection->RemoveAllArrays();
edgeSelection->RemoveAllArrays();
// need a blockMesh
updateFoamMesh();
// Update mesh parts list
- updateInfoBlocks();
+ updateInfoBlocks( blockSelection );
// Update curved edges list
- updateInfoEdges();
+ updateInfoEdges( edgeSelection );
// restore the enabled selections
if (!firstTime)
{
- setSelectedArrayEntries(partSelection, enabledParts);
+ setSelectedArrayEntries(blockSelection, enabledParts);
setSelectedArrayEntries(edgeSelection, enabledEdges);
}
@@ -337,7 +341,7 @@ void Foam::vtkPV3blockMesh::Update
reader_->UpdateProgress(0.1);
// Set up mesh parts selection(s)
- updateBoolListStatus(partStatus_, reader_->GetPartSelection());
+ updateBoolListStatus(blockStatus_, reader_->GetBlockSelection());
// Set up curved edges selection(s)
updateBoolListStatus(edgeStatus_, reader_->GetCurvedEdgesSelection());
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.H
index a159b3cba5..fc612c27b8 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.H
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMesh.H
@@ -88,7 +88,7 @@ class vtkPV3blockMesh
// Private classes
//- Bookkeeping for GUI checklists and the multi-block organization
- class partInfo
+ class arrayRange
{
const char *name_;
int block_;
@@ -97,11 +97,11 @@ class vtkPV3blockMesh
public:
- partInfo(const char *name, const int blockNo=0)
+ arrayRange(const char *name, const int blockNo=0)
:
name_(name),
block_(blockNo),
- start_(-1),
+ start_(0),
size_(0)
{}
@@ -119,21 +119,25 @@ class vtkPV3blockMesh
return prev;
}
+ //- Return block name
const char* name() const
{
return name_;
}
+ //- Return array start index
int start() const
{
return start_;
}
+ //- Return array end index
int end() const
{
return start_ + size_;
}
+ //- Return sublist size
int size() const
{
return size_;
@@ -144,16 +148,10 @@ class vtkPV3blockMesh
return !size_;
}
- void reset()
+ //- Reset the size to zero and optionally assign a new start
+ void reset(const int startAt = 0)
{
- start_ = -1;
- size_ = 0;
- }
-
- //- Assign new start and reset the size
- void operator=(const int i)
- {
- start_ = i;
+ start_ = startAt;
size_ = 0;
}
@@ -177,22 +175,20 @@ class vtkPV3blockMesh
blockMesh* meshPtr_;
//- Selected geometrical parts
- boolList partStatus_;
+ boolList blockStatus_;
//- Selected curved edges
boolList edgeStatus_;
//- First instance and size of bleckMesh blocks
- // used to index into partStatus_
- partInfo partInfoBlocks_;
+ // used to index into blockStatus_
+ arrayRange arrayRangeBlocks_;
- //- First instance and size of CurvedEdges
- // only partially used
- partInfo partInfoEdges_;
+ //- First instance and size of CurvedEdges (only partially used)
+ arrayRange arrayRangeEdges_;
- //- First instance and size of block corners
- // only partially used
- partInfo partInfoCorners_;
+ //- First instance and size of block corners (only partially used)
+ arrayRange arrayRangeCorners_;
//- List of point numbers for rendering to window
List pointNumberTextActorsPtrs_;
@@ -205,7 +201,7 @@ class vtkPV3blockMesh
(
vtkMultiBlockDataSet* output,
vtkDataSet* dataset,
- const partInfo&,
+ const arrayRange&,
const label datasetNo,
const std::string& datasetName
);
@@ -215,7 +211,7 @@ class vtkPV3blockMesh
static vtkDataSet* GetDataSetFromBlock
(
vtkMultiBlockDataSet* output,
- const partInfo&,
+ const arrayRange&,
const label datasetNo
);
@@ -224,7 +220,7 @@ class vtkPV3blockMesh
static label GetNumberOfDataSets
(
vtkMultiBlockDataSet* output,
- const partInfo&
+ const arrayRange&
);
//- Update boolList from GUI selection
@@ -240,10 +236,10 @@ class vtkPV3blockMesh
// Update information helper functions
//- Internal block info
- void updateInfoBlocks();
+ void updateInfoBlocks(vtkDataArraySelection*);
//- block curved edges info
- void updateInfoEdges();
+ void updateInfoEdges(vtkDataArraySelection*);
// Update helper functions
@@ -271,7 +267,7 @@ class vtkPV3blockMesh
static wordHashSet getSelected
(
vtkDataArraySelection*,
- const partInfo&
+ const arrayRange&
);
//- Retrieve the current selections
@@ -281,7 +277,7 @@ class vtkPV3blockMesh
static stringList getSelectedArrayEntries
(
vtkDataArraySelection*,
- const partInfo&
+ const arrayRange&
);
//- Set selection(s)
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshConvert.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshConvert.C
index 4f76f5ebf2..67a9cdbed7 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshConvert.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshConvert.C
@@ -52,9 +52,9 @@ void Foam::vtkPV3blockMesh::convertMeshBlocks
int& blockNo
)
{
- vtkDataArraySelection* selection = reader_->GetPartSelection();
- partInfo& selector = partInfoBlocks_;
- selector.block(blockNo); // set output block
+ vtkDataArraySelection* selection = reader_->GetBlockSelection();
+ arrayRange& range = arrayRangeBlocks_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const blockMesh& blkMesh = *meshPtr_;
@@ -70,25 +70,18 @@ void Foam::vtkPV3blockMesh::convertMeshBlocks
for
(
- int partId = selector.start();
- partId < selector.end();
+ int partId = range.start();
+ partId < range.end();
++partId, ++blockI
)
{
- if (!partStatus_[partId])
+ if (!blockStatus_[partId])
{
continue;
}
const blockDescriptor& blockDef = blkMesh[blockI].blockDef();
- word partName("block");
-// // append the (optional) zone name
-// if (!blockDef.zoneName().empty())
-// {
-// partName += " - " + blockDef.zoneName();
-// }
-//
vtkUnstructuredGrid* vtkmesh = vtkUnstructuredGrid::New();
// Convert Foam mesh vertices to VTK
@@ -123,7 +116,7 @@ void Foam::vtkPV3blockMesh::convertMeshBlocks
AddToBlock
(
- output, vtkmesh, selector, datasetNo,
+ output, vtkmesh, range, datasetNo,
selection->GetArrayName(partId)
);
@@ -152,9 +145,9 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
)
{
vtkDataArraySelection* selection = reader_->GetCurvedEdgesSelection();
- partInfo& selector = partInfoEdges_;
+ arrayRange& range = arrayRangeEdges_;
- selector.block(blockNo); // set output block
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const blockMesh& blkMesh = *meshPtr_;
@@ -165,8 +158,8 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
for
(
- int partId = selector.start();
- partId < selector.end();
+ int partId = range.start();
+ partId < range.end();
++partId, ++edgeI
)
{
@@ -187,9 +180,7 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
edgeList blkEdges = blockDef.blockShape().edges();
-
// find the corresponding edge within the block
-
label foundEdgeI = -1;
forAll(blkEdges, blkEdgeI)
{
@@ -236,7 +227,7 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
AddToBlock
(
- output, vtkmesh, selector, datasetNo,
+ output, vtkmesh, range, datasetNo,
selection->GetArrayName(partId)
);
@@ -269,8 +260,8 @@ void Foam::vtkPV3blockMesh::convertMeshCorners
int& blockNo
)
{
- partInfo& selector = partInfoCorners_;
- selector.block(blockNo); // set output block
+ arrayRange& range = arrayRangeCorners_;
+ range.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const pointField& blockPoints = meshPtr_->blockPointField();
@@ -310,7 +301,11 @@ void Foam::vtkPV3blockMesh::convertMeshCorners
vtkmesh->SetVerts(vtkcells);
vtkcells->Delete();
- AddToBlock(output, vtkmesh, selector, datasetNo, partInfoCorners_.name());
+ AddToBlock
+ (
+ output, vtkmesh, range, datasetNo,
+ arrayRangeCorners_.name()
+ );
vtkmesh->Delete();
datasetNo++;
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshUtils.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshUtils.C
index bde724d9a7..5a84dd2c77 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshUtils.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/vtkPV3blockMesh/vtkPV3blockMeshUtils.C
@@ -71,12 +71,12 @@ void Foam::vtkPV3blockMesh::AddToBlock
(
vtkMultiBlockDataSet* output,
vtkDataSet* dataset,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo,
const std::string& datasetName
)
{
- const int blockNo = selector.block();
+ const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@@ -112,7 +112,7 @@ void Foam::vtkPV3blockMesh::AddToBlock
output->GetMetaData(blockNo)->Set
(
vtkCompositeDataSet::NAME(),
- selector.name()
+ range.name()
);
}
@@ -130,11 +130,11 @@ void Foam::vtkPV3blockMesh::AddToBlock
vtkDataSet* Foam::vtkPV3blockMesh::GetDataSetFromBlock
(
vtkMultiBlockDataSet* output,
- const partInfo& selector,
+ const arrayRange& range,
const label datasetNo
)
{
- const int blockNo = selector.block();
+ const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@@ -152,10 +152,10 @@ vtkDataSet* Foam::vtkPV3blockMesh::GetDataSetFromBlock
Foam::label Foam::vtkPV3blockMesh::GetNumberOfDataSets
(
vtkMultiBlockDataSet* output,
- const partInfo& selector
+ const arrayRange& range
)
{
- const int blockNo = selector.block();
+ const int blockNo = range.block();
vtkDataObject* blockDO = output->GetBlock(blockNo);
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
@@ -191,13 +191,13 @@ Foam::wordHashSet Foam::vtkPV3blockMesh::getSelected
Foam::wordHashSet Foam::vtkPV3blockMesh::getSelected
(
vtkDataArraySelection* select,
- const partInfo& selector
+ const arrayRange& range
)
{
int nElem = select->GetNumberOfArrays();
wordHashSet selections(2*nElem);
- for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
+ for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
if (select->GetArraySetting(elemI))
{
@@ -251,13 +251,13 @@ Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
(
vtkDataArraySelection* select,
- const partInfo& selector
+ const arrayRange& range
)
{
- stringList selections(selector.size());
+ stringList selections(range.size());
label nElem = 0;
- for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
+ for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
if (select->GetArraySetting(elemI))
{
@@ -270,7 +270,7 @@ Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
if (debug)
{
Info<< "available(";
- for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
+ for (int elemI = range.start(); elemI < range.end(); ++elemI)
{
Info<< " \"" << select->GetArrayName(elemI) << "\"";
}
diff --git a/doc/Doxygen/Doxyfile b/doc/Doxygen/Doxyfile
index 908fa543b9..68ff8430b2 100644
--- a/doc/Doxygen/Doxyfile
+++ b/doc/Doxygen/Doxyfile
@@ -689,13 +689,13 @@ HTML_FILE_EXTENSION = .html
# each generated HTML page. If it is left blank doxygen will generate a
# standard header.
-HTML_HEADER = FoamHeader.html
+HTML_HEADER = $(WM_PROJECT_DIR)/doc/Doxygen/FoamHeader.html
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.
-HTML_FOOTER = FoamFooter.html
+HTML_FOOTER = $(WM_PROJECT_DIR)/doc/Doxygen/FoamFooter.html
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to
diff --git a/src/mesh/blockMesh/Make/files b/src/mesh/blockMesh/Make/files
index cc7a1c1bb5..d68caa1c24 100644
--- a/src/mesh/blockMesh/Make/files
+++ b/src/mesh/blockMesh/Make/files
@@ -1,13 +1,17 @@
+curvedEdges/CatmullRomSpline.C
+curvedEdges/polyLine.C
+
+curvedEdges/arcEdge.C
curvedEdges/curvedEdge.C
curvedEdges/lineEdge.C
-curvedEdges/polyLine.C
curvedEdges/polyLineEdge.C
-curvedEdges/arcEdge.C
-curvedEdges/spline.C
-curvedEdges/BSpline.C
-curvedEdges/simpleSplineEdge.C
-curvedEdges/polySplineEdge.C
curvedEdges/lineDivide.C
+curvedEdges/splineEdge.C
+
+curvedEdges/legacy/spline.C
+curvedEdges/legacy/BSpline.C
+curvedEdges/legacy/simpleSplineEdge.C
+curvedEdges/legacy/polySplineEdge.C
blockDescriptor/blockDescriptor.C
blockDescriptor/blockDescriptorEdges.C
diff --git a/src/mesh/blockMesh/blockDescriptor/blockDescriptor.C b/src/mesh/blockMesh/blockDescriptor/blockDescriptor.C
index 599a108c3c..335fc824b8 100644
--- a/src/mesh/blockMesh/blockDescriptor/blockDescriptor.C
+++ b/src/mesh/blockMesh/blockDescriptor/blockDescriptor.C
@@ -89,7 +89,7 @@ Foam::blockDescriptor::blockDescriptor
{
zoneName_ = t.wordToken();
- // Get the next token
+ // Examine next token
is >> t;
}
is.putBack(t);
@@ -129,7 +129,12 @@ Foam::blockDescriptor::blockDescriptor
scalarList expRatios(is);
- if (expRatios.size() == 3)
+ if (expRatios.size() == 1)
+ {
+ // identical in x/y/z-directions
+ expand_ = expRatios[0];
+ }
+ else if (expRatios.size() == 3)
{
// x-direction
expand_[0] = expRatios[0];
diff --git a/src/mesh/blockMesh/blockDescriptor/blockDescriptorEdges.C b/src/mesh/blockMesh/blockDescriptor/blockDescriptorEdges.C
index 5fcf31f421..afc8fcd078 100644
--- a/src/mesh/blockMesh/blockDescriptor/blockDescriptorEdges.C
+++ b/src/mesh/blockMesh/blockDescriptor/blockDescriptorEdges.C
@@ -120,8 +120,8 @@ void Foam::blockDescriptor::setEdge
// divide the line
lineDivide divEdge(cedge, dim, 1.0/(gExp+SMALL));
- pointField p = divEdge.points();
- scalarList d = divEdge.lambdaDivisions();
+ const pointField& p = divEdge.points();
+ const scalarList& d = divEdge.lambdaDivisions();
edgePoints_[edgeI].setSize(p.size());
edgeWeights_[edgeI].setSize(d.size());
diff --git a/src/mesh/blockMesh/curvedEdges/CatmullRomSpline.C b/src/mesh/blockMesh/curvedEdges/CatmullRomSpline.C
new file mode 100644
index 0000000000..711ae8da67
--- /dev/null
+++ b/src/mesh/blockMesh/curvedEdges/CatmullRomSpline.C
@@ -0,0 +1,131 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "error.H"
+#include "CatmullRomSpline.H"
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::CatmullRomSpline::CatmullRomSpline
+(
+ const pointField& Knots,
+ const vector&,
+ const vector&
+)
+:
+ polyLine(Knots)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+Foam::point Foam::CatmullRomSpline::position(const scalar mu) const
+{
+ // endpoints
+ if (mu < SMALL)
+ {
+ return points().first();
+ }
+ else if (mu > 1 - SMALL)
+ {
+ return points().last();
+ }
+
+ scalar lambda = mu;
+ label segment = localParameter(lambda);
+ return position(segment, lambda);
+}
+
+
+Foam::point Foam::CatmullRomSpline::position
+(
+ const label segment,
+ const scalar mu
+) const
+{
+ const point& p0 = points()[segment];
+ const point& p1 = points()[segment+1];
+
+ // special cases - no calculation needed
+ if (segment < 0 || mu < 0.0)
+ {
+ return p0;
+ }
+ else if (segment > nSegments() || mu >= 1.0)
+ {
+ return p1;
+ }
+
+ // determine the end points
+ point e0;
+ point e1;
+
+ if (segment == 0)
+ {
+ // end: simple reflection
+ e0 = 2.0 * p0 - p1;
+ }
+ else
+ {
+ e0 = points()[segment-1];
+ }
+
+ if (segment+1 == nSegments())
+ {
+ // end: simple reflection
+ e1 = 2.0 * p1 - p0;
+ }
+ else
+ {
+ e1 = points()[segment+2];
+ }
+
+
+ return 0.5 *
+ (
+ ( 2 * p0 )
+ + mu *
+ (
+ ( -e0 + p1 )
+ + mu *
+ (
+ ( 2*e0 - 5*p0 + 4*p1 - e1 )
+ + mu *
+ ( -e0 + 3*p0 - 3*p1 + e1 )
+ )
+ )
+ );
+}
+
+
+Foam::scalar Foam::CatmullRomSpline::length() const
+{
+ notImplemented("CatmullRomSpline::length() const");
+ return 1.0;
+}
+
+
+// ************************************************************************* //
diff --git a/src/mesh/blockMesh/curvedEdges/CatmullRomSpline.H b/src/mesh/blockMesh/curvedEdges/CatmullRomSpline.H
new file mode 100644
index 0000000000..6f1851a7a6
--- /dev/null
+++ b/src/mesh/blockMesh/curvedEdges/CatmullRomSpline.H
@@ -0,0 +1,128 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2009-2009 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+ Foam::CatmullRomSpline
+
+Description
+ An implementation of Catmull-Rom splines (sometime as known as
+ Overhauser splines).
+
+ In this implementation, the end tangents are created
+ automatically by reflection.
+
+ In matrix form, the @e local interpolation on the interval t=[0..1] is
+ described as follows:
+ @verbatim
+ P(t) = 0.5 * [ t^3 t^2 t 1 ] * [ -1 3 -3 1 ] * [ P-1 ]
+ [ 2 -5 4 -1 ] [ P0 ]
+ [ -1 0 1 0 ] [ P1 ]
+ [ 0 2 0 0 ] [ P2 ]
+ @endverbatim
+
+ Where P-1 and P2 represent the neighbouring points or the
+ extrapolated end points. Simple reflection is used to
+ automatically create the end points.
+
+ The spline is discretized based on the chord length of the
+ individual segments. In rare cases (sections with very high
+ curvatures), the resulting distribution may be sub-optimal.
+
+SeeAlso
+ http://www.algorithmist.net/catmullrom.html provides a nice
+ introduction
+
+ToDo
+ A future implementation could also handle closed splines - either
+ when the start/end points are identically or when specified.
+
+SourceFiles
+ CatmullRomSpline.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef CatmullRomSpline_H
+#define CatmullRomSpline_H
+
+#include "polyLine.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class CatmullRomSpline Declaration
+\*---------------------------------------------------------------------------*/
+
+class CatmullRomSpline
+:
+ public polyLine
+{
+ // Private Member Functions
+
+ //- Disallow default bitwise copy construct
+ CatmullRomSpline(const CatmullRomSpline&);
+
+ //- Disallow default bitwise assignment
+ void operator=(const CatmullRomSpline&);
+
+
+public:
+
+ // Constructors
+
+ //- Construct from components
+ CatmullRomSpline
+ (
+ const pointField& knots,
+ const vector& begTangentNotImplemented = vector::zero,
+ const vector& endTangentNotImplemented = vector::zero
+ );
+
+
+ // Member Functions
+
+ //- Return the point position corresponding to the curve parameter
+ // 0 <= lambda <= 1
+ point position(const scalar lambda) const;
+
+ //- Return the point position corresponding to the local parameter
+ // 0 <= lambda <= 1 on the given segment
+ point position(const label segment, const scalar lambda) const;
+
+ //- Return the length of the curve
+ scalar length() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/mesh/blockMesh/curvedEdges/arcEdge.C b/src/mesh/blockMesh/curvedEdges/arcEdge.C
index afb62a8f8b..21143ac43a 100644
--- a/src/mesh/blockMesh/curvedEdges/arcEdge.C
+++ b/src/mesh/blockMesh/curvedEdges/arcEdge.C
@@ -61,7 +61,7 @@ Foam::cylindricalCS Foam::arcEdge::calcAngle()
scalar fact = 0.5*(bsqr - adotb)/denom;
- vector centre = 0.5*a + fact*((a ^ b) ^ a);
+ point centre = 0.5*a + fact*((a ^ b) ^ a);
centre += p1_;
@@ -71,11 +71,10 @@ Foam::cylindricalCS Foam::arcEdge::calcAngle()
vector r3(p3_ - centre);
// find angles
- scalar tmp = (r3&r1)/(mag(r3)*mag(r1));
- angle_ = radToDeg(acos(tmp));
+ angle_ = radToDeg(acos((r3 & r1)/(mag(r3) * mag(r1))));
// check if the vectors define an exterior or an interior arcEdge
- if (((r1 ^ r2)&(r1 ^ r3)) < 0.0)
+ if (((r1 ^ r2) & (r1 ^ r3)) < 0.0)
{
angle_ = 360.0 - angle_;
}
@@ -99,7 +98,7 @@ Foam::cylindricalCS Foam::arcEdge::calcAngle()
radius_ = mag(r3);
// set up and return the local coordinate system
- return cylindricalCS("tmpCS", centre, tempAxis, r1);
+ return cylindricalCS("arcEdgeCS", centre, tempAxis, r1);
}
@@ -133,7 +132,7 @@ Foam::arcEdge::arcEdge(const pointField& points, Istream& is)
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-Foam::vector Foam::arcEdge::position(const scalar lambda) const
+Foam::point Foam::arcEdge::position(const scalar lambda) const
{
if (lambda < 0 || lambda > 1)
{
@@ -146,7 +145,7 @@ Foam::vector Foam::arcEdge::position(const scalar lambda) const
{
return p1_;
}
- else if (lambda > 1-SMALL)
+ else if (lambda > 1 - SMALL)
{
return p3_;
}
diff --git a/src/mesh/blockMesh/curvedEdges/arcEdge.H b/src/mesh/blockMesh/curvedEdges/arcEdge.H
index da96d150fc..194e5c634b 100644
--- a/src/mesh/blockMesh/curvedEdges/arcEdge.H
+++ b/src/mesh/blockMesh/curvedEdges/arcEdge.H
@@ -54,15 +54,16 @@ class arcEdge
{
// Private data
- vector p1_, p2_, p3_;
+ point p1_, p2_, p3_;
+ cylindricalCS cs_;
scalar angle_;
scalar radius_;
- cylindricalCS cs_;
-
- cylindricalCS calcAngle();
// Private Member Functions
+ //- Calculate the coordinate system, angle and radius
+ cylindricalCS calcAngle();
+
//- Disallow default bitwise copy construct
arcEdge(const arcEdge&);
@@ -96,9 +97,9 @@ public:
// Member Functions
- //- Return the position of a point on the curve given by
- // the parameter 0 <= lambda <= 1
- vector position(const scalar) const;
+ //- Return the point position corresponding to the curve parameter
+ // 0 <= lambda <= 1
+ point position(const scalar) const;
//- Return the length of the curve
scalar length() const;
diff --git a/src/mesh/blockMesh/curvedEdges/curvedEdge.C b/src/mesh/blockMesh/curvedEdges/curvedEdge.C
index 4b80a221dd..35e58b7692 100644
--- a/src/mesh/blockMesh/curvedEdges/curvedEdge.C
+++ b/src/mesh/blockMesh/curvedEdges/curvedEdge.C
@@ -108,27 +108,27 @@ Foam::autoPtr Foam::curvedEdge::New
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-Foam::pointField Foam::curvedEdge::knotlist
+Foam::pointField Foam::curvedEdge::appendEndPoints
(
const pointField& points,
const label start,
const label end,
- const pointField& otherknots
+ const pointField& otherKnots
)
{
- pointField newPoints(otherknots.size() + 2);
+ pointField allKnots(otherKnots.size() + 2);
// start/end knots
- newPoints[0] = points[start];
- newPoints[otherknots.size() + 1] = points[end];
+ allKnots[0] = points[start];
+ allKnots[otherKnots.size() + 1] = points[end];
// intermediate knots
- forAll(otherknots, knotI)
+ forAll(otherKnots, knotI)
{
- newPoints[knotI+1] = otherknots[knotI];
+ allKnots[knotI+1] = otherKnots[knotI];
}
- return newPoints;
+ return allKnots;
}
diff --git a/src/mesh/blockMesh/curvedEdges/curvedEdge.H b/src/mesh/blockMesh/curvedEdges/curvedEdge.H
index 49ad047e45..bd1ad3246a 100644
--- a/src/mesh/blockMesh/curvedEdges/curvedEdge.H
+++ b/src/mesh/blockMesh/curvedEdges/curvedEdge.H
@@ -26,8 +26,8 @@ Class
Foam::curvedEdge
Description
- Define a curved edge in space that is parameterised for
- 0 1)
{
@@ -71,13 +71,13 @@ Foam::vector Foam::lineEdge::position(const scalar lambda) const
<< abort(FatalError);
}
- return startPoint_ + lambda*direction_;
+ return points_[start_] + lambda * (points_[end_] - points_[start_]);
}
Foam::scalar Foam::lineEdge::length() const
{
- return mag(direction_);
+ return mag(points_[end_] - points_[start_]);
}
diff --git a/src/mesh/blockMesh/curvedEdges/lineEdge.H b/src/mesh/blockMesh/curvedEdges/lineEdge.H
index a601830f7f..3d29591232 100644
--- a/src/mesh/blockMesh/curvedEdges/lineEdge.H
+++ b/src/mesh/blockMesh/curvedEdges/lineEdge.H
@@ -26,7 +26,7 @@ Class
Foam::lineEdge
Description
- Defines a straight line between the start point and the end point.
+ A straight edge between the start point and the end point.
SourceFiles
lineEdge.C
@@ -52,14 +52,6 @@ class lineEdge
:
public curvedEdge
{
- // Private data
-
- //- Avoid repetitive calculation of the start point
- const vector startPoint_;
-
- //- Avoid repetitive calculation of the direction (end - start)
- const vector direction_;
-
// Private Member Functions
//- Disallow default bitwise copy construct
@@ -68,7 +60,6 @@ class lineEdge
//- Disallow default bitwise assignment
void operator=(const lineEdge&);
-
public:
//- Runtime type information
@@ -79,20 +70,19 @@ public:
//- Construct from components
lineEdge(const pointField&, const label start, const label end);
- //- Construct from Istream setting pointsList
+ //- Construct from Istream with a pointField
lineEdge(const pointField&, Istream&);
- // Destructor
-
- virtual ~lineEdge(){}
+ //- Destructor
+ virtual ~lineEdge();
// Member Functions
- //- Return the position of a point on the curve given by
- // the parameter 0 <= lambda <= 1
- vector position(const scalar) const;
+ //- Return the point position corresponding to the curve parameter
+ // 0 <= lambda <= 1
+ point position(const scalar) const;
//- Return the length of the curve
scalar length() const;
diff --git a/src/mesh/blockMesh/curvedEdges/polyLine.C b/src/mesh/blockMesh/curvedEdges/polyLine.C
index a08ab8fc40..08083041f2 100644
--- a/src/mesh/blockMesh/curvedEdges/polyLine.C
+++ b/src/mesh/blockMesh/curvedEdges/polyLine.C
@@ -29,29 +29,26 @@ License
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
-// calcDistances generates the distances_ lookup table (cumulative
-// distance along the line) from the individual vectors to the points
-
-void Foam::polyLine::calcDistances()
+void Foam::polyLine::calcParam()
{
- distances_.setSize(controlPoints_.size());
+ param_.setSize(points_.size());
- if (distances_.size())
+ if (param_.size())
{
- distances_[0] = 0.0;
+ param_[0] = 0.0;
- for (label i=1; i 1)
+ {
+ FatalErrorIn("polyLine::localParameter(scalar&)")
+ << "Parameter out-of-range, "
+ << "lambda = " << lambda
+ << abort(FatalError);
+ }
+ // check endpoints
+ if (lambda < SMALL)
+ {
+ lambda = 0;
+ return 0;
+ }
+ else if (lambda > 1 - SMALL)
+ {
+ lambda = 1;
+ return nSegments();
+ }
+
+ // search table of cumulative distances to find which line-segment
+ // we are on. Check the upper bound.
+
+ label segmentI = 1;
+ while (param_[segmentI] < lambda)
+ {
+ segmentI++;
+ }
+ segmentI--; // we want the corresponding lower bound
+
+ // the local parameter [0-1] on this line segment
+ lambda =
+ (
+ ( lambda - param_[segmentI] )
+ / ( param_[segmentI+1] - param_[segmentI] )
+ );
+
+ return segmentI;
+}
+
+
+Foam::point Foam::polyLine::position(const scalar lambda) const
+{
+ // check range of lambda
if (lambda < 0 || lambda > 1)
{
FatalErrorIn("polyLine::position(const scalar)")
@@ -87,37 +139,36 @@ Foam::vector Foam::polyLine::position(const scalar lambda) const
<< abort(FatalError);
}
- // Quick calc of endpoints
-
+ // check endpoints
if (lambda < SMALL)
{
- return controlPoints_[0];
+ return points_[0];
}
else if (lambda > 1 - SMALL)
{
- return controlPoints_.last();
+ return points_.last();
}
- // search table of cumulative distance to find which linesegment we
- // are on
+ // search table of cumulative distances to find which line-segment
+ // we are on. Check the upper bound.
- label i(0);
- do
+ label segmentI = 1;
+ while (param_[segmentI] < lambda)
{
- i++;
- } while (distances_[i] < lambda);
+ ++segmentI;
+ }
+ --segmentI; // we now want the lower bound
- i--; // we overshot!
- // construct position vector
- scalar offsetDist =
- (lambda - distances_[i])
- /(distances_[i+1] - distances_[i]);
-
- vector offsetV = controlPoints_[i+1] - controlPoints_[i];
-
- return controlPoints_[i] + offsetDist*offsetV;
+ // linear interpolation
+ return
+ (
+ points_[segmentI]
+ + ( points_[segmentI+1] - points_[segmentI] )
+ * ( lambda - param_[segmentI] )
+ / ( param_[segmentI+1] - param_[segmentI] )
+ );
}
diff --git a/src/mesh/blockMesh/curvedEdges/polyLine.H b/src/mesh/blockMesh/curvedEdges/polyLine.H
index 4ef97f3052..ea8c59e389 100644
--- a/src/mesh/blockMesh/curvedEdges/polyLine.H
+++ b/src/mesh/blockMesh/curvedEdges/polyLine.H
@@ -26,10 +26,8 @@ Class
Foam::polyLine
Description
- Defines a curvedEdge in terms of a series of straight line segments.
-
- This is the basic polyLine class which implements just the line
- (no topology - it is not derived from curvedEdge)
+ A series of straight line segments, which can also be interpreted as
+ a series of control points for splines, etc.
SourceFiles
polyLine.C
@@ -66,15 +64,26 @@ protected:
// Protected data
- pointField controlPoints_;
- scalarList distances_;
+ //- The control points or ends of each segments
+ pointField points_;
+
+ //- The real line length
scalar lineLength_;
+ //- The rational (0-1) cumulative parameter value for each point
+ scalarList param_;
+
// Protected member functions
- void calcDistances();
+ //- Precalculate the rational cumulative parameter value
+ // and the line-length
+ void calcParam();
+ //- Return the line segment and the local parameter [0..1]
+ // corresponding to the global lambda [0..1]
+ label localParameter(scalar& lambda) const;
+
public:
// Constructors
@@ -85,9 +94,15 @@ public:
// Member Functions
- //- Return the position of a point on the curve given by
- // the parameter 0 <= lambda <= 1
- vector position(const scalar) const;
+ //- Return const-access to the control-points
+ const pointField& points() const;
+
+ //- Return the number of line segments
+ label nSegments() const;
+
+ //- Return the point position corresponding to the curve parameter
+ // 0 <= lambda <= 1
+ point position(const scalar) const;
//- Return the length of the curve
scalar length() const;
diff --git a/src/mesh/blockMesh/curvedEdges/polyLineEdge.C b/src/mesh/blockMesh/curvedEdges/polyLineEdge.C
index 89029d1af9..1f038a78a8 100644
--- a/src/mesh/blockMesh/curvedEdges/polyLineEdge.C
+++ b/src/mesh/blockMesh/curvedEdges/polyLineEdge.C
@@ -44,24 +44,30 @@ Foam::polyLineEdge::polyLineEdge
const pointField& ps,
const label start,
const label end,
- const pointField& otherpoints
+ const pointField& otherPoints
)
:
curvedEdge(ps, start, end),
- polyLine(knotlist(ps, start, end, otherpoints))
+ polyLine(appendEndPoints(ps, start_, end_, otherPoints))
{}
Foam::polyLineEdge::polyLineEdge(const pointField& ps, Istream& is)
:
curvedEdge(ps, is),
- polyLine(knotlist(ps, start_, end_, pointField(is)))
+ polyLine(appendEndPoints(ps, start_, end_, pointField(is)))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::polyLineEdge::~polyLineEdge()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-Foam::vector Foam::polyLineEdge::position(const scalar lambda) const
+Foam::point Foam::polyLineEdge::position(const scalar lambda) const
{
return polyLine::position(lambda);
}
diff --git a/src/mesh/blockMesh/curvedEdges/polyLineEdge.H b/src/mesh/blockMesh/curvedEdges/polyLineEdge.H
index 532a91ad5d..e941bba716 100644
--- a/src/mesh/blockMesh/curvedEdges/polyLineEdge.H
+++ b/src/mesh/blockMesh/curvedEdges/polyLineEdge.H
@@ -26,8 +26,7 @@ Class
Foam::polyLineEdge
Description
- Defines a curvedEdge in terms of a series of straight line segments.
- This is the public face of polyLine
+ A curvedEdge defined in terms of a series of straight line segments.
SourceFiles
polyLineEdge.C
@@ -84,16 +83,15 @@ public:
polyLineEdge(const pointField&, Istream&);
- // Destructor
-
- virtual ~polyLineEdge(){}
+ //- Destructor
+ virtual ~polyLineEdge();
// Member Functions
- //- Return the position of a point on the curve given by
- // the parameter 0 <= lambda <= 1
- vector position(const scalar lambda) const;
+ //- Return the point position corresponding to the curve parameter
+ // 0 <= lambda <= 1
+ point position(const scalar lambda) const;
//- Return the length of the curve
scalar length() const;
diff --git a/src/mesh/blockMesh/curvedEdges/splineEdge.C b/src/mesh/blockMesh/curvedEdges/splineEdge.C
new file mode 100644
index 0000000000..6c5df771a9
--- /dev/null
+++ b/src/mesh/blockMesh/curvedEdges/splineEdge.C
@@ -0,0 +1,86 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "splineEdge.H"
+#include "addToRunTimeSelectionTable.H"
+
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineTypeNameAndDebug(splineEdge, 0);
+ addToRunTimeSelectionTable(curvedEdge, splineEdge, Istream);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::splineEdge::splineEdge
+(
+ const pointField& points,
+ const label start,
+ const label end,
+ const pointField& otherknots
+)
+:
+ curvedEdge(points, start, end),
+ CatmullRomSpline(appendEndPoints(points, start, end, otherknots))
+{}
+
+
+Foam::splineEdge::splineEdge(const pointField& points, Istream& is)
+:
+ curvedEdge(points, is),
+ CatmullRomSpline(appendEndPoints(points, start_, end_, pointField(is)))
+{
+ token t(is);
+ is.putBack(t);
+
+ // might have start/end tangents that we currently ignore
+ if (t == token::BEGIN_LIST)
+ {
+ vector fstend(is);
+ vector sndend(is);
+ }
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+Foam::point Foam::splineEdge::position(const scalar mu) const
+{
+ return CatmullRomSpline::position(mu);
+}
+
+
+Foam::scalar Foam::splineEdge::length() const
+{
+ return CatmullRomSpline::length();
+}
+
+
+// ************************************************************************* //
diff --git a/src/mesh/blockMesh/curvedEdges/splineEdge.H b/src/mesh/blockMesh/curvedEdges/splineEdge.H
new file mode 100644
index 0000000000..c1ad9f5f76
--- /dev/null
+++ b/src/mesh/blockMesh/curvedEdges/splineEdge.H
@@ -0,0 +1,111 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+ Foam::splineEdge
+
+Description
+ A curvedEdge interface for Catmull-Rom splines.
+
+SourceFiles
+ splineEdge.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef splineEdge_H
+#define splineEdge_H
+
+#include "curvedEdge.H"
+#include "CatmullRomSpline.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class splineEdge Declaration
+\*---------------------------------------------------------------------------*/
+
+class splineEdge
+:
+ public curvedEdge,
+ public CatmullRomSpline
+{
+ // Private Member Functions
+
+ //- Disallow default bitwise copy construct
+ splineEdge(const splineEdge&);
+
+ //- Disallow default bitwise assignment
+ void operator=(const splineEdge&);
+
+
+public:
+
+ //- Runtime type information
+ TypeName("spline");
+
+
+ // Constructors
+
+ //- Construct from components
+ splineEdge
+ (
+ const pointField&,
+ const label start,
+ const label end,
+ const pointField& otherKnots
+ );
+
+ //- Construct from Istream setting pointsList
+ splineEdge(const pointField&, Istream&);
+
+
+ // Destructor
+
+ virtual ~splineEdge()
+ {}
+
+
+ // Member Functions
+
+ //- Return the point position corresponding to the curve parameter
+ // 0 <= lambda <= 1
+ virtual point position(const scalar) const;
+
+ //- Return the length of the simple spline curve
+ virtual scalar length() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //