82 int main(
int argc,
char *argv[])
86 timeSelector::addOptions(
true,
true);
87 argList::noParallel();
89 argList::validOptions.insert(
"fields",
"\"(list of fields)\"");
90 argList::validOptions.insert(
"noLagrangian",
"");
113 <<
"No processor* directories found"
127 Time::controlDictName,
138 databases[0].times(),
142 if (timeDirs.
empty())
145 <<
"No times selected"
159 databases[procI].setTime(runTime.timeName(), runTime.timeIndex());
174 runTime.setTime(timeDirs[timeI], timeI);
176 Info <<
"Time = " << runTime.timeName() <<
endl <<
endl;
181 databases[procI].setTime(timeDirs[timeI], timeI);
187 fvMesh::readUpdateState procStat = procMeshes.readUpdate();
189 if (procStat == fvMesh::POINTS_MOVED)
192 procMeshes.reconstructPoints(
mesh);
194 else if (meshStat != procStat)
197 <<
"readUpdate for the reconstructed mesh:" << meshStat <<
nl
198 <<
"readUpdate for the processor meshes :" << procStat <<
nl
199 <<
"These should be equal or your addressing"
200 <<
" might be incorrect."
201 <<
" Please check your time directories for any "
202 <<
"mesh directories." << endl;
207 IOobjectList objects(procMeshes.meshes()[0], databases[0].timeName());
214 objects.lookupClass(volScalarField::typeName).size()
215 || objects.lookupClass(volVectorField::typeName).size()
216 || objects.lookupClass(volSphericalTensorField::typeName).size()
217 || objects.lookupClass(volSymmTensorField::typeName).size()
218 || objects.lookupClass(volTensorField::typeName).size()
219 || objects.lookupClass(surfaceScalarField::typeName).size()
220 || objects.lookupClass(surfaceVectorField::typeName).size()
221 || objects.lookupClass(surfaceSphericalTensorField::typeName).size()
222 || objects.lookupClass(surfaceSymmTensorField::typeName).size()
223 || objects.lookupClass(surfaceTensorField::typeName).size()
226 Info <<
"Reconstructing FV fields" <<
nl <<
endl;
232 procMeshes.faceProcAddressing(),
233 procMeshes.cellProcAddressing(),
234 procMeshes.boundaryProcAddressing()
242 fvReconstructor.reconstructFvVolumeFields<
vector>
252 fvReconstructor.reconstructFvVolumeFields<
symmTensor>
257 fvReconstructor.reconstructFvVolumeFields<
tensor>
263 fvReconstructor.reconstructFvSurfaceFields<scalar>
268 fvReconstructor.reconstructFvSurfaceFields<
vector>
278 fvReconstructor.reconstructFvSurfaceFields<
symmTensor>
283 fvReconstructor.reconstructFvSurfaceFields<
tensor>
298 objects.lookupClass(pointScalarField::typeName).size()
299 || objects.lookupClass(pointVectorField::typeName).size()
300 || objects.lookupClass(pointSphericalTensorField::typeName).size()
301 || objects.lookupClass(pointSymmTensorField::typeName).size()
302 || objects.lookupClass(pointTensorField::typeName).size()
305 Info <<
"Reconstructing point fields" <<
nl <<
endl;
312 pMeshes.set(procI,
new pointMesh(procMeshes.meshes()[procI]));
319 procMeshes.pointProcAddressing(),
320 procMeshes.boundaryProcAddressing()
324 pointReconstructor.reconstructFields<
vector>(objects);
326 pointReconstructor.reconstructFields<
symmTensor>(objects);
327 pointReconstructor.reconstructFields<
tensor>(objects);
352 databases[procI].timePath()/regionPrefix/cloud::prefix,
361 cloudObjects.
find(cloudDirs[i]);
363 if (iter == cloudObjects.
end())
368 procMeshes.meshes()[procI],
369 databases[procI].timeName(),
370 cloud::prefix/cloudDirs[i]
373 IOobject* positionsPtr = sprayObjs.lookup(
"positions");
377 cloudObjects.
insert(cloudDirs[i], sprayObjs);
384 if (cloudObjects.
size())
394 Info<<
"Reconstructing lagrangian fields for cloud "
395 << cloudName <<
nl <<
endl;
402 procMeshes.faceProcAddressing(),
403 procMeshes.cellProcAddressing()
405 reconstructLagrangianFields<label>
412 reconstructLagrangianFields<scalar>
419 reconstructLagrangianFields<vector>
426 reconstructLagrangianFields<sphericalTensor>
433 reconstructLagrangianFields<symmTensor>
440 reconstructLagrangianFields<tensor>
458 fileName uniformDir0 = databases[0].timePath()/
"uniform";
459 if (
isDir(uniformDir0))
461 cp(uniformDir0, runTime.timePath());