MCPcopy Create free account
hub / github.com/Kitware/VTK / VTKToXdmfArray

Method VTKToXdmfArray

IO/Xdmf3/vtkXdmf3DataSet.cxx:205–346  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

203
204//------------------------------------------------------------------------------
205bool vtkXdmf3DataSet::VTKToXdmfArray(
206 vtkDataArray* vArray, XdmfArray* xArray, unsigned int rank, unsigned int* dims)
207{
208 std::vector<unsigned int> xdims;
209 if (rank == 0)
210 {
211 xdims.push_back(vArray->GetNumberOfTuples());
212 }
213 else
214 {
215 for (unsigned int i = 0; i < rank; i++)
216 {
217 xdims.push_back(dims[i]);
218 }
219 }
220 // add additional dimension to the xdmf array to match the vtk array's width,
221 // ex coordinate arrays have xyz, so add [3]
222 unsigned int ncomp = static_cast<unsigned int>(vArray->GetNumberOfComponents());
223 if (ncomp != 1)
224 {
225 xdims.push_back(ncomp);
226 }
227
228 if (vArray->GetName())
229 {
230 xArray->setName(vArray->GetName());
231 }
232
233 auto aos = vArray->ToAOSDataArray();
234#define DO_DEEPWRITE 1
235#if DO_DEEPWRITE
236#define XDMF_ARRAY_COPY(type, nativeType, xdmfarr, vtkarr) \
237 xdmfarr->insert(0, \
238 reinterpret_cast<type*>( \
239 vtkAOSDataArrayTemplate<nativeType>::FastDownCast(vtkarr)->GetPointer(0)), \
240 vtkarr->GetDataSize())
241#else
242#define XDMF_ARRAY_COPY(type, xdmfarr, vtkarr) \
243 xdmfarr->setValuesInternal(vtkAOSDataArrayTemplate<type>::FastDownCast(vtkarr)->GetPointer(0), \
244 vtkarr->GetDataSize(), false)
245#endif
246
247 // TODO: verify the 32/64 choices are correct in all configurations
248 switch (vArray->GetDataType())
249 {
250 case VTK_VOID:
251 return false;
252 case VTK_BIT:
253 return false;
254 case VTK_CHAR:
255 xArray->initialize(XdmfArrayType::Int8(), xdims);
256 XDMF_ARRAY_COPY(char, char, xArray, aos);
257 break;
258 case VTK_SIGNED_CHAR:
259 xArray->initialize(XdmfArrayType::Int8(), xdims);
260 XDMF_ARRAY_COPY(char, signed char, xArray, aos);
261 break;
262 case VTK_UNSIGNED_CHAR:

Callers

nothing calls this directly

Calls 9

ToAOSDataArrayMethod · 0.80
getElementSizeMethod · 0.80
push_backMethod · 0.45
GetNumberOfTuplesMethod · 0.45
GetNumberOfComponentsMethod · 0.45
GetNameMethod · 0.45
setNameMethod · 0.45
GetDataTypeMethod · 0.45
initializeMethod · 0.45

Tested by

no test coverage detected