mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge commit 'bundle/home' into olesenm
This commit is contained in:
@ -16,6 +16,17 @@
|
|||||||
</Documentation>
|
</Documentation>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
|
|
||||||
|
<!-- Send discrete time info to the animation panel -->
|
||||||
|
<DoubleVectorProperty
|
||||||
|
name="TimestepValues"
|
||||||
|
repeatable="1"
|
||||||
|
information_only="1">
|
||||||
|
<TimeStepsInformationHelper/>
|
||||||
|
<Documentation>
|
||||||
|
Available timestep values.
|
||||||
|
</Documentation>
|
||||||
|
</DoubleVectorProperty>
|
||||||
|
|
||||||
<!-- Cache Mesh check-box -->
|
<!-- Cache Mesh check-box -->
|
||||||
<IntVectorProperty
|
<IntVectorProperty
|
||||||
name="UiCacheMesh"
|
name="UiCacheMesh"
|
||||||
@ -30,20 +41,33 @@
|
|||||||
</Documentation>
|
</Documentation>
|
||||||
</IntVectorProperty>
|
</IntVectorProperty>
|
||||||
|
|
||||||
|
<!-- Refresh button -->
|
||||||
<!-- Send discrete time info to the animation panel -->
|
<IntVectorProperty
|
||||||
<DoubleVectorProperty
|
name="UiRefresh"
|
||||||
name="TimestepValues"
|
command="SetRefresh"
|
||||||
repeatable="1"
|
number_of_elements="1"
|
||||||
information_only="1">
|
is_internal="0"
|
||||||
<TimeStepsInformationHelper/>
|
default_values="0"
|
||||||
|
animateable="0">
|
||||||
|
<BooleanDomain name="bool"/>
|
||||||
<Documentation>
|
<Documentation>
|
||||||
Available timestep values.
|
Rescan for updated timesteps/fields.
|
||||||
</Documentation>
|
</Documentation>
|
||||||
</DoubleVectorProperty>
|
</IntVectorProperty>
|
||||||
|
|
||||||
|
<!-- Skip Zero Time check-box -->
|
||||||
<!-- Global settings -->
|
<IntVectorProperty
|
||||||
|
name="UiZeroTime"
|
||||||
|
command="SetSkipZeroTime"
|
||||||
|
number_of_elements="1"
|
||||||
|
is_internal="1"
|
||||||
|
default_values="0"
|
||||||
|
animateable="0">
|
||||||
|
<BooleanDomain name="bool"/>
|
||||||
|
<Documentation>
|
||||||
|
Skip including the 0/ time directory
|
||||||
|
</Documentation>
|
||||||
|
</IntVectorProperty>
|
||||||
|
|
||||||
<!-- Extrapolate Patches check-box -->
|
<!-- Extrapolate Patches check-box -->
|
||||||
<IntVectorProperty
|
<IntVectorProperty
|
||||||
@ -60,22 +84,24 @@
|
|||||||
|
|
||||||
<!-- Include Sets check-box -->
|
<!-- Include Sets check-box -->
|
||||||
<IntVectorProperty
|
<IntVectorProperty
|
||||||
name="IncludeSets"
|
name="UiIncludeSets"
|
||||||
command="SetIncludeSets"
|
command="SetIncludeSets"
|
||||||
number_of_elements="1"
|
number_of_elements="1"
|
||||||
|
is_internal="1"
|
||||||
default_values="0"
|
default_values="0"
|
||||||
animateable="0">
|
animateable="0">
|
||||||
<Documentation>
|
<Documentation>
|
||||||
Searches the polyMesh/sets/ directory
|
Search the polyMesh/sets/ directory
|
||||||
</Documentation>
|
</Documentation>
|
||||||
<BooleanDomain name="bool"/>
|
<BooleanDomain name="bool"/>
|
||||||
</IntVectorProperty>
|
</IntVectorProperty>
|
||||||
|
|
||||||
<!-- Include Zones check-box -->
|
<!-- Include Zones check-box -->
|
||||||
<IntVectorProperty
|
<IntVectorProperty
|
||||||
name="IncludeZones"
|
name="UiIncludeZones"
|
||||||
command="SetIncludeZones"
|
command="SetIncludeZones"
|
||||||
number_of_elements="1"
|
number_of_elements="1"
|
||||||
|
is_internal="1"
|
||||||
default_values="0"
|
default_values="0"
|
||||||
animateable="0">
|
animateable="0">
|
||||||
<Documentation>
|
<Documentation>
|
||||||
@ -95,7 +121,7 @@
|
|||||||
animateable="0">
|
animateable="0">
|
||||||
<BooleanDomain name="bool"/>
|
<BooleanDomain name="bool"/>
|
||||||
<Documentation>
|
<Documentation>
|
||||||
Show patch names in render window.
|
Show patch names in render window
|
||||||
</Documentation>
|
</Documentation>
|
||||||
</IntVectorProperty>
|
</IntVectorProperty>
|
||||||
|
|
||||||
@ -112,12 +138,13 @@
|
|||||||
</Documentation>
|
</Documentation>
|
||||||
</IntVectorProperty>
|
</IntVectorProperty>
|
||||||
|
|
||||||
|
<!--
|
||||||
<!-- Selections -->
|
| Selections
|
||||||
|
-->
|
||||||
|
|
||||||
<!-- Available Parts (volume, patches, lagrangian) array -->
|
<!-- Available Parts (volume, patches, lagrangian) array -->
|
||||||
<StringVectorProperty
|
<StringVectorProperty
|
||||||
name="PartArrayInfo"
|
name="PartArrayStatus"
|
||||||
information_only="1">
|
information_only="1">
|
||||||
<ArraySelectionInformationHelper attribute_name="Part"/>
|
<ArraySelectionInformationHelper attribute_name="Part"/>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
@ -129,18 +156,21 @@
|
|||||||
repeat_command="1"
|
repeat_command="1"
|
||||||
number_of_elements_per_command="2"
|
number_of_elements_per_command="2"
|
||||||
element_types="2 0"
|
element_types="2 0"
|
||||||
information_property="PartArrayInfo"
|
information_property="PartArrayStatus"
|
||||||
animateable="0">
|
animateable="0">
|
||||||
<ArraySelectionDomain name="array_list">
|
<ArraySelectionDomain name="array_list">
|
||||||
<RequiredProperties>
|
<RequiredProperties>
|
||||||
<Property name="PartArrayInfo" function="ArrayList"/>
|
<Property name="PartArrayStatus" function="ArrayList"/>
|
||||||
</RequiredProperties>
|
</RequiredProperties>
|
||||||
</ArraySelectionDomain>
|
</ArraySelectionDomain>
|
||||||
|
<Documentation>
|
||||||
|
This property contains a list of the mesh parts (patches, sets, zones).
|
||||||
|
</Documentation>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
|
|
||||||
<!-- Available volFields array -->
|
<!-- Available volFields array -->
|
||||||
<StringVectorProperty
|
<StringVectorProperty
|
||||||
name="VolFieldArrayInfo"
|
name="VolFieldArrayStatus"
|
||||||
information_only="1">
|
information_only="1">
|
||||||
<ArraySelectionInformationHelper attribute_name="VolField"/>
|
<ArraySelectionInformationHelper attribute_name="VolField"/>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
@ -152,18 +182,21 @@
|
|||||||
repeat_command="1"
|
repeat_command="1"
|
||||||
number_of_elements_per_command="2"
|
number_of_elements_per_command="2"
|
||||||
element_types="2 0"
|
element_types="2 0"
|
||||||
information_property="VolFieldArrayInfo"
|
information_property="VolFieldArrayStatus"
|
||||||
animateable="0">
|
animateable="0">
|
||||||
<ArraySelectionDomain name="array_list">
|
<ArraySelectionDomain name="array_list">
|
||||||
<RequiredProperties>
|
<RequiredProperties>
|
||||||
<Property name="VolFieldArrayInfo" function="ArrayList"/>
|
<Property name="VolFieldArrayStatus" function="ArrayList"/>
|
||||||
</RequiredProperties>
|
</RequiredProperties>
|
||||||
</ArraySelectionDomain>
|
</ArraySelectionDomain>
|
||||||
|
<Documentation>
|
||||||
|
This property contains a list of the volume fields
|
||||||
|
</Documentation>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
|
|
||||||
<!-- Available Lagrangian fields array -->
|
<!-- Available Lagrangian fields array -->
|
||||||
<StringVectorProperty
|
<StringVectorProperty
|
||||||
name="LagrangianFieldArrayInfo"
|
name="LagrangianFieldArrayStatus"
|
||||||
information_only="1">
|
information_only="1">
|
||||||
<ArraySelectionInformationHelper attribute_name="LagrangianField"/>
|
<ArraySelectionInformationHelper attribute_name="LagrangianField"/>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
@ -175,18 +208,21 @@
|
|||||||
repeat_command="1"
|
repeat_command="1"
|
||||||
number_of_elements_per_command="2"
|
number_of_elements_per_command="2"
|
||||||
element_types="2 0"
|
element_types="2 0"
|
||||||
information_property="LagrangianFieldArrayInfo"
|
information_property="LagrangianFieldArrayStatus"
|
||||||
animateable="0">
|
animateable="0">
|
||||||
<ArraySelectionDomain name="array_list">
|
<ArraySelectionDomain name="array_list">
|
||||||
<RequiredProperties>
|
<RequiredProperties>
|
||||||
<Property name="LagrangianFieldArrayInfo" function="ArrayList"/>
|
<Property name="LagrangianFieldArrayStatus" function="ArrayList"/>
|
||||||
</RequiredProperties>
|
</RequiredProperties>
|
||||||
</ArraySelectionDomain>
|
</ArraySelectionDomain>
|
||||||
|
<Documentation>
|
||||||
|
This property contains a list of the lagrangian fields
|
||||||
|
</Documentation>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
|
|
||||||
<!-- Available pointFields array -->
|
<!-- Available pointFields array -->
|
||||||
<StringVectorProperty
|
<StringVectorProperty
|
||||||
name="PointFieldArrayInfo"
|
name="PointFieldArrayStatus"
|
||||||
information_only="1">
|
information_only="1">
|
||||||
<ArraySelectionInformationHelper attribute_name="PointField"/>
|
<ArraySelectionInformationHelper attribute_name="PointField"/>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
@ -198,19 +234,26 @@
|
|||||||
repeat_command="1"
|
repeat_command="1"
|
||||||
number_of_elements_per_command="2"
|
number_of_elements_per_command="2"
|
||||||
element_types="2 0"
|
element_types="2 0"
|
||||||
information_property="PointFieldArrayInfo"
|
information_property="PointFieldArrayStatus"
|
||||||
animateable="0">
|
animateable="0">
|
||||||
<ArraySelectionDomain name="array_list">
|
<ArraySelectionDomain name="array_list">
|
||||||
<RequiredProperties>
|
<RequiredProperties>
|
||||||
<Property name="PointFieldArrayInfo" function="ArrayList"/>
|
<Property name="PointFieldArrayStatus" function="ArrayList"/>
|
||||||
</RequiredProperties>
|
</RequiredProperties>
|
||||||
</ArraySelectionDomain>
|
</ArraySelectionDomain>
|
||||||
|
<Documentation>
|
||||||
|
This property contains a list of the point fields
|
||||||
|
</Documentation>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
|
|
||||||
<Hints>
|
<Hints>
|
||||||
<Property name="FileName" show="0"/>
|
<Property name="FileName" show="0"/>
|
||||||
<Property name="UiCacheMesh" show="0"/>
|
<Property name="UiCacheMesh" show="0"/>
|
||||||
|
<Property name="UiZeroTime" show="0"/>
|
||||||
|
<Property name="UiRefresh" show="0"/>
|
||||||
<Property name="UiShowPatchNames" show="0"/>
|
<Property name="UiShowPatchNames" show="0"/>
|
||||||
|
<Property name="UiIncludeSets" show="0"/>
|
||||||
|
<Property name="UiIncludeZones" show="0"/>
|
||||||
</Hints>
|
</Hints>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -32,9 +32,10 @@ License
|
|||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QLayout>
|
#include <QLayout>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <QPushButton>
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
|
|
||||||
// Paraview<->QT UI
|
// Paraview <-> QT UI
|
||||||
#include "pqAnimationScene.h"
|
#include "pqAnimationScene.h"
|
||||||
#include "pqApplicationCore.h"
|
#include "pqApplicationCore.h"
|
||||||
#include "pqPipelineRepresentation.h"
|
#include "pqPipelineRepresentation.h"
|
||||||
@ -56,51 +57,169 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
|
|||||||
QWidget *p
|
QWidget *p
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
pqAutoGeneratedObjectPanel(proxy, p),
|
pqAutoGeneratedObjectPanel(proxy, p)
|
||||||
sourceProxy_(vtkSMSourceProxy::SafeDownCast(this->proxy()))
|
|
||||||
{
|
{
|
||||||
// create first sublayout (at top of the panel)
|
// create first sublayout (at top of the panel)
|
||||||
QGridLayout *sect1 = new QGridLayout();
|
QGridLayout *form = new QGridLayout();
|
||||||
this->PanelLayout->addLayout(sect1, 0, 0, 1, -1);
|
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
|
// checkbox for caching mesh
|
||||||
CacheMesh_ = new QCheckBox("Cache Mesh");
|
if ((prop = this->proxy()->GetProperty("UiCacheMesh")) != 0)
|
||||||
CacheMesh_->setChecked(true);
|
{
|
||||||
|
// immediate update on the Server Manager side
|
||||||
|
prop->SetImmediateUpdate(true);
|
||||||
|
|
||||||
// checkbox for caching mesh
|
CacheMesh_ = new QCheckBox("Cache Mesh");
|
||||||
ShowPatchNames_ = new QCheckBox("Show Patch Names");
|
CacheMesh_->setChecked
|
||||||
ShowPatchNames_->setChecked(false);
|
(
|
||||||
|
vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
|
||||||
|
);
|
||||||
|
CacheMesh_->setToolTip
|
||||||
|
(
|
||||||
|
"Cache the fvMesh in memory."
|
||||||
|
);
|
||||||
|
|
||||||
connect
|
form->addWidget(CacheMesh_, 1, 0, Qt::AlignLeft);
|
||||||
(
|
connect
|
||||||
CacheMesh_,
|
(
|
||||||
SIGNAL(stateChanged(int)),
|
CacheMesh_,
|
||||||
this,
|
SIGNAL(stateChanged(int)),
|
||||||
SLOT(CacheMeshToggled())
|
this,
|
||||||
);
|
SLOT(CacheMeshToggled())
|
||||||
|
);
|
||||||
connect
|
}
|
||||||
(
|
|
||||||
ShowPatchNames_,
|
|
||||||
SIGNAL(stateChanged(int)),
|
|
||||||
this,
|
|
||||||
SLOT(ShowPatchNamesToggled())
|
|
||||||
);
|
|
||||||
|
|
||||||
sect1->addWidget(CacheMesh_);
|
|
||||||
sect1->addWidget(ShowPatchNames_);
|
|
||||||
|
|
||||||
|
|
||||||
// immediate update on the Server Manager side
|
// checkbox for patch names
|
||||||
vtkSMIntVectorProperty::SafeDownCast
|
if ((prop = this->proxy()->GetProperty("UiShowPatchNames")) != 0)
|
||||||
(
|
{
|
||||||
sourceProxy_->GetProperty("UiCacheMesh")
|
// immediate update on the Server Manager side
|
||||||
)->SetImmediateUpdate(true);
|
prop->SetImmediateUpdate(true);
|
||||||
vtkSMIntVectorProperty::SafeDownCast
|
|
||||||
(
|
ShowPatchNames_ = new QCheckBox("Patch Names");
|
||||||
sourceProxy_->GetProperty("UiShowPatchNames")
|
ShowPatchNames_->setChecked
|
||||||
)->SetImmediateUpdate(true);
|
(
|
||||||
|
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
|
vtkSMIntVectorProperty::SafeDownCast
|
||||||
(
|
(
|
||||||
sourceProxy_->GetProperty("UiCacheMesh")
|
this->proxy()->GetProperty("UiCacheMesh")
|
||||||
)->SetElement(0, CacheMesh_->isChecked());
|
)->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()
|
void pqPV3FoamReaderPanel::ShowPatchNamesToggled()
|
||||||
{
|
{
|
||||||
vtkSMIntVectorProperty::SafeDownCast
|
vtkSMIntVectorProperty::SafeDownCast
|
||||||
(
|
(
|
||||||
sourceProxy_->GetProperty("UiShowPatchNames")
|
this->proxy()->GetProperty("UiShowPatchNames")
|
||||||
)->SetElement(0, ShowPatchNames_->isChecked());
|
)->SetElement(0, ShowPatchNames_->isChecked());
|
||||||
|
|
||||||
// update the active view
|
// 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -37,6 +37,7 @@ SourceFiles
|
|||||||
#ifndef pqPV3FoamReaderPanel_h
|
#ifndef pqPV3FoamReaderPanel_h
|
||||||
#define pqPV3FoamReaderPanel_h
|
#define pqPV3FoamReaderPanel_h
|
||||||
|
|
||||||
|
|
||||||
#include "pqAutoGeneratedObjectPanel.h"
|
#include "pqAutoGeneratedObjectPanel.h"
|
||||||
|
|
||||||
// Forward declaration of QT classes
|
// Forward declaration of QT classes
|
||||||
@ -62,8 +63,8 @@ class pqPV3FoamReaderPanel
|
|||||||
Q_OBJECT;
|
Q_OBJECT;
|
||||||
typedef pqAutoGeneratedObjectPanel Superclass;
|
typedef pqAutoGeneratedObjectPanel Superclass;
|
||||||
|
|
||||||
//- Server Manager Source Proxy
|
//- ZeroTime checkbox
|
||||||
vtkSMSourceProxy* sourceProxy_;
|
QCheckBox* ZeroTime_;
|
||||||
|
|
||||||
//- CacheMesh checkbox
|
//- CacheMesh checkbox
|
||||||
QCheckBox* CacheMesh_;
|
QCheckBox* CacheMesh_;
|
||||||
@ -71,10 +72,20 @@ class pqPV3FoamReaderPanel
|
|||||||
//- Show Patch Names checkbox
|
//- Show Patch Names checkbox
|
||||||
QCheckBox* ShowPatchNames_;
|
QCheckBox* ShowPatchNames_;
|
||||||
|
|
||||||
|
//- IncludeSets checkbox
|
||||||
|
QCheckBox* IncludeSets_;
|
||||||
|
|
||||||
|
//- IncludeZones checkbox
|
||||||
|
QCheckBox* IncludeZones_;
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
|
|
||||||
void CacheMeshToggled();
|
void CacheMeshToggled();
|
||||||
|
void ZeroTimeToggled();
|
||||||
|
void RefreshPressed();
|
||||||
void ShowPatchNamesToggled();
|
void ShowPatchNamesToggled();
|
||||||
|
void IncludeSetsToggled();
|
||||||
|
void IncludeZonesToggled();
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
@ -79,7 +79,9 @@ vtkPV3FoamReader::vtkPV3FoamReader()
|
|||||||
TimeStepRange[1] = 0;
|
TimeStepRange[1] = 0;
|
||||||
|
|
||||||
CacheMesh = 1;
|
CacheMesh = 1;
|
||||||
|
Refresh = 0;
|
||||||
|
|
||||||
|
SkipZeroTime = 0;
|
||||||
ExtrapolatePatches = 0;
|
ExtrapolatePatches = 0;
|
||||||
IncludeSets = 0;
|
IncludeSets = 0;
|
||||||
IncludeZones = 0;
|
IncludeZones = 0;
|
||||||
@ -336,7 +338,6 @@ int vtkPV3FoamReader::RequestData
|
|||||||
foamData_->setTime(nRequestTime, requestTime);
|
foamData_->setTime(nRequestTime, requestTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
vtkMultiBlockDataSet* output = vtkMultiBlockDataSet::SafeDownCast
|
vtkMultiBlockDataSet* output = vtkMultiBlockDataSet::SafeDownCast
|
||||||
(
|
(
|
||||||
outputVector->GetInformationObject(0)->Get
|
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)
|
if (ShowPatchNames != val)
|
||||||
{
|
{
|
||||||
@ -430,7 +463,6 @@ void vtkPV3FoamReader::SetShowPatchNames(const int val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void vtkPV3FoamReader::updatePatchNamesView(const bool show)
|
void vtkPV3FoamReader::updatePatchNamesView(const bool show)
|
||||||
{
|
{
|
||||||
pqApplicationCore* appCore = pqApplicationCore::instance();
|
pqApplicationCore* appCore = pqApplicationCore::instance();
|
||||||
@ -452,7 +484,7 @@ void vtkPV3FoamReader::updatePatchNamesView(const bool show)
|
|||||||
// Get all the pqRenderView instances
|
// Get all the pqRenderView instances
|
||||||
QList<pqRenderView*> renderViews = smModel->findItems<pqRenderView*>();
|
QList<pqRenderView*> renderViews = smModel->findItems<pqRenderView*>();
|
||||||
|
|
||||||
for (int viewI=0; viewI<renderViews.size(); viewI++)
|
for (int viewI=0; viewI < renderViews.size(); ++viewI)
|
||||||
{
|
{
|
||||||
foamData_->renderPatchNames
|
foamData_->renderPatchNames
|
||||||
(
|
(
|
||||||
@ -521,7 +553,8 @@ int vtkPV3FoamReader::GetPartArrayStatus(const char* name)
|
|||||||
|
|
||||||
void vtkPV3FoamReader::SetPartArrayStatus(const char* name, int status)
|
void vtkPV3FoamReader::SetPartArrayStatus(const char* name, int status)
|
||||||
{
|
{
|
||||||
vtkDebugMacro(<<"SetPartArrayStatus");
|
vtkDebugMacro("Set mesh part \"" << name << "\" status to: " << status);
|
||||||
|
|
||||||
if (status)
|
if (status)
|
||||||
{
|
{
|
||||||
PartSelection->EnableArray(name);
|
PartSelection->EnableArray(name);
|
||||||
|
|||||||
@ -83,6 +83,15 @@ public:
|
|||||||
vtkSetMacro(CacheMesh, int);
|
vtkSetMacro(CacheMesh, int);
|
||||||
vtkGetMacro(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:
|
// Description:
|
||||||
// GUI update control
|
// GUI update control
|
||||||
vtkSetMacro(UpdateGUI, int);
|
vtkSetMacro(UpdateGUI, int);
|
||||||
@ -93,13 +102,14 @@ public:
|
|||||||
vtkSetMacro(ExtrapolatePatches, int);
|
vtkSetMacro(ExtrapolatePatches, int);
|
||||||
vtkGetMacro(ExtrapolatePatches, int);
|
vtkGetMacro(ExtrapolatePatches, int);
|
||||||
|
|
||||||
|
// Description:
|
||||||
// FOAM read sets control
|
// FOAM read sets control
|
||||||
vtkSetMacro(IncludeSets, int);
|
virtual void SetIncludeSets(int);
|
||||||
vtkGetMacro(IncludeSets, int);
|
vtkGetMacro(IncludeSets, int);
|
||||||
|
|
||||||
// Description:
|
// Description:
|
||||||
// FOAM read zones control
|
// FOAM read zones control
|
||||||
vtkSetMacro(IncludeZones, int);
|
virtual void SetIncludeZones(int);
|
||||||
vtkGetMacro(IncludeZones, int);
|
vtkGetMacro(IncludeZones, int);
|
||||||
|
|
||||||
// Description:
|
// Description:
|
||||||
@ -113,7 +123,7 @@ public:
|
|||||||
|
|
||||||
// Description:
|
// Description:
|
||||||
// Parts selection list control
|
// Parts selection list control
|
||||||
vtkDataArraySelection* GetPartSelection();
|
virtual vtkDataArraySelection* GetPartSelection();
|
||||||
int GetNumberOfPartArrays();
|
int GetNumberOfPartArrays();
|
||||||
int GetPartArrayStatus(const char* name);
|
int GetPartArrayStatus(const char* name);
|
||||||
void SetPartArrayStatus(const char* name, int status);
|
void SetPartArrayStatus(const char* name, int status);
|
||||||
@ -121,7 +131,7 @@ public:
|
|||||||
|
|
||||||
// Description:
|
// Description:
|
||||||
// volField selection list control
|
// volField selection list control
|
||||||
vtkDataArraySelection* GetVolFieldSelection();
|
virtual vtkDataArraySelection* GetVolFieldSelection();
|
||||||
int GetNumberOfVolFieldArrays();
|
int GetNumberOfVolFieldArrays();
|
||||||
int GetVolFieldArrayStatus(const char* name);
|
int GetVolFieldArrayStatus(const char* name);
|
||||||
void SetVolFieldArrayStatus(const char* name, int status);
|
void SetVolFieldArrayStatus(const char* name, int status);
|
||||||
@ -129,7 +139,7 @@ public:
|
|||||||
|
|
||||||
// Description:
|
// Description:
|
||||||
// pointField selection list control
|
// pointField selection list control
|
||||||
vtkDataArraySelection* GetPointFieldSelection();
|
virtual vtkDataArraySelection* GetPointFieldSelection();
|
||||||
int GetNumberOfPointFieldArrays();
|
int GetNumberOfPointFieldArrays();
|
||||||
int GetPointFieldArrayStatus(const char* name);
|
int GetPointFieldArrayStatus(const char* name);
|
||||||
void SetPointFieldArrayStatus(const char* name, int status);
|
void SetPointFieldArrayStatus(const char* name, int status);
|
||||||
@ -137,7 +147,7 @@ public:
|
|||||||
|
|
||||||
// Description:
|
// Description:
|
||||||
// lagrangianField selection list control
|
// lagrangianField selection list control
|
||||||
vtkDataArraySelection* GetLagrangianFieldSelection();
|
virtual vtkDataArraySelection* GetLagrangianFieldSelection();
|
||||||
int GetNumberOfLagrangianFieldArrays();
|
int GetNumberOfLagrangianFieldArrays();
|
||||||
int GetLagrangianFieldArrayStatus(const char* name);
|
int GetLagrangianFieldArrayStatus(const char* name);
|
||||||
void SetLagrangianFieldArrayStatus(const char* name, int status);
|
void SetLagrangianFieldArrayStatus(const char* name, int status);
|
||||||
@ -156,7 +166,6 @@ public:
|
|||||||
|
|
||||||
void SelectionModified();
|
void SelectionModified();
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
//- Construct null
|
//- Construct null
|
||||||
@ -185,9 +194,10 @@ protected:
|
|||||||
//- Fill in additional port information
|
//- Fill in additional port information
|
||||||
virtual int FillOutputPortInformation(int, vtkInformation*);
|
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;
|
vtkCallbackCommand* SelectionObserver;
|
||||||
|
|
||||||
|
//- The file name for this case
|
||||||
char* FileName;
|
char* FileName;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -202,14 +212,16 @@ private:
|
|||||||
void updatePatchNamesView(const bool show);
|
void updatePatchNamesView(const bool show);
|
||||||
|
|
||||||
int TimeStepRange[2];
|
int TimeStepRange[2];
|
||||||
|
int Refresh;
|
||||||
int CacheMesh;
|
int CacheMesh;
|
||||||
|
int SkipZeroTime;
|
||||||
|
|
||||||
int ExtrapolatePatches;
|
int ExtrapolatePatches;
|
||||||
int IncludeSets;
|
int IncludeSets;
|
||||||
int IncludeZones;
|
int IncludeZones;
|
||||||
int ShowPatchNames;
|
int ShowPatchNames;
|
||||||
|
|
||||||
//- Dummy variable/switch for invoke a reader update
|
//- Dummy variable/switch to invoke a reader update
|
||||||
int UpdateGUI;
|
int UpdateGUI;
|
||||||
|
|
||||||
vtkDataArraySelection* PartSelection;
|
vtkDataArraySelection* PartSelection;
|
||||||
|
|||||||
@ -50,16 +50,16 @@ defineTypeNameAndDebug(Foam::vtkPV3Foam, 0);
|
|||||||
|
|
||||||
void Foam::vtkPV3Foam::resetCounters()
|
void Foam::vtkPV3Foam::resetCounters()
|
||||||
{
|
{
|
||||||
// Reset mesh part ids and sizes
|
// Reset array range information (ids and sizes)
|
||||||
partInfoVolume_.reset();
|
arrayRangeVolume_.reset();
|
||||||
partInfoPatches_.reset();
|
arrayRangePatches_.reset();
|
||||||
partInfoLagrangian_.reset();
|
arrayRangeLagrangian_.reset();
|
||||||
partInfoCellZones_.reset();
|
arrayRangeCellZones_.reset();
|
||||||
partInfoFaceZones_.reset();
|
arrayRangeFaceZones_.reset();
|
||||||
partInfoPointZones_.reset();
|
arrayRangePointZones_.reset();
|
||||||
partInfoCellSets_.reset();
|
arrayRangeCellSets_.reset();
|
||||||
partInfoFaceSets_.reset();
|
arrayRangeFaceSets_.reset();
|
||||||
partInfoPointSets_.reset();
|
arrayRangePointSets_.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -92,21 +92,6 @@ void Foam::vtkPV3Foam::reduceMemory()
|
|||||||
|
|
||||||
int Foam::vtkPV3Foam::setTime(int nRequest, const double requestTimes[])
|
int Foam::vtkPV3Foam::setTime(int nRequest, const double requestTimes[])
|
||||||
{
|
{
|
||||||
if (debug)
|
|
||||||
{
|
|
||||||
Info<< "<beg> Foam::vtkPV3Foam::setTime(";
|
|
||||||
for (int requestI = 0; requestI < nRequest; ++requestI)
|
|
||||||
{
|
|
||||||
if (requestI)
|
|
||||||
{
|
|
||||||
Info<< ", ";
|
|
||||||
}
|
|
||||||
|
|
||||||
Info<< requestTimes[requestI];
|
|
||||||
}
|
|
||||||
Info<< ") - previousIndex = " << timeIndex_ << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
Time& runTime = dbPtr_();
|
Time& runTime = dbPtr_();
|
||||||
|
|
||||||
// Get times list
|
// Get times list
|
||||||
@ -128,6 +113,22 @@ int Foam::vtkPV3Foam::setTime(int nRequest, const double requestTimes[])
|
|||||||
nearestIndex = 0;
|
nearestIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
Info<< "<beg> 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
|
// see what has changed
|
||||||
if (timeIndex_ != nearestIndex)
|
if (timeIndex_ != nearestIndex)
|
||||||
@ -230,15 +231,15 @@ Foam::vtkPV3Foam::vtkPV3Foam
|
|||||||
timeIndex_(-1),
|
timeIndex_(-1),
|
||||||
meshChanged_(true),
|
meshChanged_(true),
|
||||||
fieldsChanged_(true),
|
fieldsChanged_(true),
|
||||||
partInfoVolume_("unzoned"),
|
arrayRangeVolume_("unzoned"),
|
||||||
partInfoPatches_("patches"),
|
arrayRangePatches_("patches"),
|
||||||
partInfoLagrangian_("lagrangian"),
|
arrayRangeLagrangian_("lagrangian"),
|
||||||
partInfoCellZones_("cellZone"),
|
arrayRangeCellZones_("cellZone"),
|
||||||
partInfoFaceZones_("faceZone"),
|
arrayRangeFaceZones_("faceZone"),
|
||||||
partInfoPointZones_("pointZone"),
|
arrayRangePointZones_("pointZone"),
|
||||||
partInfoCellSets_("cellSet"),
|
arrayRangeCellSets_("cellSet"),
|
||||||
partInfoFaceSets_("faceSet"),
|
arrayRangeFaceSets_("faceSet"),
|
||||||
partInfoPointSets_("pointSet")
|
arrayRangePointSets_("pointSet")
|
||||||
{
|
{
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
@ -288,7 +289,7 @@ Foam::vtkPV3Foam::vtkPV3Foam
|
|||||||
meshRegion_ = caseName.substr(beg+1, end-beg-1);
|
meshRegion_ = caseName.substr(beg+1, end-beg-1);
|
||||||
|
|
||||||
// some safety
|
// some safety
|
||||||
if (!meshRegion_.size())
|
if (meshRegion_.empty())
|
||||||
{
|
{
|
||||||
meshRegion_ = polyMesh::defaultRegion;
|
meshRegion_ = polyMesh::defaultRegion;
|
||||||
}
|
}
|
||||||
@ -352,6 +353,14 @@ void Foam::vtkPV3Foam::updateInfo()
|
|||||||
|
|
||||||
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
|
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
|
// enable 'internalMesh' on the first call
|
||||||
// or preserve the enabled selections
|
// or preserve the enabled selections
|
||||||
stringList enabledEntries;
|
stringList enabledEntries;
|
||||||
@ -369,11 +378,11 @@ void Foam::vtkPV3Foam::updateInfo()
|
|||||||
partSelection->RemoveAllArrays();
|
partSelection->RemoveAllArrays();
|
||||||
|
|
||||||
// Update mesh parts list - add Lagrangian at the bottom
|
// Update mesh parts list - add Lagrangian at the bottom
|
||||||
updateInfoInternalMesh();
|
updateInfoInternalMesh(partSelection);
|
||||||
updateInfoPatches();
|
updateInfoPatches(partSelection);
|
||||||
updateInfoSets();
|
updateInfoSets(partSelection);
|
||||||
updateInfoZones();
|
updateInfoZones(partSelection);
|
||||||
updateInfoLagrangian();
|
updateInfoLagrangian(partSelection);
|
||||||
|
|
||||||
// restore the enabled selections
|
// restore the enabled selections
|
||||||
setSelectedArrayEntries(partSelection, enabledEntries);
|
setSelectedArrayEntries(partSelection, enabledEntries);
|
||||||
@ -396,6 +405,8 @@ void Foam::vtkPV3Foam::updateInfo()
|
|||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
|
// just for debug info
|
||||||
|
getSelectedArrayEntries(partSelection);
|
||||||
Info<< "<end> Foam::vtkPV3Foam::updateInfo" << endl;
|
Info<< "<end> Foam::vtkPV3Foam::updateInfo" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,11 +570,25 @@ double* Foam::vtkPV3Foam::findTimes(int& nTimeSteps)
|
|||||||
|
|
||||||
nTimes = timeLst.size() - timeI;
|
nTimes = timeLst.size() - timeI;
|
||||||
|
|
||||||
// always skip "constant" time if possible
|
// skip "constant" time whenever possible
|
||||||
if (timeI == 0 && nTimes > 1)
|
if (timeI == 0 && nTimes > 1)
|
||||||
{
|
{
|
||||||
timeI = 1;
|
if (timeLst[timeI].name() == "constant")
|
||||||
--nTimes;
|
{
|
||||||
|
++timeI;
|
||||||
|
--nTimes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// skip "0/" time if requested and possible
|
||||||
|
if (nTimes > 1 && reader_->GetSkipZeroTime())
|
||||||
|
{
|
||||||
|
if (mag(timeLst[timeI].value()) < SMALL)
|
||||||
|
{
|
||||||
|
++timeI;
|
||||||
|
--nTimes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nTimes)
|
if (nTimes)
|
||||||
@ -607,10 +632,10 @@ void Foam::vtkPV3Foam::renderPatchNames(vtkRenderer* renderer, const bool show)
|
|||||||
wordHashSet selectedPatches = getSelected
|
wordHashSet selectedPatches = getSelected
|
||||||
(
|
(
|
||||||
reader_->GetPartSelection(),
|
reader_->GetPartSelection(),
|
||||||
partInfoPatches_
|
arrayRangePatches_
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!selectedPatches.size())
|
if (selectedPatches.empty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -111,7 +111,7 @@ class vtkPV3Foam
|
|||||||
// Private classes
|
// Private classes
|
||||||
|
|
||||||
//- Bookkeeping for GUI checklists and the multi-block organization
|
//- Bookkeeping for GUI checklists and the multi-block organization
|
||||||
class partInfo
|
class arrayRange
|
||||||
{
|
{
|
||||||
const char *name_;
|
const char *name_;
|
||||||
int block_;
|
int block_;
|
||||||
@ -120,11 +120,11 @@ class vtkPV3Foam
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
partInfo(const char *name, const int blockNo=0)
|
arrayRange(const char *name, const int blockNo=0)
|
||||||
:
|
:
|
||||||
name_(name),
|
name_(name),
|
||||||
block_(blockNo),
|
block_(blockNo),
|
||||||
start_(-1),
|
start_(0),
|
||||||
size_(0)
|
size_(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -142,21 +142,25 @@ class vtkPV3Foam
|
|||||||
return prev;
|
return prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Return block name
|
||||||
const char* name() const
|
const char* name() const
|
||||||
{
|
{
|
||||||
return name_;
|
return name_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Return array start index
|
||||||
int start() const
|
int start() const
|
||||||
{
|
{
|
||||||
return start_;
|
return start_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Return array end index
|
||||||
int end() const
|
int end() const
|
||||||
{
|
{
|
||||||
return start_ + size_;
|
return start_ + size_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Return sublist size
|
||||||
int size() const
|
int size() const
|
||||||
{
|
{
|
||||||
return size_;
|
return size_;
|
||||||
@ -167,16 +171,10 @@ class vtkPV3Foam
|
|||||||
return !size_;
|
return !size_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset()
|
//- Reset the size to zero and optionally assign a new start
|
||||||
|
void reset(const int startAt = 0)
|
||||||
{
|
{
|
||||||
start_ = -1;
|
start_ = startAt;
|
||||||
size_ = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Assign new start and reset the size
|
|
||||||
void operator=(const int i)
|
|
||||||
{
|
|
||||||
start_ = i;
|
|
||||||
size_ = 0;
|
size_ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,15 +280,15 @@ class vtkPV3Foam
|
|||||||
|
|
||||||
//- First instance and size of various mesh parts
|
//- First instance and size of various mesh parts
|
||||||
// used to index into partStatus_ and partDataset_
|
// used to index into partStatus_ and partDataset_
|
||||||
partInfo partInfoVolume_;
|
arrayRange arrayRangeVolume_;
|
||||||
partInfo partInfoPatches_;
|
arrayRange arrayRangePatches_;
|
||||||
partInfo partInfoLagrangian_;
|
arrayRange arrayRangeLagrangian_;
|
||||||
partInfo partInfoCellZones_;
|
arrayRange arrayRangeCellZones_;
|
||||||
partInfo partInfoFaceZones_;
|
arrayRange arrayRangeFaceZones_;
|
||||||
partInfo partInfoPointZones_;
|
arrayRange arrayRangePointZones_;
|
||||||
partInfo partInfoCellSets_;
|
arrayRange arrayRangeCellSets_;
|
||||||
partInfo partInfoFaceSets_;
|
arrayRange arrayRangeFaceSets_;
|
||||||
partInfo partInfoPointSets_;
|
arrayRange arrayRangePointSets_;
|
||||||
|
|
||||||
//- Decomposed cells information (mesh regions)
|
//- Decomposed cells information (mesh regions)
|
||||||
// TODO: regions
|
// TODO: regions
|
||||||
@ -313,7 +311,7 @@ class vtkPV3Foam
|
|||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
vtkDataSet* dataset,
|
vtkDataSet* dataset,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const std::string& datasetName
|
const std::string& datasetName
|
||||||
);
|
);
|
||||||
@ -323,7 +321,7 @@ class vtkPV3Foam
|
|||||||
static vtkDataSet* GetDataSetFromBlock
|
static vtkDataSet* GetDataSetFromBlock
|
||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo
|
const label datasetNo
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -332,7 +330,7 @@ class vtkPV3Foam
|
|||||||
static label GetNumberOfDataSets
|
static label GetNumberOfDataSets
|
||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&
|
const arrayRange&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Reset data counters
|
//- Reset data counters
|
||||||
@ -344,19 +342,19 @@ class vtkPV3Foam
|
|||||||
void updateMeshPartsStatus();
|
void updateMeshPartsStatus();
|
||||||
|
|
||||||
//- Internal mesh info
|
//- Internal mesh info
|
||||||
void updateInfoInternalMesh();
|
void updateInfoInternalMesh(vtkDataArraySelection*);
|
||||||
|
|
||||||
//- Lagrangian info
|
//- Lagrangian info
|
||||||
void updateInfoLagrangian();
|
void updateInfoLagrangian(vtkDataArraySelection*);
|
||||||
|
|
||||||
//- Patch info
|
//- Patch info
|
||||||
void updateInfoPatches();
|
void updateInfoPatches(vtkDataArraySelection*);
|
||||||
|
|
||||||
//- Set info
|
//- Set info
|
||||||
void updateInfoSets();
|
void updateInfoSets(vtkDataArraySelection*);
|
||||||
|
|
||||||
//- Zone info
|
//- Zone info
|
||||||
void updateInfoZones();
|
void updateInfoZones(vtkDataArraySelection*);
|
||||||
|
|
||||||
//- Read zone names for zoneType from file
|
//- Read zone names for zoneType from file
|
||||||
wordList readZoneNames(const word& zoneType);
|
wordList readZoneNames(const word& zoneType);
|
||||||
@ -511,7 +509,7 @@ class vtkPV3Foam
|
|||||||
const GeometricField<Type, fvPatchField, volMesh>&,
|
const GeometricField<Type, fvPatchField, volMesh>&,
|
||||||
autoPtr<GeometricField<Type, pointPatchField, pointMesh> >&,
|
autoPtr<GeometricField<Type, pointPatchField, pointMesh> >&,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange&,
|
||||||
const List<polyDecomp>& decompLst
|
const List<polyDecomp>& decompLst
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -521,7 +519,7 @@ class vtkPV3Foam
|
|||||||
(
|
(
|
||||||
const GeometricField<Type, fvPatchField, volMesh>&,
|
const GeometricField<Type, fvPatchField, volMesh>&,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const polyDecomp&
|
const polyDecomp&
|
||||||
);
|
);
|
||||||
@ -533,7 +531,7 @@ class vtkPV3Foam
|
|||||||
const word& name,
|
const word& name,
|
||||||
const Field<Type>&,
|
const Field<Type>&,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo
|
const label datasetNo
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -543,7 +541,7 @@ class vtkPV3Foam
|
|||||||
(
|
(
|
||||||
const GeometricField<Type, fvPatchField, volMesh>&,
|
const GeometricField<Type, fvPatchField, volMesh>&,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const fvMesh&,
|
const fvMesh&,
|
||||||
const labelList& faceLabels
|
const labelList& faceLabels
|
||||||
@ -555,7 +553,7 @@ class vtkPV3Foam
|
|||||||
(
|
(
|
||||||
const GeometricField<Type, fvPatchField, volMesh>&,
|
const GeometricField<Type, fvPatchField, volMesh>&,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const fvMesh&,
|
const fvMesh&,
|
||||||
const faceSet&
|
const faceSet&
|
||||||
@ -576,7 +574,7 @@ class vtkPV3Foam
|
|||||||
(
|
(
|
||||||
const IOField<Type>&,
|
const IOField<Type>&,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo
|
const label datasetNo
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -596,7 +594,7 @@ class vtkPV3Foam
|
|||||||
(
|
(
|
||||||
const GeometricField<Type, pointPatchField, pointMesh>&,
|
const GeometricField<Type, pointPatchField, pointMesh>&,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange&,
|
||||||
const List<polyDecomp>&
|
const List<polyDecomp>&
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -607,7 +605,7 @@ class vtkPV3Foam
|
|||||||
const GeometricField<Type, pointPatchField, pointMesh>&,
|
const GeometricField<Type, pointPatchField, pointMesh>&,
|
||||||
const GeometricField<Type, fvPatchField, volMesh>&,
|
const GeometricField<Type, fvPatchField, volMesh>&,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const polyDecomp&
|
const polyDecomp&
|
||||||
);
|
);
|
||||||
@ -619,7 +617,7 @@ class vtkPV3Foam
|
|||||||
const word& name,
|
const word& name,
|
||||||
const Field<Type>&,
|
const Field<Type>&,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo
|
const label datasetNo
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -640,7 +638,7 @@ class vtkPV3Foam
|
|||||||
static wordHashSet getSelected
|
static wordHashSet getSelected
|
||||||
(
|
(
|
||||||
vtkDataArraySelection*,
|
vtkDataArraySelection*,
|
||||||
const partInfo&
|
const arrayRange&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Retrieve the current selections
|
//- Retrieve the current selections
|
||||||
@ -650,7 +648,7 @@ class vtkPV3Foam
|
|||||||
static stringList getSelectedArrayEntries
|
static stringList getSelectedArrayEntries
|
||||||
(
|
(
|
||||||
vtkDataArraySelection*,
|
vtkDataArraySelection*,
|
||||||
const partInfo&
|
const arrayRange&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Set selection(s)
|
//- Set selection(s)
|
||||||
@ -661,7 +659,7 @@ class vtkPV3Foam
|
|||||||
);
|
);
|
||||||
|
|
||||||
//- Get the first word from the mesh parts selection
|
//- Get the first word from the mesh parts selection
|
||||||
word getPartName(int);
|
word getPartName(const int);
|
||||||
|
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
|
|||||||
@ -50,11 +50,17 @@ Foam::label Foam::vtkPV3Foam::addToSelection
|
|||||||
{
|
{
|
||||||
if (suffix.size())
|
if (suffix.size())
|
||||||
{
|
{
|
||||||
select->AddArray((names[nameI] + suffix).c_str());
|
select->AddArray
|
||||||
|
(
|
||||||
|
(names[nameI] + suffix).c_str()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
select->AddArray(names[nameI].c_str());
|
select->AddArray
|
||||||
|
(
|
||||||
|
(names[nameI]).c_str()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -43,7 +43,7 @@ void Foam::vtkPV3Foam::convertFaceField
|
|||||||
(
|
(
|
||||||
const GeometricField<Type, fvPatchField, volMesh>& tf,
|
const GeometricField<Type, fvPatchField, volMesh>& tf,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const fvMesh& mesh,
|
const fvMesh& mesh,
|
||||||
const labelList& faceLabels
|
const labelList& faceLabels
|
||||||
@ -100,7 +100,7 @@ void Foam::vtkPV3Foam::convertFaceField
|
|||||||
|
|
||||||
vtkPolyData::SafeDownCast
|
vtkPolyData::SafeDownCast
|
||||||
(
|
(
|
||||||
GetDataSetFromBlock(output, selector, datasetNo)
|
GetDataSetFromBlock(output, range, datasetNo)
|
||||||
) ->GetCellData()
|
) ->GetCellData()
|
||||||
->AddArray(cellData);
|
->AddArray(cellData);
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ void Foam::vtkPV3Foam::convertFaceField
|
|||||||
(
|
(
|
||||||
const GeometricField<Type, fvPatchField, volMesh>& tf,
|
const GeometricField<Type, fvPatchField, volMesh>& tf,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const fvMesh& mesh,
|
const fvMesh& mesh,
|
||||||
const faceSet& fSet
|
const faceSet& fSet
|
||||||
@ -173,7 +173,7 @@ void Foam::vtkPV3Foam::convertFaceField
|
|||||||
|
|
||||||
vtkPolyData::SafeDownCast
|
vtkPolyData::SafeDownCast
|
||||||
(
|
(
|
||||||
GetDataSetFromBlock(output, selector, datasetNo)
|
GetDataSetFromBlock(output, range, datasetNo)
|
||||||
) ->GetCellData()
|
) ->GetCellData()
|
||||||
->AddArray(cellData);
|
->AddArray(cellData);
|
||||||
|
|
||||||
|
|||||||
@ -51,7 +51,7 @@ void Foam::vtkPV3Foam::pruneObjectList
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
// hash all the selected field names
|
// hash all the selected field names
|
||||||
if (!selected.size())
|
if (selected.empty())
|
||||||
{
|
{
|
||||||
objects.clear();
|
objects.clear();
|
||||||
}
|
}
|
||||||
@ -79,7 +79,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
reader_->GetVolFieldSelection()
|
reader_->GetVolFieldSelection()
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!selectedFields.size())
|
if (selectedFields.empty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -89,7 +89,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
IOobjectList objects(mesh, dbPtr_().timeName());
|
IOobjectList objects(mesh, dbPtr_().timeName());
|
||||||
pruneObjectList(objects, selectedFields);
|
pruneObjectList(objects, selectedFields);
|
||||||
|
|
||||||
if (!objects.size())
|
if (objects.empty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -164,7 +164,7 @@ void Foam::vtkPV3Foam::convertPointFields
|
|||||||
reader_->GetPointFieldSelection()
|
reader_->GetPointFieldSelection()
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!selectedFields.size())
|
if (selectedFields.empty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -174,7 +174,7 @@ void Foam::vtkPV3Foam::convertPointFields
|
|||||||
IOobjectList objects(mesh, dbPtr_().timeName());
|
IOobjectList objects(mesh, dbPtr_().timeName());
|
||||||
pruneObjectList(objects, selectedFields);
|
pruneObjectList(objects, selectedFields);
|
||||||
|
|
||||||
if (!objects.size())
|
if (objects.empty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -229,7 +229,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
|
|||||||
vtkMultiBlockDataSet* output
|
vtkMultiBlockDataSet* output
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoLagrangian_;
|
arrayRange& range = arrayRangeLagrangian_;
|
||||||
const fvMesh& mesh = *meshPtr_;
|
const fvMesh& mesh = *meshPtr_;
|
||||||
|
|
||||||
wordHashSet selectedFields = getSelected
|
wordHashSet selectedFields = getSelected
|
||||||
@ -237,7 +237,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
|
|||||||
reader_->GetLagrangianFieldSelection()
|
reader_->GetLagrangianFieldSelection()
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!selectedFields.size())
|
if (selectedFields.empty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -248,7 +248,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
|
|||||||
printMemory();
|
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 word cloudName = getPartName(partId);
|
||||||
const label datasetNo = partDataset_[partId];
|
const label datasetNo = partDataset_[partId];
|
||||||
@ -270,7 +270,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
|
|||||||
);
|
);
|
||||||
pruneObjectList(objects, selectedFields);
|
pruneObjectList(objects, selectedFields);
|
||||||
|
|
||||||
if (!objects.size())
|
if (objects.empty())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,7 +42,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
|
|||||||
const label datasetNo
|
const label datasetNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const partInfo& selector = partInfoLagrangian_;
|
const arrayRange& range = arrayRangeLagrangian_;
|
||||||
|
|
||||||
forAllConstIter(IOobjectList, objects, iter)
|
forAllConstIter(IOobjectList, objects, iter)
|
||||||
{
|
{
|
||||||
@ -50,7 +50,7 @@ void Foam::vtkPV3Foam::convertLagrangianFields
|
|||||||
if (iter()->headerClassName() == IOField<Type>::typeName)
|
if (iter()->headerClassName() == IOField<Type>::typeName)
|
||||||
{
|
{
|
||||||
IOField<Type> tf(*iter());
|
IOField<Type> tf(*iter());
|
||||||
convertLagrangianField(tf, output, selector, datasetNo);
|
convertLagrangianField(tf, output, range, datasetNo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -61,7 +61,7 @@ void Foam::vtkPV3Foam::convertLagrangianField
|
|||||||
(
|
(
|
||||||
const IOField<Type>& tf,
|
const IOField<Type>& tf,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo
|
const label datasetNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -97,7 +97,7 @@ void Foam::vtkPV3Foam::convertLagrangianField
|
|||||||
|
|
||||||
vtkPolyData::SafeDownCast
|
vtkPolyData::SafeDownCast
|
||||||
(
|
(
|
||||||
GetDataSetFromBlock(output, selector, datasetNo)
|
GetDataSetFromBlock(output, range, datasetNo)
|
||||||
) ->GetPointData()
|
) ->GetPointData()
|
||||||
->AddArray(pointData);
|
->AddArray(pointData);
|
||||||
|
|
||||||
|
|||||||
@ -49,13 +49,13 @@ void Foam::vtkPV3Foam::convertMeshVolume
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoVolume_;
|
arrayRange& range = arrayRangeVolume_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
const fvMesh& mesh = *meshPtr_;
|
const fvMesh& mesh = *meshPtr_;
|
||||||
|
|
||||||
// resize for decomposed polyhedra
|
// resize for decomposed polyhedra
|
||||||
regionPolyDecomp_.setSize(selector.size());
|
regionPolyDecomp_.setSize(range.size());
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
@ -65,7 +65,7 @@ void Foam::vtkPV3Foam::convertMeshVolume
|
|||||||
|
|
||||||
// Convert the internalMesh
|
// Convert the internalMesh
|
||||||
// this looks like more than one part, but it isn't
|
// 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";
|
const word partName = "internalMesh";
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ void Foam::vtkPV3Foam::convertMeshVolume
|
|||||||
|
|
||||||
if (vtkmesh)
|
if (vtkmesh)
|
||||||
{
|
{
|
||||||
AddToBlock(output, vtkmesh, selector, datasetNo, partName);
|
AddToBlock(output, vtkmesh, range, datasetNo, partName);
|
||||||
vtkmesh->Delete();
|
vtkmesh->Delete();
|
||||||
|
|
||||||
partDataset_[partId] = datasetNo++;
|
partDataset_[partId] = datasetNo++;
|
||||||
@ -109,8 +109,8 @@ void Foam::vtkPV3Foam::convertMeshLagrangian
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoLagrangian_;
|
arrayRange& range = arrayRangeLagrangian_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
const fvMesh& mesh = *meshPtr_;
|
const fvMesh& mesh = *meshPtr_;
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ void Foam::vtkPV3Foam::convertMeshLagrangian
|
|||||||
printMemory();
|
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 word cloudName = getPartName(partId);
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ void Foam::vtkPV3Foam::convertMeshLagrangian
|
|||||||
|
|
||||||
if (vtkmesh)
|
if (vtkmesh)
|
||||||
{
|
{
|
||||||
AddToBlock(output, vtkmesh, selector, datasetNo, cloudName);
|
AddToBlock(output, vtkmesh, range, datasetNo, cloudName);
|
||||||
vtkmesh->Delete();
|
vtkmesh->Delete();
|
||||||
|
|
||||||
partDataset_[partId] = datasetNo++;
|
partDataset_[partId] = datasetNo++;
|
||||||
@ -160,8 +160,8 @@ void Foam::vtkPV3Foam::convertMeshPatches
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoPatches_;
|
arrayRange& range = arrayRangePatches_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
const fvMesh& mesh = *meshPtr_;
|
const fvMesh& mesh = *meshPtr_;
|
||||||
const polyBoundaryMesh& patches = mesh.boundaryMesh();
|
const polyBoundaryMesh& patches = mesh.boundaryMesh();
|
||||||
@ -172,7 +172,7 @@ void Foam::vtkPV3Foam::convertMeshPatches
|
|||||||
printMemory();
|
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 word patchName = getPartName(partId);
|
||||||
const label patchId = patches.findPatchID(patchName);
|
const label patchId = patches.findPatchID(patchName);
|
||||||
@ -192,7 +192,7 @@ void Foam::vtkPV3Foam::convertMeshPatches
|
|||||||
|
|
||||||
if (vtkmesh)
|
if (vtkmesh)
|
||||||
{
|
{
|
||||||
AddToBlock(output, vtkmesh, selector, datasetNo, patchName);
|
AddToBlock(output, vtkmesh, range, datasetNo, patchName);
|
||||||
vtkmesh->Delete();
|
vtkmesh->Delete();
|
||||||
|
|
||||||
partDataset_[partId] = datasetNo++;
|
partDataset_[partId] = datasetNo++;
|
||||||
@ -219,15 +219,15 @@ void Foam::vtkPV3Foam::convertMeshCellZones
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoCellZones_;
|
arrayRange& range = arrayRangeCellZones_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
const fvMesh& mesh = *meshPtr_;
|
const fvMesh& mesh = *meshPtr_;
|
||||||
|
|
||||||
// resize for decomposed polyhedra
|
// resize for decomposed polyhedra
|
||||||
zonePolyDecomp_.setSize(selector.size());
|
zonePolyDecomp_.setSize(range.size());
|
||||||
|
|
||||||
if (!selector.size())
|
if (range.empty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -239,7 +239,7 @@ void Foam::vtkPV3Foam::convertMeshCellZones
|
|||||||
}
|
}
|
||||||
|
|
||||||
const cellZoneMesh& zMesh = mesh.cellZones();
|
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 word zoneName = getPartName(partId);
|
||||||
const label zoneId = zMesh.findZoneID(zoneName);
|
const label zoneId = zMesh.findZoneID(zoneName);
|
||||||
@ -281,7 +281,7 @@ void Foam::vtkPV3Foam::convertMeshCellZones
|
|||||||
// copy pointMap as well, otherwise pointFields fail
|
// copy pointMap as well, otherwise pointFields fail
|
||||||
zonePolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
|
zonePolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
|
||||||
|
|
||||||
AddToBlock(output, vtkmesh, selector, datasetNo, zoneName);
|
AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
|
||||||
vtkmesh->Delete();
|
vtkmesh->Delete();
|
||||||
|
|
||||||
partDataset_[partId] = datasetNo++;
|
partDataset_[partId] = datasetNo++;
|
||||||
@ -308,13 +308,13 @@ void Foam::vtkPV3Foam::convertMeshCellSets
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoCellSets_;
|
arrayRange& range = arrayRangeCellSets_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
const fvMesh& mesh = *meshPtr_;
|
const fvMesh& mesh = *meshPtr_;
|
||||||
|
|
||||||
// resize for decomposed polyhedra
|
// resize for decomposed polyhedra
|
||||||
csetPolyDecomp_.setSize(selector.size());
|
csetPolyDecomp_.setSize(range.size());
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
@ -322,7 +322,7 @@ void Foam::vtkPV3Foam::convertMeshCellSets
|
|||||||
printMemory();
|
printMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int partId = selector.start(); partId < selector.end(); ++partId)
|
for (int partId = range.start(); partId < range.end(); ++partId)
|
||||||
{
|
{
|
||||||
const word partName = getPartName(partId);
|
const word partName = getPartName(partId);
|
||||||
|
|
||||||
@ -363,7 +363,7 @@ void Foam::vtkPV3Foam::convertMeshCellSets
|
|||||||
// copy pointMap as well, otherwise pointFields fail
|
// copy pointMap as well, otherwise pointFields fail
|
||||||
csetPolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
|
csetPolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
|
||||||
|
|
||||||
AddToBlock(output, vtkmesh, selector, datasetNo, partName);
|
AddToBlock(output, vtkmesh, range, datasetNo, partName);
|
||||||
vtkmesh->Delete();
|
vtkmesh->Delete();
|
||||||
|
|
||||||
partDataset_[partId] = datasetNo++;
|
partDataset_[partId] = datasetNo++;
|
||||||
@ -390,12 +390,12 @@ void Foam::vtkPV3Foam::convertMeshFaceZones
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoFaceZones_;
|
arrayRange& range = arrayRangeFaceZones_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
const fvMesh& mesh = *meshPtr_;
|
const fvMesh& mesh = *meshPtr_;
|
||||||
|
|
||||||
if (!selector.size())
|
if (range.empty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -407,7 +407,7 @@ void Foam::vtkPV3Foam::convertMeshFaceZones
|
|||||||
}
|
}
|
||||||
|
|
||||||
const faceZoneMesh& zMesh = mesh.faceZones();
|
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 word zoneName = getPartName(partId);
|
||||||
const label zoneId = zMesh.findZoneID(zoneName);
|
const label zoneId = zMesh.findZoneID(zoneName);
|
||||||
@ -426,7 +426,7 @@ void Foam::vtkPV3Foam::convertMeshFaceZones
|
|||||||
vtkPolyData* vtkmesh = faceZoneVTKMesh(mesh, zMesh[zoneId]);
|
vtkPolyData* vtkmesh = faceZoneVTKMesh(mesh, zMesh[zoneId]);
|
||||||
if (vtkmesh)
|
if (vtkmesh)
|
||||||
{
|
{
|
||||||
AddToBlock(output, vtkmesh, selector, datasetNo, zoneName);
|
AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
|
||||||
vtkmesh->Delete();
|
vtkmesh->Delete();
|
||||||
|
|
||||||
partDataset_[partId] = datasetNo++;
|
partDataset_[partId] = datasetNo++;
|
||||||
@ -453,8 +453,8 @@ void Foam::vtkPV3Foam::convertMeshFaceSets
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoFaceSets_;
|
arrayRange& range = arrayRangeFaceSets_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
const fvMesh& mesh = *meshPtr_;
|
const fvMesh& mesh = *meshPtr_;
|
||||||
|
|
||||||
@ -464,7 +464,7 @@ void Foam::vtkPV3Foam::convertMeshFaceSets
|
|||||||
printMemory();
|
printMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int partId = selector.start(); partId < selector.end(); ++partId)
|
for (int partId = range.start(); partId < range.end(); ++partId)
|
||||||
{
|
{
|
||||||
const word partName = getPartName(partId);
|
const word partName = getPartName(partId);
|
||||||
|
|
||||||
@ -483,7 +483,7 @@ void Foam::vtkPV3Foam::convertMeshFaceSets
|
|||||||
vtkPolyData* vtkmesh = faceSetVTKMesh(mesh, fSet);
|
vtkPolyData* vtkmesh = faceSetVTKMesh(mesh, fSet);
|
||||||
if (vtkmesh)
|
if (vtkmesh)
|
||||||
{
|
{
|
||||||
AddToBlock(output, vtkmesh, selector, datasetNo, partName);
|
AddToBlock(output, vtkmesh, range, datasetNo, partName);
|
||||||
vtkmesh->Delete();
|
vtkmesh->Delete();
|
||||||
|
|
||||||
partDataset_[partId] = datasetNo++;
|
partDataset_[partId] = datasetNo++;
|
||||||
@ -510,8 +510,8 @@ void Foam::vtkPV3Foam::convertMeshPointZones
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoPointZones_;
|
arrayRange& range = arrayRangePointZones_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
const fvMesh& mesh = *meshPtr_;
|
const fvMesh& mesh = *meshPtr_;
|
||||||
|
|
||||||
@ -521,10 +521,10 @@ void Foam::vtkPV3Foam::convertMeshPointZones
|
|||||||
printMemory();
|
printMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selector.size())
|
if (range.size())
|
||||||
{
|
{
|
||||||
const pointZoneMesh& zMesh = mesh.pointZones();
|
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);
|
word zoneName = getPartName(partId);
|
||||||
label zoneId = zMesh.findZoneID(zoneName);
|
label zoneId = zMesh.findZoneID(zoneName);
|
||||||
@ -537,7 +537,7 @@ void Foam::vtkPV3Foam::convertMeshPointZones
|
|||||||
vtkPolyData* vtkmesh = pointZoneVTKMesh(mesh, zMesh[zoneId]);
|
vtkPolyData* vtkmesh = pointZoneVTKMesh(mesh, zMesh[zoneId]);
|
||||||
if (vtkmesh)
|
if (vtkmesh)
|
||||||
{
|
{
|
||||||
AddToBlock(output, vtkmesh, selector, datasetNo, zoneName);
|
AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
|
||||||
vtkmesh->Delete();
|
vtkmesh->Delete();
|
||||||
|
|
||||||
partDataset_[partId] = datasetNo++;
|
partDataset_[partId] = datasetNo++;
|
||||||
@ -566,8 +566,8 @@ void Foam::vtkPV3Foam::convertMeshPointSets
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoPointSets_;
|
arrayRange& range = arrayRangePointSets_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
const fvMesh& mesh = *meshPtr_;
|
const fvMesh& mesh = *meshPtr_;
|
||||||
|
|
||||||
@ -577,7 +577,7 @@ void Foam::vtkPV3Foam::convertMeshPointSets
|
|||||||
printMemory();
|
printMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int partId = selector.start(); partId < selector.end(); ++partId)
|
for (int partId = range.start(); partId < range.end(); ++partId)
|
||||||
{
|
{
|
||||||
word partName = getPartName(partId);
|
word partName = getPartName(partId);
|
||||||
|
|
||||||
@ -596,7 +596,7 @@ void Foam::vtkPV3Foam::convertMeshPointSets
|
|||||||
vtkPolyData* vtkmesh = pointSetVTKMesh(mesh, pSet);
|
vtkPolyData* vtkmesh = pointSetVTKMesh(mesh, pSet);
|
||||||
if (vtkmesh)
|
if (vtkmesh)
|
||||||
{
|
{
|
||||||
AddToBlock(output, vtkmesh, selector, datasetNo, partName);
|
AddToBlock(output, vtkmesh, range, datasetNo, partName);
|
||||||
vtkmesh->Delete();
|
vtkmesh->Delete();
|
||||||
|
|
||||||
partDataset_[partId] = datasetNo++;
|
partDataset_[partId] = datasetNo++;
|
||||||
@ -616,4 +616,5 @@ void Foam::vtkPV3Foam::convertMeshPointSets
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -45,7 +45,7 @@ void Foam::vtkPV3Foam::convertPatchField
|
|||||||
const word& name,
|
const word& name,
|
||||||
const Field<Type>& ptf,
|
const Field<Type>& ptf,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo
|
const label datasetNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -70,7 +70,7 @@ void Foam::vtkPV3Foam::convertPatchField
|
|||||||
|
|
||||||
vtkPolyData::SafeDownCast
|
vtkPolyData::SafeDownCast
|
||||||
(
|
(
|
||||||
GetDataSetFromBlock(output, selector, datasetNo)
|
GetDataSetFromBlock(output, range, datasetNo)
|
||||||
) ->GetCellData()
|
) ->GetCellData()
|
||||||
->AddArray(cellData);
|
->AddArray(cellData);
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ void Foam::vtkPV3Foam::convertPatchPointField
|
|||||||
const word& name,
|
const word& name,
|
||||||
const Field<Type>& pptf,
|
const Field<Type>& pptf,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo
|
const label datasetNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -111,7 +111,7 @@ void Foam::vtkPV3Foam::convertPatchPointField
|
|||||||
|
|
||||||
vtkPolyData::SafeDownCast
|
vtkPolyData::SafeDownCast
|
||||||
(
|
(
|
||||||
GetDataSetFromBlock(output, selector, datasetNo)
|
GetDataSetFromBlock(output, range, datasetNo)
|
||||||
) ->GetPointData()
|
) ->GetPointData()
|
||||||
->AddArray(pointData);
|
->AddArray(pointData);
|
||||||
|
|
||||||
|
|||||||
@ -77,7 +77,7 @@ void Foam::vtkPV3Foam::convertPointFields
|
|||||||
(
|
(
|
||||||
ptf,
|
ptf,
|
||||||
output,
|
output,
|
||||||
partInfoVolume_,
|
arrayRangeVolume_,
|
||||||
regionPolyDecomp_
|
regionPolyDecomp_
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ void Foam::vtkPV3Foam::convertPointFields
|
|||||||
(
|
(
|
||||||
ptf,
|
ptf,
|
||||||
output,
|
output,
|
||||||
partInfoCellZones_,
|
arrayRangeCellZones_,
|
||||||
zonePolyDecomp_
|
zonePolyDecomp_
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ void Foam::vtkPV3Foam::convertPointFields
|
|||||||
(
|
(
|
||||||
ptf,
|
ptf,
|
||||||
output,
|
output,
|
||||||
partInfoCellSets_,
|
arrayRangeCellSets_,
|
||||||
csetPolyDecomp_
|
csetPolyDecomp_
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -105,8 +105,8 @@ void Foam::vtkPV3Foam::convertPointFields
|
|||||||
//
|
//
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
int partId = partInfoPatches_.start();
|
int partId = arrayRangePatches_.start();
|
||||||
partId < partInfoPatches_.end();
|
partId < arrayRangePatches_.end();
|
||||||
++partId
|
++partId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -124,7 +124,7 @@ void Foam::vtkPV3Foam::convertPointFields
|
|||||||
fieldName,
|
fieldName,
|
||||||
ptf.boundaryField()[patchId].patchInternalField()(),
|
ptf.boundaryField()[patchId].patchInternalField()(),
|
||||||
output,
|
output,
|
||||||
partInfoPatches_,
|
arrayRangePatches_,
|
||||||
datasetNo
|
datasetNo
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -137,11 +137,11 @@ void Foam::vtkPV3Foam::convertPointFieldBlock
|
|||||||
(
|
(
|
||||||
const GeometricField<Type, pointPatchField, pointMesh>& ptf,
|
const GeometricField<Type, pointPatchField, pointMesh>& ptf,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const List<polyDecomp>& decompLst
|
const List<polyDecomp>& decompLst
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
for (int partId = selector.start(); partId < selector.end(); ++partId)
|
for (int partId = range.start(); partId < range.end(); ++partId)
|
||||||
{
|
{
|
||||||
const label datasetNo = partDataset_[partId];
|
const label datasetNo = partDataset_[partId];
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ void Foam::vtkPV3Foam::convertPointFieldBlock
|
|||||||
ptf,
|
ptf,
|
||||||
GeometricField<Type, fvPatchField, volMesh>::null(),
|
GeometricField<Type, fvPatchField, volMesh>::null(),
|
||||||
output,
|
output,
|
||||||
selector,
|
range,
|
||||||
datasetNo,
|
datasetNo,
|
||||||
decompLst[datasetNo]
|
decompLst[datasetNo]
|
||||||
);
|
);
|
||||||
@ -167,7 +167,7 @@ void Foam::vtkPV3Foam::convertPointField
|
|||||||
const GeometricField<Type, pointPatchField, pointMesh>& ptf,
|
const GeometricField<Type, pointPatchField, pointMesh>& ptf,
|
||||||
const GeometricField<Type, fvPatchField, volMesh>& tf,
|
const GeometricField<Type, fvPatchField, volMesh>& tf,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const polyDecomp& decomp
|
const polyDecomp& decomp
|
||||||
)
|
)
|
||||||
@ -260,7 +260,7 @@ void Foam::vtkPV3Foam::convertPointField
|
|||||||
|
|
||||||
vtkUnstructuredGrid::SafeDownCast
|
vtkUnstructuredGrid::SafeDownCast
|
||||||
(
|
(
|
||||||
GetDataSetFromBlock(output, selector, datasetNo)
|
GetDataSetFromBlock(output, range, datasetNo)
|
||||||
) ->GetPointData()
|
) ->GetPointData()
|
||||||
->AddArray(pointData);
|
->AddArray(pointData);
|
||||||
|
|
||||||
|
|||||||
@ -118,32 +118,39 @@ Foam::wordList Foam::vtkPV3Foam::readZoneNames(const word& zoneType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::vtkPV3Foam::updateInfoInternalMesh()
|
void Foam::vtkPV3Foam::updateInfoInternalMesh
|
||||||
|
(
|
||||||
|
vtkDataArraySelection* arraySelection
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
Info<< "<beg> Foam::vtkPV3Foam::updateInfoInternalMesh" << endl;
|
Info<< "<beg> Foam::vtkPV3Foam::updateInfoInternalMesh" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
|
|
||||||
|
|
||||||
// Determine mesh parts (internalMesh, patches...)
|
// Determine mesh parts (internalMesh, patches...)
|
||||||
//- Add internal mesh as first entry
|
//- Add internal mesh as first entry
|
||||||
partInfoVolume_ = partSelection->GetNumberOfArrays();
|
arrayRangeVolume_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
partSelection->AddArray("internalMesh");
|
arraySelection->AddArray
|
||||||
partInfoVolume_ += 1;
|
(
|
||||||
|
"internalMesh"
|
||||||
|
);
|
||||||
|
arrayRangeVolume_ += 1;
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
// just for debug info
|
// just for debug info
|
||||||
getSelectedArrayEntries(partSelection);
|
getSelectedArrayEntries(arraySelection);
|
||||||
|
|
||||||
Info<< "<end> Foam::vtkPV3Foam::updateInfoInternalMesh" << endl;
|
Info<< "<end> Foam::vtkPV3Foam::updateInfoInternalMesh" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::vtkPV3Foam::updateInfoLagrangian()
|
void Foam::vtkPV3Foam::updateInfoLagrangian
|
||||||
|
(
|
||||||
|
vtkDataArraySelection* arraySelection
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
@ -166,34 +173,35 @@ void Foam::vtkPV3Foam::updateInfoLagrangian()
|
|||||||
readDir(dbPtr_->timePath()/lagrangianPrefix, fileName::DIRECTORY)
|
readDir(dbPtr_->timePath()/lagrangianPrefix, fileName::DIRECTORY)
|
||||||
);
|
);
|
||||||
|
|
||||||
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
|
arrayRangeLagrangian_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
partInfoLagrangian_ = partSelection->GetNumberOfArrays();
|
|
||||||
|
|
||||||
int nClouds = 0;
|
int nClouds = 0;
|
||||||
forAll(cloudDirs, cloudI)
|
forAll(cloudDirs, cloudI)
|
||||||
{
|
{
|
||||||
// Add cloud to GUI list
|
// Add cloud to GUI list
|
||||||
partSelection->AddArray
|
arraySelection->AddArray
|
||||||
(
|
(
|
||||||
(cloudDirs[cloudI] + " - lagrangian").c_str()
|
(cloudDirs[cloudI] + " - lagrangian").c_str()
|
||||||
);
|
);
|
||||||
|
|
||||||
++nClouds;
|
++nClouds;
|
||||||
}
|
}
|
||||||
|
arrayRangeLagrangian_ += nClouds;
|
||||||
partInfoLagrangian_ += nClouds;
|
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
// just for debug info
|
// just for debug info
|
||||||
getSelectedArrayEntries(partSelection);
|
getSelectedArrayEntries(arraySelection);
|
||||||
|
|
||||||
Info<< "<end> Foam::vtkPV3Foam::updateInfoLagrangian" << endl;
|
Info<< "<end> Foam::vtkPV3Foam::updateInfoLagrangian" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::vtkPV3Foam::updateInfoPatches()
|
void Foam::vtkPV3Foam::updateInfoPatches
|
||||||
|
(
|
||||||
|
vtkDataArraySelection* arraySelection
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
@ -201,8 +209,7 @@ void Foam::vtkPV3Foam::updateInfoPatches()
|
|||||||
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
|
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
|
arrayRangePatches_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
partInfoPatches_ = partSelection->GetNumberOfArrays();
|
|
||||||
|
|
||||||
int nPatches = 0;
|
int nPatches = 0;
|
||||||
if (meshPtr_)
|
if (meshPtr_)
|
||||||
@ -215,7 +222,7 @@ void Foam::vtkPV3Foam::updateInfoPatches()
|
|||||||
if (pp.size())
|
if (pp.size())
|
||||||
{
|
{
|
||||||
// Add patch to GUI list
|
// Add patch to GUI list
|
||||||
partSelection->AddArray
|
arraySelection->AddArray
|
||||||
(
|
(
|
||||||
(pp.name() + " - patch").c_str()
|
(pp.name() + " - patch").c_str()
|
||||||
);
|
);
|
||||||
@ -260,7 +267,7 @@ void Foam::vtkPV3Foam::updateInfoPatches()
|
|||||||
// Valid patch if nFace > 0 - add patch to GUI list
|
// Valid patch if nFace > 0 - add patch to GUI list
|
||||||
if (nFaces)
|
if (nFaces)
|
||||||
{
|
{
|
||||||
partSelection->AddArray
|
arraySelection->AddArray
|
||||||
(
|
(
|
||||||
(patchEntries[entryI].keyword() + " - patch").c_str()
|
(patchEntries[entryI].keyword() + " - patch").c_str()
|
||||||
);
|
);
|
||||||
@ -270,19 +277,22 @@ void Foam::vtkPV3Foam::updateInfoPatches()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
partInfoPatches_ += nPatches;
|
arrayRangePatches_ += nPatches;
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
// just for debug info
|
// just for debug info
|
||||||
getSelectedArrayEntries(partSelection);
|
getSelectedArrayEntries(arraySelection);
|
||||||
|
|
||||||
Info<< "<end> Foam::vtkPV3Foam::updateInfoPatches" << endl;
|
Info<< "<end> Foam::vtkPV3Foam::updateInfoPatches" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::vtkPV3Foam::updateInfoZones()
|
void Foam::vtkPV3Foam::updateInfoZones
|
||||||
|
(
|
||||||
|
vtkDataArraySelection* arraySelection
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (!reader_->GetIncludeZones())
|
if (!reader_->GetIncludeZones())
|
||||||
{
|
{
|
||||||
@ -295,7 +305,6 @@ void Foam::vtkPV3Foam::updateInfoZones()
|
|||||||
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
|
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
|
|
||||||
wordList namesLst;
|
wordList namesLst;
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -310,12 +319,15 @@ void Foam::vtkPV3Foam::updateInfoZones()
|
|||||||
namesLst = readZoneNames("cellZones");
|
namesLst = readZoneNames("cellZones");
|
||||||
}
|
}
|
||||||
|
|
||||||
partInfoCellZones_ = partSelection->GetNumberOfArrays();
|
arrayRangeCellZones_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
forAll(namesLst, elemI)
|
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");
|
namesLst = readZoneNames("faceZones");
|
||||||
}
|
}
|
||||||
|
|
||||||
partInfoFaceZones_ = partSelection->GetNumberOfArrays();
|
arrayRangeFaceZones_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
forAll(namesLst, elemI)
|
forAll(namesLst, elemI)
|
||||||
{
|
{
|
||||||
partSelection->AddArray
|
arraySelection->AddArray
|
||||||
(
|
(
|
||||||
(namesLst[elemI] + " - faceZone").c_str()
|
(namesLst[elemI] + " - faceZone").c_str()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
partInfoFaceZones_ += namesLst.size();
|
arrayRangeFaceZones_ += namesLst.size();
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -353,28 +365,30 @@ void Foam::vtkPV3Foam::updateInfoZones()
|
|||||||
namesLst = readZoneNames("pointZones");
|
namesLst = readZoneNames("pointZones");
|
||||||
}
|
}
|
||||||
|
|
||||||
partInfoPointZones_ = partSelection->GetNumberOfArrays();
|
arrayRangePointZones_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
forAll(namesLst, elemI)
|
forAll(namesLst, elemI)
|
||||||
{
|
{
|
||||||
partSelection->AddArray
|
arraySelection->AddArray
|
||||||
(
|
(
|
||||||
(namesLst[elemI] + " - pointZone").c_str()
|
(namesLst[elemI] + " - pointZone").c_str()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
partInfoPointZones_ += namesLst.size();
|
arrayRangePointZones_ += namesLst.size();
|
||||||
|
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
// just for debug info
|
// just for debug info
|
||||||
getSelectedArrayEntries(partSelection);
|
getSelectedArrayEntries(arraySelection);
|
||||||
|
|
||||||
Info<< "<end> Foam::vtkPV3Foam::updateInfoZones" << endl;
|
Info<< "<end> Foam::vtkPV3Foam::updateInfoZones" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::vtkPV3Foam::updateInfoSets()
|
void Foam::vtkPV3Foam::updateInfoSets
|
||||||
|
(
|
||||||
|
vtkDataArraySelection* arraySelection
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (!reader_->GetIncludeSets())
|
if (!reader_->GetIncludeSets())
|
||||||
{
|
{
|
||||||
@ -386,8 +400,6 @@ void Foam::vtkPV3Foam::updateInfoSets()
|
|||||||
Info<< "<beg> Foam::vtkPV3Foam::updateInfoSets" << endl;
|
Info<< "<beg> Foam::vtkPV3Foam::updateInfoSets" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
|
|
||||||
|
|
||||||
// Add names of sets
|
// Add names of sets
|
||||||
IOobjectList objects
|
IOobjectList objects
|
||||||
(
|
(
|
||||||
@ -397,26 +409,26 @@ void Foam::vtkPV3Foam::updateInfoSets()
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
partInfoCellSets_ = partSelection->GetNumberOfArrays();
|
arrayRangeCellSets_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
partInfoCellSets_ += addToSelection<cellSet>
|
arrayRangeCellSets_ += addToSelection<cellSet>
|
||||||
(
|
(
|
||||||
partSelection,
|
arraySelection,
|
||||||
objects,
|
objects,
|
||||||
" - cellSet"
|
" - cellSet"
|
||||||
);
|
);
|
||||||
|
|
||||||
partInfoFaceSets_ = partSelection->GetNumberOfArrays();
|
arrayRangeFaceSets_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
partInfoFaceSets_ += addToSelection<faceSet>
|
arrayRangeFaceSets_ += addToSelection<faceSet>
|
||||||
(
|
(
|
||||||
partSelection,
|
arraySelection,
|
||||||
objects,
|
objects,
|
||||||
" - faceSet"
|
" - faceSet"
|
||||||
);
|
);
|
||||||
|
|
||||||
partInfoPointSets_ = partSelection->GetNumberOfArrays();
|
arrayRangePointSets_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
partInfoPointSets_ += addToSelection<pointSet>
|
arrayRangePointSets_ += addToSelection<pointSet>
|
||||||
(
|
(
|
||||||
partSelection,
|
arraySelection,
|
||||||
objects,
|
objects,
|
||||||
" - pointSet"
|
" - pointSet"
|
||||||
);
|
);
|
||||||
@ -424,7 +436,7 @@ void Foam::vtkPV3Foam::updateInfoSets()
|
|||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
// just for debug info
|
// just for debug info
|
||||||
getSelectedArrayEntries(partSelection);
|
getSelectedArrayEntries(arraySelection);
|
||||||
|
|
||||||
Info<< "<end> Foam::vtkPV3Foam::updateInfoSets" << endl;
|
Info<< "<end> Foam::vtkPV3Foam::updateInfoSets" << endl;
|
||||||
}
|
}
|
||||||
@ -450,14 +462,13 @@ void Foam::vtkPV3Foam::updateInfoLagrangianFields()
|
|||||||
// have to decide if the second set of fields get mixed in
|
// have to decide if the second set of fields get mixed in
|
||||||
// or dealt with separately
|
// or dealt with separately
|
||||||
|
|
||||||
const partInfo& selector = partInfoLagrangian_;
|
const arrayRange& range = arrayRangeLagrangian_;
|
||||||
int partId = selector.start();
|
if (range.empty())
|
||||||
|
|
||||||
if (!selector.size() || partId < 0)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int partId = range.start();
|
||||||
word cloudName = getPartName(partId);
|
word cloudName = getPartName(partId);
|
||||||
|
|
||||||
// use the db directly since this might be called without a mesh,
|
// use the db directly since this might be called without a mesh,
|
||||||
|
|||||||
@ -76,12 +76,12 @@ void Foam::vtkPV3Foam::AddToBlock
|
|||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
vtkDataSet* dataset,
|
vtkDataSet* dataset,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const std::string& datasetName
|
const std::string& datasetName
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const int blockNo = selector.block();
|
const int blockNo = range.block();
|
||||||
|
|
||||||
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
||||||
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
||||||
@ -117,7 +117,7 @@ void Foam::vtkPV3Foam::AddToBlock
|
|||||||
output->GetMetaData(blockNo)->Set
|
output->GetMetaData(blockNo)->Set
|
||||||
(
|
(
|
||||||
vtkCompositeDataSet::NAME(),
|
vtkCompositeDataSet::NAME(),
|
||||||
selector.name()
|
range.name()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,11 +135,11 @@ void Foam::vtkPV3Foam::AddToBlock
|
|||||||
vtkDataSet* Foam::vtkPV3Foam::GetDataSetFromBlock
|
vtkDataSet* Foam::vtkPV3Foam::GetDataSetFromBlock
|
||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo
|
const label datasetNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const int blockNo = selector.block();
|
const int blockNo = range.block();
|
||||||
|
|
||||||
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
||||||
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
||||||
@ -157,10 +157,10 @@ vtkDataSet* Foam::vtkPV3Foam::GetDataSetFromBlock
|
|||||||
Foam::label Foam::vtkPV3Foam::GetNumberOfDataSets
|
Foam::label Foam::vtkPV3Foam::GetNumberOfDataSets
|
||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector
|
const arrayRange& range
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const int blockNo = selector.block();
|
const int blockNo = range.block();
|
||||||
|
|
||||||
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
||||||
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
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));
|
return getFirstWord(reader_->GetPartArrayName(partId));
|
||||||
}
|
}
|
||||||
@ -202,13 +202,13 @@ Foam::wordHashSet Foam::vtkPV3Foam::getSelected
|
|||||||
Foam::wordHashSet Foam::vtkPV3Foam::getSelected
|
Foam::wordHashSet Foam::vtkPV3Foam::getSelected
|
||||||
(
|
(
|
||||||
vtkDataArraySelection* select,
|
vtkDataArraySelection* select,
|
||||||
const partInfo& selector
|
const arrayRange& range
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
int nElem = select->GetNumberOfArrays();
|
int nElem = select->GetNumberOfArrays();
|
||||||
wordHashSet selections(2*nElem);
|
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))
|
if (select->GetArraySetting(elemI))
|
||||||
{
|
{
|
||||||
@ -262,13 +262,13 @@ Foam::stringList Foam::vtkPV3Foam::getSelectedArrayEntries
|
|||||||
Foam::stringList Foam::vtkPV3Foam::getSelectedArrayEntries
|
Foam::stringList Foam::vtkPV3Foam::getSelectedArrayEntries
|
||||||
(
|
(
|
||||||
vtkDataArraySelection* select,
|
vtkDataArraySelection* select,
|
||||||
const partInfo& selector
|
const arrayRange& range
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
stringList selections(selector.size());
|
stringList selections(range.size());
|
||||||
label nElem = 0;
|
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))
|
if (select->GetArraySetting(elemI))
|
||||||
{
|
{
|
||||||
@ -281,7 +281,7 @@ Foam::stringList Foam::vtkPV3Foam::getSelectedArrayEntries
|
|||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
Info<< "available(";
|
Info<< "available(";
|
||||||
for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
|
for (int elemI = range.start(); elemI < range.end(); ++elemI)
|
||||||
{
|
{
|
||||||
Info<< " \"" << select->GetArrayName(elemI) << "\"";
|
Info<< " \"" << select->GetArrayName(elemI) << "\"";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,7 +81,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
tf,
|
tf,
|
||||||
ptfPtr,
|
ptfPtr,
|
||||||
output,
|
output,
|
||||||
partInfoVolume_,
|
arrayRangeVolume_,
|
||||||
regionPolyDecomp_
|
regionPolyDecomp_
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
tf,
|
tf,
|
||||||
ptfPtr,
|
ptfPtr,
|
||||||
output,
|
output,
|
||||||
partInfoCellZones_,
|
arrayRangeCellZones_,
|
||||||
zonePolyDecomp_
|
zonePolyDecomp_
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
tf,
|
tf,
|
||||||
ptfPtr,
|
ptfPtr,
|
||||||
output,
|
output,
|
||||||
partInfoCellSets_,
|
arrayRangeCellSets_,
|
||||||
csetPolyDecomp_
|
csetPolyDecomp_
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -117,8 +117,8 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
int partId = partInfoPatches_.start();
|
int partId = arrayRangePatches_.start();
|
||||||
partId < partInfoPatches_.end();
|
partId < arrayRangePatches_.end();
|
||||||
++partId
|
++partId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -155,7 +155,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
tf.name(),
|
tf.name(),
|
||||||
tpptf(),
|
tpptf(),
|
||||||
output,
|
output,
|
||||||
partInfoPatches_,
|
arrayRangePatches_,
|
||||||
datasetNo
|
datasetNo
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
pointFldName,
|
pointFldName,
|
||||||
ppInterpList[patchId].faceToPointInterpolate(tpptf)(),
|
ppInterpList[patchId].faceToPointInterpolate(tpptf)(),
|
||||||
output,
|
output,
|
||||||
partInfoPatches_,
|
arrayRangePatches_,
|
||||||
datasetNo
|
datasetNo
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -175,7 +175,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
tf.name(),
|
tf.name(),
|
||||||
ptf,
|
ptf,
|
||||||
output,
|
output,
|
||||||
partInfoPatches_,
|
arrayRangePatches_,
|
||||||
datasetNo
|
datasetNo
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -184,7 +184,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
pointFldName,
|
pointFldName,
|
||||||
ppInterpList[patchId].faceToPointInterpolate(ptf)(),
|
ppInterpList[patchId].faceToPointInterpolate(ptf)(),
|
||||||
output,
|
output,
|
||||||
partInfoPatches_,
|
arrayRangePatches_,
|
||||||
datasetNo
|
datasetNo
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -195,8 +195,8 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
//
|
//
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
int partId = partInfoFaceZones_.start();
|
int partId = arrayRangeFaceZones_.start();
|
||||||
partId < partInfoFaceZones_.end();
|
partId < arrayRangeFaceZones_.end();
|
||||||
++partId
|
++partId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -220,7 +220,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
(
|
(
|
||||||
tf,
|
tf,
|
||||||
output,
|
output,
|
||||||
partInfoFaceZones_,
|
arrayRangeFaceZones_,
|
||||||
datasetNo,
|
datasetNo,
|
||||||
mesh,
|
mesh,
|
||||||
zMesh[zoneId]
|
zMesh[zoneId]
|
||||||
@ -234,8 +234,8 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
//
|
//
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
int partId = partInfoFaceSets_.start();
|
int partId = arrayRangeFaceSets_.start();
|
||||||
partId < partInfoFaceSets_.end();
|
partId < arrayRangeFaceSets_.end();
|
||||||
++partId
|
++partId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -253,7 +253,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
|||||||
(
|
(
|
||||||
tf,
|
tf,
|
||||||
output,
|
output,
|
||||||
partInfoFaceSets_,
|
arrayRangeFaceSets_,
|
||||||
datasetNo,
|
datasetNo,
|
||||||
mesh,
|
mesh,
|
||||||
fSet
|
fSet
|
||||||
@ -271,11 +271,11 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
|
|||||||
const GeometricField<Type, fvPatchField, volMesh>& tf,
|
const GeometricField<Type, fvPatchField, volMesh>& tf,
|
||||||
autoPtr<GeometricField<Type, pointPatchField, pointMesh> >& ptfPtr,
|
autoPtr<GeometricField<Type, pointPatchField, pointMesh> >& ptfPtr,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const List<polyDecomp>& decompLst
|
const List<polyDecomp>& decompLst
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
for (int partId = selector.start(); partId < selector.end(); ++partId)
|
for (int partId = range.start(); partId < range.end(); ++partId)
|
||||||
{
|
{
|
||||||
const label datasetNo = partDataset_[partId];
|
const label datasetNo = partDataset_[partId];
|
||||||
|
|
||||||
@ -285,7 +285,7 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
|
|||||||
(
|
(
|
||||||
tf,
|
tf,
|
||||||
output,
|
output,
|
||||||
selector,
|
range,
|
||||||
datasetNo,
|
datasetNo,
|
||||||
decompLst[datasetNo]
|
decompLst[datasetNo]
|
||||||
);
|
);
|
||||||
@ -309,7 +309,7 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
|
|||||||
ptfPtr(),
|
ptfPtr(),
|
||||||
tf,
|
tf,
|
||||||
output,
|
output,
|
||||||
selector,
|
range,
|
||||||
datasetNo,
|
datasetNo,
|
||||||
decompLst[datasetNo]
|
decompLst[datasetNo]
|
||||||
);
|
);
|
||||||
@ -323,7 +323,7 @@ void Foam::vtkPV3Foam::convertVolField
|
|||||||
(
|
(
|
||||||
const GeometricField<Type, fvPatchField, volMesh>& tf,
|
const GeometricField<Type, fvPatchField, volMesh>& tf,
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const polyDecomp& decompInfo
|
const polyDecomp& decompInfo
|
||||||
)
|
)
|
||||||
@ -359,7 +359,7 @@ void Foam::vtkPV3Foam::convertVolField
|
|||||||
|
|
||||||
vtkUnstructuredGrid::SafeDownCast
|
vtkUnstructuredGrid::SafeDownCast
|
||||||
(
|
(
|
||||||
GetDataSetFromBlock(output, selector, datasetNo)
|
GetDataSetFromBlock(output, range, datasetNo)
|
||||||
) ->GetCellData()
|
) ->GetCellData()
|
||||||
->AddArray(celldata);
|
->AddArray(celldata);
|
||||||
|
|
||||||
|
|||||||
@ -43,34 +43,40 @@
|
|||||||
</Documentation>
|
</Documentation>
|
||||||
</IntVectorProperty>
|
</IntVectorProperty>
|
||||||
|
|
||||||
<!-- Selections -->
|
|
||||||
|
|
||||||
<!-- Available Parts (blocks) array -->
|
<!--
|
||||||
|
| Selections
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Available Blocks array -->
|
||||||
<StringVectorProperty
|
<StringVectorProperty
|
||||||
name="PartArrayInfo"
|
name="BlockArrayStatus"
|
||||||
information_only="1">
|
information_only="1">
|
||||||
<ArraySelectionInformationHelper attribute_name="Part"/>
|
<ArraySelectionInformationHelper attribute_name="Block"/>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
<StringVectorProperty
|
<StringVectorProperty
|
||||||
name="PartStatus"
|
name="BlockStatus"
|
||||||
label="Blocks"
|
label="Blocks"
|
||||||
command="SetPartArrayStatus"
|
command="SetBlockArrayStatus"
|
||||||
number_of_elements="0"
|
number_of_elements="0"
|
||||||
repeat_command="1"
|
repeat_command="1"
|
||||||
number_of_elements_per_command="2"
|
number_of_elements_per_command="2"
|
||||||
element_types="2 0"
|
element_types="2 0"
|
||||||
information_property="PartArrayInfo"
|
information_property="BlockArrayStatus"
|
||||||
animateable="0">
|
animateable="0">
|
||||||
<ArraySelectionDomain name="array_list">
|
<ArraySelectionDomain name="array_list">
|
||||||
<RequiredProperties>
|
<RequiredProperties>
|
||||||
<Property name="PartArrayInfo" function="ArrayList"/>
|
<Property name="BlockArrayStatus" function="ArrayList"/>
|
||||||
</RequiredProperties>
|
</RequiredProperties>
|
||||||
</ArraySelectionDomain>
|
</ArraySelectionDomain>
|
||||||
|
<Documentation>
|
||||||
|
This property contains a list of the blocks
|
||||||
|
</Documentation>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
|
|
||||||
<!-- Available Parts (blocks) array -->
|
<!-- Available CurvedEdges array -->
|
||||||
<StringVectorProperty
|
<StringVectorProperty
|
||||||
name="CurvedEdgesArrayInfo"
|
name="CurvedEdgesArrayStatus"
|
||||||
information_only="1">
|
information_only="1">
|
||||||
<ArraySelectionInformationHelper attribute_name="CurvedEdges"/>
|
<ArraySelectionInformationHelper attribute_name="CurvedEdges"/>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
@ -82,13 +88,16 @@
|
|||||||
repeat_command="1"
|
repeat_command="1"
|
||||||
number_of_elements_per_command="2"
|
number_of_elements_per_command="2"
|
||||||
element_types="2 0"
|
element_types="2 0"
|
||||||
information_property="CurvedEdgesArrayInfo"
|
information_property="CurvedEdgesArrayStatus"
|
||||||
animateable="0">
|
animateable="0">
|
||||||
<ArraySelectionDomain name="array_list">
|
<ArraySelectionDomain name="array_list">
|
||||||
<RequiredProperties>
|
<RequiredProperties>
|
||||||
<Property name="CurvedEdgesArrayInfo" function="ArrayList"/>
|
<Property name="CurvedEdgesArrayStatus" function="ArrayList"/>
|
||||||
</RequiredProperties>
|
</RequiredProperties>
|
||||||
</ArraySelectionDomain>
|
</ArraySelectionDomain>
|
||||||
|
<Documentation>
|
||||||
|
This property contains a list of the curved edges
|
||||||
|
</Documentation>
|
||||||
</StringVectorProperty>
|
</StringVectorProperty>
|
||||||
|
|
||||||
<Hints>
|
<Hints>
|
||||||
|
|||||||
@ -32,9 +32,10 @@ License
|
|||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QLayout>
|
#include <QLayout>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <QPushButton>
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
|
|
||||||
// Paraview<->QT UI
|
// Paraview <-> QT UI
|
||||||
#include "pqAnimationScene.h"
|
#include "pqAnimationScene.h"
|
||||||
#include "pqApplicationCore.h"
|
#include "pqApplicationCore.h"
|
||||||
#include "pqPipelineRepresentation.h"
|
#include "pqPipelineRepresentation.h"
|
||||||
@ -56,34 +57,35 @@ pqPV3blockMeshReaderPanel::pqPV3blockMeshReaderPanel
|
|||||||
QWidget *p
|
QWidget *p
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
pqAutoGeneratedObjectPanel(proxy, p),
|
pqAutoGeneratedObjectPanel(proxy, p)
|
||||||
sourceProxy_(vtkSMSourceProxy::SafeDownCast(this->proxy()))
|
|
||||||
{
|
{
|
||||||
// create first sublayout (at top of the panel)
|
// create first sublayout (at top of the panel)
|
||||||
QGridLayout *sect1 = new QGridLayout();
|
QGridLayout *form = new QGridLayout();
|
||||||
this->PanelLayout->addLayout(sect1, 0, 0, 1, -1);
|
this->PanelLayout->addLayout(form, 0, 0, 1, -1);
|
||||||
|
|
||||||
|
|
||||||
|
vtkSMProperty* prop = 0;
|
||||||
// checkbox for showing point numbers
|
// checkbox for showing point numbers
|
||||||
ShowPointNumbers_ = new QCheckBox("Show Point Numbers");
|
if ((prop = this->proxy()->GetProperty("UiShowPointNumbers")) != 0)
|
||||||
ShowPointNumbers_->setChecked(true);
|
{
|
||||||
|
prop->SetImmediateUpdate(true);
|
||||||
|
|
||||||
connect
|
ShowPointNumbers_ = new QCheckBox("Show Point Numbers");
|
||||||
(
|
ShowPointNumbers_->setToolTip("Show point numbers in render window.");
|
||||||
ShowPointNumbers_,
|
ShowPointNumbers_->setChecked
|
||||||
SIGNAL(stateChanged(int)),
|
(
|
||||||
this,
|
vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
|
||||||
SLOT(ShowPointNumbersToggled())
|
);
|
||||||
);
|
|
||||||
|
|
||||||
sect1->addWidget(ShowPointNumbers_);
|
form->addWidget(ShowPointNumbers_);
|
||||||
|
|
||||||
|
connect
|
||||||
// immediate update on the Server Manager side
|
(
|
||||||
vtkSMIntVectorProperty::SafeDownCast
|
ShowPointNumbers_,
|
||||||
(
|
SIGNAL(stateChanged(int)),
|
||||||
sourceProxy_->GetProperty("UiShowPointNumbers")
|
this,
|
||||||
)->SetImmediateUpdate(true);
|
SLOT(ShowPointNumbersToggled())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +95,7 @@ void pqPV3blockMeshReaderPanel::ShowPointNumbersToggled()
|
|||||||
{
|
{
|
||||||
vtkSMIntVectorProperty::SafeDownCast
|
vtkSMIntVectorProperty::SafeDownCast
|
||||||
(
|
(
|
||||||
sourceProxy_->GetProperty("UiShowPointNumbers")
|
this->proxy()->GetProperty("UiShowPointNumbers")
|
||||||
)->SetElement(0, ShowPointNumbers_->isChecked());
|
)->SetElement(0, ShowPointNumbers_->isChecked());
|
||||||
|
|
||||||
// update the active view
|
// update the active view
|
||||||
|
|||||||
@ -62,9 +62,6 @@ class pqPV3blockMeshReaderPanel
|
|||||||
Q_OBJECT;
|
Q_OBJECT;
|
||||||
typedef pqAutoGeneratedObjectPanel Superclass;
|
typedef pqAutoGeneratedObjectPanel Superclass;
|
||||||
|
|
||||||
//- Server Manager Source Proxy
|
|
||||||
vtkSMSourceProxy* sourceProxy_;
|
|
||||||
|
|
||||||
//- Show Point Numbers checkbox
|
//- Show Point Numbers checkbox
|
||||||
QCheckBox* ShowPointNumbers_;
|
QCheckBox* ShowPointNumbers_;
|
||||||
|
|
||||||
|
|||||||
@ -64,7 +64,7 @@ vtkPV3blockMeshReader::vtkPV3blockMeshReader()
|
|||||||
ShowPointNumbers = 1;
|
ShowPointNumbers = 1;
|
||||||
UpdateGUI = 0;
|
UpdateGUI = 0;
|
||||||
|
|
||||||
PartSelection = vtkDataArraySelection::New();
|
BlockSelection = vtkDataArraySelection::New();
|
||||||
CurvedEdgesSelection = vtkDataArraySelection::New();
|
CurvedEdgesSelection = vtkDataArraySelection::New();
|
||||||
|
|
||||||
// Setup the selection callback to modify this object when an array
|
// Setup the selection callback to modify this object when an array
|
||||||
@ -77,7 +77,7 @@ vtkPV3blockMeshReader::vtkPV3blockMeshReader()
|
|||||||
SelectionObserver->SetClientData(this);
|
SelectionObserver->SetClientData(this);
|
||||||
|
|
||||||
|
|
||||||
PartSelection->AddObserver
|
BlockSelection->AddObserver
|
||||||
(
|
(
|
||||||
vtkCommand::ModifiedEvent,
|
vtkCommand::ModifiedEvent,
|
||||||
this->SelectionObserver
|
this->SelectionObserver
|
||||||
@ -109,11 +109,11 @@ vtkPV3blockMeshReader::~vtkPV3blockMeshReader()
|
|||||||
delete [] FileName;
|
delete [] FileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
PartSelection->RemoveObserver(this->SelectionObserver);
|
BlockSelection->RemoveObserver(this->SelectionObserver);
|
||||||
CurvedEdgesSelection->RemoveObserver(this->SelectionObserver);
|
CurvedEdgesSelection->RemoveObserver(this->SelectionObserver);
|
||||||
|
|
||||||
SelectionObserver->Delete();
|
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");
|
vtkDebugMacro(<<"GetBlockSelection");
|
||||||
return PartSelection;
|
return BlockSelection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int vtkPV3blockMeshReader::GetNumberOfPartArrays()
|
int vtkPV3blockMeshReader::GetNumberOfBlockArrays()
|
||||||
{
|
{
|
||||||
vtkDebugMacro(<<"GetNumberOfPartArrays");
|
vtkDebugMacro(<<"GetNumberOfBlockArrays");
|
||||||
return PartSelection->GetNumberOfArrays();
|
return BlockSelection->GetNumberOfArrays();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char* vtkPV3blockMeshReader::GetPartArrayName(int index)
|
const char* vtkPV3blockMeshReader::GetBlockArrayName(int index)
|
||||||
{
|
{
|
||||||
vtkDebugMacro(<<"GetPartArrayName");
|
vtkDebugMacro(<<"GetBlockArrayName");
|
||||||
return PartSelection->GetArrayName(index);
|
return BlockSelection->GetArrayName(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int vtkPV3blockMeshReader::GetPartArrayStatus(const char* name)
|
int vtkPV3blockMeshReader::GetBlockArrayStatus(const char* name)
|
||||||
{
|
{
|
||||||
vtkDebugMacro(<<"GetPartArrayStatus");
|
vtkDebugMacro(<<"GetBlockArrayStatus");
|
||||||
return PartSelection->ArrayIsEnabled(name);
|
return BlockSelection->ArrayIsEnabled(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void vtkPV3blockMeshReader::SetPartArrayStatus
|
void vtkPV3blockMeshReader::SetBlockArrayStatus
|
||||||
(
|
(
|
||||||
const char* name,
|
const char* name,
|
||||||
int status
|
int status
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
vtkDebugMacro(<<"SetPartArrayStatus");
|
vtkDebugMacro(<<"SetBlockArrayStatus");
|
||||||
if (status)
|
if (status)
|
||||||
{
|
{
|
||||||
PartSelection->EnableArray(name);
|
BlockSelection->EnableArray(name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PartSelection->DisableArray(name);
|
BlockSelection->DisableArray(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,14 +399,7 @@ void vtkPV3blockMeshReader::SelectionModifiedCallback
|
|||||||
void*
|
void*
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
static_cast<vtkPV3blockMeshReader*>(clientdata)->SelectionModified();
|
static_cast<vtkPV3blockMeshReader*>(clientdata)->Modified();
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void vtkPV3blockMeshReader::SelectionModified()
|
|
||||||
{
|
|
||||||
vtkDebugMacro(<<"SelectionModified");
|
|
||||||
Modified();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -84,15 +84,15 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
// Description:
|
// Description:
|
||||||
// Parts (blocks) selection list control
|
// Blocks selection list control
|
||||||
vtkDataArraySelection* GetPartSelection();
|
vtkDataArraySelection* GetBlockSelection();
|
||||||
int GetNumberOfPartArrays();
|
int GetNumberOfBlockArrays();
|
||||||
int GetPartArrayStatus(const char*);
|
int GetBlockArrayStatus(const char*);
|
||||||
void SetPartArrayStatus(const char*, int status);
|
void SetBlockArrayStatus(const char*, int status);
|
||||||
const char* GetPartArrayName(int index);
|
const char* GetBlockArrayName(int index);
|
||||||
|
|
||||||
// Description:
|
// Description:
|
||||||
// Parts (blocks) selection list control
|
// CurvedEdges selection list control
|
||||||
vtkDataArraySelection* GetCurvedEdgesSelection();
|
vtkDataArraySelection* GetCurvedEdgesSelection();
|
||||||
int GetNumberOfCurvedEdgesArrays();
|
int GetNumberOfCurvedEdgesArrays();
|
||||||
int GetCurvedEdgesArrayStatus(const char*);
|
int GetCurvedEdgesArrayStatus(const char*);
|
||||||
@ -110,8 +110,6 @@ public:
|
|||||||
void* calldata
|
void* calldata
|
||||||
);
|
);
|
||||||
|
|
||||||
void SelectionModified();
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@ -164,7 +162,7 @@ private:
|
|||||||
//- Dummy variable/switch to invoke a reader update
|
//- Dummy variable/switch to invoke a reader update
|
||||||
int UpdateGUI;
|
int UpdateGUI;
|
||||||
|
|
||||||
vtkDataArraySelection* PartSelection;
|
vtkDataArraySelection* BlockSelection;
|
||||||
|
|
||||||
vtkDataArraySelection* CurvedEdgesSelection;
|
vtkDataArraySelection* CurvedEdgesSelection;
|
||||||
|
|
||||||
|
|||||||
@ -49,13 +49,16 @@ defineTypeNameAndDebug(Foam::vtkPV3blockMesh, 0);
|
|||||||
void Foam::vtkPV3blockMesh::resetCounters()
|
void Foam::vtkPV3blockMesh::resetCounters()
|
||||||
{
|
{
|
||||||
// Reset mesh part ids and sizes
|
// Reset mesh part ids and sizes
|
||||||
partInfoBlocks_.reset();
|
arrayRangeBlocks_.reset();
|
||||||
partInfoEdges_.reset();
|
arrayRangeEdges_.reset();
|
||||||
partInfoCorners_.reset();
|
arrayRangeCorners_.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::vtkPV3blockMesh::updateInfoBlocks()
|
void Foam::vtkPV3blockMesh::updateInfoBlocks
|
||||||
|
(
|
||||||
|
vtkDataArraySelection* arraySelection
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
@ -63,8 +66,7 @@ void Foam::vtkPV3blockMesh::updateInfoBlocks()
|
|||||||
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
|
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkDataArraySelection* selection = reader_->GetPartSelection();
|
arrayRangeBlocks_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
partInfoBlocks_ = selection->GetNumberOfArrays();
|
|
||||||
|
|
||||||
const blockMesh& blkMesh = *meshPtr_;
|
const blockMesh& blkMesh = *meshPtr_;
|
||||||
const int nBlocks = blkMesh.size();
|
const int nBlocks = blkMesh.size();
|
||||||
@ -81,22 +83,25 @@ void Foam::vtkPV3blockMesh::updateInfoBlocks()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add blockId and zoneName to GUI list
|
// Add blockId and zoneName to GUI list
|
||||||
selection->AddArray(partName.c_str());
|
arraySelection->AddArray(partName.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
partInfoBlocks_ += nBlocks;
|
arrayRangeBlocks_ += nBlocks;
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
// just for debug info
|
// just for debug info
|
||||||
getSelectedArrayEntries(selection);
|
getSelectedArrayEntries(arraySelection);
|
||||||
|
|
||||||
Info<< "<end> Foam::vtkPV3blockMesh::updateInfoBlocks" << endl;
|
Info<< "<end> Foam::vtkPV3blockMesh::updateInfoBlocks" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::vtkPV3blockMesh::updateInfoEdges()
|
void Foam::vtkPV3blockMesh::updateInfoEdges
|
||||||
|
(
|
||||||
|
vtkDataArraySelection* arraySelection
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
@ -104,8 +109,7 @@ void Foam::vtkPV3blockMesh::updateInfoEdges()
|
|||||||
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
|
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkDataArraySelection* selection = reader_->GetCurvedEdgesSelection();
|
arrayRangeEdges_.reset( arraySelection->GetNumberOfArrays() );
|
||||||
partInfoEdges_ = selection->GetNumberOfArrays();
|
|
||||||
|
|
||||||
const blockMesh& blkMesh = *meshPtr_;
|
const blockMesh& blkMesh = *meshPtr_;
|
||||||
const curvedEdgeList& edges = blkMesh.edges();
|
const curvedEdgeList& edges = blkMesh.edges();
|
||||||
@ -119,15 +123,15 @@ void Foam::vtkPV3blockMesh::updateInfoEdges()
|
|||||||
<< edges[edgeI].type();
|
<< edges[edgeI].type();
|
||||||
|
|
||||||
// Add "beg:end - type" to GUI list
|
// 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)
|
if (debug)
|
||||||
{
|
{
|
||||||
// just for debug info
|
// just for debug info
|
||||||
getSelectedArrayEntries(selection);
|
getSelectedArrayEntries(arraySelection);
|
||||||
|
|
||||||
Info<< "<end> Foam::vtkPV3blockMesh::updateInfoEdges" << endl;
|
Info<< "<end> Foam::vtkPV3blockMesh::updateInfoEdges" << endl;
|
||||||
}
|
}
|
||||||
@ -145,9 +149,9 @@ Foam::vtkPV3blockMesh::vtkPV3blockMesh
|
|||||||
reader_(reader),
|
reader_(reader),
|
||||||
dbPtr_(NULL),
|
dbPtr_(NULL),
|
||||||
meshPtr_(NULL),
|
meshPtr_(NULL),
|
||||||
partInfoBlocks_("block"),
|
arrayRangeBlocks_("block"),
|
||||||
partInfoEdges_("edges"),
|
arrayRangeEdges_("edges"),
|
||||||
partInfoCorners_("corners")
|
arrayRangeCorners_("corners")
|
||||||
{
|
{
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
@ -243,7 +247,7 @@ void Foam::vtkPV3blockMesh::updateInfo()
|
|||||||
|
|
||||||
resetCounters();
|
resetCounters();
|
||||||
|
|
||||||
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
|
vtkDataArraySelection* blockSelection = reader_->GetBlockSelection();
|
||||||
vtkDataArraySelection* edgeSelection = reader_->GetCurvedEdgesSelection();
|
vtkDataArraySelection* edgeSelection = reader_->GetCurvedEdgesSelection();
|
||||||
|
|
||||||
// enable 'internalMesh' on the first call
|
// enable 'internalMesh' on the first call
|
||||||
@ -251,33 +255,33 @@ void Foam::vtkPV3blockMesh::updateInfo()
|
|||||||
stringList enabledParts;
|
stringList enabledParts;
|
||||||
stringList enabledEdges;
|
stringList enabledEdges;
|
||||||
bool firstTime = false;
|
bool firstTime = false;
|
||||||
if (!partSelection->GetNumberOfArrays() && !meshPtr_)
|
if (!blockSelection->GetNumberOfArrays() && !meshPtr_)
|
||||||
{
|
{
|
||||||
firstTime = true;
|
firstTime = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
enabledParts = getSelectedArrayEntries(partSelection);
|
enabledParts = getSelectedArrayEntries(blockSelection);
|
||||||
enabledEdges = getSelectedArrayEntries(edgeSelection);
|
enabledEdges = getSelectedArrayEntries(edgeSelection);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear current mesh parts list
|
// Clear current mesh parts list
|
||||||
partSelection->RemoveAllArrays();
|
blockSelection->RemoveAllArrays();
|
||||||
edgeSelection->RemoveAllArrays();
|
edgeSelection->RemoveAllArrays();
|
||||||
|
|
||||||
// need a blockMesh
|
// need a blockMesh
|
||||||
updateFoamMesh();
|
updateFoamMesh();
|
||||||
|
|
||||||
// Update mesh parts list
|
// Update mesh parts list
|
||||||
updateInfoBlocks();
|
updateInfoBlocks( blockSelection );
|
||||||
|
|
||||||
// Update curved edges list
|
// Update curved edges list
|
||||||
updateInfoEdges();
|
updateInfoEdges( edgeSelection );
|
||||||
|
|
||||||
// restore the enabled selections
|
// restore the enabled selections
|
||||||
if (!firstTime)
|
if (!firstTime)
|
||||||
{
|
{
|
||||||
setSelectedArrayEntries(partSelection, enabledParts);
|
setSelectedArrayEntries(blockSelection, enabledParts);
|
||||||
setSelectedArrayEntries(edgeSelection, enabledEdges);
|
setSelectedArrayEntries(edgeSelection, enabledEdges);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -337,7 +341,7 @@ void Foam::vtkPV3blockMesh::Update
|
|||||||
reader_->UpdateProgress(0.1);
|
reader_->UpdateProgress(0.1);
|
||||||
|
|
||||||
// Set up mesh parts selection(s)
|
// Set up mesh parts selection(s)
|
||||||
updateBoolListStatus(partStatus_, reader_->GetPartSelection());
|
updateBoolListStatus(blockStatus_, reader_->GetBlockSelection());
|
||||||
|
|
||||||
// Set up curved edges selection(s)
|
// Set up curved edges selection(s)
|
||||||
updateBoolListStatus(edgeStatus_, reader_->GetCurvedEdgesSelection());
|
updateBoolListStatus(edgeStatus_, reader_->GetCurvedEdgesSelection());
|
||||||
|
|||||||
@ -88,7 +88,7 @@ class vtkPV3blockMesh
|
|||||||
// Private classes
|
// Private classes
|
||||||
|
|
||||||
//- Bookkeeping for GUI checklists and the multi-block organization
|
//- Bookkeeping for GUI checklists and the multi-block organization
|
||||||
class partInfo
|
class arrayRange
|
||||||
{
|
{
|
||||||
const char *name_;
|
const char *name_;
|
||||||
int block_;
|
int block_;
|
||||||
@ -97,11 +97,11 @@ class vtkPV3blockMesh
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
partInfo(const char *name, const int blockNo=0)
|
arrayRange(const char *name, const int blockNo=0)
|
||||||
:
|
:
|
||||||
name_(name),
|
name_(name),
|
||||||
block_(blockNo),
|
block_(blockNo),
|
||||||
start_(-1),
|
start_(0),
|
||||||
size_(0)
|
size_(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -119,21 +119,25 @@ class vtkPV3blockMesh
|
|||||||
return prev;
|
return prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Return block name
|
||||||
const char* name() const
|
const char* name() const
|
||||||
{
|
{
|
||||||
return name_;
|
return name_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Return array start index
|
||||||
int start() const
|
int start() const
|
||||||
{
|
{
|
||||||
return start_;
|
return start_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Return array end index
|
||||||
int end() const
|
int end() const
|
||||||
{
|
{
|
||||||
return start_ + size_;
|
return start_ + size_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Return sublist size
|
||||||
int size() const
|
int size() const
|
||||||
{
|
{
|
||||||
return size_;
|
return size_;
|
||||||
@ -144,16 +148,10 @@ class vtkPV3blockMesh
|
|||||||
return !size_;
|
return !size_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset()
|
//- Reset the size to zero and optionally assign a new start
|
||||||
|
void reset(const int startAt = 0)
|
||||||
{
|
{
|
||||||
start_ = -1;
|
start_ = startAt;
|
||||||
size_ = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Assign new start and reset the size
|
|
||||||
void operator=(const int i)
|
|
||||||
{
|
|
||||||
start_ = i;
|
|
||||||
size_ = 0;
|
size_ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,22 +175,20 @@ class vtkPV3blockMesh
|
|||||||
blockMesh* meshPtr_;
|
blockMesh* meshPtr_;
|
||||||
|
|
||||||
//- Selected geometrical parts
|
//- Selected geometrical parts
|
||||||
boolList partStatus_;
|
boolList blockStatus_;
|
||||||
|
|
||||||
//- Selected curved edges
|
//- Selected curved edges
|
||||||
boolList edgeStatus_;
|
boolList edgeStatus_;
|
||||||
|
|
||||||
//- First instance and size of bleckMesh blocks
|
//- First instance and size of bleckMesh blocks
|
||||||
// used to index into partStatus_
|
// used to index into blockStatus_
|
||||||
partInfo partInfoBlocks_;
|
arrayRange arrayRangeBlocks_;
|
||||||
|
|
||||||
//- First instance and size of CurvedEdges
|
//- First instance and size of CurvedEdges (only partially used)
|
||||||
// only partially used
|
arrayRange arrayRangeEdges_;
|
||||||
partInfo partInfoEdges_;
|
|
||||||
|
|
||||||
//- First instance and size of block corners
|
//- First instance and size of block corners (only partially used)
|
||||||
// only partially used
|
arrayRange arrayRangeCorners_;
|
||||||
partInfo partInfoCorners_;
|
|
||||||
|
|
||||||
//- List of point numbers for rendering to window
|
//- List of point numbers for rendering to window
|
||||||
List<vtkTextActor*> pointNumberTextActorsPtrs_;
|
List<vtkTextActor*> pointNumberTextActorsPtrs_;
|
||||||
@ -205,7 +201,7 @@ class vtkPV3blockMesh
|
|||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
vtkDataSet* dataset,
|
vtkDataSet* dataset,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const std::string& datasetName
|
const std::string& datasetName
|
||||||
);
|
);
|
||||||
@ -215,7 +211,7 @@ class vtkPV3blockMesh
|
|||||||
static vtkDataSet* GetDataSetFromBlock
|
static vtkDataSet* GetDataSetFromBlock
|
||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&,
|
const arrayRange&,
|
||||||
const label datasetNo
|
const label datasetNo
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -224,7 +220,7 @@ class vtkPV3blockMesh
|
|||||||
static label GetNumberOfDataSets
|
static label GetNumberOfDataSets
|
||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo&
|
const arrayRange&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Update boolList from GUI selection
|
//- Update boolList from GUI selection
|
||||||
@ -240,10 +236,10 @@ class vtkPV3blockMesh
|
|||||||
// Update information helper functions
|
// Update information helper functions
|
||||||
|
|
||||||
//- Internal block info
|
//- Internal block info
|
||||||
void updateInfoBlocks();
|
void updateInfoBlocks(vtkDataArraySelection*);
|
||||||
|
|
||||||
//- block curved edges info
|
//- block curved edges info
|
||||||
void updateInfoEdges();
|
void updateInfoEdges(vtkDataArraySelection*);
|
||||||
|
|
||||||
// Update helper functions
|
// Update helper functions
|
||||||
|
|
||||||
@ -271,7 +267,7 @@ class vtkPV3blockMesh
|
|||||||
static wordHashSet getSelected
|
static wordHashSet getSelected
|
||||||
(
|
(
|
||||||
vtkDataArraySelection*,
|
vtkDataArraySelection*,
|
||||||
const partInfo&
|
const arrayRange&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Retrieve the current selections
|
//- Retrieve the current selections
|
||||||
@ -281,7 +277,7 @@ class vtkPV3blockMesh
|
|||||||
static stringList getSelectedArrayEntries
|
static stringList getSelectedArrayEntries
|
||||||
(
|
(
|
||||||
vtkDataArraySelection*,
|
vtkDataArraySelection*,
|
||||||
const partInfo&
|
const arrayRange&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Set selection(s)
|
//- Set selection(s)
|
||||||
|
|||||||
@ -52,9 +52,9 @@ void Foam::vtkPV3blockMesh::convertMeshBlocks
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
vtkDataArraySelection* selection = reader_->GetPartSelection();
|
vtkDataArraySelection* selection = reader_->GetBlockSelection();
|
||||||
partInfo& selector = partInfoBlocks_;
|
arrayRange& range = arrayRangeBlocks_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
|
|
||||||
const blockMesh& blkMesh = *meshPtr_;
|
const blockMesh& blkMesh = *meshPtr_;
|
||||||
@ -70,25 +70,18 @@ void Foam::vtkPV3blockMesh::convertMeshBlocks
|
|||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
int partId = selector.start();
|
int partId = range.start();
|
||||||
partId < selector.end();
|
partId < range.end();
|
||||||
++partId, ++blockI
|
++partId, ++blockI
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (!partStatus_[partId])
|
if (!blockStatus_[partId])
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const blockDescriptor& blockDef = blkMesh[blockI].blockDef();
|
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();
|
vtkUnstructuredGrid* vtkmesh = vtkUnstructuredGrid::New();
|
||||||
|
|
||||||
// Convert Foam mesh vertices to VTK
|
// Convert Foam mesh vertices to VTK
|
||||||
@ -123,7 +116,7 @@ void Foam::vtkPV3blockMesh::convertMeshBlocks
|
|||||||
|
|
||||||
AddToBlock
|
AddToBlock
|
||||||
(
|
(
|
||||||
output, vtkmesh, selector, datasetNo,
|
output, vtkmesh, range, datasetNo,
|
||||||
selection->GetArrayName(partId)
|
selection->GetArrayName(partId)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -152,9 +145,9 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
vtkDataArraySelection* selection = reader_->GetCurvedEdgesSelection();
|
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
|
label datasetNo = 0; // restart at dataset 0
|
||||||
|
|
||||||
const blockMesh& blkMesh = *meshPtr_;
|
const blockMesh& blkMesh = *meshPtr_;
|
||||||
@ -165,8 +158,8 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
|
|||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
int partId = selector.start();
|
int partId = range.start();
|
||||||
partId < selector.end();
|
partId < range.end();
|
||||||
++partId, ++edgeI
|
++partId, ++edgeI
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -187,9 +180,7 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
|
|||||||
|
|
||||||
edgeList blkEdges = blockDef.blockShape().edges();
|
edgeList blkEdges = blockDef.blockShape().edges();
|
||||||
|
|
||||||
|
|
||||||
// find the corresponding edge within the block
|
// find the corresponding edge within the block
|
||||||
|
|
||||||
label foundEdgeI = -1;
|
label foundEdgeI = -1;
|
||||||
forAll(blkEdges, blkEdgeI)
|
forAll(blkEdges, blkEdgeI)
|
||||||
{
|
{
|
||||||
@ -236,7 +227,7 @@ void Foam::vtkPV3blockMesh::convertMeshEdges
|
|||||||
|
|
||||||
AddToBlock
|
AddToBlock
|
||||||
(
|
(
|
||||||
output, vtkmesh, selector, datasetNo,
|
output, vtkmesh, range, datasetNo,
|
||||||
selection->GetArrayName(partId)
|
selection->GetArrayName(partId)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -269,8 +260,8 @@ void Foam::vtkPV3blockMesh::convertMeshCorners
|
|||||||
int& blockNo
|
int& blockNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
partInfo& selector = partInfoCorners_;
|
arrayRange& range = arrayRangeCorners_;
|
||||||
selector.block(blockNo); // set output block
|
range.block(blockNo); // set output block
|
||||||
label datasetNo = 0; // restart at dataset 0
|
label datasetNo = 0; // restart at dataset 0
|
||||||
|
|
||||||
const pointField& blockPoints = meshPtr_->blockPointField();
|
const pointField& blockPoints = meshPtr_->blockPointField();
|
||||||
@ -310,7 +301,11 @@ void Foam::vtkPV3blockMesh::convertMeshCorners
|
|||||||
vtkmesh->SetVerts(vtkcells);
|
vtkmesh->SetVerts(vtkcells);
|
||||||
vtkcells->Delete();
|
vtkcells->Delete();
|
||||||
|
|
||||||
AddToBlock(output, vtkmesh, selector, datasetNo, partInfoCorners_.name());
|
AddToBlock
|
||||||
|
(
|
||||||
|
output, vtkmesh, range, datasetNo,
|
||||||
|
arrayRangeCorners_.name()
|
||||||
|
);
|
||||||
vtkmesh->Delete();
|
vtkmesh->Delete();
|
||||||
|
|
||||||
datasetNo++;
|
datasetNo++;
|
||||||
|
|||||||
@ -71,12 +71,12 @@ void Foam::vtkPV3blockMesh::AddToBlock
|
|||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
vtkDataSet* dataset,
|
vtkDataSet* dataset,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo,
|
const label datasetNo,
|
||||||
const std::string& datasetName
|
const std::string& datasetName
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const int blockNo = selector.block();
|
const int blockNo = range.block();
|
||||||
|
|
||||||
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
||||||
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
||||||
@ -112,7 +112,7 @@ void Foam::vtkPV3blockMesh::AddToBlock
|
|||||||
output->GetMetaData(blockNo)->Set
|
output->GetMetaData(blockNo)->Set
|
||||||
(
|
(
|
||||||
vtkCompositeDataSet::NAME(),
|
vtkCompositeDataSet::NAME(),
|
||||||
selector.name()
|
range.name()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,11 +130,11 @@ void Foam::vtkPV3blockMesh::AddToBlock
|
|||||||
vtkDataSet* Foam::vtkPV3blockMesh::GetDataSetFromBlock
|
vtkDataSet* Foam::vtkPV3blockMesh::GetDataSetFromBlock
|
||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector,
|
const arrayRange& range,
|
||||||
const label datasetNo
|
const label datasetNo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const int blockNo = selector.block();
|
const int blockNo = range.block();
|
||||||
|
|
||||||
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
||||||
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
||||||
@ -152,10 +152,10 @@ vtkDataSet* Foam::vtkPV3blockMesh::GetDataSetFromBlock
|
|||||||
Foam::label Foam::vtkPV3blockMesh::GetNumberOfDataSets
|
Foam::label Foam::vtkPV3blockMesh::GetNumberOfDataSets
|
||||||
(
|
(
|
||||||
vtkMultiBlockDataSet* output,
|
vtkMultiBlockDataSet* output,
|
||||||
const partInfo& selector
|
const arrayRange& range
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const int blockNo = selector.block();
|
const int blockNo = range.block();
|
||||||
|
|
||||||
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
vtkDataObject* blockDO = output->GetBlock(blockNo);
|
||||||
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
|
||||||
@ -191,13 +191,13 @@ Foam::wordHashSet Foam::vtkPV3blockMesh::getSelected
|
|||||||
Foam::wordHashSet Foam::vtkPV3blockMesh::getSelected
|
Foam::wordHashSet Foam::vtkPV3blockMesh::getSelected
|
||||||
(
|
(
|
||||||
vtkDataArraySelection* select,
|
vtkDataArraySelection* select,
|
||||||
const partInfo& selector
|
const arrayRange& range
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
int nElem = select->GetNumberOfArrays();
|
int nElem = select->GetNumberOfArrays();
|
||||||
wordHashSet selections(2*nElem);
|
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))
|
if (select->GetArraySetting(elemI))
|
||||||
{
|
{
|
||||||
@ -251,13 +251,13 @@ Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
|
|||||||
Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
|
Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
|
||||||
(
|
(
|
||||||
vtkDataArraySelection* select,
|
vtkDataArraySelection* select,
|
||||||
const partInfo& selector
|
const arrayRange& range
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
stringList selections(selector.size());
|
stringList selections(range.size());
|
||||||
label nElem = 0;
|
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))
|
if (select->GetArraySetting(elemI))
|
||||||
{
|
{
|
||||||
@ -270,7 +270,7 @@ Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
|
|||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
Info<< "available(";
|
Info<< "available(";
|
||||||
for (int elemI = selector.start(); elemI < selector.end(); ++elemI)
|
for (int elemI = range.start(); elemI < range.end(); ++elemI)
|
||||||
{
|
{
|
||||||
Info<< " \"" << select->GetArrayName(elemI) << "\"";
|
Info<< " \"" << select->GetArrayName(elemI) << "\"";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -689,13 +689,13 @@ HTML_FILE_EXTENSION = .html
|
|||||||
# each generated HTML page. If it is left blank doxygen will generate a
|
# each generated HTML page. If it is left blank doxygen will generate a
|
||||||
# standard header.
|
# 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
|
# 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
|
# each generated HTML page. If it is left blank doxygen will generate a
|
||||||
# standard footer.
|
# 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
|
# 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
|
# style sheet that is used by each HTML page. It can be used to
|
||||||
|
|||||||
@ -1,13 +1,17 @@
|
|||||||
|
curvedEdges/CatmullRomSpline.C
|
||||||
|
curvedEdges/polyLine.C
|
||||||
|
|
||||||
|
curvedEdges/arcEdge.C
|
||||||
curvedEdges/curvedEdge.C
|
curvedEdges/curvedEdge.C
|
||||||
curvedEdges/lineEdge.C
|
curvedEdges/lineEdge.C
|
||||||
curvedEdges/polyLine.C
|
|
||||||
curvedEdges/polyLineEdge.C
|
curvedEdges/polyLineEdge.C
|
||||||
curvedEdges/arcEdge.C
|
|
||||||
curvedEdges/spline.C
|
|
||||||
curvedEdges/BSpline.C
|
|
||||||
curvedEdges/simpleSplineEdge.C
|
|
||||||
curvedEdges/polySplineEdge.C
|
|
||||||
curvedEdges/lineDivide.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/blockDescriptor.C
|
||||||
blockDescriptor/blockDescriptorEdges.C
|
blockDescriptor/blockDescriptorEdges.C
|
||||||
|
|||||||
@ -89,7 +89,7 @@ Foam::blockDescriptor::blockDescriptor
|
|||||||
{
|
{
|
||||||
zoneName_ = t.wordToken();
|
zoneName_ = t.wordToken();
|
||||||
|
|
||||||
// Get the next token
|
// Examine next token
|
||||||
is >> t;
|
is >> t;
|
||||||
}
|
}
|
||||||
is.putBack(t);
|
is.putBack(t);
|
||||||
@ -129,7 +129,12 @@ Foam::blockDescriptor::blockDescriptor
|
|||||||
|
|
||||||
scalarList expRatios(is);
|
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
|
// x-direction
|
||||||
expand_[0] = expRatios[0];
|
expand_[0] = expRatios[0];
|
||||||
|
|||||||
@ -120,8 +120,8 @@ void Foam::blockDescriptor::setEdge
|
|||||||
// divide the line
|
// divide the line
|
||||||
lineDivide divEdge(cedge, dim, 1.0/(gExp+SMALL));
|
lineDivide divEdge(cedge, dim, 1.0/(gExp+SMALL));
|
||||||
|
|
||||||
pointField p = divEdge.points();
|
const pointField& p = divEdge.points();
|
||||||
scalarList d = divEdge.lambdaDivisions();
|
const scalarList& d = divEdge.lambdaDivisions();
|
||||||
|
|
||||||
edgePoints_[edgeI].setSize(p.size());
|
edgePoints_[edgeI].setSize(p.size());
|
||||||
edgeWeights_[edgeI].setSize(d.size());
|
edgeWeights_[edgeI].setSize(d.size());
|
||||||
|
|||||||
131
src/mesh/blockMesh/curvedEdges/CatmullRomSpline.C
Normal file
131
src/mesh/blockMesh/curvedEdges/CatmullRomSpline.C
Normal file
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
128
src/mesh/blockMesh/curvedEdges/CatmullRomSpline.H
Normal file
128
src/mesh/blockMesh/curvedEdges/CatmullRomSpline.H
Normal file
@ -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
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -61,7 +61,7 @@ Foam::cylindricalCS Foam::arcEdge::calcAngle()
|
|||||||
|
|
||||||
scalar fact = 0.5*(bsqr - adotb)/denom;
|
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_;
|
centre += p1_;
|
||||||
|
|
||||||
@ -71,11 +71,10 @@ Foam::cylindricalCS Foam::arcEdge::calcAngle()
|
|||||||
vector r3(p3_ - centre);
|
vector r3(p3_ - centre);
|
||||||
|
|
||||||
// find angles
|
// find angles
|
||||||
scalar tmp = (r3&r1)/(mag(r3)*mag(r1));
|
angle_ = radToDeg(acos((r3 & r1)/(mag(r3) * mag(r1))));
|
||||||
angle_ = radToDeg(acos(tmp));
|
|
||||||
|
|
||||||
// check if the vectors define an exterior or an interior arcEdge
|
// 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_;
|
angle_ = 360.0 - angle_;
|
||||||
}
|
}
|
||||||
@ -99,7 +98,7 @@ Foam::cylindricalCS Foam::arcEdge::calcAngle()
|
|||||||
radius_ = mag(r3);
|
radius_ = mag(r3);
|
||||||
|
|
||||||
// set up and return the local coordinate system
|
// 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 * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * 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)
|
if (lambda < 0 || lambda > 1)
|
||||||
{
|
{
|
||||||
@ -146,7 +145,7 @@ Foam::vector Foam::arcEdge::position(const scalar lambda) const
|
|||||||
{
|
{
|
||||||
return p1_;
|
return p1_;
|
||||||
}
|
}
|
||||||
else if (lambda > 1-SMALL)
|
else if (lambda > 1 - SMALL)
|
||||||
{
|
{
|
||||||
return p3_;
|
return p3_;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,15 +54,16 @@ class arcEdge
|
|||||||
{
|
{
|
||||||
// Private data
|
// Private data
|
||||||
|
|
||||||
vector p1_, p2_, p3_;
|
point p1_, p2_, p3_;
|
||||||
|
cylindricalCS cs_;
|
||||||
scalar angle_;
|
scalar angle_;
|
||||||
scalar radius_;
|
scalar radius_;
|
||||||
cylindricalCS cs_;
|
|
||||||
|
|
||||||
cylindricalCS calcAngle();
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
|
//- Calculate the coordinate system, angle and radius
|
||||||
|
cylindricalCS calcAngle();
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
arcEdge(const arcEdge&);
|
arcEdge(const arcEdge&);
|
||||||
|
|
||||||
@ -96,9 +97,9 @@ public:
|
|||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- Return the position of a point on the curve given by
|
//- Return the point position corresponding to the curve parameter
|
||||||
// the parameter 0 <= lambda <= 1
|
// 0 <= lambda <= 1
|
||||||
vector position(const scalar) const;
|
point position(const scalar) const;
|
||||||
|
|
||||||
//- Return the length of the curve
|
//- Return the length of the curve
|
||||||
scalar length() const;
|
scalar length() const;
|
||||||
|
|||||||
@ -108,27 +108,27 @@ Foam::autoPtr<Foam::curvedEdge> Foam::curvedEdge::New
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::pointField Foam::curvedEdge::knotlist
|
Foam::pointField Foam::curvedEdge::appendEndPoints
|
||||||
(
|
(
|
||||||
const pointField& points,
|
const pointField& points,
|
||||||
const label start,
|
const label start,
|
||||||
const label end,
|
const label end,
|
||||||
const pointField& otherknots
|
const pointField& otherKnots
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
pointField newPoints(otherknots.size() + 2);
|
pointField allKnots(otherKnots.size() + 2);
|
||||||
|
|
||||||
// start/end knots
|
// start/end knots
|
||||||
newPoints[0] = points[start];
|
allKnots[0] = points[start];
|
||||||
newPoints[otherknots.size() + 1] = points[end];
|
allKnots[otherKnots.size() + 1] = points[end];
|
||||||
|
|
||||||
// intermediate knots
|
// intermediate knots
|
||||||
forAll(otherknots, knotI)
|
forAll(otherKnots, knotI)
|
||||||
{
|
{
|
||||||
newPoints[knotI+1] = otherknots[knotI];
|
allKnots[knotI+1] = otherKnots[knotI];
|
||||||
}
|
}
|
||||||
|
|
||||||
return newPoints;
|
return allKnots;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -26,8 +26,8 @@ Class
|
|||||||
Foam::curvedEdge
|
Foam::curvedEdge
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Define a curved edge in space that is parameterised for
|
Define a curved edge that is parameterized for 0<lambda<1
|
||||||
0<lambda<1 from the beginning to the end point.
|
between the start and end point.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
curvedEdge.C
|
curvedEdge.C
|
||||||
@ -62,6 +62,19 @@ protected:
|
|||||||
const label start_;
|
const label start_;
|
||||||
const label end_;
|
const label end_;
|
||||||
|
|
||||||
|
// Protected Member Functions
|
||||||
|
|
||||||
|
//- Return a complete point field by appending the start/end points
|
||||||
|
// to the given list
|
||||||
|
static pointField appendEndPoints
|
||||||
|
(
|
||||||
|
const pointField&,
|
||||||
|
const label start,
|
||||||
|
const label end,
|
||||||
|
const pointField& otherKnots
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
@ -136,23 +149,13 @@ public:
|
|||||||
// - -1: same edge, but different orientation
|
// - -1: same edge, but different orientation
|
||||||
inline int compare(const label start, const label end) const;
|
inline int compare(const label start, const label end) const;
|
||||||
|
|
||||||
//- Return the position of a point on the curve given by
|
//- Return the point position corresponding to the curve parameter
|
||||||
// the parameter 0 <= lambda <= 1
|
// 0 <= lambda <= 1
|
||||||
virtual vector position(const scalar) const = 0;
|
virtual point position(const scalar) const = 0;
|
||||||
|
|
||||||
//- Return the length of the curve
|
//- Return the length of the curve
|
||||||
virtual scalar length() const = 0;
|
virtual scalar length() const = 0;
|
||||||
|
|
||||||
//- Return a complete knotList by adding the start/end points
|
|
||||||
// to the given list
|
|
||||||
static pointField knotlist
|
|
||||||
(
|
|
||||||
const pointField&,
|
|
||||||
const label start,
|
|
||||||
const label end,
|
|
||||||
const pointField& otherknots
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// Member operators
|
// Member operators
|
||||||
|
|
||||||
|
|||||||
@ -67,7 +67,4 @@ inline int Foam::curvedEdge::compare(const edge& e) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -115,13 +115,13 @@ Foam::BSpline::BSpline
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::vector Foam::BSpline::realPosition(const scalar mu) const
|
Foam::point Foam::BSpline::realPosition(const scalar mu) const
|
||||||
{
|
{
|
||||||
return spline::position(mu);
|
return spline::position(mu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::vector Foam::BSpline::position(const scalar mu) const
|
Foam::point Foam::BSpline::position(const scalar mu) const
|
||||||
{
|
{
|
||||||
return spline::position((1.0/(nKnots() - 1))*(1.0 + mu*(nKnots() - 3)));
|
return spline::position((1.0/(nKnots() - 1))*(1.0 + mu*(nKnots() - 3)));
|
||||||
}
|
}
|
||||||
@ -82,13 +82,13 @@ public:
|
|||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- Return the real position of a point on the curve given by
|
//- Return the real point position corresponding to the curve parameter
|
||||||
// the parameter 0 <= lambda <= 1
|
// 0 <= lambda <= 1
|
||||||
vector realPosition(const scalar lambda) const;
|
point realPosition(const scalar lambda) const;
|
||||||
|
|
||||||
//- Return the position of a point on the curve given by
|
//- Return the point position corresponding to the curve parameter
|
||||||
// the parameter 0 <= lambda <= 1
|
// 0 <= lambda <= 1
|
||||||
vector position(const scalar lambda) const;
|
point position(const scalar lambda) const;
|
||||||
|
|
||||||
//- Return the length of the curve
|
//- Return the length of the curve
|
||||||
scalar length() const;
|
scalar length() const;
|
||||||
@ -56,7 +56,7 @@ Foam::pointField Foam::polySplineEdge::intervening
|
|||||||
{
|
{
|
||||||
BSpline spl
|
BSpline spl
|
||||||
(
|
(
|
||||||
knotlist(points_, start_, end_, otherknots),
|
appendEndPoints(curvedEdge::points_, start_, end_, otherknots),
|
||||||
fstend,
|
fstend,
|
||||||
sndend
|
sndend
|
||||||
);
|
);
|
||||||
@ -73,7 +73,7 @@ Foam::pointField Foam::polySplineEdge::intervening
|
|||||||
interval /= nBetweenKnots + 1;
|
interval /= nBetweenKnots + 1;
|
||||||
|
|
||||||
pointField ans(nSize);
|
pointField ans(nSize);
|
||||||
ans[0] = points_[start_];
|
ans[0] = curvedEdge::points_[start_];
|
||||||
|
|
||||||
register scalar index(init);
|
register scalar index(init);
|
||||||
for (register label i=1; i<nSize-1; i++)
|
for (register label i=1; i<nSize-1; i++)
|
||||||
@ -82,7 +82,7 @@ Foam::pointField Foam::polySplineEdge::intervening
|
|||||||
ans[i] = spl.realPosition(index);
|
ans[i] = spl.realPosition(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
ans[nSize-1] = points_[end_];
|
ans[nSize-1] = curvedEdge::points_[end_];
|
||||||
|
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
@ -128,14 +128,14 @@ Foam::polySplineEdge::polySplineEdge
|
|||||||
vector fstend(is);
|
vector fstend(is);
|
||||||
vector sndend(is);
|
vector sndend(is);
|
||||||
|
|
||||||
controlPoints_ = intervening(otherKnots_, nInterKnots, fstend, sndend);
|
polyLine::points_ = intervening(otherKnots_, nInterKnots, fstend, sndend);
|
||||||
calcDistances();
|
calcParam();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::vector Foam::polySplineEdge::position(const scalar mu) const
|
Foam::point Foam::polySplineEdge::position(const scalar mu) const
|
||||||
{
|
{
|
||||||
return polyLine::position(mu);
|
return polyLine::position(mu);
|
||||||
}
|
}
|
||||||
@ -26,7 +26,7 @@ Class
|
|||||||
Foam::polySplineEdge
|
Foam::polySplineEdge
|
||||||
|
|
||||||
Description
|
Description
|
||||||
A spline representation via a polyLine
|
A curvedEdge interface for B-splines.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
polySplineEdge.C
|
polySplineEdge.C
|
||||||
@ -90,16 +90,16 @@ public:
|
|||||||
polySplineEdge(const pointField&, Istream&);
|
polySplineEdge(const pointField&, Istream&);
|
||||||
|
|
||||||
|
|
||||||
// Destructor
|
//- Destructor
|
||||||
|
virtual ~polySplineEdge()
|
||||||
virtual ~polySplineEdge(){}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- Return the position of a point on the curve given by
|
//- Return the point position corresponding to the curve parameter
|
||||||
// the parameter 0 <= lambda <= 1
|
// 0 <= lambda <= 1
|
||||||
vector position(const scalar mu) const;
|
point position(const scalar mu) const;
|
||||||
|
|
||||||
//- Return the length of the curve
|
//- Return the length of the curve
|
||||||
scalar length() const;
|
scalar length() const;
|
||||||
@ -48,7 +48,7 @@ Foam::simpleSplineEdge::simpleSplineEdge
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
curvedEdge(points, start, end),
|
curvedEdge(points, start, end),
|
||||||
BSpline(knotlist(points, start, end, otherknots))
|
BSpline(appendEndPoints(points, start, end, otherknots))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -63,20 +63,20 @@ Foam::simpleSplineEdge::simpleSplineEdge
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
curvedEdge(points, start, end),
|
curvedEdge(points, start, end),
|
||||||
BSpline(knotlist(points, start, end, otherknots), fstend, sndend)
|
BSpline(appendEndPoints(points, start, end, otherknots), fstend, sndend)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
Foam::simpleSplineEdge::simpleSplineEdge(const pointField& points, Istream& is)
|
Foam::simpleSplineEdge::simpleSplineEdge(const pointField& points, Istream& is)
|
||||||
:
|
:
|
||||||
curvedEdge(points, is),
|
curvedEdge(points, is),
|
||||||
BSpline(knotlist(points, start_, end_, pointField(is)))
|
BSpline(appendEndPoints(points, start_, end_, pointField(is)))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::vector Foam::simpleSplineEdge::position(const scalar mu) const
|
Foam::point Foam::simpleSplineEdge::position(const scalar mu) const
|
||||||
{
|
{
|
||||||
return BSpline::position(mu);
|
return BSpline::position(mu);
|
||||||
}
|
}
|
||||||
@ -26,7 +26,7 @@ Class
|
|||||||
Foam::simpleSplineEdge
|
Foam::simpleSplineEdge
|
||||||
|
|
||||||
Description
|
Description
|
||||||
The actual access class for Bspline
|
A curvedEdge interface for B-splines.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
simpleSplineEdge.C
|
simpleSplineEdge.C
|
||||||
@ -102,9 +102,9 @@ public:
|
|||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- Return the position of a point on the simple spline curve given by
|
//- Return the point position corresponding to the curve parameter
|
||||||
// the parameter 0 <= lambda <= 1
|
// 0 <= lambda <= 1
|
||||||
vector position(const scalar mu) const;
|
point position(const scalar) const;
|
||||||
|
|
||||||
//- Return the length of the simple spline curve
|
//- Return the length of the simple spline curve
|
||||||
scalar length() const;
|
scalar length() const;
|
||||||
@ -72,9 +72,9 @@ Foam::spline::spline(const pointField& knotPoints)
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::vector Foam::spline::position(const scalar mu) const
|
Foam::point Foam::spline::position(const scalar mu) const
|
||||||
{
|
{
|
||||||
vector loc(vector::zero);
|
point loc(point::zero);
|
||||||
|
|
||||||
for (register label i=0; i < knots_.size(); i++)
|
for (register label i=0; i < knots_.size(); i++)
|
||||||
{
|
{
|
||||||
@ -81,6 +81,13 @@ public:
|
|||||||
|
|
||||||
// Access
|
// Access
|
||||||
|
|
||||||
|
//- Return the knot points in the spline
|
||||||
|
const pointField& knotPoints() const
|
||||||
|
{
|
||||||
|
return knots_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//- Return the number of knots in the spline
|
//- Return the number of knots in the spline
|
||||||
label nKnots() const
|
label nKnots() const
|
||||||
{
|
{
|
||||||
@ -88,9 +95,9 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//- Return the position of a point on the curve given by
|
//- Return the point position corresponding to the curve parameter
|
||||||
// the parameter 0 <= lambda <= 1
|
// 0 <= lambda <= 1
|
||||||
vector position(const scalar) const;
|
point position(const scalar) const;
|
||||||
|
|
||||||
//- Return the length of the spline curve
|
//- Return the length of the spline curve
|
||||||
scalar length() const;
|
scalar length() const;
|
||||||
@ -55,14 +55,14 @@ class lineDivide
|
|||||||
// Private data
|
// Private data
|
||||||
|
|
||||||
pointField points_;
|
pointField points_;
|
||||||
|
|
||||||
scalarList divisions_;
|
scalarList divisions_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from components
|
//- Construct from components with discretization and expansion ratio
|
||||||
// discretization and expansion ration
|
|
||||||
lineDivide
|
lineDivide
|
||||||
(
|
(
|
||||||
const curvedEdge&,
|
const curvedEdge&,
|
||||||
|
|||||||
@ -46,23 +46,23 @@ Foam::lineEdge::lineEdge
|
|||||||
const label end
|
const label end
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
curvedEdge(points, start, end),
|
curvedEdge(points, start, end)
|
||||||
startPoint_(points_[start_]),
|
|
||||||
direction_(points_[end_] - points_[start_])
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
Foam::lineEdge::lineEdge(const pointField& points, Istream& is)
|
Foam::lineEdge::lineEdge(const pointField& points, Istream& is)
|
||||||
:
|
:
|
||||||
curvedEdge(points, is),
|
curvedEdge(points, is)
|
||||||
startPoint_(points_[start_]),
|
|
||||||
direction_(points_[end_] - points_[start_])
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::lineEdge::~lineEdge()
|
||||||
|
{}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::vector Foam::lineEdge::position(const scalar lambda) const
|
Foam::point Foam::lineEdge::position(const scalar lambda) const
|
||||||
{
|
{
|
||||||
if (lambda < 0 || lambda > 1)
|
if (lambda < 0 || lambda > 1)
|
||||||
{
|
{
|
||||||
@ -71,13 +71,13 @@ Foam::vector Foam::lineEdge::position(const scalar lambda) const
|
|||||||
<< abort(FatalError);
|
<< abort(FatalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
return startPoint_ + lambda*direction_;
|
return points_[start_] + lambda * (points_[end_] - points_[start_]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::scalar Foam::lineEdge::length() const
|
Foam::scalar Foam::lineEdge::length() const
|
||||||
{
|
{
|
||||||
return mag(direction_);
|
return mag(points_[end_] - points_[start_]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,7 @@ Class
|
|||||||
Foam::lineEdge
|
Foam::lineEdge
|
||||||
|
|
||||||
Description
|
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
|
SourceFiles
|
||||||
lineEdge.C
|
lineEdge.C
|
||||||
@ -52,14 +52,6 @@ class lineEdge
|
|||||||
:
|
:
|
||||||
public curvedEdge
|
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
|
// Private Member Functions
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
@ -68,7 +60,6 @@ class lineEdge
|
|||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise assignment
|
||||||
void operator=(const lineEdge&);
|
void operator=(const lineEdge&);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
@ -79,20 +70,19 @@ public:
|
|||||||
//- Construct from components
|
//- Construct from components
|
||||||
lineEdge(const pointField&, const label start, const label end);
|
lineEdge(const pointField&, const label start, const label end);
|
||||||
|
|
||||||
//- Construct from Istream setting pointsList
|
//- Construct from Istream with a pointField
|
||||||
lineEdge(const pointField&, Istream&);
|
lineEdge(const pointField&, Istream&);
|
||||||
|
|
||||||
|
|
||||||
// Destructor
|
//- Destructor
|
||||||
|
virtual ~lineEdge();
|
||||||
virtual ~lineEdge(){}
|
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- Return the position of a point on the curve given by
|
//- Return the point position corresponding to the curve parameter
|
||||||
// the parameter 0 <= lambda <= 1
|
// 0 <= lambda <= 1
|
||||||
vector position(const scalar) const;
|
point position(const scalar) const;
|
||||||
|
|
||||||
//- Return the length of the curve
|
//- Return the length of the curve
|
||||||
scalar length() const;
|
scalar length() const;
|
||||||
|
|||||||
@ -29,29 +29,26 @@ License
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
// calcDistances generates the distances_ lookup table (cumulative
|
void Foam::polyLine::calcParam()
|
||||||
// distance along the line) from the individual vectors to the points
|
|
||||||
|
|
||||||
void Foam::polyLine::calcDistances()
|
|
||||||
{
|
{
|
||||||
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<distances_.size(); i++)
|
for (label i=1; i < param_.size(); i++)
|
||||||
{
|
{
|
||||||
distances_[i] = distances_[i-1] +
|
param_[i] = param_[i-1] + mag(points_[i] - points_[i-1]);
|
||||||
mag(controlPoints_[i] - controlPoints_[i-1]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// normalize
|
// normalize on the interval 0-1
|
||||||
lineLength_ = distances_.last();
|
lineLength_ = param_.last();
|
||||||
for (label i=1; i<distances_.size(); i++)
|
for (label i=1; i < param_.size() - 1; i++)
|
||||||
{
|
{
|
||||||
distances_[i] /= lineLength_;
|
param_[i] /= lineLength_;
|
||||||
}
|
}
|
||||||
|
param_.last() = 1.0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -65,20 +62,75 @@ void Foam::polyLine::calcDistances()
|
|||||||
|
|
||||||
Foam::polyLine::polyLine(const pointField& ps)
|
Foam::polyLine::polyLine(const pointField& ps)
|
||||||
:
|
:
|
||||||
controlPoints_(ps),
|
points_(ps),
|
||||||
distances_(0),
|
lineLength_(0.0),
|
||||||
lineLength_(0.0)
|
param_(0)
|
||||||
{
|
{
|
||||||
calcDistances();
|
calcParam();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::vector Foam::polyLine::position(const scalar lambda) const
|
const Foam::pointField& Foam::polyLine::points() const
|
||||||
|
{
|
||||||
|
return points_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::label Foam::polyLine::nSegments() const
|
||||||
|
{
|
||||||
|
return points_.size()-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::label Foam::polyLine::localParameter(scalar& lambda) const
|
||||||
{
|
{
|
||||||
// check range of lambda
|
// check range of lambda
|
||||||
|
if (lambda < 0 || lambda > 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)
|
if (lambda < 0 || lambda > 1)
|
||||||
{
|
{
|
||||||
FatalErrorIn("polyLine::position(const scalar)")
|
FatalErrorIn("polyLine::position(const scalar)")
|
||||||
@ -87,37 +139,36 @@ Foam::vector Foam::polyLine::position(const scalar lambda) const
|
|||||||
<< abort(FatalError);
|
<< abort(FatalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Quick calc of endpoints
|
// check endpoints
|
||||||
|
|
||||||
if (lambda < SMALL)
|
if (lambda < SMALL)
|
||||||
{
|
{
|
||||||
return controlPoints_[0];
|
return points_[0];
|
||||||
}
|
}
|
||||||
else if (lambda > 1 - SMALL)
|
else if (lambda > 1 - SMALL)
|
||||||
{
|
{
|
||||||
return controlPoints_.last();
|
return points_.last();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// search table of cumulative distance to find which linesegment we
|
// search table of cumulative distances to find which line-segment
|
||||||
// are on
|
// we are on. Check the upper bound.
|
||||||
|
|
||||||
label i(0);
|
label segmentI = 1;
|
||||||
do
|
while (param_[segmentI] < lambda)
|
||||||
{
|
{
|
||||||
i++;
|
++segmentI;
|
||||||
} while (distances_[i] < lambda);
|
}
|
||||||
|
--segmentI; // we now want the lower bound
|
||||||
|
|
||||||
i--; // we overshot!
|
|
||||||
|
|
||||||
// construct position vector
|
// linear interpolation
|
||||||
scalar offsetDist =
|
return
|
||||||
(lambda - distances_[i])
|
(
|
||||||
/(distances_[i+1] - distances_[i]);
|
points_[segmentI]
|
||||||
|
+ ( points_[segmentI+1] - points_[segmentI] )
|
||||||
vector offsetV = controlPoints_[i+1] - controlPoints_[i];
|
* ( lambda - param_[segmentI] )
|
||||||
|
/ ( param_[segmentI+1] - param_[segmentI] )
|
||||||
return controlPoints_[i] + offsetDist*offsetV;
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -26,10 +26,8 @@ Class
|
|||||||
Foam::polyLine
|
Foam::polyLine
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Defines a curvedEdge in terms of a series of straight line segments.
|
A series of straight line segments, which can also be interpreted as
|
||||||
|
a series of control points for splines, etc.
|
||||||
This is the basic polyLine class which implements just the line
|
|
||||||
(no topology - it is not derived from curvedEdge)
|
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
polyLine.C
|
polyLine.C
|
||||||
@ -66,15 +64,26 @@ protected:
|
|||||||
|
|
||||||
// Protected data
|
// Protected data
|
||||||
|
|
||||||
pointField controlPoints_;
|
//- The control points or ends of each segments
|
||||||
scalarList distances_;
|
pointField points_;
|
||||||
|
|
||||||
|
//- The real line length
|
||||||
scalar lineLength_;
|
scalar lineLength_;
|
||||||
|
|
||||||
|
//- The rational (0-1) cumulative parameter value for each point
|
||||||
|
scalarList param_;
|
||||||
|
|
||||||
// Protected member functions
|
// 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:
|
public:
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
@ -85,9 +94,15 @@ public:
|
|||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- Return the position of a point on the curve given by
|
//- Return const-access to the control-points
|
||||||
// the parameter 0 <= lambda <= 1
|
const pointField& points() const;
|
||||||
vector position(const scalar) 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
|
//- Return the length of the curve
|
||||||
scalar length() const;
|
scalar length() const;
|
||||||
|
|||||||
@ -44,24 +44,30 @@ Foam::polyLineEdge::polyLineEdge
|
|||||||
const pointField& ps,
|
const pointField& ps,
|
||||||
const label start,
|
const label start,
|
||||||
const label end,
|
const label end,
|
||||||
const pointField& otherpoints
|
const pointField& otherPoints
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
curvedEdge(ps, start, end),
|
curvedEdge(ps, start, end),
|
||||||
polyLine(knotlist(ps, start, end, otherpoints))
|
polyLine(appendEndPoints(ps, start_, end_, otherPoints))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
Foam::polyLineEdge::polyLineEdge(const pointField& ps, Istream& is)
|
Foam::polyLineEdge::polyLineEdge(const pointField& ps, Istream& is)
|
||||||
:
|
:
|
||||||
curvedEdge(ps, is),
|
curvedEdge(ps, is),
|
||||||
polyLine(knotlist(ps, start_, end_, pointField(is)))
|
polyLine(appendEndPoints(ps, start_, end_, pointField(is)))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::polyLineEdge::~polyLineEdge()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::vector Foam::polyLineEdge::position(const scalar lambda) const
|
Foam::point Foam::polyLineEdge::position(const scalar lambda) const
|
||||||
{
|
{
|
||||||
return polyLine::position(lambda);
|
return polyLine::position(lambda);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,8 +26,7 @@ Class
|
|||||||
Foam::polyLineEdge
|
Foam::polyLineEdge
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Defines a curvedEdge in terms of a series of straight line segments.
|
A curvedEdge defined in terms of a series of straight line segments.
|
||||||
This is the public face of polyLine
|
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
polyLineEdge.C
|
polyLineEdge.C
|
||||||
@ -84,16 +83,15 @@ public:
|
|||||||
polyLineEdge(const pointField&, Istream&);
|
polyLineEdge(const pointField&, Istream&);
|
||||||
|
|
||||||
|
|
||||||
// Destructor
|
//- Destructor
|
||||||
|
virtual ~polyLineEdge();
|
||||||
virtual ~polyLineEdge(){}
|
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- Return the position of a point on the curve given by
|
//- Return the point position corresponding to the curve parameter
|
||||||
// the parameter 0 <= lambda <= 1
|
// 0 <= lambda <= 1
|
||||||
vector position(const scalar lambda) const;
|
point position(const scalar lambda) const;
|
||||||
|
|
||||||
//- Return the length of the curve
|
//- Return the length of the curve
|
||||||
scalar length() const;
|
scalar length() const;
|
||||||
|
|||||||
86
src/mesh/blockMesh/curvedEdges/splineEdge.C
Normal file
86
src/mesh/blockMesh/curvedEdges/splineEdge.C
Normal file
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
111
src/mesh/blockMesh/curvedEdges/splineEdge.H
Normal file
111
src/mesh/blockMesh/curvedEdges/splineEdge.H
Normal file
@ -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
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
Reference in New Issue
Block a user