VTK
dox/Graphics/vtkYoungsMaterialInterface.h
Go to the documentation of this file.
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