ENH: add surfField support to various field function objects

- fieldAverage
  - mag
  - magSqr
  - readFields
  - fieldsExpression (add, subtract)
This commit is contained in:
Mark Olesen
2016-12-15 09:32:53 +01:00
parent b0433d93f8
commit 001a2e4a37
9 changed files with 144 additions and 62 deletions

View File

@ -26,6 +26,7 @@ License
#include "readFields.H"
#include "volFields.H"
#include "surfaceFields.H"
#include "surfFields.H"
#include "Time.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -35,6 +36,7 @@ bool Foam::functionObjects::readFields::loadField(const word& fieldName)
{
typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType;
typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType;
typedef DimensionedField<Type, surfGeoMesh> SurfFieldType;
if (foundObject<VolFieldType>(fieldName))
{
@ -49,6 +51,12 @@ bool Foam::functionObjects::readFields::loadField(const word& fieldName)
<< " " << fieldName << " already exists in database"
<< " already in database" << endl;
}
else if (foundObject<SurfFieldType>(fieldName))
{
DebugInfo<< "readFields: " << SurfFieldType::typeName
<< " " << fieldName << " already exists in database"
<< " already in database" << endl;
}
else
{
IOobject fieldHeader
@ -76,6 +84,23 @@ bool Foam::functionObjects::readFields::loadField(const word& fieldName)
mesh_.objectRegistry::store(sfPtr);
return true;
}
else if (fieldHeader.typeHeaderOk<SurfFieldType>(true))
{
if (isA<surfMesh>(obr()))
{
const surfMesh& s = dynamicCast<const surfMesh>(obr());
// Store field on surfMesh database
Log << " Reading " << fieldName << endl;
SurfFieldType* sfPtr(new SurfFieldType(fieldHeader, s));
s.store(sfPtr);
return true;
}
else
{
return false;
}
}
}
return false;