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 "sampledIsoSurface.H"
00027 #include <finiteVolume/volFieldsFwd.H>
00028 #include <OpenFOAM/pointFields.H>
00029 #include <finiteVolume/volPointInterpolation.H>
00030
00031
00032
00033 template <class Type>
00034 Foam::tmp<Foam::Field<Type> >
00035 Foam::sampledIsoSurface::sampleField
00036 (
00037 const GeometricField<Type, fvPatchField, volMesh>& vField
00038 ) const
00039 {
00040
00041 updateGeometry();
00042
00043 return tmp<Field<Type> >(new Field<Type>(vField, surface().meshCells()));
00044 }
00045
00046
00047 template <class Type>
00048 Foam::tmp<Foam::Field<Type> >
00049 Foam::sampledIsoSurface::interpolateField
00050 (
00051 const interpolation<Type>& interpolator
00052 ) const
00053 {
00054
00055 const GeometricField<Type, fvPatchField, volMesh>& volFld =
00056 interpolator.psi();
00057
00058
00059 updateGeometry();
00060
00061 if (subMeshPtr_.valid())
00062 {
00063 tmp<GeometricField<Type, fvPatchField, volMesh> > tvolSubFld =
00064 subMeshPtr_().interpolate(volFld);
00065
00066 const GeometricField<Type, fvPatchField, volMesh>& volSubFld =
00067 tvolSubFld();
00068
00069 tmp<GeometricField<Type, pointPatchField, pointMesh> > tpointSubFld =
00070 volPointInterpolation::New(volSubFld.mesh()).interpolate(volSubFld);
00071
00072
00073 return surface().interpolate(volSubFld, tpointSubFld());
00074 }
00075 else
00076 {
00077 tmp<GeometricField<Type, pointPatchField, pointMesh> > tpointFld =
00078 volPointInterpolation::New(volFld.mesh()).interpolate(volFld);
00079
00080
00081 return surface().interpolate(volFld, tpointFld());
00082 }
00083 }
00084
00085
00086