1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
| // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * //
void Foam::reconstructLagrangianPositions
(
const polyMesh& mesh,
const word& cloudName,
const PtrList<fvMesh>& meshes,
const PtrList<labelIOList>& faceProcAddressing,
const PtrList<labelIOList>& cellProcAddressing
)
{
passiveParticleCloud lagrangianPositions
(
mesh,
cloudName,
IDLList<passiveParticle>()
);
DynamicList<scalar> times(0);
DynamicList<List<scalar> > regions(0);
word fName = "reconstruct.ini";
IFstream file(fName);
if (!file.good())
{
Info << "File " << fName << " not found." << endl;
return;
}
else
{
scalar t;
scalarList r;
while (file >> t)
{
times.append(t);
file >> r;
regions.append(r);
}
}
forAll(meshes, i)
{
Info << "Mesh I = " << i << endl;
bool skip = false;
forAll(times, j)
{
if (mesh.time().timeName() == name(times[j]))
{
forAll(regions[j], k)
{
if (i == regions[j][k])
{
skip = true;
break;
}
}
break;
}
}
if (!skip)
{
const labelList& cellMap = cellProcAddressing[i];
// faceProcAddressing not required currently.
// const labelList& faceMap = faceProcAddressing[i];
Cloud<passiveParticle> lpi(meshes[i], cloudName, false);
forAllConstIter(Cloud<passiveParticle>, lpi, iter)
{
const passiveParticle& ppi = iter();
// // Inverting sign if necessary and subtracting 1 from
// // faceProcAddressing
// label mappedTetFace = mag(faceMap[ppi.tetFace()]) - 1;
lagrangianPositions.append
(
new passiveParticle
(
mesh,
ppi.position(),
cellMap[ppi.cell()],
false
)
);
}
}
}
IOPosition<Cloud<passiveParticle> >(lagrangianPositions).write();
}
|