VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkAbstractElectronicData.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 =========================================================================*/ 00024 #ifndef __vtkAbstractElectronicData_h 00025 #define __vtkAbstractElectronicData_h 00026 00027 #include "vtkCommonDataModelModule.h" // For export macro 00028 #include "vtkDataObject.h" 00029 00030 class vtkImageData; 00031 00032 class VTKCOMMONDATAMODEL_EXPORT vtkAbstractElectronicData : public vtkDataObject 00033 { 00034 public: 00035 vtkTypeMacro(vtkAbstractElectronicData,vtkDataObject); 00036 virtual void PrintSelf(ostream& os, vtkIndent indent); 00037 00039 virtual vtkIdType GetNumberOfMOs() = 0; 00040 00042 virtual vtkIdType GetNumberOfElectrons() = 0; 00043 00045 virtual vtkImageData * GetMO(vtkIdType orbitalNumber) = 0; 00046 00050 virtual vtkImageData * GetElectronDensity() = 0; 00051 00053 vtkImageData * GetHOMO() {return this->GetMO(this->GetHOMOOrbitalNumber());} 00054 00056 vtkImageData * GetLUMO() {return this->GetMO(this->GetLUMOOrbitalNumber());} 00057 00058 // Descripition: 00059 // Returns the orbital number of the Highest Occupied Molecular Orbital. 00060 vtkIdType GetHOMOOrbitalNumber() 00061 { 00062 return static_cast<vtkIdType>((this->GetNumberOfElectrons() / 2 ) - 1); 00063 } 00064 00065 // Descripition: 00066 // Returns the orbital number of the Lowest Unoccupied Molecular Orbital. 00067 vtkIdType GetLUMOOrbitalNumber() 00068 { 00069 return static_cast<vtkIdType>( this->GetNumberOfElectrons() / 2 ); 00070 } 00071 00073 00075 bool IsHOMO(vtkIdType orbitalNumber) 00076 { 00077 return (orbitalNumber == this->GetHOMOOrbitalNumber()); 00078 } 00080 00082 00084 bool IsLUMO(vtkIdType orbitalNumber) 00085 { 00086 return (orbitalNumber == this->GetLUMOOrbitalNumber()); 00087 } 00089 00091 virtual void DeepCopy(vtkDataObject *obj); 00092 00094 00096 vtkGetMacro(Padding, double); 00098 00099 protected: 00100 vtkAbstractElectronicData(); 00101 ~vtkAbstractElectronicData(); 00102 00103 double Padding; 00104 00105 private: 00106 vtkAbstractElectronicData(const vtkAbstractElectronicData&); // Not implemented 00107 void operator=(const vtkAbstractElectronicData&); // Not implemented 00108 }; 00109 00110 #endif