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 "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