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)' - " "specify a list of fields to be reconstructed. Eg, '(U T p)' - "
"regular expressions not currently supported" "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 argList::addBoolOption
( (
"noLagrangian", "noLagrangian",
@ -73,6 +81,20 @@ int main(int argc, char *argv[])
const bool noLagrangian = args.optionFound("noLagrangian"); 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 // determine the processor count directly
label nProcs = 0; label nProcs = 0;
while (isDir(args.path()/(word("processor") + name(nProcs)))) while (isDir(args.path()/(word("processor") + name(nProcs))))
@ -403,84 +425,96 @@ int main(int argc, char *argv[])
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFieldFields<label> reconstructLagrangianFieldFields<label>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFields<scalar> reconstructLagrangianFields<scalar>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFieldFields<scalar> reconstructLagrangianFieldFields<scalar>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFields<vector> reconstructLagrangianFields<vector>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFieldFields<vector> reconstructLagrangianFieldFields<vector>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFields<sphericalTensor> reconstructLagrangianFields<sphericalTensor>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFieldFields<sphericalTensor> reconstructLagrangianFieldFields<sphericalTensor>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFields<symmTensor> reconstructLagrangianFields<symmTensor>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFieldFields<symmTensor> reconstructLagrangianFieldFields<symmTensor>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFields<tensor> reconstructLagrangianFields<tensor>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
reconstructLagrangianFieldFields<tensor> reconstructLagrangianFieldFields<tensor>
( (
cloudName, cloudName,
mesh, mesh,
procMeshes.meshes(), procMeshes.meshes(),
sprayObjs sprayObjs,
selectedLagrangianFields
); );
} }
} }

View File

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

View File

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