ENH: Adding lagrangianFields option to reconstruction.

This commit is contained in:
graham
2010-11-18 14:56:03 +00:00
parent f4c1042f80
commit 8f0a5ff145
4 changed files with 100 additions and 41 deletions

View File

@ -56,6 +56,14 @@ int main(int argc, char *argv[])
"specify a list of fields to be reconstructed. Eg, '(U T p)' - "
"regular expressions not currently supported"
);
argList::addOption
(
"lagrangianFields",
"list",
"specify a list of lagrangian fields to be reconstructed. Eg, '(U d)' -"
"regular expressions not currently supported, "
"positions always included."
);
argList::addBoolOption
(
"noLagrangian",
@ -73,6 +81,20 @@ int main(int argc, char *argv[])
const bool noLagrangian = args.optionFound("noLagrangian");
HashSet<word> selectedLagrangianFields;
if (args.optionFound("lagrangianFields"))
{
if (noLagrangian)
{
FatalErrorIn(args.executable())
<< "Cannot specify noLagrangian and lagrangianFields "
<< "options together."
<< exit(FatalError);
}
args.optionLookup("lagrangianFields")() >> selectedLagrangianFields;
}
// determine the processor count directly
label nProcs = 0;
while (isDir(args.path()/(word("processor") + name(nProcs))))
@ -403,84 +425,96 @@ int main(int argc, char *argv[])
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFieldFields<label>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFields<scalar>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFieldFields<scalar>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFields<vector>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFieldFields<vector>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFields<sphericalTensor>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFieldFields<sphericalTensor>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFields<symmTensor>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFieldFields<symmTensor>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFields<tensor>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
reconstructLagrangianFieldFields<tensor>
(
cloudName,
mesh,
procMeshes.meshes(),
sprayObjs
sprayObjs,
selectedLagrangianFields
);
}
}

View File

@ -539,7 +539,7 @@ void Foam::fvFieldReconstructor::reconstructFvVolumeInternalFields
{
if
(
!selectedFields.size()
selectedFields.empty()
|| selectedFields.found(fieldIter()->name())
)
{
@ -575,7 +575,7 @@ void Foam::fvFieldReconstructor::reconstructFvVolumeFields
{
if
(
!selectedFields.size()
selectedFields.empty()
|| selectedFields.found(fieldIter()->name())
)
{
@ -611,7 +611,7 @@ void Foam::fvFieldReconstructor::reconstructFvSurfaceFields
{
if
(
!selectedFields.size()
selectedFields.empty()
|| selectedFields.found(fieldIter()->name())
)
{

View File

@ -84,7 +84,8 @@ void reconstructLagrangianFields
const word& cloudName,
const polyMesh& mesh,
const PtrList<fvMesh>& meshes,
const IOobjectList& objects
const IOobjectList& objects,
const HashSet<word>& selectedFields
);
@ -94,7 +95,8 @@ void reconstructLagrangianFieldFields
const word& cloudName,
const polyMesh& mesh,
const PtrList<fvMesh>& meshes,
const IOobjectList& objects
const IOobjectList& objects,
const HashSet<word>& selectedFields
);

View File

@ -155,19 +155,26 @@ void Foam::reconstructLagrangianFields
const word& cloudName,
const polyMesh& mesh,
const PtrList<fvMesh>& meshes,
const IOobjectList& objects
const IOobjectList& objects,
const HashSet<word>& selectedFields
)
{
const word fieldClassName(IOField<Type>::typeName);
IOobjectList fields = objects.lookupClass(fieldClassName);
if (fields.size())
if(fields.size())
{
Info<< " Reconstructing lagrangian "
<< fieldClassName << "s\n" << endl;
forAllConstIter(IOobjectList, fields, fieldIter)
{
if
(
selectedFields.empty()
|| selectedFields.found(fieldIter()->name())
)
{
Info<< " " << fieldIter()->name() << endl;
reconstructLagrangianField<Type>
@ -178,6 +185,7 @@ void Foam::reconstructLagrangianFields
fieldIter()->name()
)().write();
}
}
Info<< endl;
}
@ -190,7 +198,8 @@ void Foam::reconstructLagrangianFieldFields
const word& cloudName,
const polyMesh& mesh,
const PtrList<fvMesh>& meshes,
const IOobjectList& objects
const IOobjectList& objects,
const HashSet<word>& selectedFields
)
{
{
@ -204,6 +213,12 @@ void Foam::reconstructLagrangianFieldFields
<< fieldClassName << "s\n" << endl;
forAllConstIter(IOobjectList, fields, fieldIter)
{
if
(
selectedFields.empty()
|| selectedFields.found(fieldIter()->name())
)
{
Info<< " " << fieldIter()->name() << endl;
reconstructLagrangianFieldField<Type>
@ -214,6 +229,7 @@ void Foam::reconstructLagrangianFieldFields
fieldIter()->name()
)().write();
}
}
Info<< endl;
}
@ -230,6 +246,12 @@ void Foam::reconstructLagrangianFieldFields
<< fieldClassName << "s\n" << endl;
forAllConstIter(IOobjectList, fields, fieldIter)
{
if
(
selectedFields.empty()
|| selectedFields.found(fieldIter()->name())
)
{
Info<< " " << fieldIter()->name() << endl;
reconstructLagrangianFieldField<Type>
@ -240,6 +262,7 @@ void Foam::reconstructLagrangianFieldFields
fieldIter()->name()
)().write();
}
}
Info<< endl;
}