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 6e7a78ffe2..10873c3734 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/PV3FoamReader_SM.xml
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/PV3FoamReader_SM.xml
@@ -69,11 +69,26 @@
+
+
+
+
+ Interpolate volume fields into 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 a3d800288b..66327dc6f5 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.cxx
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.cxx
@@ -59,7 +59,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
pqAutoGeneratedObjectPanel(proxy, p)
{
// create first sublayout (at top of the panel)
- QGridLayout *form = new QGridLayout();
+ QGridLayout* form = new QGridLayout();
this->PanelLayout->addLayout(form, 0, 0, 1, -1);
vtkSMProperty* prop = 0;
@@ -107,6 +107,9 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
);
}
+ QFrame* hline1 = new QFrame(this);
+ hline1->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ form->addWidget(hline1, 1, 0, 1, 2);
// checkbox for caching mesh
if ((prop = this->proxy()->GetProperty("UiCacheMesh")) != 0)
@@ -124,7 +127,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
"Cache the fvMesh in memory."
);
- form->addWidget(CacheMesh_, 1, 0, Qt::AlignLeft);
+ form->addWidget(CacheMesh_, 2, 0, Qt::AlignLeft);
connect
(
CacheMesh_,
@@ -152,7 +155,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
);
// row/col 0,1
- form->addWidget(ShowPatchNames_, 1, 1, Qt::AlignLeft);
+ form->addWidget(ShowPatchNames_, 2, 1, Qt::AlignLeft);
connect
(
ShowPatchNames_,
@@ -180,7 +183,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
);
// row/col 1,0
- form->addWidget(IncludeSets_, 2, 0, Qt::AlignLeft);
+ form->addWidget(IncludeSets_, 3, 0, Qt::AlignLeft);
connect
(
IncludeSets_,
@@ -209,7 +212,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
);
// row/col 1,1
- form->addWidget(IncludeZones_, 2, 1, Qt::AlignLeft);
+ form->addWidget(IncludeZones_, 3, 1, Qt::AlignLeft);
connect
(
IncludeZones_,
@@ -219,6 +222,63 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
);
}
+ // checkbox for vol field interpolation
+ if ((prop = this->proxy()->GetProperty("UiInterpolateVolFields")) != 0)
+ {
+ // immediate update on the Server Manager side
+ prop->SetImmediateUpdate(true);
+
+ InterpolateVolFields_ = new QCheckBox("Interpolate volFields");
+ InterpolateVolFields_->setChecked
+ (
+ vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
+ );
+ InterpolateVolFields_->setToolTip
+ (
+ "Interpolate volFields into pointFields"
+ );
+
+ // row/col 1,1
+ form->addWidget(InterpolateVolFields_, 4, 0, Qt::AlignLeft);
+ connect
+ (
+ InterpolateVolFields_,
+ SIGNAL(stateChanged(int)),
+ this,
+ SLOT(InterpolateVolFieldsToggled())
+ );
+ }
+
+ // checkbox for extrapolate patches
+ if ((prop = this->proxy()->GetProperty("UiExtrapolatePatches")) != 0)
+ {
+ // immediate update on the Server Manager side
+ prop->SetImmediateUpdate(true);
+
+ ExtrapolatePatches_ = new QCheckBox("Extrapolate Patches");
+ ExtrapolatePatches_->setChecked
+ (
+ vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
+ );
+ ExtrapolatePatches_->setToolTip
+ (
+ "Extrapolate internalField to non-constraint patches"
+ );
+
+ // row/col 1,1
+ form->addWidget(ExtrapolatePatches_, 4, 1, Qt::AlignLeft);
+ connect
+ (
+ ExtrapolatePatches_,
+ SIGNAL(stateChanged(int)),
+ this,
+ SLOT(ExtrapolatePatchesToggled())
+ );
+ }
+
+ QFrame* hline2 = new QFrame(this);
+ hline2->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+ form->addWidget(hline2, 5, 0, 1, 2);
}
@@ -255,8 +315,7 @@ void pqPV3FoamReaderPanel::ZeroTimeToggled()
this->proxy()->GetProperty("UiZeroTime")
)->SetElement(0, ZeroTime_->isChecked());
- // update everything
- RefreshPressed();
+ this->setModified();
}
@@ -306,7 +365,32 @@ void pqPV3FoamReaderPanel::IncludeZonesToggled()
{
this->proxy()->UpdatePropertyInformation(prop);
}
+}
+
+void pqPV3FoamReaderPanel::ExtrapolatePatchesToggled()
+{
+ vtkSMProperty* prop;
+
+ vtkSMIntVectorProperty::SafeDownCast
+ (
+ this->proxy()->GetProperty("UiExtrapolatePatches")
+ )->SetElement(0, ExtrapolatePatches_->isChecked());
+
+ this->setModified();
+}
+
+
+void pqPV3FoamReaderPanel::InterpolateVolFieldsToggled()
+{
+ vtkSMProperty* prop;
+
+ vtkSMIntVectorProperty::SafeDownCast
+ (
+ this->proxy()->GetProperty("UiInterpolateVolFields")
+ )->SetElement(0, InterpolateVolFields_->isChecked());
+
+ this->setModified();
}
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.h b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.h
index 35e3089b49..f7b057ecc7 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.h
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.h
@@ -77,6 +77,13 @@ class pqPV3FoamReaderPanel
//- IncludeZones checkbox
QCheckBox* IncludeZones_;
+ //- InterpolateVolFields checkbox
+ QCheckBox* InterpolateVolFields_;
+
+ //- ExtrapolatePatches checkbox
+ QCheckBox* ExtrapolatePatches_;
+
+
protected slots:
void CacheMeshToggled();
@@ -85,6 +92,8 @@ protected slots:
void ShowPatchNamesToggled();
void IncludeSetsToggled();
void IncludeZonesToggled();
+ void InterpolateVolFieldsToggled();
+ void ExtrapolatePatchesToggled();
public:
@@ -97,7 +106,6 @@ public:
//- Destructor
// virtual ~pqPV3FoamReaderPanel();
-
};
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx
index f0b5da6261..a2671ddb9d 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx
@@ -85,6 +85,7 @@ vtkPV3FoamReader::vtkPV3FoamReader()
IncludeSets = 0;
IncludeZones = 0;
ShowPatchNames = 0;
+ InterpolateVolFields = 1;
UpdateGUI = 0;
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.h b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.h
index 5d375545c5..da31ba6231 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.h
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.h
@@ -121,6 +121,11 @@ public:
virtual void SetShowPatchNames(int);
vtkGetMacro(ShowPatchNames, int);
+ // Description:
+ // OpenFOAM volField interpolation
+ vtkSetMacro(InterpolateVolFields, int);
+ vtkGetMacro(InterpolateVolFields, int);
+
// Description:
// Get the current timestep
int GetTimeStep();
@@ -170,6 +175,7 @@ public:
void SelectionModified();
+
protected:
//- Construct null
@@ -203,6 +209,7 @@ protected:
//- The file name for this case
char* FileName;
+
private:
//- Disallow default bitwise copy construct
@@ -224,6 +231,7 @@ private:
int IncludeSets;
int IncludeZones;
int ShowPatchNames;
+ int InterpolateVolFields;
//- Dummy variable/switch to invoke a reader update
int UpdateGUI;
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H
index cad46ba215..7d9a481b49 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H
@@ -505,6 +505,7 @@ class vtkPV3Foam
const fvMesh&,
const PtrList >&,
const IOobjectList&,
+ const bool interpFields,
vtkMultiBlockDataSet* output
);
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C
index 7ab37db06f..9a869d37b5 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C
@@ -120,25 +120,27 @@ void Foam::vtkPV3Foam::convertVolFields
}
+ bool interpFields = reader_->GetInterpolateVolFields();
+
convertVolFields
(
- mesh, ppInterpList, objects, output
+ mesh, ppInterpList, objects, interpFields, output
);
convertVolFields
(
- mesh, ppInterpList, objects, output
+ mesh, ppInterpList, objects, interpFields, output
);
convertVolFields
(
- mesh, ppInterpList, objects, output
+ mesh, ppInterpList, objects, interpFields, output
);
convertVolFields
(
- mesh, ppInterpList, objects, output
+ mesh, ppInterpList, objects, interpFields, output
);
convertVolFields
(
- mesh, ppInterpList, objects, output
+ mesh, ppInterpList, objects, interpFields, output
);
if (debug)
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamVolFields.H b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamVolFields.H
index f18d7053eb..a057afb511 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamVolFields.H
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamVolFields.H
@@ -48,6 +48,7 @@ void Foam::vtkPV3Foam::convertVolFields
const fvMesh& mesh,
const PtrList >& ppInterpList,
const IOobjectList& objects,
+ const bool interpFields,
vtkMultiBlockDataSet* output
)
{
@@ -74,6 +75,19 @@ void Foam::vtkPV3Foam::convertVolFields
// Interpolated field (demand driven)
autoPtr > ptfPtr;
+ if (interpFields)
+ {
+ if (debug)
+ {
+ Info<< "convertVolFieldBlock interpolating:" << tf.name()
+ << endl;
+ }
+
+ ptfPtr.reset
+ (
+ volPointInterpolation::New(tf.mesh()).interpolate(tf).ptr()
+ );
+ }
// Convert activated internalMesh regions
@@ -154,14 +168,17 @@ void Foam::vtkPV3Foam::convertVolFields
datasetNo
);
- convertPatchPointField
- (
- tf.name(),
- ppInterpList[patchId].faceToPointInterpolate(tpptf)(),
- output,
- arrayRangePatches_,
- datasetNo
- );
+ if (interpFields)
+ {
+ convertPatchPointField
+ (
+ tf.name(),
+ ppInterpList[patchId].faceToPointInterpolate(tpptf)(),
+ output,
+ arrayRangePatches_,
+ datasetNo
+ );
+ }
}
else
{
@@ -174,14 +191,17 @@ void Foam::vtkPV3Foam::convertVolFields
datasetNo
);
- convertPatchPointField
- (
- tf.name(),
- ppInterpList[patchId].faceToPointInterpolate(ptf)(),
- output,
- arrayRangePatches_,
- datasetNo
- );
+ if (interpFields)
+ {
+ convertPatchPointField
+ (
+ tf.name(),
+ ppInterpList[patchId].faceToPointInterpolate(ptf)(),
+ output,
+ arrayRangePatches_,
+ datasetNo
+ );
+ }
}
}
@@ -285,29 +305,18 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
decompLst[datasetNo]
);
- if (!ptfPtr.valid())
+ if (ptfPtr.valid())
{
- if (debug)
- {
- Info<< "convertVolFieldBlock interpolating:" << tf.name()
- << endl;
- }
-
- ptfPtr.reset
+ convertPointField
(
- volPointInterpolation::New(tf.mesh()).interpolate(tf).ptr()
+ ptfPtr(),
+ tf,
+ output,
+ range,
+ datasetNo,
+ decompLst[datasetNo]
);
}
-
- convertPointField
- (
- ptfPtr(),
- tf,
- output,
- range,
- datasetNo,
- decompLst[datasetNo]
- );
}
}
}