29 #ifndef vtkPVFoamSurfaceField_H
30 #define vtkPVFoamSurfaceField_H
36 #include "vtkCellData.h"
37 #include "vtkFloatArray.h"
38 #include "vtkMultiBlockDataSet.h"
39 #include "vtkPolyData.h"
46 void Foam::vtkPVFoam::convertSurfaceField
48 const VolField<Type>&
tf,
49 vtkMultiBlockDataSet* output,
50 const arrayRange&
range,
51 const label datasetNo,
56 const label nComp = pTraits<Type>::nComponents;
57 const label nInternalFaces = mesh.nInternalFaces();
58 const labelList& faceOwner = mesh.faceOwner();
59 const labelList& faceNeigh = mesh.faceNeighbour();
62 cellData->SetNumberOfTuples(faceLabels.size());
63 cellData->SetNumberOfComponents(nComp);
64 cellData->Allocate(nComp*faceLabels.size());
65 cellData->SetName(
tf.name().c_str());
69 Info<<
"convert convertSurfaceField: "
71 <<
" size = " <<
tf.size()
73 <<
" nTuples = " << faceLabels.size() <<
endl;
82 const label facei = faceLabels[i];
83 if (facei < nInternalFaces)
85 const Type t = 0.5*(
tf[faceOwner[facei]] +
tf[faceNeigh[facei]]);
94 const label patchi = mesh.boundaryMesh().whichPatch(facei);
95 const label pFacei = mesh.boundaryMesh()[
patchi].whichFace(facei);
96 const Type& t =
tf.boundaryField()[
patchi][pFacei];
103 vtkOpenFOAMTupleRemap<Type>(vec);
105 cellData->InsertTuple(i, vec);
109 vtkPolyData::SafeDownCast
111 GetDataSetFromBlock(output,
range, datasetNo)
113 ->AddArray(cellData);
120 void Foam::vtkPVFoam::convertSurfaceField
122 const SurfaceField<Type>&
tf,
123 vtkMultiBlockDataSet* output,
124 const arrayRange&
range,
125 const label datasetNo,
130 const label nComp = pTraits<Type>::nComponents;
131 const label nInternalFaces = mesh.nInternalFaces();
134 cellData->SetNumberOfTuples(faceLabels.size());
135 cellData->SetNumberOfComponents(nComp);
136 cellData->Allocate(nComp*faceLabels.size());
137 cellData->SetName(
tf.name().c_str());
141 Info<<
"convert convertSurfaceField: "
143 <<
" size = " <<
tf.
size()
144 <<
" nComp=" << nComp
145 <<
" nTuples = " << faceLabels.size() <<
endl;
149 Field<Type> flatFld(mesh.nFaces(),
Zero);
150 SubField<Type>(flatFld, nInternalFaces) =
tf.internalField();
153 const fvsPatchField<Type>& fvs =
tf.boundaryField()[
patchi];
165 const label facei = faceLabels[i];
172 vtkOpenFOAMTupleRemap<Type>(vec);
174 cellData->InsertTuple(i, vec);
177 vtkPolyData::SafeDownCast
179 GetDataSetFromBlock(output,
range, datasetNo)
181 ->AddArray(cellData);
188 void Foam::vtkPVFoam::convertSurfaceFields
192 vtkMultiBlockDataSet* output
200 iter()->headerClassName()
208 const SurfaceField<Type>
tf
217 int partId = arrayRangePatches_.start();
218 partId < arrayRangePatches_.end();
222 const word patchName = getPartName(partId);
223 const label datasetNo = partDataset_[partId];
224 const label patchId = mesh.boundaryMesh().findIndex(patchName);
226 if (!partStatus_[partId] || datasetNo < 0 ||
patchId < 0)
231 const fvsPatchField<Type>& ptf =
tf.boundaryField()[
patchId];
233 if (!
isType<emptyFvsPatchField<Type>>(ptf))
250 int partId = arrayRangeFaceZones_.start();
251 partId < arrayRangeFaceZones_.end();
255 const word zoneName = getPartName(partId);
256 const label datasetNo = partDataset_[partId];
258 if (!partStatus_[partId] || datasetNo < 0)
263 const faceZoneList& zMesh = mesh.faceZones();
264 const label zoneId = zMesh.findIndex(zoneName);
275 arrayRangeFaceZones_,
285 int partId = arrayRangeFaceSets_.start();
286 partId < arrayRangeFaceSets_.end();
290 const word selectName = getPartName(partId);
291 const label datasetNo = partDataset_[partId];
293 if (!partStatus_[partId] || datasetNo < 0)
298 const faceSet fSet(mesh, selectName);
#define forAll(list, i)
Loop across all elements in list.
#define forAllConstIter(Container, container, iter)
Iterate across all elements in the container object of type.
static const char *const typeName
void size(const label)
Override size to be inconsistent with allocated storage.
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
List< label > labelList
A List of labels.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void component(FieldField< Field, typename FieldField< Field, Type >::cmptType > &sf, const FieldField< Field, Type > &f, const direction d)
bool isType(const Type &t)
Check the typeid.