VTK
dox/Chemistry/vtkAbstractElectronicData.h
Go to the documentation of this file.
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