FreeFOAM The Cross-Platform CFD Toolkit
checkFaceAddressingComp.H
Go to the documentation of this file.
1 {
2  // Foam version 2.1 changes the addressing of faces in faceProcAddressing
3  // The following code checks and modifies the addressing for cases where
4  // the decomposition has been done with the foam2.0 and earlier tools, but
5  // the reconstruction is attempted with version 2.1 or later
6 
7  label minFaceIndex = labelMax;
8 
9  PtrList<labelIOList>& faceProcAddressing = procMeshes.faceProcAddressing();
10 
11  forAll (faceProcAddressing, procI)
12  {
13  const labelList& curFaceAddr = faceProcAddressing[procI];
14 
15  forAll (curFaceAddr, faceI)
16  {
17  if (mag(curFaceAddr[faceI]) < minFaceIndex)
18  {
19  minFaceIndex = mag(curFaceAddr[faceI]);
20  }
21  }
22  }
23 
24  if (minFaceIndex < 1)
25  {
27  << "parallel decomposition addressing." << endl
28  << "It looks like you are trying to reconstruct the case "
29  << "decomposed with an earlier version of FOAM, which could\n"
30  << "potentially cause compatibility problems. The code will "
31  << "attempt to update the addressing automatically; in case of\n"
32  << "failure, please repeat the decomposition of the case using "
33  << "the current version fo decomposePar"
34  << endl;
35 
36  forAll (faceProcAddressing, procI)
37  {
38  labelList& curFaceAddr = faceProcAddressing[procI];
39 
40  forAll (curFaceAddr, faceI)
41  {
42  curFaceAddr[faceI] += sign(curFaceAddr[faceI]);
43  }
44 
45  faceProcAddressing[procI].write();
46  }
47  }
48 }
49 
50 // ************************ vim: set sw=4 sts=4 et: ************************ //