openfoam/applications/utilities/postProcessing/sampling/sample/sample.C
2008-06-25 15:01:46 +02:00

130 lines
4.5 KiB
C

/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2008 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
Description
Sample field data with a choice of interpolation schemes, sampling options
and write formats.
Keywords:
setFormat: set output format, choice of
xmgr
jplot
gnuplot
raw
surfaceFormat: surface output format, choice of
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'.
stl : ascii stl. Does not contain values!
interpolationScheme: interpolation scheme, choice of
cell : use cell-centre value; constant over cells (default)
cellPoint : use cell-centre and vertex values
cellPointFace : use cell-centre, vertex and face values.
1] vertex values determined from neighbouring cell-centre values
2] face values determined using the current face interpolation scheme
for the field (linear, limitedLinear, etc.)
fields: list of fields to sample
sets: list of sets to sample, 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
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
surfaces: list of surfaces to sample, choice of
plane : values on plane defined by point, normal.
patch : values on patch.
Runs in parallel.
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "timeSelector.H"
#include "IOsampledSets.H"
#include "IOsampledSurfaces.H"
using namespace Foam;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Main program:
int main(int argc, char *argv[])
{
timeSelector::addOptions();
# include "setRootCase.H"
# include "createTime.H"
instantList timeDirs = timeSelector::select0(runTime, args);
# include "createMesh.H"
IOsampledSets sSets(mesh, "sampleDict", true);
IOsampledSurfaces sSurfaces(mesh, "sampleDict", true);
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);
sSurfaces.readUpdate(state);
sSets.write();
sSurfaces.write();
Info<< endl;
}
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //