VTK
|
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