mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge remote-tracking branch 'origin/develop' into develop-pre-release
This commit is contained in:
@ -5,7 +5,7 @@
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
// Insitu processing of finiteVolume fields with ParaView Catalyst
|
||||
// Insitu processing with ParaView Catalyst
|
||||
|
||||
type catalyst;
|
||||
libs ("libcatalystFoam.so");
|
||||
68
etc/caseDicts/insitu/catalyst/printChannels.py
Normal file
68
etc/caseDicts/insitu/catalyst/printChannels.py
Normal file
@ -0,0 +1,68 @@
|
||||
from paraview.simple import *
|
||||
from paraview import coprocessing
|
||||
|
||||
# The frequency to output everything
|
||||
outputfrequency = 1
|
||||
|
||||
# Simply print out all channel names that our function object is producing
|
||||
|
||||
# ----------------------- CoProcessor definition -----------------------
|
||||
|
||||
def CreateCoProcessor():
|
||||
def _CreatePipeline(coprocessor, datadescription):
|
||||
class Pipeline:
|
||||
for i in range(datadescription.GetNumberOfInputDescriptions()):
|
||||
name = datadescription.GetInputDescriptionName(i)
|
||||
input = coprocessor.CreateProducer(datadescription, name)
|
||||
grid = input.GetClientSideObject().GetOutputDataObject(0)
|
||||
print "Channel <" + name + "> is", grid.GetClassName()
|
||||
|
||||
return Pipeline()
|
||||
|
||||
class CoProcessor(coprocessing.CoProcessor):
|
||||
def CreatePipeline(self, datadescription):
|
||||
self.Pipeline = _CreatePipeline(self, datadescription)
|
||||
|
||||
return CoProcessor()
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Global variables that will hold the pipeline for each timestep
|
||||
# Creating the CoProcessor object, doesn't actually create the ParaView pipeline.
|
||||
# It will be automatically setup when coprocessor.UpdateProducers() is called the
|
||||
# first time.
|
||||
coprocessor = CreateCoProcessor()
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Enable Live-Visualizaton with ParaView
|
||||
coprocessor.EnableLiveVisualization(False)
|
||||
|
||||
|
||||
# ---------------------- Data Selection method ----------------------
|
||||
|
||||
def RequestDataDescription(datadescription):
|
||||
"Callback to populate the request for current timestep"
|
||||
global coprocessor
|
||||
if datadescription.GetForceOutput() == True or datadescription.GetTimeStep() % outputfrequency == 0:
|
||||
# We are just going to request all fields and meshes from the simulation
|
||||
# code/adaptor.
|
||||
for i in range(datadescription.GetNumberOfInputDescriptions()):
|
||||
datadescription.GetInputDescription(i).AllFieldsOn()
|
||||
datadescription.GetInputDescription(i).GenerateMeshOn()
|
||||
return
|
||||
|
||||
# setup requests for all inputs based on the requirements of the
|
||||
# pipeline.
|
||||
coprocessor.LoadRequestedData(datadescription)
|
||||
|
||||
# ------------------------ Processing method ------------------------
|
||||
|
||||
def DoCoProcessing(datadescription):
|
||||
"Callback to do co-processing for current timestep"
|
||||
global coprocessor
|
||||
|
||||
# Update the coprocessor by providing it the newly generated simulation data.
|
||||
# If the pipeline hasn't been setup yet, this will setup the pipeline.
|
||||
coprocessor.UpdateProducers(datadescription)
|
||||
|
||||
# Write output data, if appropriate.
|
||||
coprocessor.WriteData(datadescription);
|
||||
77
etc/caseDicts/insitu/catalyst/writeAll.py
Normal file
77
etc/caseDicts/insitu/catalyst/writeAll.py
Normal file
@ -0,0 +1,77 @@
|
||||
from paraview.simple import *
|
||||
from paraview import coprocessing
|
||||
|
||||
# The frequency to output everything
|
||||
outputfrequency = 5
|
||||
|
||||
# This is largely identical to the Catalyst allinputsgridwriter.py example
|
||||
# but only handle vtkMultiBlockDataSet, since that is what we generate
|
||||
|
||||
# ----------------------- CoProcessor definition -----------------------
|
||||
|
||||
def CreateCoProcessor():
|
||||
def _CreatePipeline(coprocessor, datadescription):
|
||||
class Pipeline:
|
||||
for i in range(datadescription.GetNumberOfInputDescriptions()):
|
||||
name = datadescription.GetInputDescriptionName(i)
|
||||
input = coprocessor.CreateProducer(datadescription, name)
|
||||
grid = input.GetClientSideObject().GetOutputDataObject(0)
|
||||
if grid.IsA('vtkMultiBlockDataSet'):
|
||||
writer = servermanager.writers.XMLMultiBlockDataWriter(Input=input)
|
||||
coprocessor.RegisterWriter(writer, filename=name+'_%t.vtm', freq=outputfrequency)
|
||||
|
||||
return Pipeline()
|
||||
|
||||
class CoProcessor(coprocessing.CoProcessor):
|
||||
def CreatePipeline(self, datadescription):
|
||||
self.Pipeline = _CreatePipeline(self, datadescription)
|
||||
|
||||
return CoProcessor()
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Global variables that will hold the pipeline for each timestep
|
||||
# Creating the CoProcessor object, doesn't actually create the ParaView pipeline.
|
||||
# It will be automatically setup when coprocessor.UpdateProducers() is called the
|
||||
# first time.
|
||||
coprocessor = CreateCoProcessor()
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Enable Live-Visualizaton with ParaView
|
||||
coprocessor.EnableLiveVisualization(False)
|
||||
|
||||
|
||||
# ---------------------- Data Selection method ----------------------
|
||||
|
||||
def RequestDataDescription(datadescription):
|
||||
"Callback to populate the request for current timestep"
|
||||
global coprocessor
|
||||
if datadescription.GetForceOutput() == True or datadescription.GetTimeStep() % outputfrequency == 0:
|
||||
# We are just going to request all fields and meshes from the simulation
|
||||
# code/adaptor.
|
||||
for i in range(datadescription.GetNumberOfInputDescriptions()):
|
||||
datadescription.GetInputDescription(i).AllFieldsOn()
|
||||
datadescription.GetInputDescription(i).GenerateMeshOn()
|
||||
return
|
||||
|
||||
# setup requests for all inputs based on the requirements of the
|
||||
# pipeline.
|
||||
coprocessor.LoadRequestedData(datadescription)
|
||||
|
||||
# ------------------------ Processing method ------------------------
|
||||
|
||||
def DoCoProcessing(datadescription):
|
||||
"Callback to do co-processing for current timestep"
|
||||
global coprocessor
|
||||
|
||||
# Update the coprocessor by providing it the newly generated simulation data.
|
||||
# If the pipeline hasn't been setup yet, this will setup the pipeline.
|
||||
coprocessor.UpdateProducers(datadescription)
|
||||
|
||||
# Write output data, if appropriate.
|
||||
coprocessor.WriteData(datadescription);
|
||||
|
||||
# Write image capture (Last arg: rescale lookup table), if appropriate.
|
||||
coprocessor.WriteImages(datadescription, rescale_lookuptable=False)
|
||||
|
||||
# Live Visualization, if enabled.
|
||||
coprocessor.DoLiveVisualization(datadescription, "localhost", 22222)
|
||||
78
etc/caseDicts/insitu/catalyst/writeMesh.py
Normal file
78
etc/caseDicts/insitu/catalyst/writeMesh.py
Normal file
@ -0,0 +1,78 @@
|
||||
from paraview.simple import *
|
||||
from paraview import coprocessing
|
||||
|
||||
# The frequency to output everything
|
||||
outputfrequency = 5
|
||||
|
||||
# As per writeAll, but only for "/mesh" sub-channels.
|
||||
|
||||
# ----------------------- CoProcessor definition -----------------------
|
||||
|
||||
def CreateCoProcessor():
|
||||
def _CreatePipeline(coprocessor, datadescription):
|
||||
class Pipeline:
|
||||
for i in range(datadescription.GetNumberOfInputDescriptions()):
|
||||
name = datadescription.GetInputDescriptionName(i)
|
||||
if not name.endswith('/mesh'):
|
||||
continue
|
||||
input = coprocessor.CreateProducer(datadescription, name)
|
||||
grid = input.GetClientSideObject().GetOutputDataObject(0)
|
||||
if grid.IsA('vtkMultiBlockDataSet'):
|
||||
writer = servermanager.writers.XMLMultiBlockDataWriter(Input=input)
|
||||
coprocessor.RegisterWriter(writer, filename=name+'_%t.vtm', freq=outputfrequency)
|
||||
|
||||
return Pipeline()
|
||||
|
||||
class CoProcessor(coprocessing.CoProcessor):
|
||||
def CreatePipeline(self, datadescription):
|
||||
self.Pipeline = _CreatePipeline(self, datadescription)
|
||||
|
||||
return CoProcessor()
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Global variables that will hold the pipeline for each timestep
|
||||
# Creating the CoProcessor object, doesn't actually create the ParaView pipeline.
|
||||
# It will be automatically setup when coprocessor.UpdateProducers() is called the
|
||||
# first time.
|
||||
coprocessor = CreateCoProcessor()
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Enable Live-Visualizaton with ParaView
|
||||
coprocessor.EnableLiveVisualization(False)
|
||||
|
||||
|
||||
# ---------------------- Data Selection method ----------------------
|
||||
|
||||
def RequestDataDescription(datadescription):
|
||||
"Callback to populate the request for current timestep"
|
||||
global coprocessor
|
||||
if datadescription.GetForceOutput() == True or datadescription.GetTimeStep() % outputfrequency == 0:
|
||||
# We are just going to request all fields and meshes from the simulation
|
||||
# code/adaptor.
|
||||
for i in range(datadescription.GetNumberOfInputDescriptions()):
|
||||
datadescription.GetInputDescription(i).AllFieldsOn()
|
||||
datadescription.GetInputDescription(i).GenerateMeshOn()
|
||||
return
|
||||
|
||||
# setup requests for all inputs based on the requirements of the
|
||||
# pipeline.
|
||||
coprocessor.LoadRequestedData(datadescription)
|
||||
|
||||
# ------------------------ Processing method ------------------------
|
||||
|
||||
def DoCoProcessing(datadescription):
|
||||
"Callback to do co-processing for current timestep"
|
||||
global coprocessor
|
||||
|
||||
# Update the coprocessor by providing it the newly generated simulation data.
|
||||
# If the pipeline hasn't been setup yet, this will setup the pipeline.
|
||||
coprocessor.UpdateProducers(datadescription)
|
||||
|
||||
# Write output data, if appropriate.
|
||||
coprocessor.WriteData(datadescription);
|
||||
|
||||
# Write image capture (Last arg: rescale lookup table), if appropriate.
|
||||
coprocessor.WriteImages(datadescription, rescale_lookuptable=False)
|
||||
|
||||
# Live Visualization, if enabled.
|
||||
coprocessor.DoLiveVisualization(datadescription, "localhost", 22222)
|
||||
78
etc/caseDicts/insitu/catalyst/writePatches.py
Normal file
78
etc/caseDicts/insitu/catalyst/writePatches.py
Normal file
@ -0,0 +1,78 @@
|
||||
from paraview.simple import *
|
||||
from paraview import coprocessing
|
||||
|
||||
# The frequency to output everything
|
||||
outputfrequency = 5
|
||||
|
||||
# As per writeAll, but only for "/patches" sub-channels.
|
||||
|
||||
# ----------------------- CoProcessor definition -----------------------
|
||||
|
||||
def CreateCoProcessor():
|
||||
def _CreatePipeline(coprocessor, datadescription):
|
||||
class Pipeline:
|
||||
for i in range(datadescription.GetNumberOfInputDescriptions()):
|
||||
name = datadescription.GetInputDescriptionName(i)
|
||||
if not name.endswith('/patches'):
|
||||
continue
|
||||
input = coprocessor.CreateProducer(datadescription, name)
|
||||
grid = input.GetClientSideObject().GetOutputDataObject(0)
|
||||
if grid.IsA('vtkMultiBlockDataSet'):
|
||||
writer = servermanager.writers.XMLMultiBlockDataWriter(Input=input)
|
||||
coprocessor.RegisterWriter(writer, filename=name+'_%t.vtm', freq=outputfrequency)
|
||||
|
||||
return Pipeline()
|
||||
|
||||
class CoProcessor(coprocessing.CoProcessor):
|
||||
def CreatePipeline(self, datadescription):
|
||||
self.Pipeline = _CreatePipeline(self, datadescription)
|
||||
|
||||
return CoProcessor()
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Global variables that will hold the pipeline for each timestep
|
||||
# Creating the CoProcessor object, doesn't actually create the ParaView pipeline.
|
||||
# It will be automatically setup when coprocessor.UpdateProducers() is called the
|
||||
# first time.
|
||||
coprocessor = CreateCoProcessor()
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# Enable Live-Visualizaton with ParaView
|
||||
coprocessor.EnableLiveVisualization(False)
|
||||
|
||||
|
||||
# ---------------------- Data Selection method ----------------------
|
||||
|
||||
def RequestDataDescription(datadescription):
|
||||
"Callback to populate the request for current timestep"
|
||||
global coprocessor
|
||||
if datadescription.GetForceOutput() == True or datadescription.GetTimeStep() % outputfrequency == 0:
|
||||
# We are just going to request all fields and meshes from the simulation
|
||||
# code/adaptor.
|
||||
for i in range(datadescription.GetNumberOfInputDescriptions()):
|
||||
datadescription.GetInputDescription(i).AllFieldsOn()
|
||||
datadescription.GetInputDescription(i).GenerateMeshOn()
|
||||
return
|
||||
|
||||
# setup requests for all inputs based on the requirements of the
|
||||
# pipeline.
|
||||
coprocessor.LoadRequestedData(datadescription)
|
||||
|
||||
# ------------------------ Processing method ------------------------
|
||||
|
||||
def DoCoProcessing(datadescription):
|
||||
"Callback to do co-processing for current timestep"
|
||||
global coprocessor
|
||||
|
||||
# Update the coprocessor by providing it the newly generated simulation data.
|
||||
# If the pipeline hasn't been setup yet, this will setup the pipeline.
|
||||
coprocessor.UpdateProducers(datadescription)
|
||||
|
||||
# Write output data, if appropriate.
|
||||
coprocessor.WriteData(datadescription);
|
||||
|
||||
# Write image capture (Last arg: rescale lookup table), if appropriate.
|
||||
coprocessor.WriteImages(datadescription, rescale_lookuptable=False)
|
||||
|
||||
# Live Visualization, if enabled.
|
||||
coprocessor.DoLiveVisualization(datadescription, "localhost", 22222)
|
||||
@ -1,16 +0,0 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: plus |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
// Insitu processing of finiteArea fields with ParaView Catalyst
|
||||
|
||||
type catalyst::area;
|
||||
libs ("libcatalystFoam.so");
|
||||
|
||||
executeControl timeStep;
|
||||
writeControl none;
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,16 +0,0 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: plus |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
// Insitu processing of lagrangian clouds with ParaView Catalyst
|
||||
|
||||
type catalyst::cloud;
|
||||
libs ("libcatalystFoam.so");
|
||||
|
||||
executeControl timeStep;
|
||||
writeControl none;
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -13,8 +13,8 @@
|
||||
# config.csh/example/paraview
|
||||
#
|
||||
# Description
|
||||
# Example of defining a different ParaView_VERSION but retaining
|
||||
# the standard config.csh/paraview mechanism
|
||||
# Example of defining a different ParaView_VERSION but retaining the
|
||||
# standard config.csh/paraview mechanism
|
||||
#
|
||||
# Note
|
||||
# This file could be copied to a user or site location, but should never
|
||||
@ -25,7 +25,8 @@
|
||||
|
||||
set pv=5.5.0
|
||||
set pv=5.5.0-mpipy
|
||||
set qt=qt-5.9.0
|
||||
|
||||
eval `foamEtcFile -csh -config -mode=o paraview -- ParaView_VERSION=$pv`
|
||||
eval `foamEtcFile -csh -config -mode=o paraview -- ParaView_VERSION=$pv ParaView_QT=$qt`
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -120,8 +120,16 @@ if ( $?ParaView_VERSION ) then
|
||||
#OBSOLETE? endif
|
||||
|
||||
# QT libraries as required
|
||||
# Set Qt5_DIR to root directory.
|
||||
# Another possibility: "qtpaths --qt-version"
|
||||
|
||||
set qtDir="$archDir/$ParaView_QT"
|
||||
if ( -d "$qtDir" ) then
|
||||
switch ($ParaView_QT)
|
||||
case *-qt*:
|
||||
setenv Qt5_DIR $qtDir
|
||||
breaksw
|
||||
endsw
|
||||
foreach qtLibDir ("$qtDir/lib$WM_COMPILER_LIB_ARCH" "$qtDir/lib")
|
||||
if ( -d "$qtLibDir" ) then
|
||||
setenv LD_LIBRARY_PATH "${qtLibDir}:${LD_LIBRARY_PATH}"
|
||||
|
||||
@ -111,6 +111,7 @@ unsetenv ParaView_INCLUDE_DIR
|
||||
unsetenv ParaView_VERSION
|
||||
unsetenv PV_PLUGIN_PATH
|
||||
unsetenv VTK_DIR
|
||||
unsetenv Qt5_DIR # Perhaps only unset if it is in WM_THIRD_PARTY_DIR?
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Unset other ThirdParty environment variables
|
||||
|
||||
@ -13,8 +13,8 @@
|
||||
# config.sh/example/paraview
|
||||
#
|
||||
# Description
|
||||
# Example of defining a different ParaView_VERSION but retaining
|
||||
# the standard config.sh/paraview mechanism
|
||||
# Example of defining a different ParaView_VERSION but retaining the
|
||||
# standard config.sh/paraview mechanism
|
||||
#
|
||||
# Note
|
||||
# This file could be copied to a user or site location, but should never
|
||||
@ -25,7 +25,8 @@
|
||||
|
||||
pv=5.5.0
|
||||
pv=5.5.0-mpipy
|
||||
qt=qt-5.9.0
|
||||
|
||||
eval $(foamEtcFile -sh -config -mode=o paraview -- ParaView_VERSION=$pv)
|
||||
eval $(foamEtcFile -sh -config -mode=o paraview -- ParaView_VERSION=$pv ParaView_QT=$qt)
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -127,10 +127,16 @@ then
|
||||
#OBSOLETE? export PYTHONPATH=$PYTHONPATH:${PYTHONPATH:+:}$pvPython:$pvLibDir
|
||||
#OBSOLETE? fi
|
||||
|
||||
# QT libraries as required
|
||||
# QT libraries as required, and Qt5_DIR for the root directory.
|
||||
# Another possibility: "qtpaths --qt-version"
|
||||
qtDir="$archDir/$ParaView_QT"
|
||||
if [ -d "$qtDir" ]
|
||||
then
|
||||
case "$ParaView_QT" in
|
||||
*-5*)
|
||||
export Qt5_DIR=$qtDir
|
||||
;;
|
||||
esac
|
||||
for qtLibDir in $qtDir/lib$WM_COMPILER_LIB_ARCH $qtDir/lib
|
||||
do
|
||||
if [ -d "$qtLibDir" ]
|
||||
|
||||
@ -97,7 +97,6 @@ then
|
||||
unset OPAL_PREFIX
|
||||
fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Unset Ensight/ParaView-related environment variables
|
||||
|
||||
@ -108,6 +107,12 @@ unset ParaView_VERSION
|
||||
unset PV_PLUGIN_PATH
|
||||
unset VTK_DIR
|
||||
|
||||
# Undefine Qt5_DIR if set to one of the paths on foamOldDirs
|
||||
if [ -z "$($foamClean -env=Qt5_DIR "$foamOldDirs")" ]
|
||||
then
|
||||
unset Qt5_DIR
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Unset other ThirdParty environment variables
|
||||
|
||||
|
||||
@ -39,8 +39,8 @@ InfoSwitches
|
||||
writeDictionaries 0;
|
||||
writeOptionalEntries 0;
|
||||
|
||||
// Write lagrangian "positions" file in v1706 format (at earlier)
|
||||
writeLagrangianPositions 0;
|
||||
// Write lagrangian "positions" file in v1706 format (and earlier)
|
||||
writeLagrangianPositions 1;
|
||||
|
||||
// Report hosts used (parallel)
|
||||
// - 0 = none
|
||||
|
||||
Reference in New Issue
Block a user