PV3blockMeshReader - added display of curvedEdges

This commit is contained in:
Mark Olesen
2009-10-07 22:42:41 +02:00
parent 4bc523b593
commit e003b5207a
20 changed files with 493 additions and 213 deletions

View File

@ -1,5 +0,0 @@
vtkPV3FoamBlockMesh.C
vtkPV3FoamBlockMeshConvert.C
vtkPV3FoamBlockMeshUtils.C
LIB = $(FOAM_LIBBIN)/libvtkPV3FoamBlockMesh

View File

@ -7,6 +7,6 @@ vtkPV3FoamMeshSet.C
vtkPV3FoamMeshVolume.C
vtkPV3FoamMeshZone.C
vtkPV3FoamUpdateInfo.C
vtkPV3FoamUtilities.C
vtkPV3FoamUtils.C
LIB = $(FOAM_LIBBIN)/libvtkPV3Foam

View File

@ -45,7 +45,7 @@ SourceFiles
vtkPV3FoamPoints.H
vtkPV3FoamUpdateInfo.C
vtkPV3FoamUpdateInfoFields.H
vtkPV3FoamUtilities.C
vtkPV3FoamUtils.C
vtkPV3FoamVolFields.H
vtkPV3FoamAddToSelection.H
@ -315,7 +315,7 @@ class vtkPV3Foam
vtkDataSet* dataset,
const partInfo&,
const label datasetNo,
const string& datasetName
const std::string& datasetName
);
// Convenience method use to convert the readers from VTK 5

View File

