mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: decomposePar: add -time option.
This commit is contained in:
@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user