00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
00135 enum
00136 {
00137 MAX_CELL_POINTS=256
00138 };
00139
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&);
00165 void operator=(const vtkYoungsMaterialInterface&);
00166 };
00167
00168 #endif
00169