VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkYoungsMaterialInterface.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00039 #ifndef __vtkYoungsMaterialInterface_h 00040 #define __vtkYoungsMaterialInterface_h 00041 00042 #include "vtkMultiBlockDataSetAlgorithm.h" 00043 00044 #include "vtkSmartPointer.h" // For SP ivars 00045 00046 class vtkIntArray; 00047 class vtkInformation; 00048 class vtkInformationVector; 00049 class vtkYoungsMaterialInterfaceInternals; 00050 00051 class VTK_GRAPHICS_EXPORT vtkYoungsMaterialInterface : public vtkMultiBlockDataSetAlgorithm 00052 { 00053 public: 00054 static vtkYoungsMaterialInterface* New(); 00055 vtkTypeMacro(vtkYoungsMaterialInterface,vtkMultiBlockDataSetAlgorithm); 00056 void PrintSelf(ostream& os, vtkIndent indent); 00057 00059 00060 vtkSetMacro(InverseNormal,int); 00061 vtkGetMacro(InverseNormal,int); 00062 vtkBooleanMacro(InverseNormal,int); 00064 00066 00068 vtkSetMacro(ReverseMaterialOrder,int); 00069 vtkGetMacro(ReverseMaterialOrder,int); 00070 vtkBooleanMacro(ReverseMaterialOrder,int); 00072 00074 00077 vtkSetMacro(OnionPeel,int); 00078 vtkGetMacro(OnionPeel,int); 00079 vtkBooleanMacro(OnionPeel,int); 00081 00083 00085 vtkSetMacro(AxisSymetric,int); 00086 vtkGetMacro(AxisSymetric,int); 00087 vtkBooleanMacro(AxisSymetric,int); 00089 00091 00095 vtkSetMacro(UseFractionAsDistance,int); 00096 vtkGetMacro(UseFractionAsDistance,int); 00097 vtkBooleanMacro(UseFractionAsDistance,int); 00099 00101 00103 vtkSetMacro(FillMaterial,int); 00104 vtkGetMacro(FillMaterial,int); 00105 vtkBooleanMacro(FillMaterial,int); 00107 00109 00113 vtkSetVector2Macro(VolumeFractionRange,double); 00114 vtkGetVectorMacro(VolumeFractionRange,double,2); 00116 00118 00119 virtual void SetNumberOfMaterials(int n); 00120 virtual int GetNumberOfMaterials(); 00122 00124 00126 vtkSetMacro(UseAllBlocks,bool); 00127 vtkGetMacro(UseAllBlocks,bool); 00128 vtkBooleanMacro(UseAllBlocks,bool); 00130 00132 00134 vtkGetMacro(NumberOfDomains,int); 00136 00138 00140 virtual void SetMaterialArrays( int i, const char* volume, const char* normalX, const char* normalY, const char* normalZ, const char* ordering ); 00141 virtual void SetMaterialArrays( int i, const char* volume, const char* normal, const char* ordering ); 00142 virtual void SetMaterialVolumeFractionArray( int i, const char* volume ); 00143 virtual void SetMaterialNormalArray( int i, const char* normal ); 00144 virtual void SetMaterialOrderingArray( int i, const char* ordering ); 00146 00148 virtual void RemoveAllMaterials(); 00149 00151 00157 virtual void SetMaterialNormalArray(const char* volume, const char* normal); 00158 virtual void SetMaterialOrderingArray(const char* volume, const char* ordering); 00160 00162 00163 virtual void RemoveAllMaterialBlockMappings(); 00164 virtual void AddMaterialBlockMapping(int b); 00166 00167 00168 //BTX 00169 enum 00170 { 00171 MAX_CELL_POINTS=256 00172 }; 00173 //ETX 00174 00175 protected: 00176 vtkYoungsMaterialInterface (); 00177 virtual ~vtkYoungsMaterialInterface (); 00178 00179 virtual int FillInputPortInformation(int port, vtkInformation *info); 00180 virtual int RequestData(vtkInformation *request, 00181 vtkInformationVector **inputVector, 00182 vtkInformationVector *outputVector); 00183 00185 virtual void Aggregate ( int, int* ); 00186 00187 void UpdateBlockMapping(); 00188 00189 int CellProduceInterface( int dim, int np, double fraction, double minFrac, double maxFrac ); 00190 00192 00193 int FillMaterial; 00194 int InverseNormal; 00195 int AxisSymetric; 00196 int OnionPeel; 00197 int ReverseMaterialOrder; 00198 int UseFractionAsDistance; 00199 double VolumeFractionRange[2]; 00200 //BTX 00201 vtkSmartPointer<vtkIntArray> MaterialBlockMapping; 00202 //ETX 00203 bool UseAllBlocks; 00205 00207 int NumberOfDomains; 00208 00209 // Desctiption: 00210 // Internal data structures 00211 vtkYoungsMaterialInterfaceInternals* Internals; 00212 00213 private: 00214 vtkYoungsMaterialInterface(const vtkYoungsMaterialInterface&); // Not implemented 00215 void operator=(const vtkYoungsMaterialInterface&); // Not implemented 00216 }; 00217 00218 #endif /* VTK_YOUNGS_MATERIAL_INTERFACE_H */ 00219