30 #include "vtkPVFoamReader.h"
39 #include "vtkDataArraySelection.h"
40 #include "vtkDataSet.h"
41 #include "vtkMultiBlockDataSet.h"
42 #include "vtkInformation.h"
49 inline word getFirstWord(
const char* str)
58 return word(str,
n,
true);
72 void Foam::vtkPVFoam::AddToBlock
74 vtkMultiBlockDataSet* output,
76 const arrayRange&
range,
77 const label datasetNo,
78 const std::string& datasetName
81 const int blockNo =
range.block();
83 vtkDataObject* blockDO = output->GetBlock(blockNo);
84 vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
91 <<
"Block already has a vtkDataSet assigned to it"
97 output->SetBlock(blockNo, block);
103 Info<<
"block[" << blockNo <<
"] has "
104 << block->GetNumberOfBlocks()
105 <<
" datasets prior to adding set " << datasetNo
106 <<
" with name: " << datasetName <<
endl;
109 block->SetBlock(datasetNo, dataset);
114 output->GetMetaData(blockNo)->Set
116 vtkCompositeDataSet::NAME(),
121 if (datasetName.size())
123 block->GetMetaData(datasetNo)->Set
125 vtkCompositeDataSet::NAME(),
132 vtkDataSet* Foam::vtkPVFoam::GetDataSetFromBlock
134 vtkMultiBlockDataSet* output,
135 const arrayRange&
range,
136 const label datasetNo
139 const int blockNo =
range.block();
141 vtkDataObject* blockDO = output->GetBlock(blockNo);
142 vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
146 return vtkDataSet::SafeDownCast(block->GetBlock(datasetNo));
155 vtkMultiBlockDataSet* output,
156 const arrayRange&
range
159 const int blockNo =
range.block();
161 vtkDataObject* blockDO = output->GetBlock(blockNo);
162 vtkMultiBlockDataSet* block = vtkMultiBlockDataSet::SafeDownCast(blockDO);
165 return block->GetNumberOfBlocks();
172 Foam::word Foam::vtkPVFoam::getPartName(
const int partId)
174 return getFirstWord(reader_->GetPartArrayName(partId));
180 vtkDataArraySelection* select
183 int nElem = select->GetNumberOfArrays();
186 for (
int elemI=0; elemI < nElem; ++elemI)
188 if (select->GetArraySetting(elemI))
190 selections.insert(getFirstWord(select->GetArrayName(elemI)));
200 vtkDataArraySelection* select,
201 const arrayRange&
range
204 int nElem = select->GetNumberOfArrays();
207 for (
int elemI =
range.start(); elemI <
range.end(); ++elemI)
209 if (select->GetArraySetting(elemI))
211 selections.insert(getFirstWord(select->GetArrayName(elemI)));
221 vtkDataArraySelection* select
224 stringList selections(select->GetNumberOfArrays());
229 if (select->GetArraySetting(elemI))
231 selections[nElem++] = select->GetArrayName(elemI);
234 selections.setSize(nElem);
239 label nElem = select->GetNumberOfArrays();
241 for (
int elemI = 0; elemI < nElem; ++elemI)
243 Info<<
" \"" << select->GetArrayName(elemI) <<
"\"";
245 Info<<
" )\nselected(";
249 Info<<
" " << selections[elemI];
260 vtkDataArraySelection* select,
261 const arrayRange&
range
267 for (
int elemI =
range.start(); elemI <
range.end(); ++elemI)
269 if (select->GetArraySetting(elemI))
271 selections[nElem++] = select->GetArrayName(elemI);
274 selections.setSize(nElem);
280 for (
int elemI =
range.start(); elemI <
range.end(); ++elemI)
282 Info<<
" \"" << select->GetArrayName(elemI) <<
"\"";
284 Info<<
" )\nselected(";
288 Info<<
" " << selections[elemI];
297 void Foam::vtkPVFoam::setSelectedArrayEntries
299 vtkDataArraySelection* select,
303 const int nElem = select->GetNumberOfArrays();
304 select->DisableAllArrays();
307 for (
int elemI=0; elemI < nElem; ++elemI)
309 string arrayName(select->GetArrayName(elemI));
313 if (selections[elemI] == arrayName)
315 select->EnableArray(arrayName.c_str());
331 Info<<
"mem peak/size/rss: " << mem <<
"\n";
#define forAll(list, i)
Loop across all elements in list.
A HashTable with keys but without contents.
static void printMemory()
Simple memory used debugging information.
A class for handling words, derived from string.
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.
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.
HashSet wordHashSet
A HashSet with word keys.
List< string > stringList
A List of strings.