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 #ifndef MapVolFields_H
00027 #define MapVolFields_H
00028
00029 #include <OpenFOAM/GeometricField.H>
00030 #include <sampling/meshToMesh.H>
00031 #include <OpenFOAM/IOobjectList.H>
00032
00033
00034
00035 namespace Foam
00036 {
00037
00038 template<class Type>
00039 void MapVolFields
00040 (
00041 const IOobjectList& objects,
00042 const meshToMesh& meshToMeshInterp
00043 )
00044 {
00045 const fvMesh& meshSource = meshToMeshInterp.fromMesh();
00046 const fvMesh& meshTarget = meshToMeshInterp.toMesh();
00047
00048 word fieldClassName
00049 (
00050 GeometricField<Type, fvPatchField, volMesh>::typeName
00051 );
00052
00053 IOobjectList fields = objects.lookupClass(fieldClassName);
00054
00055 for
00056 (
00057 IOobjectList::iterator fieldIter = fields.begin();
00058 fieldIter != fields.end();
00059 ++fieldIter
00060 )
00061 {
00062 IOobject fieldTargetIOobject
00063 (
00064 fieldIter()->name(),
00065 meshTarget.time().timeName(),
00066 meshTarget,
00067 IOobject::MUST_READ,
00068 IOobject::AUTO_WRITE
00069 );
00070
00071 if (fieldTargetIOobject.headerOk())
00072 {
00073 Info<< " interpolating " << fieldIter()->name()
00074 << endl;
00075
00076
00077 GeometricField<Type, fvPatchField, volMesh> fieldSource
00078 (
00079 *fieldIter(),
00080 meshSource
00081 );
00082
00083
00084 GeometricField<Type, fvPatchField, volMesh> fieldTarget
00085 (
00086 fieldTargetIOobject,
00087 meshTarget
00088 );
00089
00090
00091 meshToMeshInterp.interpolate
00092 (
00093 fieldTarget,
00094 fieldSource,
00095 meshToMesh::INTERPOLATE
00096 );
00097
00098
00099 fieldTarget.write();
00100 }
00101 }
00102 }
00103
00104
00105
00106
00107 }
00108
00109
00110
00111 #endif
00112
00113