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 MapConsistentVolFields_H
00027 #define MapConsistentVolFields_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 MapConsistentVolFields
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 Info<< " interpolating " << fieldIter()->name()
00063 << endl;
00064
00065
00066 GeometricField<Type, fvPatchField, volMesh> fieldSource
00067 (
00068 *fieldIter(),
00069 meshSource
00070 );
00071
00072 IOobject fieldTargetIOobject
00073 (
00074 fieldIter()->name(),
00075 meshTarget.time().timeName(),
00076 meshTarget,
00077 IOobject::MUST_READ,
00078 IOobject::AUTO_WRITE
00079 );
00080
00081 if (fieldTargetIOobject.headerOk())
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 else
00102 {
00103 fieldTargetIOobject.readOpt() = IOobject::NO_READ;
00104
00105
00106 GeometricField<Type, fvPatchField, volMesh> fieldTarget
00107 (
00108 fieldTargetIOobject,
00109 meshToMeshInterp.interpolate
00110 (
00111 fieldSource,
00112 meshToMesh::INTERPOLATE
00113 )
00114 );
00115
00116
00117 fieldTarget.write();
00118 }
00119 }
00120 }
00121
00122
00123
00124
00125 }
00126
00127
00128
00129 #endif
00130
00131