Commit f6857b20 authored by andy's avatar andy
Browse files

ENH: Converted volField->pointField to ParaFoam reader option instead of hard-coded

parent 4666863e
......@@ -69,11 +69,26 @@
</Documentation>
</IntVectorProperty>
<!-- Interpolate Fields check-box -->
<IntVectorProperty
name="UiInterpolateVolFields"
command="SetInterpolateVolFields"
number_of_elements="1"
is_internal="1"
default_values="1"
animateable="0">
<BooleanDomain name="bool"/>
<Documentation>
Interpolate volume fields into point fields
</Documentation>
</IntVectorProperty>
<!-- Extrapolate Patches check-box -->
<IntVectorProperty
name="ExtrapolatePatches"
name="UiExtrapolatePatches"
command="SetExtrapolatePatches"
number_of_elements="1"
is_internal="1"
default_values="0"
animateable="0">
<BooleanDomain name="bool"/>
......
......@@ -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();
}
......
......@@ -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();
};
......
......@@ -85,6 +85,7 @@ vtkPV3FoamReader::vtkPV3FoamReader()
IncludeSets = 0;
IncludeZones = 0;
ShowPatchNames = 0;
InterpolateVolFields = 1;
UpdateGUI = 0;
......
......@@ -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;
......
......@@ -505,6 +505,7 @@ class vtkPV3Foam
const fvMesh&,
const PtrList<PrimitivePatchInterpolation<primitivePatch> >&,
const IOobjectList&,
const bool interpFields,
vtkMultiBlockDataSet* output
);
......
......@@ -120,25 +120,27 @@ void Foam::vtkPV3Foam::convertVolFields
}
bool interpFields = reader_->GetInterpolateVolFields();
convertVolFields<scalar>
(
mesh, ppInterpList, objects, output
mesh, ppInterpList, objects, interpFields, output
);
convertVolFields<vector>
(
mesh, ppInterpList, objects, output
mesh, ppInterpList, objects, interpFields, output
);
convertVolFields<sphericalTensor>
(
mesh, ppInterpList, objects, output
mesh, ppInterpList, objects, interpFields, output
);
convertVolFields<symmTensor>
(
mesh, ppInterpList, objects, output
mesh, ppInterpList, objects, interpFields, output
);
convertVolFields<tensor>
(
mesh, ppInterpList, objects, output
mesh, ppInterpList, objects, interpFields, output
);
if (debug)
......
......@@ -48,6 +48,7 @@ void Foam::vtkPV3Foam::convertVolFields
const fvMesh& mesh,
const PtrList<PrimitivePatchInterpolation<primitivePatch> >& ppInterpList,
const IOobjectList& objects,
const bool interpFields,
vtkMultiBlockDataSet* output
)
{
......@@ -74,6 +75,19 @@ void Foam::vtkPV3Foam::convertVolFields
// Interpolated field (demand driven)
autoPtr<GeometricField<Type, pointPatchField, pointMesh> > 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]
);
}
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment