1 /*========================================================================= 2 3 Program: Visualization Toolkit 4 Module: vtkCPExodusIINodalCoordinatesTemplate.h 5 6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 7 All rights reserved. 8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 9 10 This software is distributed WITHOUT ANY WARRANTY; without even 11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 12 PURPOSE. See the above copyright notice for more information. 13 14 =========================================================================*/ 15 16 /** 17 * @class vtkCPExodusIINodalCoordinatesTemplate 18 * @brief Map native Exodus II coordinate 19 * arrays into the vtkDataArray interface. 20 * 21 * 22 * Map native Exodus II coordinate arrays into the vtkDataArray interface. Use 23 * the vtkCPExodusIIInSituReader to read an Exodus II file's data into this 24 * structure. 25 */ 26 27 #ifndef vtkCPExodusIINodalCoordinatesTemplate_h 28 #define vtkCPExodusIINodalCoordinatesTemplate_h 29 30 #include "vtkIOExodusModule.h" // For export macro 31 #include "vtkMappedDataArray.h" 32 33 #include "vtkObjectFactory.h" // for vtkStandardNewMacro 34 35 template <class Scalar> 36 class vtkCPExodusIINodalCoordinatesTemplate : public vtkMappedDataArray<Scalar> 37 { 38 public: 39 vtkAbstractTemplateTypeMacro( 40 vtkCPExodusIINodalCoordinatesTemplate<Scalar>, vtkMappedDataArray<Scalar>) 41 vtkMappedDataArrayNewInstanceMacro(vtkCPExodusIINodalCoordinatesTemplate< 42 Scalar>) static vtkCPExodusIINodalCoordinatesTemplate* New(); 43 void PrintSelf(ostream& os, vtkIndent indent) override; 44 45 typedef typename Superclass::ValueType ValueType; 46 47 /** 48 * Set the raw scalar arrays for the coordinate set. This class takes 49 * ownership of the arrays and deletes them with delete[]. 50 */ 51 void SetExodusScalarArrays(Scalar* x, Scalar* y, Scalar* z, vtkIdType numPoints); 52 53 // Reimplemented virtuals -- see superclasses for descriptions: 54 void Initialize() override; 55 void GetTuples(vtkIdList* ptIds, vtkAbstractArray* output) override; 56 void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray* output) override; 57 void Squeeze() override; 58 VTK_NEWINSTANCE vtkArrayIterator* NewIterator() override; 59 vtkIdType LookupValue(vtkVariant value) override; 60 void LookupValue(vtkVariant value, vtkIdList* ids) override; 61 vtkVariant GetVariantValue(vtkIdType idx) override; 62 void ClearLookup() override; 63 double* GetTuple(vtkIdType i) override; 64 void GetTuple(vtkIdType i, double* tuple) override; 65 vtkIdType LookupTypedValue(Scalar value) override; 66 void LookupTypedValue(Scalar value, vtkIdList* ids) override; 67 ValueType GetValue(vtkIdType idx) const override; 68 ValueType& GetValueReference(vtkIdType idx) override; 69 void GetTypedTuple(vtkIdType idx, Scalar* t) const override; 70 71 ///@{ 72 /** 73 * This container is read only -- this method does nothing but print a 74 * warning. 75 */ 76 vtkTypeBool Allocate(vtkIdType sz, vtkIdType ext) override; 77 vtkTypeBool Resize(vtkIdType numTuples) override; 78 void SetNumberOfTuples(vtkIdType number) override; 79 void SetTuple(vtkIdType i, vtkIdType j, vtkAbstractArray* source) override; 80 void SetTuple(vtkIdType i, const float* source) override; 81 void SetTuple(vtkIdType i, const double* source) override; 82 void InsertTuple(vtkIdType i, vtkIdType j, vtkAbstractArray* source) override; 83 void InsertTuple(vtkIdType i, const float* source) override; 84 void InsertTuple(vtkIdType i, const double* source) override; 85 void InsertTuples(vtkIdList* dstIds, vtkIdList* srcIds, vtkAbstractArray* source) override; 86 void InsertTuples( 87 vtkIdType dstStart, vtkIdType n, vtkIdType srcStart, vtkAbstractArray* source) override; 88 vtkIdType InsertNextTuple(vtkIdType j, vtkAbstractArray* source) override; 89 vtkIdType InsertNextTuple(const float* source) override; 90 vtkIdType InsertNextTuple(const double* source) override; 91 void DeepCopy(vtkAbstractArray* aa) override; 92 void DeepCopy(vtkDataArray* da) override; 93 void InterpolateTuple( 94 vtkIdType i, vtkIdList* ptIndices, vtkAbstractArray* source, double* weights) override; 95 void InterpolateTuple(vtkIdType i, vtkIdType id1, vtkAbstractArray* source1, vtkIdType id2, 96 vtkAbstractArray* source2, double t) override; 97 void SetVariantValue(vtkIdType idx, vtkVariant value) override; 98 void InsertVariantValue(vtkIdType idx, vtkVariant value) override; 99 void RemoveTuple(vtkIdType id) override; 100 void RemoveFirstTuple() override; 101 void RemoveLastTuple() override; 102 void SetTypedTuple(vtkIdType i, const Scalar* t) override; 103 void InsertTypedTuple(vtkIdType i, const Scalar* t) override; 104 vtkIdType InsertNextTypedTuple(const Scalar* t) override; 105 void SetValue(vtkIdType idx, Scalar value) override; 106 vtkIdType InsertNextValue(Scalar v) override; 107 void InsertValue(vtkIdType idx, Scalar v) override; 108 ///@} 109 110 protected: 111 vtkCPExodusIINodalCoordinatesTemplate(); 112 ~vtkCPExodusIINodalCoordinatesTemplate() override; 113 114 Scalar* XArray; 115 Scalar* YArray; 116 Scalar* ZArray; 117 118 private: 119 vtkCPExodusIINodalCoordinatesTemplate(const vtkCPExodusIINodalCoordinatesTemplate&) = delete; 120 void operator=(const vtkCPExodusIINodalCoordinatesTemplate&) = delete; 121 122 vtkIdType Lookup(const Scalar& val, vtkIdType startIndex); 123 double* TempDoubleArray; 124 }; 125 126 #include "vtkCPExodusIINodalCoordinatesTemplate.txx" 127 128 #endif // vtkCPExodusIINodalCoordinatesTemplate_h 129 130 // VTK-HeaderTest-Exclude: vtkCPExodusIINodalCoordinatesTemplate.h 131