@ -77,7 +77,7 @@ void Foam::vtkPV3Foam::AddToBlock
vtkDataSet* dataset,
const partInfo& selector,
const label datasetNo,
const string& datasetName
const std::string& datasetName
)
{
const int blockNo = selector.block();

View File

@ -2,7 +2,7 @@
cd ${0%/*} || exit 1 # run from this directory
set -x
rm -rf PV3FoamBlockMeshReader/Make
wclean libso vtkPV3FoamBlockMesh
rm -rf PV3blockMeshReader/Make
wclean libso vtkPV3blockMesh
# ----------------------------------------------------------------- end-of-file

View File

@ -6,9 +6,9 @@ if [ -d "$ParaView_DIR" -a -r "$ParaView_DIR" ]
then
case "$ParaView_VERSION" in
3*)
wmake libso vtkPV3FoamBlockMesh
wmake libso vtkPV3blockMesh
(
cd PV3FoamBlockMeshReader
cd PV3blockMeshReader
mkdir -p Make/$WM_OPTIONS > /dev/null 2>&1
cd Make/$WM_OPTIONS
cmake ../..

View File

@ -19,7 +19,7 @@ LINK_DIRECTORIES(
INCLUDE_DIRECTORIES(
$ENV{WM_PROJECT_DIR}/src/OpenFOAM/lnInclude
$ENV{WM_PROJECT_DIR}/src/meshing/blockMesh/lnInclude
${PROJECT_SOURCE_DIR}/../vtkPV3FoamBlockMesh
${PROJECT_SOURCE_DIR}/../vtkPV3blockMesh
)
ADD_DEFINITIONS(
@ -35,22 +35,22 @@ SET(
# Build the server-side plugin
ADD_PARAVIEW_PLUGIN(
PV3FoamBlockMeshReader_SM "1.0"
SERVER_MANAGER_XML PV3FoamBlockMeshReader_SM.xml
SERVER_MANAGER_SOURCES vtkPV3FoamBlockMeshReader.cxx
PV3blockMeshReader_SM "1.0"
SERVER_MANAGER_XML PV3blockMeshReader_SM.xml
SERVER_MANAGER_SOURCES vtkPV3blockMeshReader.cxx
)
# Build the client-side plugin
ADD_PARAVIEW_PLUGIN(
PV3FoamBlockMeshReader
PV3blockMeshReader
"1.0"
GUI_RESOURCES PV3FoamBlockMeshReader.qrc
GUI_RESOURCES PV3blockMeshReader.qrc
)
TARGET_LINK_LIBRARIES(
PV3FoamBlockMeshReader_SM
PV3blockMeshReader_SM
OpenFOAM
blockMesh
vtkPV3FoamBlockMesh
vtkPV3blockMesh
)
#-----------------------------------------------------------------------------

View File

@ -1,5 +1,5 @@
<RCC>
<qresource prefix="/ParaViewResources" >
<file>PV3FoamBlockMeshReader.xml</file>
<file>PV3blockMeshReader.xml</file>
</qresource>
</RCC>

View File

@ -1,5 +1,5 @@
<ParaViewReaders>
<Reader name="PV3FoamBlockMeshReader"
<Reader name="PV3blockMeshReader"
extensions="blockMesh"
file_description="OpenFOAM blockMesh reader">
</Reader>

View File

@ -1,8 +1,8 @@
<ServerManagerConfiguration>
<ProxyGroup name="sources">
<SourceProxy
name="PV3FoamBlockMeshReader"
class="vtkPV3FoamBlockMeshReader">
name="PV3blockMeshReader"
class="vtkPV3blockMeshReader">
<!-- File name - compulsory -->
<StringVectorProperty
@ -55,7 +55,7 @@
</StringVectorProperty>
<StringVectorProperty
name="PartStatus"
label="block numbers"
label="Blocks"
command="SetPartArrayStatus"
number_of_elements="0"
repeat_command="1"
@ -70,6 +70,29 @@
</ArraySelectionDomain>
</StringVectorProperty>
<!-- Available Parts (blocks) array -->
<StringVectorProperty
name="CurvedEdgesArrayInfo"
information_only="1">
<ArraySelectionInformationHelper attribute_name="CurvedEdges"/>
</StringVectorProperty>
<StringVectorProperty
name="CurvedEdgesStatus"
label="Curved Edges"
command="SetCurvedEdgesArrayStatus"
number_of_elements="0"
repeat_command="1"
number_of_elements_per_command="2"
element_types="2 0"
information_property="CurvedEdgesArrayInfo"
animateable="0">
<ArraySelectionDomain name="array_list">
<RequiredProperties>
<Property name="CurvedEdgesArrayInfo" function="ArrayList"/>
</RequiredProperties>
</ArraySelectionDomain>
</StringVectorProperty>
</SourceProxy>
</ProxyGroup>
</ServerManagerConfiguration>

View File

@ -1,7 +1,7 @@
/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkPV3FoamBlockMeshReader.cxx,v $
Module: $RCSfile: vtkPV3blockMeshReader.cxx,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
@ -13,7 +13,7 @@
=========================================================================*/
#include "vtkPV3FoamBlockMeshReader.h"
#include "vtkPV3blockMeshReader.h"
#include "pqApplicationCore.h"
#include "pqRenderView.h"
@ -31,12 +31,12 @@
#include "vtkStringArray.h"
// Foam includes
#include "vtkPV3FoamBlockMesh.H"
#include "vtkPV3blockMesh.H"
vtkCxxRevisionMacro(vtkPV3FoamBlockMeshReader, "$Revision: 1.5$");
vtkStandardNewMacro(vtkPV3FoamBlockMeshReader);
vtkCxxRevisionMacro(vtkPV3blockMeshReader, "$Revision: 1.5$");
vtkStandardNewMacro(vtkPV3blockMeshReader);
vtkPV3FoamBlockMeshReader::vtkPV3FoamBlockMeshReader()
vtkPV3blockMeshReader::vtkPV3blockMeshReader()
{
Debug = 0;
vtkDebugMacro(<<"Constructor");
@ -50,25 +50,33 @@ vtkPV3FoamBlockMeshReader::vtkPV3FoamBlockMeshReader()
UpdateGUI = 0;
PartSelection = vtkDataArraySelection::New();
CurvedEdgesSelection = vtkDataArraySelection::New();
// Setup the selection callback to modify this object when an array
// selection is changed.
SelectionObserver = vtkCallbackCommand::New();
SelectionObserver->SetCallback
(
&vtkPV3FoamBlockMeshReader::SelectionModifiedCallback
&vtkPV3blockMeshReader::SelectionModifiedCallback
);
SelectionObserver->SetClientData(this);
PartSelection->AddObserver
(
vtkCommand::ModifiedEvent,
this->SelectionObserver
);
CurvedEdgesSelection->AddObserver
(
vtkCommand::ModifiedEvent,
this->SelectionObserver
);
}
vtkPV3FoamBlockMeshReader::~vtkPV3FoamBlockMeshReader()
vtkPV3blockMeshReader::~vtkPV3blockMeshReader()
{
vtkDebugMacro(<<"Deconstructor");
@ -80,15 +88,15 @@ vtkPV3FoamBlockMeshReader::~vtkPV3FoamBlockMeshReader()
}
PartSelection->RemoveObserver(this->SelectionObserver);
CurvedEdgesSelection->RemoveObserver(this->SelectionObserver);
SelectionObserver->Delete();
PartSelection->Delete();
}
// Do everything except set the output info
int vtkPV3FoamBlockMeshReader::RequestInformation
int vtkPV3blockMeshReader::RequestInformation
(
vtkInformation* vtkNotUsed(request),
vtkInformationVector** vtkNotUsed(inputVector),
@ -97,7 +105,7 @@ int vtkPV3FoamBlockMeshReader::RequestInformation
{
vtkDebugMacro(<<"RequestInformation");
if (Foam::vtkPV3FoamBlockMesh::debug)
if (Foam::vtkPV3blockMesh::debug)
{
cout<<"REQUEST_INFORMATION\n";
}
@ -110,7 +118,7 @@ int vtkPV3FoamBlockMeshReader::RequestInformation
int nInfo = outputVector->GetNumberOfInformationObjects();
if (Foam::vtkPV3FoamBlockMesh::debug)
if (Foam::vtkPV3blockMesh::debug)
{
cout<<"RequestInformation with " << nInfo << " item(s)\n";
for (int infoI = 0; infoI < nInfo; ++infoI)
@ -121,7 +129,7 @@ int vtkPV3FoamBlockMeshReader::RequestInformation
if (!foamData_)
{
foamData_ = new Foam::vtkPV3FoamBlockMesh(FileName, this);
foamData_ = new Foam::vtkPV3blockMesh(FileName, this);
}
else
{
@ -145,7 +153,7 @@ int vtkPV3FoamBlockMeshReader::RequestInformation
// Set the output info
int vtkPV3FoamBlockMeshReader::RequestData
int vtkPV3blockMeshReader::RequestData
(
vtkInformation* vtkNotUsed(request),
vtkInformationVector** vtkNotUsed(inputVector),
@ -169,7 +177,7 @@ int vtkPV3FoamBlockMeshReader::RequestData
int nInfo = outputVector->GetNumberOfInformationObjects();
if (Foam::vtkPV3FoamBlockMesh::debug)
if (Foam::vtkPV3blockMesh::debug)
{
cout<<"RequestData with " << nInfo << " item(s)\n";
for (int infoI = 0; infoI < nInfo; ++infoI)
@ -186,7 +194,7 @@ int vtkPV3FoamBlockMeshReader::RequestData
)
);
if (Foam::vtkPV3FoamBlockMesh::debug)
if (Foam::vtkPV3blockMesh::debug)
{
cout<< "update output with "
<< output->GetNumberOfBlocks() << " blocks\n";
@ -203,7 +211,7 @@ int vtkPV3FoamBlockMeshReader::RequestData
}
void vtkPV3FoamBlockMeshReader::updatePointNumbersView(const bool show)
void vtkPV3blockMeshReader::updatePointNumbersView(const bool show)
{
pqApplicationCore* appCore = pqApplicationCore::instance();
@ -224,7 +232,7 @@ void vtkPV3FoamBlockMeshReader::updatePointNumbersView(const bool show)
}
void vtkPV3FoamBlockMeshReader::PrintSelf(ostream& os, vtkIndent indent)
void vtkPV3blockMeshReader::PrintSelf(ostream& os, vtkIndent indent)
{
vtkDebugMacro(<<"PrintSelf");
@ -239,35 +247,39 @@ void vtkPV3FoamBlockMeshReader::PrintSelf(ostream& os, vtkIndent indent)
// ----------------------------------------------------------------------
// Parts selection list control
vtkDataArraySelection* vtkPV3FoamBlockMeshReader::GetPartSelection()
vtkDataArraySelection* vtkPV3blockMeshReader::GetPartSelection()
{
vtkDebugMacro(<<"GetPartSelection");
return PartSelection;
}
int vtkPV3FoamBlockMeshReader::GetNumberOfPartArrays()
int vtkPV3blockMeshReader::GetNumberOfPartArrays()
{
vtkDebugMacro(<<"GetNumberOfPartArrays");
return PartSelection->GetNumberOfArrays();
}
const char* vtkPV3FoamBlockMeshReader::GetPartArrayName(int index)
const char* vtkPV3blockMeshReader::GetPartArrayName(int index)
{
vtkDebugMacro(<<"GetPartArrayName");
return PartSelection->GetArrayName(index);
}
int vtkPV3FoamBlockMeshReader::GetPartArrayStatus(const char* name)
int vtkPV3blockMeshReader::GetPartArrayStatus(const char* name)
{
vtkDebugMacro(<<"GetPartArrayStatus");
return PartSelection->ArrayIsEnabled(name);
}
void vtkPV3FoamBlockMeshReader::SetPartArrayStatus(const char* name, int status)
void vtkPV3blockMeshReader::SetPartArrayStatus
(
const char* name,
int status
)
{
vtkDebugMacro(<<"SetPartArrayStatus");
if (status)
@ -282,8 +294,57 @@ void vtkPV3FoamBlockMeshReader::SetPartArrayStatus(const char* name, int status)
// ----------------------------------------------------------------------
// CurvedEdges selection list control
void vtkPV3FoamBlockMeshReader::SelectionModifiedCallback
vtkDataArraySelection* vtkPV3blockMeshReader::GetCurvedEdgesSelection()
{
vtkDebugMacro(<<"GetCurvedEdgesSelection");
return CurvedEdgesSelection;
}
int vtkPV3blockMeshReader::GetNumberOfCurvedEdgesArrays()
{
vtkDebugMacro(<<"GetNumberOfCurvedEdgesArrays");
return CurvedEdgesSelection->GetNumberOfArrays();
}
const char* vtkPV3blockMeshReader::GetCurvedEdgesArrayName(int index)
{
vtkDebugMacro(<<"GetCurvedEdgesArrayName");
return CurvedEdgesSelection->GetArrayName(index);
}
int vtkPV3blockMeshReader::GetCurvedEdgesArrayStatus(const char* name)
{
vtkDebugMacro(<<"GetCurvedEdgesArrayStatus");
return CurvedEdgesSelection->ArrayIsEnabled(name);
}
void vtkPV3blockMeshReader::SetCurvedEdgesArrayStatus
(
const char* name,
int status
)
{
vtkDebugMacro(<<"SetCurvedEdgesArrayStatus");
if (status)
{
CurvedEdgesSelection->EnableArray(name);
}
else
{
CurvedEdgesSelection->DisableArray(name);
}
}
// ----------------------------------------------------------------------
void vtkPV3blockMeshReader::SelectionModifiedCallback
(
vtkObject*,
unsigned long,
@ -291,18 +352,18 @@ void vtkPV3FoamBlockMeshReader::SelectionModifiedCallback
void*
)
{
static_cast<vtkPV3FoamBlockMeshReader*>(clientdata)->SelectionModified();
static_cast<vtkPV3blockMeshReader*>(clientdata)->SelectionModified();
}
void vtkPV3FoamBlockMeshReader::SelectionModified()
void vtkPV3blockMeshReader::SelectionModified()
{
vtkDebugMacro(<<"SelectionModified");
Modified();
}
int vtkPV3FoamBlockMeshReader::FillOutputPortInformation
int vtkPV3blockMeshReader::FillOutputPortInformation
(
int port,
vtkInformation* info

View File

@ -1,7 +1,7 @@
/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkPV3FoamBlockMeshReader.h,v $
Module: $RCSfile: vtkPV3blockMeshReader.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
@ -12,18 +12,18 @@
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkPV3FoamBlockMeshReader - reads a dataset in OpenFOAM bockMesh format
// .NAME vtkPV3blockMeshReader - reads a dataset in OpenFOAM bockMesh format
// .SECTION Description
// vtkPV3FoamBlockMeshReader creates an multiblock dataset.
// vtkPV3blockMeshReader creates an multiblock dataset.
// It uses the OpenFOAM infrastructure (blockMesh).
#ifndef __vtkPV3FoamBlockMeshReader_h
#define __vtkPV3FoamBlockMeshReader_h
#ifndef __vtkPV3blockMeshReader_h
#define __vtkPV3blockMeshReader_h
// Foam forward declarations
namespace Foam
{
class vtkPV3FoamBlockMesh;
class vtkPV3blockMesh;
}
// VTK includes
@ -34,15 +34,15 @@ class vtkDataArraySelection;
class vtkCallbackCommand;
class VTK_IO_EXPORT vtkPV3FoamBlockMeshReader
class VTK_IO_EXPORT vtkPV3blockMeshReader
:
public vtkMultiBlockDataSetAlgorithm
{
public:
vtkTypeRevisionMacro(vtkPV3FoamBlockMeshReader,vtkMultiBlockDataSetAlgorithm);
vtkTypeRevisionMacro(vtkPV3blockMeshReader,vtkMultiBlockDataSetAlgorithm);
void PrintSelf(ostream&, vtkIndent);
static vtkPV3FoamBlockMeshReader* New();
static vtkPV3blockMeshReader* New();
// Description:
// Set/Get the filename.
@ -63,10 +63,18 @@ public:
// Parts (blocks) selection list control
vtkDataArraySelection* GetPartSelection();
int GetNumberOfPartArrays();
int GetPartArrayStatus(const char* name);
void SetPartArrayStatus(const char* name, int status);
int GetPartArrayStatus(const char*);
void SetPartArrayStatus(const char*, int status);
const char* GetPartArrayName(int index);
// Description:
// Parts (blocks) selection list control
vtkDataArraySelection* GetCurvedEdgesSelection();
int GetNumberOfCurvedEdgesArrays();
int GetCurvedEdgesArrayStatus(const char*);
void SetCurvedEdgesArrayStatus(const char*, int status);
const char* GetCurvedEdgesArrayName(int index);
// Description:
// Callback registered with the SelectionObserver
// for all the selection lists
@ -84,10 +92,10 @@ public:
protected:
//- Construct null
vtkPV3FoamBlockMeshReader();
vtkPV3blockMeshReader();
//- Destructor
~vtkPV3FoamBlockMeshReader();
~vtkPV3blockMeshReader();
//- Return information about mesh, times, etc without loading anything
virtual int RequestInformation
@ -116,10 +124,10 @@ protected:
private:
//- Disallow default bitwise copy construct
vtkPV3FoamBlockMeshReader(const vtkPV3FoamBlockMeshReader&);
vtkPV3blockMeshReader(const vtkPV3blockMeshReader&);
//- Disallow default bitwise assignment
void operator=(const vtkPV3FoamBlockMeshReader&);
void operator=(const vtkPV3blockMeshReader&);
//- Add/remove point numbers to/from the view
void updatePointNumbersView(const bool show);
@ -131,8 +139,10 @@ private:
vtkDataArraySelection* PartSelection;
vtkDataArraySelection* CurvedEdgesSelection;
//BTX
Foam::vtkPV3FoamBlockMesh* foamData_;
Foam::vtkPV3blockMesh* foamData_;
//ETX
};

View File

@ -0,0 +1,5 @@
vtkPV3blockMesh.C
vtkPV3blockMeshConvert.C
vtkPV3blockMeshUtils.C
LIB = $(FOAM_LIBBIN)/libvtkPV3blockMesh

View File

@ -7,7 +7,7 @@ EXE_INC = \
-I$(ParaView_INST_DIR)/VTK/Common \
-I$(ParaView_INST_DIR)/VTK/Filtering \
-I$(ParaView_INST_DIR)/VTK/Rendering \
-I../PV3FoamBlockMeshReader
-I../PV3blockMeshReader
LIB_LIBS = \
-lmeshTools \

View File

@ -23,7 +23,7 @@ License
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
InClass
vtkPV3FoamBlockMesh
vtkPV3blockMesh
\*---------------------------------------------------------------------------*/

View File

@ -24,13 +24,14 @@ License
\*---------------------------------------------------------------------------*/
#include "vtkPV3FoamBlockMesh.H"
#include "vtkPV3FoamBlockMeshReader.h"
#include "vtkPV3blockMesh.H"
#include "vtkPV3blockMeshReader.h"
// Foam includes
#include "blockMesh.H"
#include "Time.H"
#include "patchZones.H"
#include "OStringStream.H"
// VTK includes
#include "vtkDataArraySelection.h"
@ -41,82 +42,46 @@ License
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(Foam::vtkPV3FoamBlockMesh, 0);
defineTypeNameAndDebug(Foam::vtkPV3blockMesh, 0);
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
void Foam::vtkPV3FoamBlockMesh::resetCounters()
void Foam::vtkPV3blockMesh::resetCounters()
{
// Reset mesh part ids and sizes
partInfoBlocks_.reset();
partInfoEdges_.reset();
partInfoCorners_.reset();
}
void Foam::vtkPV3FoamBlockMesh::updateMeshPartsStatus()
void Foam::vtkPV3blockMesh::updateInfoBlocks()
{
if (debug)
{
Info<< "<beg> Foam::vtkPV3FoamBlockMesh::updateMeshPartsStatus" << endl;
}
vtkDataArraySelection* selection = reader_->GetPartSelection();
label nElem = selection->GetNumberOfArrays();
if (partStatus_.size() != nElem)
{
partStatus_.setSize(nElem);
partStatus_ = false;
}
// this needs fixing if we wish to re-use the datasets
partDataset_.setSize(nElem);
partDataset_ = -1;
// Read the selected mesh parts (blocks only) and add to list
forAll(partStatus_, partId)
{
const int setting = selection->GetArraySetting(partId);
if (partStatus_[partId] != setting)
{
partStatus_[partId] = setting;
}
if (debug)
{
Info<< " part[" << partId << "] = "
<< partStatus_[partId]
<< " : " << selection->GetArrayName(partId) << endl;
}
}
if (debug)
{
Info<< "<end> Foam::vtkPV3FoamBlockMesh::updateMeshPartsStatus" << endl;
}
}
void Foam::vtkPV3FoamBlockMesh::updateInfoBlocks()
{
if (debug)
{
Info<< "<beg> Foam::vtkPV3FoamBlockMesh::updateInfoBlocks"
Info<< "<beg> Foam::vtkPV3blockMesh::updateInfoBlocks"
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
}
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
partInfoBlocks_ = partSelection->GetNumberOfArrays();
int nBlocks = meshPtr_->size();
vtkDataArraySelection* selection = reader_->GetPartSelection();
partInfoBlocks_ = selection->GetNumberOfArrays();
const blockMesh& blkMesh = *meshPtr_;
const int nBlocks = blkMesh.size();
for (int blockI = 0; blockI < nBlocks; ++blockI)
{
// Add blockId to GUI list
partSelection->AddArray
(
Foam::name(blockI).c_str()
);
const blockDescriptor& blockDef = blkMesh[blockI].blockDef();
word partName = Foam::name(blockI);
// append the (optional) zone name
if (!blockDef.zoneName().empty())
{
partName += " - " + blockDef.zoneName();
}
// Add blockId and zoneName to GUI list
selection->AddArray(partName.c_str());
}
partInfoBlocks_ += nBlocks;
@ -124,30 +89,69 @@ void Foam::vtkPV3FoamBlockMesh::updateInfoBlocks()
if (debug)
{
// just for debug info
getSelectedArrayEntries(partSelection);
getSelectedArrayEntries(selection);
Info<< "<end> Foam::vtkPV3FoamBlockMesh::updateInfoBlocks" << endl;
Info<< "<end> Foam::vtkPV3blockMesh::updateInfoBlocks" << endl;
}
}
void Foam::vtkPV3blockMesh::updateInfoEdges()
{
if (debug)
{
Info<< "<beg> Foam::vtkPV3blockMesh::updateInfoEdges"
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "]" << endl;
}
vtkDataArraySelection* selection = reader_->GetCurvedEdgesSelection();
partInfoEdges_ = selection->GetNumberOfArrays();
const blockMesh& blkMesh = *meshPtr_;
const curvedEdgeList& edges = blkMesh.edges();
const int nEdges = edges.size();
forAll(edges, edgeI)
{
OStringStream ostr;
ostr<< edges[edgeI].start() << ":" << edges[edgeI].end() << " - "
<< edges[edgeI].type();
// Add "beg:end - type" to GUI list
selection->AddArray(ostr.str().c_str());
}
partInfoEdges_ += nEdges;
if (debug)
{
// just for debug info
getSelectedArrayEntries(selection);
Info<< "<end> Foam::vtkPV3blockMesh::updateInfoEdges" << endl;
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::vtkPV3FoamBlockMesh::vtkPV3FoamBlockMesh
Foam::vtkPV3blockMesh::vtkPV3blockMesh
(
const char* const FileName,
vtkPV3FoamBlockMeshReader* reader
vtkPV3blockMeshReader* reader
)
:
reader_(reader),
dbPtr_(NULL),
meshPtr_(NULL),
partInfoBlocks_("block"),
partInfoEdges_("edges"),
partInfoCorners_("corners")
{
if (debug)
{
Info<< "Foam::vtkPV3FoamBlockMesh::vtkPV3FoamBlockMesh - "
Info<< "Foam::vtkPV3blockMesh::vtkPV3blockMesh - "
<< FileName << endl;
}
@ -208,11 +212,11 @@ Foam::vtkPV3FoamBlockMesh::vtkPV3FoamBlockMesh
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::vtkPV3FoamBlockMesh::~vtkPV3FoamBlockMesh()
Foam::vtkPV3blockMesh::~vtkPV3blockMesh()
{
if (debug)
{
Info<< "<end> Foam::vtkPV3FoamBlockMesh::~vtkPV3FoamBlockMesh" << endl;
Info<< "<end> Foam::vtkPV3blockMesh::~vtkPV3blockMesh" << endl;
}
delete meshPtr_;
@ -221,21 +225,23 @@ Foam::vtkPV3FoamBlockMesh::~vtkPV3FoamBlockMesh()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::vtkPV3FoamBlockMesh::updateInfo()
void Foam::vtkPV3blockMesh::updateInfo()
{
if (debug)
{
Info<< "<beg> Foam::vtkPV3FoamBlockMesh::updateInfo"
Info<< "<beg> Foam::vtkPV3blockMesh::updateInfo"
<< " [meshPtr=" << (meshPtr_ ? "set" : "NULL") << "] " << endl;
}
resetCounters();
vtkDataArraySelection* partSelection = reader_->GetPartSelection();
vtkDataArraySelection* edgeSelection = reader_->GetCurvedEdgesSelection();
// enable 'internalMesh' on the first call
// or preserve the enabled selections
stringList enabledEntries;
stringList enabledParts;
stringList enabledEdges;
bool firstTime = false;
if (!partSelection->GetNumberOfArrays() && !meshPtr_)
{
@ -243,37 +249,42 @@ void Foam::vtkPV3FoamBlockMesh::updateInfo()
}
else
{
enabledEntries = getSelectedArrayEntries(partSelection);
enabledParts = getSelectedArrayEntries(partSelection);
enabledEdges = getSelectedArrayEntries(edgeSelection);
}
// Clear current mesh parts list
partSelection->RemoveAllArrays();
edgeSelection->RemoveAllArrays();
// need a blockMesh
updateFoamMesh();
// Update mesh parts list - add corrner points at the bottom
// Update mesh parts list
updateInfoBlocks();
// Update curved edges list
updateInfoEdges();
// restore the enabled selections
if (!firstTime)
{
setSelectedArrayEntries(partSelection, enabledEntries);
setSelectedArrayEntries(partSelection, enabledParts);
setSelectedArrayEntries(edgeSelection, enabledEdges);
}
if (debug)
{
Info<< "<end> Foam::vtkPV3FoamBlockMesh::updateInfo" << endl;
Info<< "<end> Foam::vtkPV3blockMesh::updateInfo" << endl;
}
}
void Foam::vtkPV3FoamBlockMesh::updateFoamMesh()
void Foam::vtkPV3blockMesh::updateFoamMesh()
{
if (debug)
{
Info<< "<beg> Foam::vtkPV3FoamBlockMesh::updateFoamMesh" << endl;
Info<< "<beg> Foam::vtkPV3blockMesh::updateFoamMesh" << endl;
}
// Check to see if the FOAM mesh has been created
@ -305,12 +316,12 @@ void Foam::vtkPV3FoamBlockMesh::updateFoamMesh()
if (debug)
{
Info<< "<end> Foam::vtkPV3FoamBlockMesh::updateFoamMesh" << endl;
Info<< "<end> Foam::vtkPV3blockMesh::updateFoamMesh" << endl;
}
}
void Foam::vtkPV3FoamBlockMesh::Update
void Foam::vtkPV3blockMesh::Update
(
vtkMultiBlockDataSet* output
)
@ -318,7 +329,10 @@ void Foam::vtkPV3FoamBlockMesh::Update
reader_->UpdateProgress(0.1);
// Set up mesh parts selection(s)
updateMeshPartsStatus();
updateBoolListStatus(partStatus_, reader_->GetPartSelection());
// Set up curved edges selection(s)
updateBoolListStatus(edgeStatus_, reader_->GetCurvedEdgesSelection());
reader_->UpdateProgress(0.2);
@ -326,24 +340,25 @@ void Foam::vtkPV3FoamBlockMesh::Update
updateFoamMesh();
reader_->UpdateProgress(0.5);
// Convert meshes - start port0 at block=0
// Convert mesh elemente
int blockNo = 0;
convertMeshBlocks(output, blockNo);
convertMeshCorners(output, blockNo);
convertMeshBlocks(output, blockNo);
convertMeshEdges(output, blockNo);
reader_->UpdateProgress(0.8);
}
void Foam::vtkPV3FoamBlockMesh::CleanUp()
void Foam::vtkPV3blockMesh::CleanUp()
{
reader_->UpdateProgress(1.0);
}
void Foam::vtkPV3FoamBlockMesh::renderPointNumbers
void Foam::vtkPV3blockMesh::renderPointNumbers
(
vtkRenderer* renderer,
const bool show
@ -375,8 +390,8 @@ void Foam::vtkPV3FoamBlockMesh::renderPointNumbers
tprop->BoldOn();
tprop->ShadowOff();
tprop->SetLineSpacing(1.0);
tprop->SetFontSize(12);
tprop->SetColor(1.0, 0.0, 0.0);
tprop->SetFontSize(14);
tprop->SetColor(1.0, 0.0, 1.0);
tprop->SetJustificationToCentered();
// Set text to use 3-D world co-ordinates
@ -401,7 +416,7 @@ void Foam::vtkPV3FoamBlockMesh::renderPointNumbers
void Foam::vtkPV3FoamBlockMesh::PrintSelf(ostream& os, vtkIndent indent) const
void Foam::vtkPV3blockMesh::PrintSelf(ostream& os, vtkIndent indent) const
{
#if 0
os << indent << "Number of nodes: "

View File

@ -23,24 +23,24 @@ License
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Class
Foam::vtkPV3FoamBlockMesh
Foam::vtkPV3blockMesh
Description
Provides a reader interface for OpenFOAM blockMesh to VTK interaction
SourceFiles
vtkPV3FoamBlockMesh.C
vtkPV3FoamBlockMeshConvert.C
vtkPV3FoamBlockMeshUpdate.C
vtkPV3FoamBlockMeshUtils.C
vtkPV3blockMesh.C
vtkPV3blockMeshConvert.C
vtkPV3blockMeshUpdate.C
vtkPV3blockMeshUtils.C
// Needed by VTK:
vtkDataArrayTemplateImplicit.txx
\*---------------------------------------------------------------------------*/
#ifndef vtkPV3FoamBlockMesh_H
#define vtkPV3FoamBlockMesh_H
#ifndef vtkPV3blockMesh_H
#define vtkPV3blockMesh_H
// do not include legacy strstream headers
#ifndef VTK_EXCLUDE_STRSTREAM_HEADERS
@ -59,7 +59,7 @@ SourceFiles
class vtkDataArraySelection;
class vtkDataSet;
class vtkPoints;
class vtkPV3FoamBlockMeshReader;
class vtkPV3blockMeshReader;
class vtkRenderer;
class vtkTextActor;
class vtkMultiBlockDataSet;
@ -80,10 +80,10 @@ class blockMesh;
template<class Type> class List;
/*---------------------------------------------------------------------------*\
Class vtkPV3FoamBlockMesh Declaration
Class vtkPV3blockMesh Declaration
\*---------------------------------------------------------------------------*/
class vtkPV3FoamBlockMesh
class vtkPV3blockMesh
{
// Private classes
@ -167,8 +167,8 @@ class vtkPV3FoamBlockMesh
// Private Data
//- Access to the controlling vtkPV3FoamBlockMeshReader
vtkPV3FoamBlockMeshReader* reader_;
//- Access to the controlling vtkPV3blockMeshReader
vtkPV3blockMeshReader* reader_;
//- Foam time control
autoPtr<Time> dbPtr_;
@ -179,14 +179,17 @@ class vtkPV3FoamBlockMesh
//- Selected geometrical parts
boolList partStatus_;
//- Datasets corresponding to selected geometrical pieces
// a negative number indicates that no vtkmesh exists for this piece
labelList partDataset_;
//- Selected curved edges
boolList edgeStatus_;
//- First instance and size of bleckMesh blocks
// used to index into partStatus_ and partDataset_
// used to index into partStatus_
partInfo partInfoBlocks_;
//- First instance and size of CurvedEdges
// only partially used
partInfo partInfoEdges_;
//- First instance and size of block corners
// only partially used
partInfo partInfoCorners_;
@ -204,7 +207,7 @@ class vtkPV3FoamBlockMesh
vtkDataSet* dataset,
const partInfo&,
const label datasetNo,
const string& datasetName
const std::string& datasetName
);
// Convenience method use to convert the readers from VTK 5
@ -224,17 +227,24 @@ class vtkPV3FoamBlockMesh
const partInfo&
);
//- Update boolList from GUI selection
static void updateBoolListStatus
(
boolList&,
vtkDataArraySelection*
);
//- Reset data counters
void resetCounters();
// Update information helper functions
//- Update the mesh parts selected in the GUI
void updateMeshPartsStatus();
//- Internal mesh info
//- Internal block info
void updateInfoBlocks();
//- block curved edges info
void updateInfoEdges();
// Update helper functions
//- Foam mesh
@ -245,6 +255,9 @@ class vtkPV3FoamBlockMesh
//- mesh blocks
void convertMeshBlocks(vtkMultiBlockDataSet*, int& blockNo);
//- mesh curved edges
void convertMeshEdges(vtkMultiBlockDataSet*, int& blockNo);
//- mesh corners
void convertMeshCorners(vtkMultiBlockDataSet*, int& blockNo);
@ -280,32 +293,32 @@ class vtkPV3FoamBlockMesh
//- Disallow default bitwise copy construct
vtkPV3FoamBlockMesh(const vtkPV3FoamBlockMesh&);
vtkPV3blockMesh(const vtkPV3blockMesh&);
//- Disallow default bitwise assignment
void operator=(const vtkPV3FoamBlockMesh&);
void operator=(const vtkPV3blockMesh&);
public:
//- Static data members
ClassName("vtkPV3FoamBlockMesh");
ClassName("vtkPV3blockMesh");
// Constructors
//- Construct from components
vtkPV3FoamBlockMesh
vtkPV3blockMesh
(
const char* const FileName,
vtkPV3FoamBlockMeshReader* reader
vtkPV3blockMeshReader* reader
);
//- Destructor
~vtkPV3FoamBlockMesh();
~vtkPV3blockMesh();
// Member Functions

View File

@ -26,8 +26,8 @@ Description
\*---------------------------------------------------------------------------*/
#include "vtkPV3FoamBlockMesh.H"
#include "vtkPV3FoamBlockMeshReader.h"
#include "vtkPV3blockMesh.H"
#include "vtkPV3blockMeshReader.h"
// Foam includes
#include "blockMesh.H"
@ -46,23 +46,23 @@ Description
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::vtkPV3FoamBlockMesh::convertMeshBlocks
void Foam::vtkPV3blockMesh::convertMeshBlocks
(
vtkMultiBlockDataSet* output,
int& blockNo
)
{
vtkDataArraySelection* selection = reader_->GetPartSelection();
partInfo& selector = partInfoBlocks_;
selector.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const blockMesh& blkMesh = *meshPtr_;
const Foam::pointField& blockPoints = blkMesh.blockPointField();
if (debug)
{
Info<< "<beg> Foam::vtkPV3FoamBlockMesh::convertMeshBlocks" << endl;
Info<< "<beg> Foam::vtkPV3blockMesh::convertMeshBlocks" << endl;
}
int blockI = 0;
@ -79,10 +79,15 @@ void Foam::vtkPV3FoamBlockMesh::convertMeshBlocks
continue;
}
const word partName = Foam::name(blockI);
const blockDescriptor& blockDef = blkMesh[blockI].blockDef();
word partName("block");
// // append the (optional) zone name
// if (!blockDef.zoneName().empty())
// {
// partName += " - " + blockDef.zoneName();
// }
//
vtkUnstructuredGrid* vtkmesh = vtkUnstructuredGrid::New();
// Convert Foam mesh vertices to VTK
@ -114,11 +119,14 @@ void Foam::vtkPV3FoamBlockMesh::convertMeshBlocks
vtkmesh->SetPoints(vtkpoints);
vtkpoints->Delete();
AddToBlock
(
output, vtkmesh, selector, datasetNo,
selection->GetArrayName(partId)
);
AddToBlock(output, vtkmesh, selector, datasetNo, partName);
vtkmesh->Delete();
partDataset_[partId] = datasetNo++;
datasetNo++;
}
@ -130,19 +138,130 @@ void Foam::vtkPV3FoamBlockMesh::convertMeshBlocks
if (debug)
{
Info<< "<end> Foam::vtkPV3FoamBlockMesh::convertMeshBlocks" << endl;
Info<< "<end> Foam::vtkPV3blockMesh::convertMeshBlocks" << endl;
}
}
void Foam::vtkPV3FoamBlockMesh::convertMeshCorners
void Foam::vtkPV3blockMesh::convertMeshEdges
(
vtkMultiBlockDataSet* output,
int& blockNo
)
{
vtkDataArraySelection* selection = reader_->GetCurvedEdgesSelection();
partInfo& selector = partInfoEdges_;
selector.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
const blockMesh& blkMesh = *meshPtr_;
const curvedEdgeList& edges = blkMesh.edges();
int edgeI = 0;
for
(
int partId = selector.start();
partId < selector.end();
++partId, ++edgeI
)
{
if (!edgeStatus_[partId])
{
continue;
}
OStringStream ostr;
ostr<< edges[edgeI].start() << ":" << edges[edgeI].end() << " - "
<< edges[edgeI].type();
// search each block
forAll(blkMesh, blockI)
{
const blockDescriptor& blockDef = blkMesh[blockI].blockDef();
edgeList blkEdges = blockDef.blockShape().edges();
// find the corresponding edge within the block
label foundEdgeI = -1;
forAll(blkEdges, blkEdgeI)
{
if (edges[edgeI].compare(blkEdges[blkEdgeI]))
{
foundEdgeI = blkEdgeI;
break;
}
}
if (foundEdgeI != -1)
{
const List<point>& edgePoints =
blockDef.blockEdgePoints()[foundEdgeI];
vtkPolyData* vtkmesh = vtkPolyData::New();
vtkPoints* vtkpoints = vtkPoints::New();
vtkpoints->Allocate( edgePoints.size() );
vtkmesh->Allocate(1);
vtkIdType pointIds[edgePoints.size()];
forAll(edgePoints, ptI)
{
vtkInsertNextOpenFOAMPoint(vtkpoints, edgePoints[ptI]);
pointIds[ptI] = ptI;
}
vtkmesh->InsertNextCell
(
VTK_POLY_LINE,
edgePoints.size(),
pointIds
);
vtkmesh->SetPoints(vtkpoints);
vtkpoints->Delete();
AddToBlock
(
output, vtkmesh, selector, datasetNo,
selection->GetArrayName(partId)
);
vtkmesh->Delete();
datasetNo++;
break;
}
}
}
// anything added?
if (datasetNo)
{
++blockNo;
}
if (debug)
{
Info<< "<end> Foam::vtkPV3blockMesh::convertMeshEdges" << endl;
}
}
void Foam::vtkPV3blockMesh::convertMeshCorners
(
vtkMultiBlockDataSet* output,
int& blockNo
)
{
partInfo& selector = partInfoCorners_;
selector.block(blockNo); // set output block
label datasetNo = 0; // restart at dataset 0
@ -150,7 +269,7 @@ void Foam::vtkPV3FoamBlockMesh::convertMeshCorners
if (debug)
{
Info<< "<beg> Foam::vtkPV3FoamBlockMesh::convertMeshCorners" << endl;
Info<< "<beg> Foam::vtkPV3blockMesh::convertMeshCorners" << endl;
}
if (true) // or some flag or other condition
@ -177,7 +296,7 @@ void Foam::vtkPV3FoamBlockMesh::convertMeshCorners
vtkmesh->SetVerts(vtkcells);
vtkcells->Delete();
AddToBlock(output, vtkmesh, selector, datasetNo, "");
AddToBlock(output, vtkmesh, selector, datasetNo, partInfoCorners_.name());
vtkmesh->Delete();
datasetNo++;
@ -191,7 +310,7 @@ void Foam::vtkPV3FoamBlockMesh::convertMeshCorners
if (debug)
{
Info<< "<end> Foam::vtkPV3FoamBlockMesh::convertMeshCorners" << endl;
Info<< "<end> Foam::vtkPV3blockMesh::convertMeshCorners" << endl;
}
}

View File

@ -27,8 +27,8 @@ Description
\*---------------------------------------------------------------------------*/
#include "vtkPV3FoamBlockMesh.H"
#include "vtkPV3FoamBlockMeshReader.h"
#include "vtkPV3blockMesh.H"
#include "vtkPV3blockMeshReader.h"
// VTK includes
#include "vtkDataArraySelection.h"
@ -67,13 +67,13 @@ namespace Foam
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
void Foam::vtkPV3FoamBlockMesh::AddToBlock
void Foam::vtkPV3blockMesh::AddToBlock
(
vtkMultiBlockDataSet* output,
vtkDataSet* dataset,
const partInfo& selector,
const label datasetNo,
const string& datasetName
const std::string& datasetName
)
{
const int blockNo = selector.block();
@ -85,7 +85,7 @@ void Foam::vtkPV3FoamBlockMesh::AddToBlock
{
if (blockDO)
{
FatalErrorIn("Foam::vtkPV3FoamBlockMesh::AddToBlock")
FatalErrorIn("Foam::vtkPV3blockMesh::AddToBlock")
<< "Block already has a vtkDataSet assigned to it"
<< endl;
return;
@ -127,7 +127,7 @@ void Foam::vtkPV3FoamBlockMesh::AddToBlock
}
vtkDataSet* Foam::vtkPV3FoamBlockMesh::GetDataSetFromBlock
vtkDataSet* Foam::vtkPV3blockMesh::GetDataSetFromBlock
(
vtkMultiBlockDataSet* output,
const partInfo& selector,
@ -149,7 +149,7 @@ vtkDataSet* Foam::vtkPV3FoamBlockMesh::GetDataSetFromBlock
// ununsed at the moment
Foam::label Foam::vtkPV3FoamBlockMesh::GetNumberOfDataSets
Foam::label Foam::vtkPV3blockMesh::GetNumberOfDataSets
(
vtkMultiBlockDataSet* output,
const partInfo& selector
@ -168,7 +168,7 @@ Foam::label Foam::vtkPV3FoamBlockMesh::GetNumberOfDataSets
}
Foam::wordHashSet Foam::vtkPV3FoamBlockMesh::getSelected
Foam::wordHashSet Foam::vtkPV3blockMesh::getSelected
(
vtkDataArraySelection* select
)
@ -188,7 +188,7 @@ Foam::wordHashSet Foam::vtkPV3FoamBlockMesh::getSelected
}
Foam::wordHashSet Foam::vtkPV3FoamBlockMesh::getSelected
Foam::wordHashSet Foam::vtkPV3blockMesh::getSelected
(
vtkDataArraySelection* select,
const partInfo& selector
@ -209,7 +209,7 @@ Foam::wordHashSet Foam::vtkPV3FoamBlockMesh::getSelected
}
Foam::stringList Foam::vtkPV3FoamBlockMesh::getSelectedArrayEntries
Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
(
vtkDataArraySelection* select
)
@ -248,7 +248,7 @@ Foam::stringList Foam::vtkPV3FoamBlockMesh::getSelectedArrayEntries
}
Foam::stringList Foam::vtkPV3FoamBlockMesh::getSelectedArrayEntries
Foam::stringList Foam::vtkPV3blockMesh::getSelectedArrayEntries
(
vtkDataArraySelection* select,
const partInfo& selector
@ -287,7 +287,7 @@ Foam::stringList Foam::vtkPV3FoamBlockMesh::getSelectedArrayEntries
}
void Foam::vtkPV3FoamBlockMesh::setSelectedArrayEntries
void Foam::vtkPV3blockMesh::setSelectedArrayEntries
(
vtkDataArraySelection* select,
const stringList& selections
@ -313,6 +313,45 @@ void Foam::vtkPV3FoamBlockMesh::setSelectedArrayEntries
}
void Foam::vtkPV3blockMesh::updateBoolListStatus
(
boolList& status,
vtkDataArraySelection* selection
)
{
if (debug)
{
Info<< "<beg> Foam::vtkPV3blockMesh::updateBoolListStatus" << endl;
}
const label nElem = selection->GetNumberOfArrays();
if (status.size() != nElem)
{
status.setSize(nElem);
status = false;
}
forAll(status, elemI)
{
const int setting = selection->GetArraySetting(elemI);
status[elemI] = setting;
if (debug)
{
Info<< " part[" << elemI << "] = "
<< status[elemI]
<< " : " << selection->GetArrayName(elemI) << endl;
}
}
if (debug)
{
Info<< "<end> Foam::vtkPV3blockMesh::updateBoolListStatus" << endl;
}
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //