VTK
dox/Common/DataModel/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 "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