VTK
dox/Graphics/vtkYoungsMaterialInterface.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkYoungsMaterialInterface.h
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 =========================================================================*/
00032 #ifndef __vtkYoungsMaterialInterface_h
00033 #define __vtkYoungsMaterialInterface_h
00034 
00035 #include "vtkMultiBlockDataSetAlgorithm.h"
00036 
00037 class vtkInformation;
00038 class vtkInformationVector;
00039 class vtkYoungsMaterialInterfaceInternals;
00040 
00041 class VTK_GRAPHICS_EXPORT vtkYoungsMaterialInterface : public vtkMultiBlockDataSetAlgorithm
00042 {
00043 public:
00044   static vtkYoungsMaterialInterface* New();
00045   vtkTypeMacro(vtkYoungsMaterialInterface,vtkMultiBlockDataSetAlgorithm);
00046   void PrintSelf(ostream& os, vtkIndent indent);
00047 
00049 
00050   vtkSetMacro(InverseNormal,int);
00051   vtkGetMacro(InverseNormal,int);
00052   vtkBooleanMacro(InverseNormal,int);
00054 
00056 
00058   vtkSetMacro(ReverseMaterialOrder,int);
00059   vtkGetMacro(ReverseMaterialOrder,int);
00060   vtkBooleanMacro(ReverseMaterialOrder,int);
00062 
00064 
00067   vtkSetMacro(OnionPeel,int);
00068   vtkGetMacro(OnionPeel,int);
00069   vtkBooleanMacro(OnionPeel,int);
00071 
00073 
00075   vtkSetMacro(AxisSymetric,int);
00076   vtkGetMacro(AxisSymetric,int);
00077   vtkBooleanMacro(AxisSymetric,int);
00079 
00081 
00085   vtkSetMacro(UseFractionAsDistance,int);
00086   vtkGetMacro(UseFractionAsDistance,int);
00087   vtkBooleanMacro(UseFractionAsDistance,int);
00089 
00091 
00093   vtkSetMacro(FillMaterial,int);
00094   vtkGetMacro(FillMaterial,int);
00095   vtkBooleanMacro(FillMaterial,int);
00097 
00099 
00102   vtkSetMacro(TwoMaterialsOptimization,int);
00103   vtkGetMacro(TwoMaterialsOptimization,int);
00104   vtkBooleanMacro(TwoMaterialsOptimization,int);
00106 
00108 
00112   vtkSetVector2Macro(VolumeFractionRange,double);
00113   vtkGetVectorMacro(VolumeFractionRange,double,2);
00115  
00117 
00118   virtual void SetNumberOfMaterials(int n);
00119   virtual int GetNumberOfMaterials();
00121  
00123 
00125   virtual void SetMaterialArrays( int i, const char* volumeFraction, const char* interfaceNormal, const char* materialOrdering );
00126   virtual void SetMaterialVolumeFractionArray( int i, const char* volume );
00127   virtual void SetMaterialNormalArray( int i, const char* normal );
00128   virtual void SetMaterialOrderingArray( int i, const char* ordering );
00130 
00132   virtual void RemoveAllMaterials();
00133 
00134 //BTX
00135   enum
00136   {
00137     MAX_CELL_POINTS=256
00138   };
00139 //ETX
00140 
00141 protected:
00142   vtkYoungsMaterialInterface ();
00143   ~vtkYoungsMaterialInterface ();
00144 
00145   virtual int FillInputPortInformation(int port, vtkInformation *info);
00146   virtual int RequestData(vtkInformation *request,
00147              vtkInformationVector **inputVector,
00148              vtkInformationVector *outputVector);
00149 
00150   int CellProduceInterface( int dim, int np, double fraction, double minFrac, double maxFrac );
00151 
00152   int FillMaterial;
00153   int InverseNormal;
00154   int AxisSymetric;
00155   int OnionPeel;
00156   int ReverseMaterialOrder;
00157   int UseFractionAsDistance;
00158   int TwoMaterialsOptimization;
00159   double VolumeFractionRange[2];
00160 
00161   vtkYoungsMaterialInterfaceInternals* Internals;
00162 
00163 private:
00164   vtkYoungsMaterialInterface(const vtkYoungsMaterialInterface&); // Not implemented
00165   void operator=(const vtkYoungsMaterialInterface&); // Not implemented
00166 };
00167 
00168 #endif /* VTK_YOUNGS_MATERIAL_INTERFACE_H */
00169