30 #include "vtkPVblockMeshReader.h"
33 #include "vtkDataArraySelection.h"
34 #include "vtkDataSet.h"
35 #include "vtkMultiBlockDataSet.h"
36 #include "vtkInformation.h"
44 inline word getFirstWord(
const char* str)
53 return word(str,
n,
true);
69 void Foam::vtkPVblockMesh::AddToBlock
71 vtkMultiBlockDataSet* output,
73 const arrayRange&
range,
74 const label datasetNo,
75 const std::string& datasetName
78 const int blockNo =
range.block();
80 vtkDataObject* blockDO = output->GetBlock(blockNo);
81 vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
88 <<
"Block already has a vtkDataSet assigned to it"
93 output->SetBlock(blockNo, block);
97 block->SetBlock(datasetNo, dataset);
102 output->GetMetaData(blockNo)->Set
104 vtkCompositeDataSet::NAME(),
109 if (datasetName.size())
111 block->GetMetaData(datasetNo)->Set
113 vtkCompositeDataSet::NAME(),
120 vtkDataSet* Foam::vtkPVblockMesh::GetDataSetFromBlock
122 vtkMultiBlockDataSet* output,
123 const arrayRange&
range,
124 const label datasetNo
127 const int blockNo =
range.block();
129 vtkDataObject* blockDO = output->GetBlock(blockNo);
130 vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
134 return vtkDataSet::SafeDownCast(block->GetBlock(datasetNo));
141 Foam::label Foam::vtkPVblockMesh::GetNumberOfDataSets
143 vtkMultiBlockDataSet* output,
144 const arrayRange&
range
147 const int blockNo =
range.block();
149 vtkDataObject* blockDO = output->GetBlock(blockNo);
150 vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
154 return block->GetNumberOfBlocks();
163 vtkDataArraySelection* select
166 int nElem = select->GetNumberOfArrays();
169 for (
int elemI=0; elemI < nElem; ++elemI)
171 if (select->GetArraySetting(elemI))
173 selections.insert(getFirstWord(select->GetArrayName(elemI)));
183 vtkDataArraySelection* select,
184 const arrayRange&
range
187 int nElem = select->GetNumberOfArrays();
190 for (
int elemI =
range.start(); elemI <
range.end(); ++elemI)
192 if (select->GetArraySetting(elemI))
194 selections.insert(getFirstWord(select->GetArrayName(elemI)));
204 vtkDataArraySelection* select,
208 stringList selections(select->GetNumberOfArrays());
214 if (select->GetArraySetting(elemI))
216 selections[nElem++] = select->GetArrayName(elemI);
220 selections.setSize(nElem);
223 const label nAvailableElem = select->GetNumberOfArrays();
226 for (
int elemI = 0; elemI < nAvailableElem; ++elemI)
228 DebugInfo<<
" \"" << select->GetArrayName(elemI) <<
"\"";
243 vtkDataArraySelection* select,
244 const arrayRange&
range,
252 for (
int elemI =
range.start(); elemI <
range.end(); ++elemI)
254 if (select->GetArraySetting(elemI))
256 selections[nElem++] = select->GetArrayName(elemI);
260 selections.setSize(nElem);
265 for (
int elemI =
range.start(); elemI <
range.end(); ++elemI)
267 DebugInfo<<
" \"" << select->GetArrayName(elemI) <<
"\"";
280 void Foam::vtkPVblockMesh::setSelectedArrayEntries
282 vtkDataArraySelection* select,
286 const int nElem = select->GetNumberOfArrays();
287 select->DisableAllArrays();
290 for (
int elemI=0; elemI < nElem; ++elemI)
292 string arrayName(select->GetArrayName(elemI));
296 if (selections[elemI] == arrayName)
298 select->EnableArray(arrayName.c_str());
306 void Foam::vtkPVblockMesh::updateBoolListStatus
309 vtkDataArraySelection* selection
312 const label nElem = selection->GetNumberOfArrays();
314 if (status.size() != nElem)
316 status.setSize(nElem);
322 status[elemI] = selection->GetArraySetting(elemI);
#define forAll(list, i)
Loop across all elements in list.
A HashTable with keys but without contents.
static bool valid(char)
Is this character valid for a word.
static const word null
An empty word.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
#define DebugInfo
Report an information message using Foam::Info.
#define DebugInFunction
Report an information message using Foam::Info.
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
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.
List< bool > boolList
Bool container classes.
HashSet wordHashSet
A HashSet with word keys.
List< string > stringList
A List of strings.