Skip to content
Snippets Groups Projects
Commit e9d69df1 authored by Henry Weller's avatar Henry Weller
Browse files

Utility sample: replaced by 'postProcess -func sample'

To re-use existing 'sampleDict' files simply add the following entries:

    type sets;
    libs ("libsampling.so");

and run

    postProcess -func sampleDict

It is probably better to also rename 'sampleDict' -> 'sample' and then run

    postProcess -func sampleDict
parent 6dd7046b
Branches
Tags
1 merge request!60Merge foundation
Showing
with 116 additions and 570 deletions
sample.C
EXE = $(FOAM_APPBIN)/sample
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/fileFormats/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/surfMesh/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lgenericPatchFields \
-lmeshTools \
-lfileFormats \
-lsampling \
-lsurfMesh \
-llagrangian
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ 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 3 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, see <http://www.gnu.org/licenses/>.
Application
sample
Description
Sample field data with a choice of interpolation schemes, sampling options
and write formats.
Keywords:
\param setFormat : set output format, choice of \n
- xmgr
- jplot
- gnuplot
- raw
\param surfaceFormat : surface output format, choice of \n
- null : suppress output
- foamFile : separate points, faces and values file
- dx : DX scalar or vector format
- vtk : VTK ascii format
- raw : x y z value format for use with e.g. gnuplot 'splot'.
- obj : Wavefron stl. Does not contain values!
- stl : ascii stl. Does not contain values!
\param interpolationScheme : interpolation scheme, choice of \n
- cell : use cell-centre value; constant over cells (default)
- cellPoint : use cell-centre and vertex values
- cellPointFace : use cell-centre, vertex and face values. \n
-# vertex values determined from neighbouring cell-centre values
-# face values determined using the current face interpolation scheme
for the field (linear, limitedLinear, etc.)
\param fields : list of fields to sample
\param sets : list of sets to sample, choice of \n
- uniform evenly distributed points on line
- face one point per face intersection
- midPoint one point per cell, inbetween two face intersections
- midPointAndFace combination of face and midPoint
- curve specified points, not nessecary on line, uses
tracking
- cloud specified points, uses findCell
Option axis: how to write point coordinate. Choice of
- x/y/z: x/y/z coordinate only
- xyz: three columns
(probably does not make sense for anything but raw)
- distance: distance from start of sampling line (if uses line)
or distance from first specified sampling point
Type specific options:
uniform, face, midPoint, midPointAndFace : start and end coordinate
uniform: extra number of sampling points
curve, cloud: list of coordinates
\param surfaces : list of surfaces to sample, choice of \n
- plane : values on plane defined by point, normal.
- patch : values on patch.
Notes
Runs in parallel
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "timeSelector.H"
#include "IOsampledSets.H"
#include "IOsampledSurfaces.H"
using namespace Foam;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
timeSelector::addOptions();
#include "addRegionOption.H"
#include "addDictOption.H"
#include "setRootCase.H"
#include "createTime.H"
instantList timeDirs = timeSelector::select0(runTime, args);
#include "createNamedMesh.H"
const word dictName("sampleDict");
autoPtr<IOsampledSets> sSetsPtr;
autoPtr<IOsampledSurfaces> sSurfsPtr;
if (args.optionFound("dict"))
{
// Construct from fileName
fileName dictPath = args["dict"];
if (isDir(dictPath))
{
dictPath = dictPath / dictName;
}
sSetsPtr.reset
(
new IOsampledSets
(
sampledSets::typeName,
mesh,
dictPath,
IOobject::MUST_READ_IF_MODIFIED,
true
)
);
// Note: both IOsampledSets and IOsampledSurfaces read the
// same dictionary. Unregister one to make sure no duplicates
// trying to register
sSetsPtr().checkOut();
sSurfsPtr.reset
(
new IOsampledSurfaces
(
sampledSurfaces::typeName,
mesh,
dictPath,
IOobject::MUST_READ_IF_MODIFIED,
true
)
);
}
else
{
// Construct from name in system() directory
sSetsPtr.reset
(
new IOsampledSets
(
sampledSets::typeName,
mesh,
dictName,
IOobject::MUST_READ_IF_MODIFIED,
true
)
);
sSetsPtr().checkOut();
sSurfsPtr.reset
(
new IOsampledSurfaces
(
sampledSurfaces::typeName,
mesh,
dictName,
IOobject::MUST_READ_IF_MODIFIED,
true
)
);
}
IOsampledSets& sSets = sSetsPtr();
IOsampledSurfaces& sSurfs = sSurfsPtr();
forAll(timeDirs, timeI)
{
runTime.setTime(timeDirs[timeI], timeI);
Info<< "Time = " << runTime.timeName() << endl;
// Handle geometry/topology changes
polyMesh::readUpdateState state = mesh.readUpdate();
sSets.readUpdate(state);
sSurfs.readUpdate(state);
sSets.write();
sSurfs.write();
Info<< endl;
}
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object sampleDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Set output format : choice of
// xmgr
// jplot
// gnuplot
// raw
// vtk
// ensight
// csv
setFormat raw;
// Surface output format. Choice of
// null : suppress output
// ensight : Ensight Gold format, one field per case file
// foamFile : separate points, faces and values file
// dx : DX scalar or vector format
// vtk : VTK ascii format
// raw : x y z value format for use with e.g. gnuplot 'splot'.
//
// Note:
// other formats such as obj, stl, etc can also be written (by proxy)
// but without any values!
surfaceFormat vtk;
// optionally define extra controls for the output formats
formatOptions
{
ensight
{
format ascii;
}
raw
{
compression uncompressed; // 'uncompressed' or 'compressed'
}
}
// interpolationScheme. choice of
// cell : use cell-centre value only; constant over cells
// (default)
// cellPoint : use cell-centre and vertex values
// cellPointFace : use cell-centre, vertex and face values.
// pointMVC : use point values only (Mean Value Coordinates)
// cellPatchConstrained : like 'cell' but uses cell-centre except on
// boundary faces where it uses the boundary value.
// For use with e.g. patchCloudSet.
// 1] vertex values determined from neighbouring cell-centre values
// 2] face values determined using the current face interpolation scheme
// for the field (linear, gamma, etc.)
interpolationScheme cellPoint;
// Fields to sample.
fields
(
p
U
);
// Set sampling definition: choice of
// uniform evenly distributed points on line
// face one point per face intersection
// midPoint one point per cell, inbetween two face intersections
// midPointAndFace combination of face and midPoint
//
// polyLine specified points, not nessecary on line, uses
// tracking
// cloud specified points, uses findCell
// triSurfaceMeshPointSet points of triSurface
//
// axis: how to write point coordinate. Choice of
// - x/y/z: x/y/z coordinate only
// - xyz: three columns
// (probably does not make sense for anything but raw)
// - distance: distance from start of sampling line (if uses line) or
// distance from first specified sampling point
//
// type specific:
// uniform, face, midPoint, midPointAndFace : start and end coordinate
// uniform: extra number of sampling points
// polyLine, cloud: list of coordinates
// patchCloud: list of coordinates and set of patches to look for nearest
// patchSeed: random sampling on set of patches. Points slightly off
// face centre.
sets
(
lineX1
{
type uniform;
axis distance;
//- cavity. Slightly perturbed so not to align with face or edge.
start (0.0201 0.05101 0.00501);
end (0.0601 0.05101 0.00501);
nPoints 10;
}
lineX2
{
type face;
axis x;
//- cavity
start (0.0001 0.0525 0.00501);
end (0.0999 0.0525 0.00501);
}
somePoints
{
type cloud;
axis xyz;
points ((0.049 0.049 0.00501)(0.051 0.049 0.00501));
}
somePatchPoints
{
// Sample nearest points on selected patches. Looks only up to
// maxDistance away. Any sampling point not found will get value
// pTraits<Type>::max (usually VGREAT)
// Use with interpolations:
// - cell (cell value)
// - cellPatchConstrained (boundary value)
// - cellPoint (interpolated boundary value)
type patchCloud;
axis xyz;
points ((0.049 0.099 0.005)(0.051 0.054 0.005));
maxDistance 0.1; // maximum distance to search
patches (".*Wall.*");
}
patchSeed
{
type patchSeed;
axis xyz;
patches (".*Wall.*");
// Number of points to seed. Divided amongst all processors according
// to fraction of patches they hold.
maxPoints 100;
}
);
// Surface sampling definition
//
// 1] patches are not triangulated by default
// 2] planes are always triangulated
// 3] iso-surfaces are always triangulated
surfaces
(
constantPlane
{
type plane; // always triangulated
basePoint (0.0501 0.0501 0.005);
normalVector (0.1 0.1 1);
//- Optional: restrict to a particular zone
// zone zone1;
//- Optional: do not triangulate (only for surfaceFormats that support
// polygons)
//triangulate false;
}
interpolatedPlane
{
type plane; // always triangulated
// Make plane relative to the coordinateSystem (Cartesian)
coordinateSystem
{
origin (0.0501 0.0501 0.005);
// Add a coordinate rotation
// (required, so here one that doesn't change anything)
coordinateRotation
{
type axesRotation;
e1 (1 0 0);
e2 (0 1 0);
}
}
basePoint (0 0 0);
normalVector (0.1 0.1 1);
interpolate true;
}
walls_constant
{
type patch;
patches ( ".*Wall.*" );
// Optional: whether to leave as faces (=default) or triangulate
// triangulate false;
}
walls_interpolated
{
type patch;
patches ( ".*Wall.*" );
interpolate true;
// Optional: whether to leave as faces (=default) or triangulate
// triangulate false;
}
nearWalls_interpolated
{
// Sample cell values off patch. Does not need to be the near-wall
// cell, can be arbitrarily far away.
type patchInternalField;
patches ( ".*Wall.*" );
interpolate true;
// Optional: specify how to obtain sampling points from the patch
// face centres (default is 'normal')
//
// //- Specify distance to offset in normal direction
offsetMode normal;
distance 0.1;
//
// //- Specify single uniform offset
// offsetMode uniform;
// offset (0 0 0.0001);
//
// //- Specify offset per patch face
// offsetMode nonuniform;
// offsets ((0 0 0.0001) (0 0 0.0002));
// Optional: whether to leave as faces (=default) or triangulate
// triangulate false;
}
interpolatedIso
{
// Iso surface for interpolated values only
type isoSurface; // always triangulated
isoField rho;
isoValue 0.5;
interpolate true;
//zone ABC; // Optional: zone only
//exposedPatchName fixedWalls; // Optional: zone only
// regularise false; // Optional: do not simplify
// mergeTol 1e-10; // Optional: fraction of mesh bounding box
// to merge points (default=1e-6)
}
constantIso
{
// Iso surface for constant values.
// Triangles guaranteed not to cross cells.
type isoSurfaceCell; // always triangulated
isoField rho;
isoValue 0.5;
interpolate false;
regularise false; // do not simplify
// mergeTol 1e-10; // Optional: fraction of mesh bounding box
// to merge points (default=1e-6)
}
triangleCut
{
// Cutingplane using iso surface
type cuttingPlane;
planeType pointAndNormal;
pointAndNormalDict
{
basePoint (0.4 0 0.4);
normalVector (1 0.2 0.2);
}
interpolate true;
//zone ABC; // Optional: zone only
//exposedPatchName fixedWalls; // Optional: zone only
// regularise false; // Optional: do not simplify
// mergeTol 1e-10; // Optional: fraction of mesh bounding box
// to merge points (default=1e-6)
}
distance
{
// Isosurface from signed/unsigned distance to surface
type distanceSurface;
signed true;
// Definition of surface
surfaceType triSurfaceMesh;
surfaceName integrationPlane.stl;
// Distance to surface
distance 0.0;
//cell false;// optional: use isoSurface instead
// of isoSurfaceCell
interpolate false;
regularise false; // Optional: do not simplify
// mergeTol 1e-10; // Optional: fraction of mesh bounding box
// to merge points (default=1e-6)
}
triSurfaceSampling
{
// Sampling on triSurface
type sampledTriSurfaceMesh;
surface integrationPlane.stl;
source boundaryFaces; // What to sample: cells (nearest cell)
// insideCells (only triangles inside cell)
// boundaryFaces (nearest boundary face)
interpolate true;
}
);
// *********************************************************************** //
......@@ -31,7 +31,7 @@
#------------------------------------------------------------------------------
echo "foamCalc has been superceded by the postProcess utility:"
echo "postProcess -help"
echo " postProcess -help"
postProcess -help
#------------------------------------------------------------------------------
......@@ -32,6 +32,6 @@
Script=${0##*/}
echo $Script "has been superceded by the postProcess utility:"
echo "postProcess -func '"$Script"(name=inlet,p)'"
echo " postProcess -func '"$Script"(name=inlet,p)'"
#------------------------------------------------------------------------------
......@@ -32,6 +32,6 @@
Script=${0##*/}
echo $Script "has been superceded by the postProcess utility:"
echo "postProcess -func '"$Script"(name=inlet,p)'"
echo " postProcess -func '"$Script"(name=inlet,p)'"
#------------------------------------------------------------------------------
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
# \\/ 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 3 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, see <http://www.gnu.org/licenses/>.
#
# Script
# probeLocations
#
# Description
# Script to suggest using the new "postProcess" utility.
#
#------------------------------------------------------------------------------
Script=${0##*/}
echo $Script "has been superceded by the postProcess utility:"
echo " postProcess -func probes"
echo "or"
echo " postProcess -func 'probes(p, U)'"
#------------------------------------------------------------------------------
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
# \\/ 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 3 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, see <http://www.gnu.org/licenses/>.
#
# Script
# probeLocations
#
# Description
# Script to suggest using the new "postProcess" utility.
#
#------------------------------------------------------------------------------
Script=${0##*/}
echo $Script "has been superceded by the postProcess utility:"
echo " postProcess -func $Script"
echo
echo "To re-use existing 'sampleDict' files simply add the following entries:"
echo " type sets;"
echo " libs (\"libsampling.so\");"
echo "and run"
echo " postProcess -func sampleDict"
#------------------------------------------------------------------------------
......@@ -32,6 +32,6 @@
Script=${0##*/}
echo $Script "has been superceded by the postProcess utility:"
echo "postProcess -func" $Script
echo " postProcess -func" $Script
#------------------------------------------------------------------------------
......@@ -233,7 +233,14 @@ bool Foam::functionObjectList::readFunctionObject
// Read the functionObject dictionary
IFstream fileStream(path);
dictionary funcsDict(fileStream);
dictionary& funcDict = funcsDict.subDict(funcName);
dictionary* funcDictPtr = &funcsDict;
if (funcsDict.found(funcName) && funcsDict.isDict(funcName))
{
funcDictPtr = &funcsDict.subDict(funcName);
}
dictionary& funcDict = *funcDictPtr;
// Insert the 'field' and/or 'fields' entry corresponding to the optional
// arguments or read the 'field' or 'fields' entry and add the required
......
......@@ -11,10 +11,13 @@ FoamFile
format ascii;
class dictionary;
location "system";
object sampleDict;
object sample;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
type sets;
libs ("libsampling.so");
interpolationScheme cellPointFace;
writeFormat raw;
......
......@@ -11,10 +11,13 @@ FoamFile
format ascii;
class dictionary;
location "system";
object sampleDict;
object sample;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
type sets;
libs ("libsampling.so");
interpolationScheme cellPointFace;
setFormat raw;
......
......@@ -11,10 +11,13 @@ FoamFile
format ascii;
class dictionary;
location "system";
object sampleDict;
object sample;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
type sets;
libs ("libsampling.so");
interpolationScheme cellPoint;
setFormat raw;
......
......@@ -9,6 +9,6 @@ application=`getApplication`
runApplication blockMesh
runApplication setFields
runApplication $application
runApplication sample
runApplication postProcess -func sample
#------------------------------------------------------------------------------
......@@ -11,10 +11,13 @@ FoamFile
format ascii;
class dictionary;
location "system";
object sampleDict;
object sample;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
type sets;
libs ("libsampling.so");
interpolationScheme cellPoint;
setFormat raw;
......
......@@ -9,6 +9,6 @@ application=`getApplication`
runApplication blockMesh
runApplication $application
runApplication sample
runApplication postProcess -func sample
#------------------------------------------------------------------------------
......@@ -15,6 +15,9 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
type sets;
libs ("libsampling.so");
interpolationScheme cellPoint;
setFormat raw;
......
......@@ -5,7 +5,6 @@ cd ${0%/*} || exit 1 # Run from this directory
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase
rm -rf sets
rm -f validation/*.eps
#------------------------------------------------------------------------------
......@@ -9,7 +9,7 @@ application=`getApplication`
runApplication blockMesh
runApplication $application
runApplication sample -latestTime
runApplication postProcess -latestTime -func sample
( cd validation && ./createGraphs )
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment