Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "sampledIsoSurfaceCell.H"
00027 #include "isoSurface.H"
00028 #include <finiteVolume/volFieldsFwd.H>
00029 #include <OpenFOAM/pointFields.H>
00030 #include <finiteVolume/volPointInterpolation.H>
00031
00032
00033
00034 template <class Type>
00035 Foam::tmp<Foam::Field<Type> >
00036 Foam::sampledIsoSurfaceCell::sampleField
00037 (
00038 const GeometricField<Type, fvPatchField, volMesh>& vField
00039 ) const
00040 {
00041
00042 updateGeometry();
00043
00044 return tmp<Field<Type> >(new Field<Type>(vField, meshCells_));
00045 }
00046
00047
00048 template <class Type>
00049 Foam::tmp<Foam::Field<Type> >
00050 Foam::sampledIsoSurfaceCell::interpolateField
00051 (
00052 const interpolation<Type>& interpolator
00053 ) const
00054 {
00055
00056 updateGeometry();
00057
00058
00059 tmp<Field<Type> > tvalues(new Field<Type>(points().size()));
00060 Field<Type>& values = tvalues();
00061
00062 boolList pointDone(points().size(), false);
00063
00064 forAll(faces(), cutFaceI)
00065 {
00066 const face& f = faces()[cutFaceI];
00067
00068 forAll(f, faceVertI)
00069 {
00070 label pointI = f[faceVertI];
00071
00072 if (!pointDone[pointI])
00073 {
00074 values[pointI] = interpolator.interpolate
00075 (
00076 points()[pointI],
00077 meshCells_[cutFaceI]
00078 );
00079 pointDone[pointI] = true;
00080 }
00081 }
00082 }
00083
00084 return tvalues;
00085 }
00086
00087
00088