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 "vtkMappedDataArray.h" 31 #include "vtkIOExodusModule.h" // For export macro 32 33 #include "vtkObjectFactory.h" // for vtkStandardNewMacro 34 35 template <class Scalar> 36 class vtkCPExodusIINodalCoordinatesTemplate: public vtkMappedDataArray<Scalar> 37 { 38 public: 39 vtkAbstractTemplateTypeMacro(vtkCPExodusIINodalCoordinatesTemplate<Scalar>, 40 vtkMappedDataArray<Scalar>) 41 vtkMappedDataArrayNewInstanceMacro( 42 vtkCPExodusIINodalCoordinatesTemplate<Scalar>) 43 static vtkCPExodusIINodalCoordinatesTemplate *New(); 44 void PrintSelf(ostream &os, vtkIndent indent) override; 45 46 typedef typename Superclass::ValueType ValueType; 47 48 /** 49 * Set the raw scalar arrays for the coordinate set. This class takes 50 * ownership of the arrays and deletes them with delete[]. 51 */ 52 void SetExodusScalarArrays(Scalar *x, Scalar *y, Scalar *z, 53 vtkIdType numPoints); 54 55 // Reimplemented virtuals -- see superclasses for descriptions: 56 void Initialize() override; 57 void GetTuples(vtkIdList *ptIds, vtkAbstractArray *output) override; 58 void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray *output) override; 59 void Squeeze() override; 60 VTK_NEWINSTANCE vtkArrayIterator *NewIterator() override; 61 vtkIdType LookupValue(vtkVariant value) override; 62 void LookupValue(vtkVariant value, vtkIdList *ids) override; 63 vtkVariant GetVariantValue(vtkIdType idx) override; 64 void ClearLookup() override; 65 double* GetTuple(vtkIdType i) override; 66 void GetTuple(vtkIdType i, double *tuple) override; 67 vtkIdType LookupTypedValue(Scalar value) override; 68 void LookupTypedValue(Scalar value, vtkIdList *ids) override; 69 ValueType GetValue(vtkIdType idx) const override; 70 ValueType& GetValueReference(vtkIdType idx) override; 71 void GetTypedTuple(vtkIdType idx, Scalar *t) const override; 72 73 //@{ 74 /** 75 * This container is read only -- this method does nothing but print a 76 * warning. 77 */ 78 vtkTypeBool Allocate(vtkIdType sz, vtkIdType ext) override; 79 vtkTypeBool Resize(vtkIdType numTuples) override; 80 void SetNumberOfTuples(vtkIdType number) override; 81 void SetTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source) override; 82 void SetTuple(vtkIdType i, const float *source) override; 83 void SetTuple(vtkIdType i, const double *source) override; 84 void InsertTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source) override; 85 void InsertTuple(vtkIdType i, const float *source) override; 86 void InsertTuple(vtkIdType i, const double *source) override; 87 void InsertTuples(vtkIdList *dstIds, vtkIdList *srcIds, 88 vtkAbstractArray *source) override; 89 void InsertTuples(vtkIdType dstStart, vtkIdType n, vtkIdType srcStart, 90 vtkAbstractArray* source) override; 91 vtkIdType InsertNextTuple(vtkIdType j, vtkAbstractArray *source) override; 92 vtkIdType InsertNextTuple(const float *source) override; 93 vtkIdType InsertNextTuple(const double *source) override; 94 void DeepCopy(vtkAbstractArray *aa) override; 95 void DeepCopy(vtkDataArray *da) override; 96 void InterpolateTuple(vtkIdType i, vtkIdList *ptIndices, 97 vtkAbstractArray* source, double* weights) override; 98 void InterpolateTuple(vtkIdType i, vtkIdType id1, vtkAbstractArray *source1, 99 vtkIdType id2, vtkAbstractArray *source2, double t) override; 100 void SetVariantValue(vtkIdType idx, vtkVariant value) override; 101 void InsertVariantValue(vtkIdType idx, vtkVariant value) override; 102 void RemoveTuple(vtkIdType id) override; 103 void RemoveFirstTuple() override; 104 void RemoveLastTuple() override; 105 void SetTypedTuple(vtkIdType i, const Scalar *t) override; 106 void InsertTypedTuple(vtkIdType i, const Scalar *t) override; 107 vtkIdType InsertNextTypedTuple(const Scalar *t) override; 108 void SetValue(vtkIdType idx, Scalar value) override; 109 vtkIdType InsertNextValue(Scalar v) override; 110 void InsertValue(vtkIdType idx, Scalar v) override; 111 //@} 112 113 protected: 114 vtkCPExodusIINodalCoordinatesTemplate(); 115 ~vtkCPExodusIINodalCoordinatesTemplate() override; 116 117 Scalar *XArray; 118 Scalar *YArray; 119 Scalar *ZArray; 120 121 private: 122 vtkCPExodusIINodalCoordinatesTemplate( 123 const vtkCPExodusIINodalCoordinatesTemplate &) = delete; 124 void operator=( 125 const vtkCPExodusIINodalCoordinatesTemplate &) = delete; 126 127 vtkIdType Lookup(const Scalar &val, vtkIdType startIndex); 128 double *TempDoubleArray; 129 }; 130 131 #include "vtkCPExodusIINodalCoordinatesTemplate.txx" 132 133 #endif //vtkCPExodusIINodalCoordinatesTemplate_h 134 135 // VTK-HeaderTest-Exclude: vtkCPExodusIINodalCoordinatesTemplate.h 136