Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Modules
Visualization
Commits
dfa52b08
Commit
dfa52b08
authored
Oct 05, 2009
by
Mark Olesen
Browse files
ParaView reader for blockMesh
- first version. Only uses simple hex shapes for the blocks.
parent
5751bd39
Changes
16
Hide whitespace changes
Inline
Side-by-side
src/paraview-plugins/PV3FoamBlockMeshReader/Allwclean
0 → 100755
View file @
dfa52b08
#!/bin/sh
cd
${
0
%/*
}
||
exit
1
# run from this directory
set
-x
rm
-rf
PV3FoamBlockMeshReader/Make
wclean libso vtkPV3FoamBlockMesh
# ----------------------------------------------------------------- end-of-file
src/paraview-plugins/PV3FoamBlockMeshReader/Allwmake
0 → 100755
View file @
dfa52b08
#!/bin/sh
cd
${
0
%/*
}
||
exit
1
# run from this directory
set
-x
if
[
-d
"
$ParaView_DIR
"
-a
-r
"
$ParaView_DIR
"
]
then
case
"
$ParaView_VERSION
"
in
3
*
)
wmake libso vtkPV3FoamBlockMesh
(
cd
PV3FoamBlockMeshReader
mkdir
-p
Make/
$WM_OPTIONS
>
/dev/null 2>&1
cd
Make/
$WM_OPTIONS
cmake ../..
make
)
;;
esac
fi
# ----------------------------------------------------------------- end-of-file
src/paraview-plugins/PV3FoamBlockMeshReader/PV3FoamBlockMeshReader/CMakeLists.txt
0 → 100644
View file @
dfa52b08
# create a plugin that adds a reader to the ParaView GUI
# it is added in the file dialog when doing opens/saves.
# The qrc file is processed by Qt's resource compiler (rcc)
# the qrc file must have a resource prefix of "/ParaViewResources"
# and ParaView will read anything contained under that prefix
# the pqReader.xml file contains xml defining readers with their
# file extensions and descriptions.
cmake_minimum_required
(
VERSION 2.4
)
FIND_PACKAGE
(
ParaView REQUIRED
)
INCLUDE
(
${
PARAVIEW_USE_FILE
}
)
LINK_DIRECTORIES
(
$ENV{FOAM_LIBBIN}
)
INCLUDE_DIRECTORIES
(
$ENV{WM_PROJECT_DIR}/src/OpenFOAM/lnInclude
$ENV{WM_PROJECT_DIR}/src/meshing/blockMesh/lnInclude
${
PROJECT_SOURCE_DIR
}
/../vtkPV3FoamBlockMesh
)
ADD_DEFINITIONS
(
-DWM_$ENV{WM_PRECISION_OPTION}
)
# Set output library destination to plugin folder
SET
(
LIBRARY_OUTPUT_PATH $ENV{PV_PLUGIN_PATH}
CACHE INTERNAL
"Single output directory for building all libraries."
)
# Build the server-side plugin
ADD_PARAVIEW_PLUGIN
(
PV3FoamBlockMeshReader_SM
"1.0"
SERVER_MANAGER_XML PV3FoamBlockMeshReader_SM.xml
SERVER_MANAGER_SOURCES vtkPV3FoamBlockMeshReader.cxx
)
# Build the client-side plugin
ADD_PARAVIEW_PLUGIN
(
PV3FoamBlockMeshReader
"1.0"
GUI_RESOURCES PV3FoamBlockMeshReader.qrc
)
TARGET_LINK_LIBRARIES
(
PV3FoamBlockMeshReader_SM
OpenFOAM
blockMesh
vtkPV3FoamBlockMesh
)
#-----------------------------------------------------------------------------
src/paraview-plugins/PV3FoamBlockMeshReader/PV3FoamBlockMeshReader/PV3FoamBlockMeshReader.qrc
0 → 100644
View file @
dfa52b08
<RCC>
<qresource prefix="/ParaViewResources" >
<file>PV3FoamBlockMeshReader.xml</file>
</qresource>
</RCC>
src/paraview-plugins/PV3FoamBlockMeshReader/PV3FoamBlockMeshReader/PV3FoamBlockMeshReader.xml
0 → 100644
View file @
dfa52b08
<ParaViewReaders>
<Reader
name=
"PV3FoamBlockMeshReader"
extensions=
"blockMesh"
file_description=
"OpenFOAM blockMesh reader"
>
</Reader>
</ParaViewReaders>
src/paraview-plugins/PV3FoamBlockMeshReader/PV3FoamBlockMeshReader/PV3FoamBlockMeshReader_SM.xml
0 → 100644
View file @
dfa52b08
<ServerManagerConfiguration>
<ProxyGroup
name=
"sources"
>
<SourceProxy
name=
"PV3FoamBlockMeshReader"
class=
"vtkPV3FoamBlockMeshReader"
>
<!-- File name - compulsory -->
<StringVectorProperty
name=
"FileName"
command=
"SetFileName"
number_of_elements=
"1"
animateable=
"0"
>
<FileListDomain
name=
"files"
/>
<Documentation>
Specifies the filename for the OpenFOAM blockMesh Reader.
</Documentation>
</StringVectorProperty>
<!-- Global settings -->
<!-- Show Point Numbers check-box -->
<IntVectorProperty
name=
"ShowPointNumbers"
command=
"SetShowPointNumbers"
number_of_elements=
"1"
default_values=
"1"
animateable=
"0"
>
<BooleanDomain
name=
"bool"
/>
<Documentation>
Show point numbers in render window.
</Documentation>
</IntVectorProperty>
<!-- Update GUI check box -->
<IntVectorProperty
name=
"UpdateGUI"
command=
"SetUpdateGUI"
number_of_elements=
"1"
default_values=
"0"
animateable=
"0"
>
<BooleanDomain
name=
"bool"
/>
<Documentation>
A simple way to cause a reader GUI modification.
</Documentation>
</IntVectorProperty>
<!-- Selections -->
<!-- Available Parts (blocks) array -->
<StringVectorProperty
name=
"PartArrayInfo"
information_only=
"1"
>
<ArraySelectionInformationHelper
attribute_name=
"Part"
/>
</StringVectorProperty>
<StringVectorProperty
name=
"PartStatus"
label=
"block numbers"
command=
"SetPartArrayStatus"
number_of_elements=
"0"
repeat_command=
"1"
number_of_elements_per_command=
"2"
element_types=
"2 0"
information_property=
"PartArrayInfo"
animateable=
"0"
>
<ArraySelectionDomain
name=
"array_list"
>
<RequiredProperties>
<Property
name=
"PartArrayInfo"
function=
"ArrayList"
/>
</RequiredProperties>
</ArraySelectionDomain>
</StringVectorProperty>
</SourceProxy>
</ProxyGroup>
</ServerManagerConfiguration>
src/paraview-plugins/PV3FoamBlockMeshReader/PV3FoamBlockMeshReader/vtkPV3FoamBlockMeshReader.cxx
0 → 100644
View file @
dfa52b08
/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkPV3FoamBlockMeshReader.cxx,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#include
"vtkPV3FoamBlockMeshReader.h"
#include
"pqApplicationCore.h"
#include
"pqRenderView.h"
#include
"pqServerManagerModel.h"
// VTK includes
#include
"vtkCallbackCommand.h"
#include
"vtkDataArraySelection.h"
#include
"vtkInformation.h"
#include
"vtkInformationVector.h"
#include
"vtkMultiBlockDataSet.h"
#include
"vtkObjectFactory.h"
#include
"vtkSMRenderViewProxy.h"
#include
"vtkStreamingDemandDrivenPipeline.h"
#include
"vtkStringArray.h"
// Foam includes
#include
"vtkPV3FoamBlockMesh.H"
vtkCxxRevisionMacro
(
vtkPV3FoamBlockMeshReader
,
"$Revision: 1.5$"
);
vtkStandardNewMacro
(
vtkPV3FoamBlockMeshReader
);
vtkPV3FoamBlockMeshReader
::
vtkPV3FoamBlockMeshReader
()
{
Debug
=
0
;
vtkDebugMacro
(
<<
"Constructor"
);
SetNumberOfInputPorts
(
0
);
FileName
=
NULL
;
foamData_
=
NULL
;
ShowPointNumbers
=
1
;
UpdateGUI
=
0
;
PartSelection
=
vtkDataArraySelection
::
New
();
// Setup the selection callback to modify this object when an array
// selection is changed.
SelectionObserver
=
vtkCallbackCommand
::
New
();
SelectionObserver
->
SetCallback
(
&
vtkPV3FoamBlockMeshReader
::
SelectionModifiedCallback
);
SelectionObserver
->
SetClientData
(
this
);
PartSelection
->
AddObserver
(
vtkCommand
::
ModifiedEvent
,
this
->
SelectionObserver
);
}
vtkPV3FoamBlockMeshReader
::~
vtkPV3FoamBlockMeshReader
()
{
vtkDebugMacro
(
<<
"Deconstructor"
);
delete
foamData_
;
if
(
FileName
)
{
delete
[]
FileName
;
}
PartSelection
->
RemoveObserver
(
this
->
SelectionObserver
);
SelectionObserver
->
Delete
();
PartSelection
->
Delete
();
}
// Do everything except set the output info
int
vtkPV3FoamBlockMeshReader
::
RequestInformation
(
vtkInformation
*
vtkNotUsed
(
request
),
vtkInformationVector
**
vtkNotUsed
(
inputVector
),
vtkInformationVector
*
outputVector
)
{
vtkDebugMacro
(
<<
"RequestInformation"
);
if
(
Foam
::
vtkPV3FoamBlockMesh
::
debug
)
{
cout
<<
"REQUEST_INFORMATION
\n
"
;
}
if
(
!
FileName
)
{
vtkErrorMacro
(
"FileName has to be specified!"
);
return
0
;
}
int
nInfo
=
outputVector
->
GetNumberOfInformationObjects
();
if
(
Foam
::
vtkPV3FoamBlockMesh
::
debug
)
{
cout
<<
"RequestInformation with "
<<
nInfo
<<
" item(s)
\n
"
;
for
(
int
infoI
=
0
;
infoI
<
nInfo
;
++
infoI
)
{
outputVector
->
GetInformationObject
(
infoI
)
->
Print
(
cout
);
}
}
if
(
!
foamData_
)
{
foamData_
=
new
Foam
::
vtkPV3FoamBlockMesh
(
FileName
,
this
);
}
else
{
foamData_
->
updateInfo
();
}
// might need some other type of error handling
// {
// vtkErrorMacro("could not find valid OpenFOAM blockMesh");
//
// // delete foamData and flag it as fatal error
// delete foamData_;
// foamData_ = NULL;
// return 0;
// }
return
1
;
}
// Set the output info
int
vtkPV3FoamBlockMeshReader
::
RequestData
(
vtkInformation
*
vtkNotUsed
(
request
),
vtkInformationVector
**
vtkNotUsed
(
inputVector
),
vtkInformationVector
*
outputVector
)
{
vtkDebugMacro
(
<<
"RequestData"
);
if
(
!
FileName
)
{
vtkErrorMacro
(
"FileName has to be specified!"
);
return
0
;
}
// catch previous error
if
(
!
foamData_
)
{
vtkErrorMacro
(
"Reader failed - perhaps no mesh?"
);
return
0
;
}
int
nInfo
=
outputVector
->
GetNumberOfInformationObjects
();
if
(
Foam
::
vtkPV3FoamBlockMesh
::
debug
)
{
cout
<<
"RequestData with "
<<
nInfo
<<
" item(s)
\n
"
;
for
(
int
infoI
=
0
;
infoI
<
nInfo
;
++
infoI
)
{
outputVector
->
GetInformationObject
(
infoI
)
->
Print
(
cout
);
}
}
vtkMultiBlockDataSet
*
output
=
vtkMultiBlockDataSet
::
SafeDownCast
(
outputVector
->
GetInformationObject
(
0
)
->
Get
(
vtkMultiBlockDataSet
::
DATA_OBJECT
()
)
);
if
(
Foam
::
vtkPV3FoamBlockMesh
::
debug
)
{
cout
<<
"update output with "
<<
output
->
GetNumberOfBlocks
()
<<
" blocks
\n
"
;
}
foamData_
->
Update
(
output
);
updatePointNumbersView
(
ShowPointNumbers
);
// Do any cleanup on the Foam side
foamData_
->
CleanUp
();
return
1
;
}
void
vtkPV3FoamBlockMeshReader
::
updatePointNumbersView
(
const
bool
show
)
{
pqApplicationCore
*
appCore
=
pqApplicationCore
::
instance
();
// Server manager model for querying items in the server manager
pqServerManagerModel
*
smModel
=
appCore
->
getServerManagerModel
();
// Get all the pqRenderView instances
QList
<
pqRenderView
*>
renderViews
=
smModel
->
findItems
<
pqRenderView
*>
();
for
(
int
viewI
=
0
;
viewI
<
renderViews
.
size
();
++
viewI
)
{
foamData_
->
renderPointNumbers
(
renderViews
[
viewI
]
->
getRenderViewProxy
()
->
GetRenderer
(),
show
);
}
}
void
vtkPV3FoamBlockMeshReader
::
PrintSelf
(
ostream
&
os
,
vtkIndent
indent
)
{
vtkDebugMacro
(
<<
"PrintSelf"
);
this
->
Superclass
::
PrintSelf
(
os
,
indent
);
os
<<
indent
<<
"File name: "
<<
(
this
->
FileName
?
this
->
FileName
:
"(none)"
)
<<
"
\n
"
;
foamData_
->
PrintSelf
(
os
,
indent
);
}
// ----------------------------------------------------------------------
// Parts selection list control
vtkDataArraySelection
*
vtkPV3FoamBlockMeshReader
::
GetPartSelection
()
{
vtkDebugMacro
(
<<
"GetPartSelection"
);
return
PartSelection
;
}
int
vtkPV3FoamBlockMeshReader
::
GetNumberOfPartArrays
()
{
vtkDebugMacro
(
<<
"GetNumberOfPartArrays"
);
return
PartSelection
->
GetNumberOfArrays
();
}
const
char
*
vtkPV3FoamBlockMeshReader
::
GetPartArrayName
(
int
index
)
{
vtkDebugMacro
(
<<
"GetPartArrayName"
);
return
PartSelection
->
GetArrayName
(
index
);
}
int
vtkPV3FoamBlockMeshReader
::
GetPartArrayStatus
(
const
char
*
name
)
{
vtkDebugMacro
(
<<
"GetPartArrayStatus"
);
return
PartSelection
->
ArrayIsEnabled
(
name
);
}
void
vtkPV3FoamBlockMeshReader
::
SetPartArrayStatus
(
const
char
*
name
,
int
status
)
{
vtkDebugMacro
(
<<
"SetPartArrayStatus"
);
if
(
status
)
{
PartSelection
->
EnableArray
(
name
);
}
else
{
PartSelection
->
DisableArray
(
name
);
}
}
// ----------------------------------------------------------------------
void
vtkPV3FoamBlockMeshReader
::
SelectionModifiedCallback
(
vtkObject
*
,
unsigned
long
,
void
*
clientdata
,
void
*
)
{
static_cast
<
vtkPV3FoamBlockMeshReader
*>
(
clientdata
)
->
SelectionModified
();
}
void
vtkPV3FoamBlockMeshReader
::
SelectionModified
()
{
vtkDebugMacro
(
<<
"SelectionModified"
);
Modified
();
}
int
vtkPV3FoamBlockMeshReader
::
FillOutputPortInformation
(
int
port
,
vtkInformation
*
info
)
{
if
(
port
==
0
)
{
return
this
->
Superclass
::
FillOutputPortInformation
(
port
,
info
);
}
info
->
Set
(
vtkDataObject
::
DATA_TYPE_NAME
(),
"vtkMultiBlockDataSet"
);
return
1
;
}
// ************************************************************************* //
src/paraview-plugins/PV3FoamBlockMeshReader/PV3FoamBlockMeshReader/vtkPV3FoamBlockMeshReader.h
0 → 100644
View file @
dfa52b08
/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkPV3FoamBlockMeshReader.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkPV3FoamBlockMeshReader - reads a dataset in OpenFOAM bockMesh format
// .SECTION Description
// vtkPV3FoamBlockMeshReader creates an multiblock dataset.
// It uses the OpenFOAM infrastructure (blockMesh).
#ifndef __vtkPV3FoamBlockMeshReader_h
#define __vtkPV3FoamBlockMeshReader_h
// Foam forward declarations
namespace
Foam
{
class
vtkPV3FoamBlockMesh
;
}
// VTK includes
#include
"vtkMultiBlockDataSetAlgorithm.h"
// VTK forward declarations
class
vtkDataArraySelection
;
class
vtkCallbackCommand
;
class
VTK_IO_EXPORT
vtkPV3FoamBlockMeshReader
:
public
vtkMultiBlockDataSetAlgorithm
{
public:
vtkTypeRevisionMacro
(
vtkPV3FoamBlockMeshReader
,
vtkMultiBlockDataSetAlgorithm
);
void
PrintSelf
(
ostream
&
,
vtkIndent
);
static
vtkPV3FoamBlockMeshReader
*
New
();
// Description:
// Set/Get the filename.
vtkSetStringMacro
(
FileName
);
vtkGetStringMacro
(
FileName
);
// Description:
// GUI update control
vtkSetMacro
(
UpdateGUI
,
int
);
vtkGetMacro
(
UpdateGUI
,
int
);
// Description:
// FOAM display patch names control
vtkSetMacro
(
ShowPointNumbers
,
int
);
vtkGetMacro
(
ShowPointNumbers
,
int
);
// Description:
// Parts (blocks) selection list control
vtkDataArraySelection
*
GetPartSelection
();
int
GetNumberOfPartArrays
();
int
GetPartArrayStatus
(
const
char
*
name
);
void
SetPartArrayStatus
(
const
char
*
name
,
int
status
);
const
char
*
GetPartArrayName
(
int
index
);
// Description:
// Callback registered with the SelectionObserver
// for all the selection lists
static
void
SelectionModifiedCallback
(
vtkObject
*
caller
,
unsigned
long
eid
,
void
*
clientdata
,
void
*
calldata
);