VTK
dox/Chemistry/vtkOpenQubeElectronicData.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkOpenQubeElectronicData.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 =========================================================================*/
00023 #ifndef __vtkOpenQubeElectronicData_h
00024 #define __vtkOpenQubeElectronicData_h
00025 
00026 #include "vtkAbstractElectronicData.h"
00027 #include "vtkNew.h" // for vtkNew
00028 
00029 namespace OpenQube {
00030   class BasisSet;
00031   class Cube;
00032 }
00033 
00034 class vtkImageData;
00035 class vtkDataSetCollection;
00036 
00037 class VTK_CHEMISTRY_EXPORT vtkOpenQubeElectronicData
00038     : public vtkAbstractElectronicData
00039 {
00040 public:
00041   static vtkOpenQubeElectronicData *New();
00042   vtkTypeMacro(vtkOpenQubeElectronicData,vtkAbstractElectronicData);
00043   void PrintSelf(ostream& os, vtkIndent indent);
00044 
00046   vtkIdType GetNumberOfMOs();
00047 
00049   unsigned int GetNumberOfElectrons();
00050 
00054   vtkImageData * GetMO(vtkIdType orbitalNumber);
00055 
00059   vtkImageData * GetElectronDensity();
00060 
00062 
00063   vtkSetMacro(BasisSet, OpenQube::BasisSet*);
00064   vtkGetMacro(BasisSet, OpenQube::BasisSet*);
00066 
00068 
00070   vtkSetMacro(Padding, double);
00071   vtkGetMacro(Padding, double);
00073 
00075 
00076   vtkSetMacro(Spacing, double);
00077   vtkGetMacro(Spacing, double);
00079 
00081 
00082   vtkGetNewMacro(Images, vtkDataSetCollection);
00084 
00086   virtual void DeepCopy(vtkDataObject *obj);
00087 
00088 protected:
00089   vtkOpenQubeElectronicData();
00090   ~vtkOpenQubeElectronicData();
00091 
00093 
00095   vtkImageData * CalculateMO(vtkIdType orbitalNumber);
00096   vtkImageData * CalculateElectronDensity();
00098 
00100 
00101   void FillImageDataFromQube(OpenQube::Cube *qube,
00102                              vtkImageData *image);
00104 
00106   vtkNew<vtkDataSetCollection> Images;
00107 
00109   OpenQube::BasisSet *BasisSet;
00110 
00112   double Spacing;
00113 
00114 private:
00115   // Not implemented:
00116   vtkOpenQubeElectronicData(const vtkOpenQubeElectronicData&);
00117   void operator=(const vtkOpenQubeElectronicData&);
00118 };
00119 
00120 #endif