fvMeshAdderTemplates.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
6  \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "volFields.H"
27 #include "surfaceFields.H"
28 #include "emptyFvPatchField.H"
30 
31 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
32 
33 template<class Type>
35 (
36  const mapAddedPolyMesh& meshMap,
37 
40 )
41 {
42  const fvMesh& mesh = fld.mesh();
43 
44  // Internal field
45  // ~~~~~~~~~~~~~~
46 
47  {
48  // Store old internal field
49  Field<Type> oldInternalField(fld.internalField());
50 
51  // Modify internal field
52  Field<Type>& intFld = fld.internalField();
53 
54  intFld.setSize(mesh.nCells());
55 
56  intFld.rmap(oldInternalField, meshMap.oldCellMap());
57  intFld.rmap(fldToAdd.internalField(), meshMap.addedCellMap());
58  }
59 
60 
61  // Patch fields from old mesh
62  // ~~~~~~~~~~~~~~~~~~~~~~~~~~
63 
65  GeometricBoundaryField& bfld = fld.boundaryField();
66 
67  {
68  const labelList& oldPatchMap = meshMap.oldPatchMap();
69  const labelList& oldPatchStarts = meshMap.oldPatchStarts();
70  const labelList& oldPatchSizes = meshMap.oldPatchSizes();
71 
72  // Reorder old patches in order of new ones. Put removed patches at end.
73 
74  label unusedPatchI = 0;
75 
76  forAll(oldPatchMap, patchI)
77  {
78  label newPatchI = oldPatchMap[patchI];
79 
80  if (newPatchI != -1)
81  {
82  unusedPatchI++;
83  }
84  }
85 
86  label nUsedPatches = unusedPatchI;
87 
88  // Reorder list for patchFields
89  labelList oldToNew(oldPatchMap.size());
90 
91  forAll(oldPatchMap, patchI)
92  {
93  label newPatchI = oldPatchMap[patchI];
94 
95  if (newPatchI != -1)
96  {
97  oldToNew[patchI] = newPatchI;
98  }
99  else
100  {
101  oldToNew[patchI] = unusedPatchI++;
102  }
103  }
104 
105 
106  // Sort deleted ones last so is now in newPatch ordering
107  bfld.reorder(oldToNew);
108  // Extend to covers all patches
109  bfld.setSize(mesh.boundaryMesh().size());
110  // Delete unused patches
111  for
112  (
113  label newPatchI = nUsedPatches;
114  newPatchI < bfld.size();
115  newPatchI++
116  )
117  {
118  bfld.set(newPatchI, NULL);
119  }
120 
121 
122  // Map old values
123  // ~~~~~~~~~~~~~~
124 
125  forAll(oldPatchMap, patchI)
126  {
127  label newPatchI = oldPatchMap[patchI];
128 
129  if (newPatchI != -1)
130  {
131  labelList newToOld
132  (
133  calcPatchMap
134  (
135  oldPatchStarts[patchI],
136  oldPatchSizes[patchI],
137  meshMap.oldFaceMap(),
138  mesh.boundaryMesh()[newPatchI],
139  -1 // unmapped value
140  )
141  );
142 
143  directFvPatchFieldMapper patchMapper(newToOld);
144 
145 
146  // Create new patchField with same type as existing one.
147  // Note:
148  // - boundaryField already in new order so access with newPatchI
149  // - fld.boundaryField()[newPatchI] both used for type and old
150  // value
151  // - hope that field mapping allows aliasing since old and new
152  // are same memory!
153  bfld.set
154  (
155  newPatchI,
157  (
158  bfld[newPatchI], // old field
159  mesh.boundary()[newPatchI], // new fvPatch
160  fld.dimensionedInternalField(), // new internal field
161  patchMapper // mapper (new to old)
162  )
163  );
164  }
165  }
166  }
167 
168 
169 
170  // Patch fields from added mesh
171  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
172 
173  {
174  const labelList& addedPatchMap = meshMap.addedPatchMap();
175 
176  // Add addedMesh patches
177  forAll(addedPatchMap, patchI)
178  {
179  label newPatchI = addedPatchMap[patchI];
180 
181  if (newPatchI != -1)
182  {
183  const polyPatch& newPatch = mesh.boundaryMesh()[newPatchI];
184  const polyPatch& oldPatch =
185  fldToAdd.mesh().boundaryMesh()[patchI];
186 
187  if (!bfld(newPatchI))
188  {
189  // First occurrence of newPatchI. Map from existing
190  // patchField
191 
192  // From new patch faces to patch faces on added mesh.
193  labelList newToAdded
194  (
195  calcPatchMap
196  (
197  oldPatch.start(),
198  oldPatch.size(),
199  meshMap.addedFaceMap(),
200  newPatch,
201  -1 // unmapped values
202  )
203  );
204 
205  directFvPatchFieldMapper patchMapper(newToAdded);
206 
207  bfld.set
208  (
209  newPatchI,
211  (
212  fldToAdd.boundaryField()[patchI], // added field
213  mesh.boundary()[newPatchI], // new fvPatch
214  fld.dimensionedInternalField(), // new int. field
215  patchMapper // mapper
216  )
217  );
218  }
219  else
220  {
221  // PatchField will have correct size already. Just slot in
222  // my elements.
223 
224  labelList addedToNew(oldPatch.size(), -1);
225  forAll(addedToNew, i)
226  {
227  label addedFaceI = oldPatch.start()+i;
228  label newFaceI = meshMap.addedFaceMap()[addedFaceI];
229  label patchFaceI = newFaceI-newPatch.start();
230  if (patchFaceI >= 0 && patchFaceI < newPatch.size())
231  {
232  addedToNew[i] = patchFaceI;
233  }
234  }
235 
236  bfld[newPatchI].rmap
237  (
238  fldToAdd.boundaryField()[patchI],
239  addedToNew
240  );
241  }
242  }
243  }
244  }
245 }
246 
247 
248 template<class Type>
250 (
251  const mapAddedPolyMesh& meshMap,
252  const fvMesh& mesh,
253  const fvMesh& meshToAdd
254 )
255 {
257  (
258  mesh.objectRegistry::lookupClass
260  ()
261  );
262 
264  (
265  meshToAdd.objectRegistry::lookupClass
267  ()
268  );
269 
270  // It is necessary to enforce that all old-time fields are stored
271  // before the mapping is performed. Otherwise, if the
272  // old-time-level field is mapped before the field itself, sizes
273  // will not match.
274 
275  for
276  (
278  iterator fieldIter = fields.begin();
279  fieldIter != fields.end();
280  ++fieldIter
281  )
282  {
283  if (debug)
284  {
285  Pout<< "MapVolFields : Storing old time for " << fieldIter()->name()
286  << endl;
287  }
288 
289  const_cast<GeometricField<Type, fvPatchField, volMesh>*>(fieldIter())
290  ->storeOldTimes();
291  }
292 
293 
294  for
295  (
297  iterator fieldIter = fields.begin();
298  fieldIter != fields.end();
299  ++fieldIter
300  )
301  {
304  (
305  *fieldIter()
306  );
307 
308  if (fieldsToAdd.found(fld.name()))
309  {
311  *fieldsToAdd[fld.name()];
312 
313  if (debug)
314  {
315  Pout<< "MapVolFields : mapping " << fld.name()
316  << " and " << fldToAdd.name() << endl;
317  }
318 
319  MapVolField<Type>(meshMap, fld, fldToAdd);
320  }
321  else
322  {
324  << "Not mapping field " << fld.name()
325  << " since not present on mesh to add"
326  << endl;
327  }
328  }
329 }
330 
331 
332 template<class Type>
334 (
335  const mapAddedPolyMesh& meshMap,
336 
339 )
340 {
341  const fvMesh& mesh = fld.mesh();
342  const labelList& oldPatchStarts = meshMap.oldPatchStarts();
343 
345  GeometricBoundaryField& bfld = fld.boundaryField();
346 
347  // Internal field
348  // ~~~~~~~~~~~~~~
349 
350  // Store old internal field
351  {
352  Field<Type> oldField(fld);
353 
354  // Modify internal field
355  Field<Type>& intFld = fld.internalField();
356 
357  intFld.setSize(mesh.nInternalFaces());
358 
359  intFld.rmap(oldField, meshMap.oldFaceMap());
360  intFld.rmap(fldToAdd, meshMap.addedFaceMap());
361 
362 
363  // Faces that were boundary faces but are not anymore.
364  // Use owner value (so lowest numbered cell, i.e. from 'old' not 'added'
365  // mesh)
366  forAll(bfld, patchI)
367  {
368  const fvsPatchField<Type>& pf = bfld[patchI];
369 
370  label start = oldPatchStarts[patchI];
371 
372  forAll(pf, i)
373  {
374  label newFaceI = meshMap.oldFaceMap()[start + i];
375 
376  if (newFaceI >= 0 && newFaceI < mesh.nInternalFaces())
377  {
378  intFld[newFaceI] = pf[i];
379  }
380  }
381  }
382  }
383 
384 
385  // Patch fields from old mesh
386  // ~~~~~~~~~~~~~~~~~~~~~~~~~~
387 
388  {
389  const labelList& oldPatchMap = meshMap.oldPatchMap();
390  const labelList& oldPatchSizes = meshMap.oldPatchSizes();
391 
392  // Reorder old patches in order of new ones. Put removed patches at end.
393 
394  label unusedPatchI = 0;
395 
396  forAll(oldPatchMap, patchI)
397  {
398  label newPatchI = oldPatchMap[patchI];
399 
400  if (newPatchI != -1)
401  {
402  unusedPatchI++;
403  }
404  }
405 
406  label nUsedPatches = unusedPatchI;
407 
408  // Reorder list for patchFields
409  labelList oldToNew(oldPatchMap.size());
410 
411  forAll(oldPatchMap, patchI)
412  {
413  label newPatchI = oldPatchMap[patchI];
414 
415  if (newPatchI != -1)
416  {
417  oldToNew[patchI] = newPatchI;
418  }
419  else
420  {
421  oldToNew[patchI] = unusedPatchI++;
422  }
423  }
424 
425 
426  // Sort deleted ones last so is now in newPatch ordering
427  bfld.reorder(oldToNew);
428  // Extend to covers all patches
429  bfld.setSize(mesh.boundaryMesh().size());
430  // Delete unused patches
431  for
432  (
433  label newPatchI = nUsedPatches;
434  newPatchI < bfld.size();
435  newPatchI++
436  )
437  {
438  bfld.set(newPatchI, NULL);
439  }
440 
441 
442  // Map old values
443  // ~~~~~~~~~~~~~~
444 
445  forAll(oldPatchMap, patchI)
446  {
447  label newPatchI = oldPatchMap[patchI];
448 
449  if (newPatchI != -1)
450  {
451  labelList newToOld
452  (
453  calcPatchMap
454  (
455  oldPatchStarts[patchI],
456  oldPatchSizes[patchI],
457  meshMap.oldFaceMap(),
458  mesh.boundaryMesh()[newPatchI],
459  -1 // unmapped value
460  )
461  );
462 
463  directFvPatchFieldMapper patchMapper(newToOld);
464 
465  // Create new patchField with same type as existing one.
466  // Note:
467  // - boundaryField already in new order so access with newPatchI
468  // - bfld[newPatchI] both used for type and old
469  // value
470  // - hope that field mapping allows aliasing since old and new
471  // are same memory!
472  bfld.set
473  (
474  newPatchI,
476  (
477  bfld[newPatchI], // old field
478  mesh.boundary()[newPatchI], // new fvPatch
479  fld.dimensionedInternalField(), // new internal field
480  patchMapper // mapper (new to old)
481  )
482  );
483  }
484  }
485  }
486 
487 
488 
489  // Patch fields from added mesh
490  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
491 
492  {
493  const labelList& addedPatchMap = meshMap.addedPatchMap();
494 
495  // Add addedMesh patches
496  forAll(addedPatchMap, patchI)
497  {
498  label newPatchI = addedPatchMap[patchI];
499 
500  if (newPatchI != -1)
501  {
502  const polyPatch& newPatch = mesh.boundaryMesh()[newPatchI];
503  const polyPatch& oldPatch =
504  fldToAdd.mesh().boundaryMesh()[patchI];
505 
506  if (!bfld(newPatchI))
507  {
508  // First occurrence of newPatchI. Map from existing
509  // patchField
510 
511  // From new patch faces to patch faces on added mesh.
512  labelList newToAdded
513  (
514  calcPatchMap
515  (
516  oldPatch.start(),
517  oldPatch.size(),
518  meshMap.addedFaceMap(),
519  newPatch,
520  -1 // unmapped values
521  )
522  );
523 
524  directFvPatchFieldMapper patchMapper(newToAdded);
525 
526  bfld.set
527  (
528  newPatchI,
530  (
531  fldToAdd.boundaryField()[patchI],// added field
532  mesh.boundary()[newPatchI], // new fvPatch
533  fld.dimensionedInternalField(), // new int. field
534  patchMapper // mapper
535  )
536  );
537  }
538  else
539  {
540  // PatchField will have correct size already. Just slot in
541  // my elements.
542 
543  labelList addedToNew(oldPatch.size(), -1);
544  forAll(addedToNew, i)
545  {
546  label addedFaceI = oldPatch.start()+i;
547  label newFaceI = meshMap.addedFaceMap()[addedFaceI];
548  label patchFaceI = newFaceI-newPatch.start();
549  if (patchFaceI >= 0 && patchFaceI < newPatch.size())
550  {
551  addedToNew[i] = patchFaceI;
552  }
553  }
554 
555  bfld[newPatchI].rmap
556  (
557  fldToAdd.boundaryField()[patchI],
558  addedToNew
559  );
560  }
561  }
562  }
563  }
564 }
565 
566 
567 template<class Type>
569 (
570  const mapAddedPolyMesh& meshMap,
571  const fvMesh& mesh,
572  const fvMesh& meshToAdd
573 )
574 {
576 
578  (
579  mesh.objectRegistry::lookupClass<fldType>()
580  );
581 
582  HashTable<const fldType*> fieldsToAdd
583  (
584  meshToAdd.objectRegistry::lookupClass<fldType>()
585  );
586 
587  // It is necessary to enforce that all old-time fields are stored
588  // before the mapping is performed. Otherwise, if the
589  // old-time-level field is mapped before the field itself, sizes
590  // will not match.
591 
592  for
593  (
594  typename HashTable<const fldType*>::
595  iterator fieldIter = fields.begin();
596  fieldIter != fields.end();
597  ++fieldIter
598  )
599  {
600  if (debug)
601  {
602  Pout<< "MapSurfaceFields : Storing old time for "
603  << fieldIter()->name() << endl;
604  }
605 
606  const_cast<fldType*>(fieldIter())->storeOldTimes();
607  }
608 
609 
610  for
611  (
612  typename HashTable<const fldType*>::
613  iterator fieldIter = fields.begin();
614  fieldIter != fields.end();
615  ++fieldIter
616  )
617  {
618  fldType& fld = const_cast<fldType&>(*fieldIter());
619 
620  if (fieldsToAdd.found(fld.name()))
621  {
622  const fldType& fldToAdd = *fieldsToAdd[fld.name()];
623 
624  if (debug)
625  {
626  Pout<< "MapSurfaceFields : mapping " << fld.name()
627  << " and " << fldToAdd.name() << endl;
628  }
629 
630  MapSurfaceField<Type>(meshMap, fld, fldToAdd);
631  }
632  else
633  {
635  << "Not mapping field " << fld.name()
636  << " since not present on mesh to add"
637  << endl;
638  }
639  }
640 }
641 
642 
643 template<class Type>
645 (
646  const mapAddedPolyMesh& meshMap,
647 
649  const DimensionedField<Type, volMesh>& fldToAdd
650 )
651 {
652  const fvMesh& mesh = fld.mesh();
653 
654  // Store old field
655  Field<Type> oldField(fld);
656 
657  fld.setSize(mesh.nCells());
658 
659  fld.rmap(oldField, meshMap.oldCellMap());
660  fld.rmap(fldToAdd, meshMap.addedCellMap());
661 }
662 
663 
664 template<class Type>
666 (
667  const mapAddedPolyMesh& meshMap,
668  const fvMesh& mesh,
669  const fvMesh& meshToAdd
670 )
671 {
672  typedef DimensionedField<Type, volMesh> fldType;
673 
674  // Note: use strict flag on lookupClass to avoid picking up
675  // volFields
677  (
678  mesh.objectRegistry::lookupClass<fldType>(true)
679  );
680 
681  HashTable<const fldType*> fieldsToAdd
682  (
683  meshToAdd.objectRegistry::lookupClass<fldType>(true)
684  );
685 
686  for
687  (
688  typename HashTable<const fldType*>::
689  iterator fieldIter = fields.begin();
690  fieldIter != fields.end();
691  ++fieldIter
692  )
693  {
694  fldType& fld = const_cast<fldType&>(*fieldIter());
695 
696  if (fieldsToAdd.found(fld.name()))
697  {
698  const fldType& fldToAdd = *fieldsToAdd[fld.name()];
699 
700  if (debug)
701  {
702  Pout<< "MapDimFields : mapping " << fld.name()
703  << " and " << fldToAdd.name() << endl;
704  }
705 
706  MapDimField<Type>(meshMap, fld, fldToAdd);
707  }
708  else
709  {
711  << "Not mapping field " << fld.name()
712  << " since not present on mesh to add"
713  << endl;
714  }
715  }
716 }
717 
718 
719 // ************************************************************************* //
Foam::fvPatchField
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
Definition: fvPatchField.H:65
volFields.H
Foam::mapAddedPolyMesh::oldPatchStarts
const labelList & oldPatchStarts() const
Return list of the old patch start labels.
Definition: mapAddedPolyMesh.H:176
Foam::mapAddedPolyMesh::addedCellMap
const labelList & addedCellMap() const
Definition: mapAddedPolyMesh.H:214
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: UList.H:406
fields
Info<< "Creating field dpdt\n"<< endl;volScalarField dpdt(IOobject("dpdt", runTime.timeName(), mesh), mesh, dimensionedScalar("dpdt", p.dimensions()/dimTime, 0));Info<< "Creating field kinetic energy K\n"<< endl;volScalarField K("K", 0.5 *magSqr(U));volScalarField p_rgh(IOobject("p_rgh", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE), mesh);p_rgh=p - rho *gh;mesh.setFluxRequired(p_rgh.name());multivariateSurfaceInterpolationScheme< scalar >::fieldTable fields
Definition: createFields.H:127
Foam::fvsPatchField< Type >
Foam::GeometricField::boundaryField
GeometricBoundaryField & boundaryField()
Return reference to GeometricBoundaryField.
Definition: GeometricField.C:735
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:251
surfaceFields.H
Foam::surfaceFields.
Foam::mapAddedPolyMesh::addedFaceMap
const labelList & addedFaceMap() const
Definition: mapAddedPolyMesh.H:210
Foam::label
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
Foam::Field< Type >
Foam::polyPatch
A patch is a list of labels that address the faces in the global face list.
Definition: polyPatch.H:66
Foam::OSstream::name
virtual const fileName & name() const
Return the name of the stream.
Definition: OSstream.H:88
Foam::fvMeshAdder::MapVolFields
static void MapVolFields(const mapAddedPolyMesh &, const fvMesh &mesh, const fvMesh &meshToAdd)
Map all volFields of Type.
Definition: fvMeshAdderTemplates.C:250
Foam::GeometricField::internalField
InternalField & internalField()
Return internal field.
Definition: GeometricField.C:724
directFvPatchFieldMapper.H
Foam::fvMeshAdder::MapSurfaceField
static void MapSurfaceField(const mapAddedPolyMesh &meshMap, GeometricField< Type, fvsPatchField, surfaceMesh > &fld, const GeometricField< Type, fvsPatchField, surfaceMesh > &fldToAdd)
Update single surfaceField.
Definition: fvMeshAdderTemplates.C:334
Foam::Field::rmap
void rmap(const UList< Type > &mapF, const labelUList &mapAddressing)
1 to 1 reverse-map from the given field
Definition: Field.C:571
Foam::mapAddedPolyMesh::oldCellMap
const labelList & oldCellMap() const
Definition: mapAddedPolyMesh.H:157
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:18
fld
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< ' ';}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< ' ';}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< ' ';}gmvFile<< nl;forAll(lagrangianScalarNames, i){ const word &name=lagrangianScalarNames[i];IOField< scalar > fld(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
Foam::HashTable::found
bool found(const Key &) const
Return true if hashedEntry is found in table.
Definition: HashTable.C:109
Foam::fvMesh
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:78
Foam::polyPatch::start
label start() const
Return start label of this patch in the polyMesh face list.
Definition: polyPatch.H:312
Foam::mapAddedPolyMesh::oldFaceMap
const labelList & oldFaceMap() const
Definition: mapAddedPolyMesh.H:153
Foam::mapAddedPolyMesh::addedPatchMap
const labelList & addedPatchMap() const
From added mesh patch index to new patch index or -1 if.
Definition: mapAddedPolyMesh.H:221
Foam::HashTable
An STL-conforming hash table.
Definition: HashTable.H:61
Foam::fvMeshAdder::MapDimField
static void MapDimField(const mapAddedPolyMesh &meshMap, DimensionedField< Type, volMesh > &fld, const DimensionedField< Type, volMesh > &fldToAdd)
Update single dimensionedField.
Definition: fvMeshAdderTemplates.C:645
emptyFvPatchField.H
Foam::Pout
prefixOSstream Pout(cout, "Pout")
Definition: IOstreams.H:53
Foam::List
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: HashTable.H:59
Foam::mapAddedPolyMesh::oldPatchSizes
const labelList & oldPatchSizes() const
Return list of the old patch sizes.
Definition: mapAddedPolyMesh.H:170
Foam::fvMeshAdder::MapDimFields
static void MapDimFields(const mapAddedPolyMesh &, const fvMesh &mesh, const fvMesh &meshToAdd)
Map all DimensionedFields of Type.
Definition: fvMeshAdderTemplates.C:666
Foam::fvMeshAdder::MapVolField
static void MapVolField(const mapAddedPolyMesh &meshMap, GeometricField< Type, fvPatchField, volMesh > &fld, const GeometricField< Type, fvPatchField, volMesh > &fldToAdd)
Update single volField.
Definition: fvMeshAdderTemplates.C:35
Foam::directFvPatchFieldMapper
direct fvPatchFieldMapper
Definition: directFvPatchFieldMapper.H:45
Foam::List::size
void size(const label)
Override size to be inconsistent with allocated storage.
Foam::mapAddedPolyMesh
Class containing mesh-to-mesh mapping information after a mesh addition where we add a mesh ('added m...
Definition: mapAddedPolyMesh.H:56
Foam::GeometricField
Generic GeometricField class.
Definition: surfaceFieldsFwd.H:52
WarningInFunction
#define WarningInFunction
Report a warning using Foam::Warning.
Definition: messageStream.H:259
Foam::mapAddedPolyMesh::oldPatchMap
const labelList & oldPatchMap() const
From old patch index to new patch index or -1 if patch.
Definition: mapAddedPolyMesh.H:164
Foam::DimensionedField
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Definition: DimensionedField.H:51
Foam::fvMeshAdder::MapSurfaceFields
static void MapSurfaceFields(const mapAddedPolyMesh &, const fvMesh &mesh, const fvMesh &meshToAdd)
Map all surfaceFields of Type.
Definition: fvMeshAdderTemplates.C:569