This repository has been archived on 2023-11-20. You can view files and clone it, but cannot push or open issues or pull requests.
foam-extend4.1-coherent-io/applications/utilities/postProcessing/dataConversion/foamToFieldview9/createFields.H
2010-08-25 22:42:57 +01:00

197 lines
4.4 KiB
C++

// Construct List of pointers to all vol fields
int nFields = volScalarNames.size() + 3*volVectorNames.size();
List<volScalarField*> volFieldPtrs
(
nFields,
reinterpret_cast<volScalarField*>(0)
);
stringList volFieldNames(nFields);
nFields = 0;
{
// Load all scalar fields and store ptr to it
forAll(volScalarNames, fieldI)
{
word fieldName = volScalarNames[fieldI];
// Check if present
IOobject ioHeader
(
fieldName,
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
);
if (ioHeader.headerOk())
{
volFieldPtrs[nFields] = new volScalarField
(
ioHeader,
mesh
);
}
fieldName = getFieldViewName(fieldName);
volFieldNames[nFields] = fieldName;
nFields++;
}
// Load all (componenents of) vector fields
forAll(volVectorNames, fieldI)
{
word fieldName = volVectorNames[fieldI];
// Check if present
IOobject ioHeader
(
fieldName,
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
);
if (ioHeader.headerOk())
{
volVectorField vvf(ioHeader, mesh);
// X component
volFieldPtrs[nFields] =
new volScalarField
(
vvf.component(vector::X)
);
// Y component
volFieldPtrs[nFields+1] =
new volScalarField
(
vvf.component(vector::Y)
);
// Z component
volFieldPtrs[nFields+2] =
new volScalarField
(
vvf.component(vector::Z)
);
}
fieldName = getFieldViewName(fieldName);
volFieldNames[nFields] = fieldName + ("x;" + fieldName);
volFieldNames[nFields+1] = fieldName + "y";
volFieldNames[nFields+2] = fieldName + "z";
nFields += 3;
}
}
//
// Construct List of pointers to all surface fields
//
int nSurfFields = surfScalarNames.size() + 3*surfVectorNames.size();
List<surfaceScalarField*> surfFieldPtrs
(
nSurfFields,
reinterpret_cast<surfaceScalarField*>(0)
);
stringList surfFieldNames(nSurfFields);
nSurfFields = 0;
{
// Load all scalar fields
forAll(surfScalarNames, fieldI)
{
word fieldName = surfScalarNames[fieldI];
// Check if present
IOobject ioHeader
(
fieldName,
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
);
if (ioHeader.headerOk())
{
surfFieldPtrs[nSurfFields] =
new surfaceScalarField
(
ioHeader,
mesh
);
}
fieldName = getFieldViewName(fieldName);
surfFieldNames[nSurfFields] = fieldName;
nSurfFields++;
}
// Set (componenents of) vector fields
forAll(surfVectorNames, fieldI)
{
word fieldName = surfVectorNames[fieldI];
// Check if present
IOobject ioHeader
(
fieldName,
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
);
if (ioHeader.headerOk())
{
surfaceVectorField svf(ioHeader, mesh);
// X component
surfFieldPtrs[nSurfFields] =
new surfaceScalarField
(
svf.component(vector::X)
);
// Y component
surfFieldPtrs[nSurfFields+1] =
new surfaceScalarField
(
svf.component(vector::Y)
);
// Z component
surfFieldPtrs[nSurfFields+2] =
new surfaceScalarField
(
svf.component(vector::Z)
);
}
fieldName = getFieldViewName(fieldName);
surfFieldNames[nSurfFields] = fieldName + ("x;" + fieldName);
surfFieldNames[nSurfFields+1] = fieldName + "y";
surfFieldNames[nSurfFields+2] = fieldName + "z";
nSurfFields += 3;
}
}