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();
}
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<volVectorField>(objects);
sampleAndWrite<volSphericalTensorField>(objects);
sampleAndWrite<volSymmTensorField>(objects);
sampleAndWrite<volTensorField>(objects);
sampleAndWrite<surfaceScalarField>(objects);
sampleAndWrite<surfaceVectorField>(objects);
sampleAndWrite<surfaceSphericalTensorField>(objects);
sampleAndWrite<surfaceSymmTensorField>(objects);
sampleAndWrite<surfaceTensorField>(objects);
sampleAndWrite<surfaceScalarField>(mesh_);
sampleAndWrite<surfaceVectorField>(mesh_);
sampleAndWrite<surfaceSphericalTensorField>(mesh_);
sampleAndWrite<surfaceSymmTensorField>(mesh_);
sampleAndWrite<surfaceTensorField>(mesh_);
}
}

View File

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

View File

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