ENH: Looking for filds to sample in the mesh database

This commit is contained in:
sergio
2012-08-28 10:27:58 +01:00
parent 6884da6767
commit 84ec2c766b
3 changed files with 36 additions and 45 deletions

View File

@ -164,19 +164,17 @@ void Foam::sampledSurfaces::write()
writeGeometry(); writeGeometry();
} }
const IOobjectList objects(mesh_, mesh_.time().timeName()); sampleAndWrite<volScalarField>(mesh_);
sampleAndWrite<volVectorField>(mesh_);
sampleAndWrite<volSphericalTensorField>(mesh_);
sampleAndWrite<volSymmTensorField>(mesh_);
sampleAndWrite<volTensorField>(mesh_);
sampleAndWrite<volScalarField>(objects); sampleAndWrite<surfaceScalarField>(mesh_);
sampleAndWrite<volVectorField>(objects); sampleAndWrite<surfaceVectorField>(mesh_);
sampleAndWrite<volSphericalTensorField>(objects); sampleAndWrite<surfaceSphericalTensorField>(mesh_);
sampleAndWrite<volSymmTensorField>(objects); sampleAndWrite<surfaceSymmTensorField>(mesh_);
sampleAndWrite<volTensorField>(objects); sampleAndWrite<surfaceTensorField>(mesh_);
sampleAndWrite<surfaceScalarField>(objects);
sampleAndWrite<surfaceVectorField>(objects);
sampleAndWrite<surfaceSphericalTensorField>(objects);
sampleAndWrite<surfaceSymmTensorField>(objects);
sampleAndWrite<surfaceTensorField>(objects);
} }
} }

View File

@ -158,9 +158,9 @@ class sampledSurfaces
const GeometricField<Type, fvsPatchField, surfaceMesh>& const GeometricField<Type, fvsPatchField, surfaceMesh>&
); );
//- Sample and write all the fields of the given type //- Sample and write all sampled fields
template<class Type> template<class Type>
void sampleAndWrite(const IOobjectList& allObjects); void sampleAndWrite(const fvMesh&);
//- Disallow default bitwise copy construct and assignment //- Disallow default bitwise copy construct and assignment
sampledSurfaces(const sampledSurfaces&); sampledSurfaces(const sampledSurfaces&);

View File

@ -166,40 +166,33 @@ void Foam::sampledSurfaces::sampleAndWrite
template<class GeoField> template<class GeoField>
void Foam::sampledSurfaces::sampleAndWrite(const IOobjectList& allObjects) void Foam::sampledSurfaces::sampleAndWrite(const fvMesh& mesh)
{ {
IOobjectList fields = allObjects.lookupClass(GeoField::typeName); forAll (fieldSelection_, fieldI)
forAllConstIter(IOobjectList, fields, fieldIter)
{ {
forAll (fieldSelection_, fieldI) const wordRe field = fieldSelection_[fieldI];
{
const wordRe field = fieldSelection_[fieldI];
if (field.match(fieldIter()->name()))
{
if (Pstream::master() && verbose_)
{
Pout<< "sampleAndWrite: " << field << endl;
}
if (loadFromFiles_) if (mesh.thisDb().foundObject<GeoField>(field))
{ {
fieldIter()->readOpt() = IOobject::MUST_READ; if (Pstream::master() && verbose_)
sampleAndWrite {
( Pout<< "sampleAndWrite: " << field << endl;
GeoField }
(
*fieldIter(), if (loadFromFiles_)
mesh_ {
) const GeoField& geoField =
); mesh.thisDb().lookupObject<GeoField>(field);
}
else const_cast<GeoField&>(geoField).readOpt() = IOobject::MUST_READ;
{ sampleAndWrite(geoField);
sampleAndWrite }
( else
mesh_.lookupObject<GeoField>(fieldIter()->name()) {
); sampleAndWrite
} (
mesh.thisDb().lookupObject<GeoField>(field)
);
} }
} }
} }