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
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef fvMeshAdder_H
00038 #define fvMeshAdder_H
00039
00040 #include <dynamicMesh/polyMeshAdder.H>
00041 #include <finiteVolume/fvPatchFieldsFwd.H>
00042 #include <finiteVolume/fvsPatchFieldsFwd.H>
00043 #include <finiteVolume/fvPatchFieldMapper.H>
00044
00045
00046
00047 namespace Foam
00048 {
00049
00050
00051 class IOobject;
00052 class faceCoupleInfo;
00053 class IOobjectList;
00054 class fvMesh;
00055 class volMesh;
00056 class surfaceMesh;
00057 class mapAddedPolyMesh;
00058
00059
00060
00061
00062
00063 class fvMeshAdder
00064 :
00065 public polyMeshAdder
00066 {
00067
00068 private:
00069
00070
00071
00072
00073 class directFvPatchFieldMapper
00074 :
00075 public fvPatchFieldMapper
00076 {
00077
00078
00079 const labelList& directAddressing_;
00080
00081 public:
00082
00083
00084
00085
00086 directFvPatchFieldMapper(const labelList& directAddressing)
00087 :
00088 fvPatchFieldMapper(),
00089 directAddressing_(directAddressing)
00090 {}
00091
00092
00093
00094
00095 virtual ~directFvPatchFieldMapper()
00096 {}
00097
00098
00099
00100
00101 label size() const
00102 {
00103 return directAddressing_.size();
00104 }
00105
00106 bool direct() const
00107 {
00108 return true;
00109 }
00110
00111 const unallocLabelList& directAddressing() const
00112 {
00113 return directAddressing_;
00114 }
00115 };
00116
00117
00118
00119
00120
00121
00122 static labelList calcPatchMap
00123 (
00124 const label oldStart,
00125 const label oldSize,
00126 const labelList& oldToNew,
00127 const polyPatch& newPatch,
00128 const label unmappedIndex
00129 );
00130
00131
00132 template<class Type>
00133 static void map
00134 (
00135 const Field<Type>&,
00136 const labelList& map,
00137 Field<Type>&
00138 );
00139
00140
00141 template<class Type>
00142 static void MapVolField
00143 (
00144 const mapAddedPolyMesh& meshMap,
00145
00146 GeometricField<Type, fvPatchField, volMesh>& fld,
00147 const GeometricField<Type, fvPatchField, volMesh>& fldToAdd
00148 );
00149
00150
00151 template<class Type>
00152 static void MapSurfaceField
00153 (
00154 const mapAddedPolyMesh& meshMap,
00155
00156 GeometricField<Type, fvsPatchField, surfaceMesh>& fld,
00157 const GeometricField<Type, fvsPatchField, surfaceMesh>& fldToAdd
00158 );
00159
00160 public:
00161
00162
00163
00164
00165 static autoPtr<mapAddedPolyMesh> add
00166 (
00167 fvMesh& mesh0,
00168 const fvMesh& mesh1,
00169 const faceCoupleInfo& coupleInfo,
00170 const bool validBoundary = true
00171 );
00172
00173
00174 template<class Type>
00175 static void MapVolFields
00176 (
00177 const mapAddedPolyMesh&,
00178 const fvMesh& mesh,
00179 const fvMesh& meshToAdd
00180 );
00181
00182
00183 template<class Type>
00184 static void MapSurfaceFields
00185 (
00186 const mapAddedPolyMesh&,
00187 const fvMesh& mesh,
00188 const fvMesh& meshToAdd
00189 );
00190 };
00191
00192
00193
00194
00195 }
00196
00197
00198
00199 #ifdef NoRepository
00200 # include <dynamicMesh/fvMeshAdderTemplates.C>
00201 #endif
00202
00203
00204
00205 #endif
00206
00207