mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: overhaul ensight handling (#1579)
- includes restructuring and simplification of low-level ensight part
handling and refactor of backends to improve code reuse.
foamToEnsight
-------------
* new cellZone support.
This was previously only possible via a separate foamToEnsightParts
utility that was not parallelized.
* support for point fields.
* `-nearCellValue` option (as per foamToVTK)
* data indexing now uses values from the time index.
This is consistent with the ensightWrite function object and
can help with restarts.
* existing ensight directories are removed, unless the -no-overwrite
option is supplied
foamToEnsightParts
------------------
* now redundant and removed.
ensightOutputSurface (new class)
--------------------------------
* a lightweight wrapper for point/face references that is tailored
for the ensightSurfaceWriter. It uses compact face/point information
and is serial only, since this is the format requirements from the
surfaceWriter class.
ensightMesh (revised class)
---------------------------
* now only holds a polyMesh reference, which removes its dependency
on finiteVolume and allows it to be relocated under fileFormats
instead of conversion.
Removed classes: ensightParts, ensighPartFaces, ensightPartCells
- these were used by foamToEnsightParts, but not needed anymore.
This commit is contained in:
committed by
Andrew Heather
parent
c7e8f22baf
commit
a97628121c
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2018 OpenCFD Ltd.
|
||||
Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -30,12 +30,11 @@ Description
|
||||
Read dimensioned fields from disk and write with ensightMesh
|
||||
|
||||
SourceFiles
|
||||
writeDimFields.H
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef writeDimFields_H
|
||||
#define writeDimFields_H
|
||||
#ifndef ensight_writeDimFields_H
|
||||
#define ensight_writeDimFields_H
|
||||
|
||||
#include "writeVolFields.H"
|
||||
|
||||
@ -44,40 +43,60 @@ SourceFiles
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
template<class Type>
|
||||
bool writeDimField
|
||||
(
|
||||
ensightCase& ensCase,
|
||||
const ensightMesh& ensMesh,
|
||||
const tmp<DimensionedField<Type, volMesh>>& tdf
|
||||
)
|
||||
{
|
||||
if (!tdf.valid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
auto tfield = makeZeroGradientField<Type>(tdf);
|
||||
|
||||
// Now a volField with zero-gradient boundaries
|
||||
|
||||
return writeVolField<Type>
|
||||
(
|
||||
ensCase,
|
||||
ensMesh,
|
||||
tfield,
|
||||
false // No nearCellValue, we already have zero-gradient
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
label writeDimFields
|
||||
(
|
||||
ensightCase& ensCase,
|
||||
const ensightMesh& ensMesh,
|
||||
const fvMeshSubsetProxy& proxy,
|
||||
const IOobjectList& objects,
|
||||
const bool nodeValues
|
||||
const IOobjectList& objects
|
||||
)
|
||||
{
|
||||
typedef GeometricField<Type, fvPatchField, volMesh> GeoField;
|
||||
|
||||
typedef typename
|
||||
GeometricField
|
||||
<
|
||||
Type, fvPatchField, volMesh
|
||||
>::Internal DimField;
|
||||
|
||||
const fvMesh& mesh = dynamicCast<const fvMesh>(ensMesh.mesh());
|
||||
|
||||
label count = 0;
|
||||
|
||||
for (const word& fieldName : objects.sortedNames<DimField>())
|
||||
{
|
||||
const IOobject* io = objects.findObject(fieldName);
|
||||
|
||||
if
|
||||
(
|
||||
writeVolField<Type>
|
||||
writeDimField<Type>
|
||||
(
|
||||
ensCase,
|
||||
ensMesh,
|
||||
proxy,
|
||||
getZeroGradField<GeoField>(io, proxy),
|
||||
nodeValues
|
||||
getField<DimField>(objects.findObject(fieldName), mesh)
|
||||
)
|
||||
)
|
||||
{
|
||||
@ -94,29 +113,26 @@ label writeAllDimFields
|
||||
(
|
||||
ensightCase& ensCase,
|
||||
const ensightMesh& ensMesh,
|
||||
const fvMeshSubsetProxy& proxy,
|
||||
const IOobjectList& objects,
|
||||
const bool nodeValues
|
||||
const IOobjectList& objects
|
||||
)
|
||||
{
|
||||
#undef foamToEnsight_WRITE_FIELD
|
||||
#define foamToEnsight_WRITE_FIELD(PrimitiveType) \
|
||||
#undef ensight_WRITE_FIELD
|
||||
#define ensight_WRITE_FIELD(PrimitiveType) \
|
||||
writeDimFields<PrimitiveType> \
|
||||
( \
|
||||
ensCase, ensMesh, \
|
||||
proxy, \
|
||||
objects, \
|
||||
nodeValues \
|
||||
ensCase, \
|
||||
ensMesh, \
|
||||
objects \
|
||||
)
|
||||
|
||||
label count = 0;
|
||||
count += foamToEnsight_WRITE_FIELD(scalar);
|
||||
count += foamToEnsight_WRITE_FIELD(vector);
|
||||
count += foamToEnsight_WRITE_FIELD(sphericalTensor);
|
||||
count += foamToEnsight_WRITE_FIELD(symmTensor);
|
||||
count += foamToEnsight_WRITE_FIELD(tensor);
|
||||
count += ensight_WRITE_FIELD(scalar);
|
||||
count += ensight_WRITE_FIELD(vector);
|
||||
count += ensight_WRITE_FIELD(sphericalTensor);
|
||||
count += ensight_WRITE_FIELD(symmTensor);
|
||||
count += ensight_WRITE_FIELD(tensor);
|
||||
|
||||
#undef foamToEnsight_WRITE_FIELD
|
||||
#undef ensight_WRITE_FIELD
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user