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 "vtkDataObject.h" 00028 00029 class vtkImageData; 00030 00031 class VTK_CHEMISTRY_EXPORT vtkAbstractElectronicData : public vtkDataObject 00032 { 00033 public: 00034 vtkTypeMacro(vtkAbstractElectronicData,vtkDataObject); 00035 virtual void PrintSelf(ostream& os, vtkIndent indent); 00036 00038 virtual vtkIdType GetNumberOfMOs() = 0; 00039 00041 virtual vtkIdType GetNumberOfElectrons() = 0; 00042 00044 virtual vtkImageData * GetMO(vtkIdType orbitalNumber) = 0; 00045 00049 virtual vtkImageData * GetElectronDensity() = 0; 00050 00052 vtkImageData * GetHOMO() {return this->GetMO(this->GetHOMOOrbitalNumber());} 00053 00055 vtkImageData * GetLUMO() {return this->GetMO(this->GetLUMOOrbitalNumber());} 00056 00057 // Descripition: 00058 // Returns the orbital number of the Highest Occupied Molecular Orbital. 00059 vtkIdType GetHOMOOrbitalNumber() 00060 { 00061 return static_cast<vtkIdType>((this->GetNumberOfElectrons() / 2 ) - 1); 00062 } 00063 00064 // Descripition: 00065 // Returns the orbital number of the Lowest Unoccupied Molecular Orbital. 00066 vtkIdType GetLUMOOrbitalNumber() 00067 { 00068 return static_cast<vtkIdType>( this->GetNumberOfElectrons() / 2 ); 00069 } 00070 00072 00074 bool IsHOMO(vtkIdType orbitalNumber) 00075 { 00076 return (orbitalNumber == this->GetHOMOOrbitalNumber()); 00077 } 00079 00081 00083 bool IsLUMO(vtkIdType orbitalNumber) 00084 { 00085 return (orbitalNumber == this->GetLUMOOrbitalNumber()); 00086 } 00088 00090 virtual void DeepCopy(vtkDataObject *obj); 00091 00093 00095 vtkGetMacro(Padding, double); 00097 00098 protected: 00099 vtkAbstractElectronicData(); 00100 ~vtkAbstractElectronicData(); 00101 00102 double Padding; 00103 00104 private: 00105 // Not implemented: 00106 vtkAbstractElectronicData(const vtkAbstractElectronicData&); 00107 void operator=(const vtkAbstractElectronicData&); 00108 }; 00109 00110 #endif