ENH: decomposePar: add -time option.

This commit is contained in:
mattijs
2012-04-16 11:36:13 +01:00
parent 8459c58376
commit 25dafe92ea

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -43,7 +43,10 @@ Usage
Copy any \a uniform directories too. Copy any \a uniform directories too.
\param -constant \n \param -constant \n
Override controlDict settings and use constant directory. \param -time xxx:yyy \n
Override controlDict settings and decompose selected times. Does not
re-decompose the mesh i.e. does not handle moving mesh or changing
mesh cases.
\param -fields \n \param -fields \n
Use existing geometry decomposition and convert fields only. Use existing geometry decomposition and convert fields only.
@ -123,11 +126,9 @@ int main(int argc, char *argv[])
"ifRequired", "ifRequired",
"only decompose geometry if the number of domains has changed" "only decompose geometry if the number of domains has changed"
); );
argList::addBoolOption
( // Include explicit constant options, have zero from time range
"constant", timeSelector::addOptions(true, false);
"include the 'constant/' dir in the times list"
);
#include "setRootCase.H" #include "setRootCase.H"
@ -146,23 +147,10 @@ int main(int argc, char *argv[])
bool forceOverwrite = args.optionFound("force"); bool forceOverwrite = args.optionFound("force");
bool ifRequiredDecomposition = args.optionFound("ifRequired"); bool ifRequiredDecomposition = args.optionFound("ifRequired");
// Set time from database
#include "createTime.H" #include "createTime.H"
// Allow override of time
// Allow -constant to override controlDict settings. instantList times = timeSelector::selectIfPresent(runTime, args);
if (args.optionFound("constant"))
{
instantList timeDirs = timeSelector::select0(runTime, args);
if (runTime.timeName() != runTime.constant())
{
FatalErrorIn(args.executable())
<< "No '" << runTime.constant() << "' time present." << endl
<< "Valid times are " << runTime.times()
<< exit(FatalError);
}
}
Info<< "Time = " << runTime.timeName() << endl;
// determine the existing processor count directly // determine the existing processor count directly
label nProcs = 0; label nProcs = 0;
@ -334,23 +322,27 @@ int main(int argc, char *argv[])
} }
// Loop over all times
forAll(times, timeI)
{
runTime.setTime(times[timeI], timeI);
Info<< "Time = " << runTime.timeName() << endl;
// Search for list of objects for this time // Search for list of objects for this time
IOobjectList objects(mesh, runTime.timeName()); IOobjectList objects(mesh, runTime.timeName());
// Construct the vol fields // Construct the vol fields
// ~~~~~~~~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~~~~~~~~
PtrList<volScalarField> volScalarFields; PtrList<volScalarField> volScalarFields;
readFields(mesh, objects, volScalarFields); readFields(mesh, objects, volScalarFields);
PtrList<volVectorField> volVectorFields; PtrList<volVectorField> volVectorFields;
readFields(mesh, objects, volVectorFields); readFields(mesh, objects, volVectorFields);
PtrList<volSphericalTensorField> volSphericalTensorFields; PtrList<volSphericalTensorField> volSphericalTensorFields;
readFields(mesh, objects, volSphericalTensorFields); readFields(mesh, objects, volSphericalTensorFields);
PtrList<volSymmTensorField> volSymmTensorFields; PtrList<volSymmTensorField> volSymmTensorFields;
readFields(mesh, objects, volSymmTensorFields); readFields(mesh, objects, volSymmTensorFields);
PtrList<volTensorField> volTensorFields; PtrList<volTensorField> volTensorFields;
readFields(mesh, objects, volTensorFields); readFields(mesh, objects, volTensorFields);
@ -359,17 +351,13 @@ int main(int argc, char *argv[])
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PtrList<DimensionedField<scalar, volMesh> > dimScalarFields; PtrList<DimensionedField<scalar, volMesh> > dimScalarFields;
readFields(mesh, objects, dimScalarFields); readFields(mesh, objects, dimScalarFields);
PtrList<DimensionedField<vector, volMesh> > dimVectorFields; PtrList<DimensionedField<vector, volMesh> > dimVectorFields;
readFields(mesh, objects, dimVectorFields); readFields(mesh, objects, dimVectorFields);
PtrList<DimensionedField<sphericalTensor, volMesh> > PtrList<DimensionedField<sphericalTensor, volMesh> >
dimSphericalTensorFields; dimSphericalTensorFields;
readFields(mesh, objects, dimSphericalTensorFields); readFields(mesh, objects, dimSphericalTensorFields);
PtrList<DimensionedField<symmTensor, volMesh> > dimSymmTensorFields; PtrList<DimensionedField<symmTensor, volMesh> > dimSymmTensorFields;
readFields(mesh, objects, dimSymmTensorFields); readFields(mesh, objects, dimSymmTensorFields);
PtrList<DimensionedField<tensor, volMesh> > dimTensorFields; PtrList<DimensionedField<tensor, volMesh> > dimTensorFields;
readFields(mesh, objects, dimTensorFields); readFields(mesh, objects, dimTensorFields);
@ -394,16 +382,12 @@ int main(int argc, char *argv[])
PtrList<pointScalarField> pointScalarFields; PtrList<pointScalarField> pointScalarFields;
readFields(pMesh, objects, pointScalarFields); readFields(pMesh, objects, pointScalarFields);
PtrList<pointVectorField> pointVectorFields; PtrList<pointVectorField> pointVectorFields;
readFields(pMesh, objects, pointVectorFields); readFields(pMesh, objects, pointVectorFields);
PtrList<pointSphericalTensorField> pointSphericalTensorFields; PtrList<pointSphericalTensorField> pointSphericalTensorFields;
readFields(pMesh, objects, pointSphericalTensorFields); readFields(pMesh, objects, pointSphericalTensorFields);
PtrList<pointSymmTensorField> pointSymmTensorFields; PtrList<pointSymmTensorField> pointSymmTensorFields;
readFields(pMesh, objects, pointSymmTensorFields); readFields(pMesh, objects, pointSymmTensorFields);
PtrList<pointTensorField> pointTensorFields; PtrList<pointTensorField> pointTensorFields;
readFields(pMesh, objects, pointTensorFields); readFields(pMesh, objects, pointTensorFields);
@ -419,24 +403,37 @@ int main(int argc, char *argv[])
// Particles // Particles
PtrList<Cloud<indexedParticle> > lagrangianPositions(cloudDirs.size()); PtrList<Cloud<indexedParticle> > lagrangianPositions(cloudDirs.size());
// Particles per cell // Particles per cell
PtrList< List<SLList<indexedParticle*>*> > cellParticles(cloudDirs.size()); PtrList< List<SLList<indexedParticle*>*> > cellParticles
(
cloudDirs.size()
);
PtrList<PtrList<labelIOField> > lagrangianLabelFields(cloudDirs.size()); PtrList<PtrList<labelIOField> > lagrangianLabelFields
(
cloudDirs.size()
);
PtrList<PtrList<labelFieldCompactIOField> > lagrangianLabelFieldFields PtrList<PtrList<labelFieldCompactIOField> > lagrangianLabelFieldFields
( (
cloudDirs.size() cloudDirs.size()
); );
PtrList<PtrList<scalarIOField> > lagrangianScalarFields(cloudDirs.size()); PtrList<PtrList<scalarIOField> > lagrangianScalarFields
(
cloudDirs.size()
);
PtrList<PtrList<scalarFieldCompactIOField> > lagrangianScalarFieldFields PtrList<PtrList<scalarFieldCompactIOField> > lagrangianScalarFieldFields
( (
cloudDirs.size() cloudDirs.size()
); );
PtrList<PtrList<vectorIOField> > lagrangianVectorFields(cloudDirs.size()); PtrList<PtrList<vectorIOField> > lagrangianVectorFields
(
cloudDirs.size()
);
PtrList<PtrList<vectorFieldCompactIOField> > lagrangianVectorFieldFields PtrList<PtrList<vectorFieldCompactIOField> > lagrangianVectorFieldFields
( (
cloudDirs.size() cloudDirs.size()
); );
PtrList<PtrList<sphericalTensorIOField> > lagrangianSphericalTensorFields PtrList<PtrList<sphericalTensorIOField> >
lagrangianSphericalTensorFields
( (
cloudDirs.size() cloudDirs.size()
); );
@ -478,7 +475,8 @@ int main(int argc, char *argv[])
// Read lagrangian particles // Read lagrangian particles
// ~~~~~~~~~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~~~~~~~~~
Info<< "Identified lagrangian data set: " << cloudDirs[i] << endl; Info<< "Identified lagrangian data set: " << cloudDirs[i]
<< endl;
lagrangianPositions.set lagrangianPositions.set
( (
@ -534,8 +532,8 @@ int main(int argc, char *argv[])
if (!cellParticles[cloudI][celli]) if (!cellParticles[cloudI][celli])
{ {
cellParticles[cloudI][celli] = new SLList<indexedParticle*> cellParticles[cloudI][celli] =
(); new SLList<indexedParticle*>();
} }
cellParticles[cloudI][celli]->append(&iter()); cellParticles[cloudI][celli]->append(&iter());
@ -941,7 +939,7 @@ int main(int argc, char *argv[])
} }
} }
} }
}
Info<< "\nEnd.\n" << endl; Info<< "\nEnd.\n" << endl;