27 #include "vtkPVblockMeshReader.h"
28 #include "vtkOpenFOAMPoints.H"
35 #include "vtkCellArray.h"
36 #include "vtkDataArraySelection.h"
37 #include "vtkMultiBlockDataSet.h"
38 #include "vtkPoints.h"
39 #include "vtkPolyData.h"
40 #include "vtkUnstructuredGrid.h"
44 void Foam::vtkPVblockMesh::convertMeshBlocks
46 vtkMultiBlockDataSet* output,
50 vtkDataArraySelection* selection = reader_->GetBlockSelection();
51 arrayRange&
range = arrayRangeBlocks_;
55 const blockMesh& blkMesh = *meshPtr_;
59 const scalar scaleFactor = blkMesh.scaleFactor();
61 for (
int partId =
range.start(); partId <
range.end(); ++partId, ++blockI)
63 if (!blockStatus_[partId])
continue;
65 const blockDescriptor& blockDef = blkMesh[blockI];
71 vtkpoints->Allocate(blockDef.nPoints());
72 const labelList& blockLabels = blockDef.blockShape();
82 blockPoints[blockLabels[ptI]],
89 vtkmesh->InsertNextCell
96 vtkmesh->SetPoints(vtkpoints);
101 output, vtkmesh,
range, datasetNo,
102 selection->GetArrayName(partId)
110 if (datasetNo) ++blockNo;
114 void Foam::vtkPVblockMesh::convertMeshEdges
116 vtkMultiBlockDataSet* output,
120 vtkDataArraySelection* selection = reader_->GetCurvedEdgesSelection();
121 arrayRange&
range = arrayRangeEdges_;
123 range.block(blockNo);
126 const blockMesh& blkMesh = *meshPtr_;
130 const scalar scaleFactor = blkMesh.scaleFactor();
132 for (
int partId =
range.start(); partId <
range.end(); ++partId, ++edgeI)
134 if (!edgeStatus_[partId])
continue;
139 const blockDescriptor& blockDef = blkMesh[blockI];
141 edgeList blkEdges = blockDef.blockShape().edges();
146 blockDef.edgesPointsWeights(edgesPoints, edgesWeights);
149 label foundEdgeI = -1;
150 forAll(blkEdges, blkEdgeI)
152 if (edges[edgeI].compare(blkEdges[blkEdgeI]))
154 foundEdgeI = blkEdgeI;
159 if (foundEdgeI != -1)
161 const List<point>& edgePoints = edgesPoints[foundEdgeI];
166 vtkpoints->Allocate(edgePoints.size());
167 vtkmesh->Allocate(1);
169 List<vtkIdType> pointIds(edgePoints.size());
181 vtkmesh->InsertNextCell
188 vtkmesh->SetPoints(vtkpoints);
193 output, vtkmesh,
range, datasetNo,
194 selection->GetArrayName(partId)
206 if (datasetNo) ++blockNo;
210 void Foam::vtkPVblockMesh::convertMeshCorners
212 vtkMultiBlockDataSet* output,
216 arrayRange&
range = arrayRangeCorners_;
217 range.block(blockNo);
220 const pointField& blockPoints = meshPtr_->vertices();
221 const scalar& scaleFactor = meshPtr_->scaleFactor();
227 vtkpoints->Allocate(blockPoints.size());
228 vtkcells->Allocate(blockPoints.size());
230 vtkIdType pointId = 0;
240 vtkcells->InsertNextCell(1, &pointId);
244 vtkmesh->SetPoints(vtkpoints);
247 vtkmesh->SetVerts(vtkcells);
252 output, vtkmesh,
range, datasetNo,
253 arrayRangeCorners_.name()
260 if (datasetNo) ++blockNo;
#define forAll(list, i)
Loop across all elements in list.
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.
vectorField pointField
pointField is a vectorField.
List< scalar > scalarList
A List of scalars.
PtrList< blockEdge > blockEdgeList
A PtrList of blockEdges.
void vtkInsertNextOpenFOAMPoint(vtkPoints *points, const Foam::point &p)