VTK
|
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 "vtkDomainsChemistryModule.h" // For export macro 00027 #include "vtkAbstractElectronicData.h" 00028 #include "vtkNew.h" // for vtkNew 00029 00030 namespace OpenQube { 00031 class BasisSet; 00032 class Cube; 00033 } 00034 00035 class vtkImageData; 00036 class vtkDataSetCollection; 00037 00038 class VTKDOMAINSCHEMISTRY_EXPORT vtkOpenQubeElectronicData 00039 : public vtkAbstractElectronicData 00040 { 00041 public: 00042 static vtkOpenQubeElectronicData *New(); 00043 vtkTypeMacro(vtkOpenQubeElectronicData,vtkAbstractElectronicData); 00044 void PrintSelf(ostream& os, vtkIndent indent); 00045 00047 vtkIdType GetNumberOfMOs(); 00048 00050 unsigned int GetNumberOfElectrons(); 00051 00055 vtkImageData * GetMO(vtkIdType orbitalNumber); 00056 00060 vtkImageData * GetElectronDensity(); 00061 00063 00064 vtkSetMacro(BasisSet, OpenQube::BasisSet*); 00065 vtkGetMacro(BasisSet, OpenQube::BasisSet*); 00067 00069 00071 vtkSetMacro(Padding, double); 00072 vtkGetMacro(Padding, double); 00074 00076 00077 vtkSetMacro(Spacing, double); 00078 vtkGetMacro(Spacing, double); 00080 00082 00083 vtkGetNewMacro(Images, vtkDataSetCollection); 00085 00087 virtual void DeepCopy(vtkDataObject *obj); 00088 00089 protected: 00090 vtkOpenQubeElectronicData(); 00091 ~vtkOpenQubeElectronicData(); 00092 00094 00096 vtkImageData * CalculateMO(vtkIdType orbitalNumber); 00097 vtkImageData * CalculateElectronDensity(); 00099 00101 00102 void FillImageDataFromQube(OpenQube::Cube *qube, 00103 vtkImageData *image); 00105 00107 vtkNew<vtkDataSetCollection> Images; 00108 00110 OpenQube::BasisSet *BasisSet; 00111 00113 double Spacing; 00114 00115 private: 00116 // Not implemented: 00117 vtkOpenQubeElectronicData(const vtkOpenQubeElectronicData&); 00118 void operator=(const vtkOpenQubeElectronicData&); 00119 }; 00120 00121 #endif