You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.9 KiB
C
108 lines
2.9 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkProgrammableElectronicData.h
|
||
|
|
||
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||
|
All rights reserved.
|
||
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||
|
|
||
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
||
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
PURPOSE. See the above copyright notice for more information.
|
||
|
|
||
|
=========================================================================*/
|
||
|
/**
|
||
|
* @class vtkProgrammableElectronicData
|
||
|
* @brief Provides access to and storage of
|
||
|
* user-generated vtkImageData that describes electrons.
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkProgrammableElectronicData_h
|
||
|
#define vtkProgrammableElectronicData_h
|
||
|
|
||
|
#include "vtkAbstractElectronicData.h"
|
||
|
#include "vtkDomainsChemistryModule.h" // For export macro
|
||
|
|
||
|
class vtkImageData;
|
||
|
|
||
|
class StdVectorOfImageDataPointers;
|
||
|
|
||
|
class VTKDOMAINSCHEMISTRY_EXPORT vtkProgrammableElectronicData : public vtkAbstractElectronicData
|
||
|
{
|
||
|
public:
|
||
|
static vtkProgrammableElectronicData* New();
|
||
|
vtkTypeMacro(vtkProgrammableElectronicData, vtkAbstractElectronicData);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Get/Set the number of molecular orbitals. Setting this will resize this
|
||
|
* internal array of MOs.
|
||
|
*/
|
||
|
vtkIdType GetNumberOfMOs() override;
|
||
|
virtual void SetNumberOfMOs(vtkIdType);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Get/Set the number of electrons in the molecule. Needed for HOMO/LUMO
|
||
|
* convenience functions
|
||
|
*/
|
||
|
vtkIdType GetNumberOfElectrons() override { return this->NumberOfElectrons; }
|
||
|
vtkSetMacro(NumberOfElectrons, vtkIdType);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Get/Set the vtkImageData for the requested molecular orbital.
|
||
|
*/
|
||
|
vtkImageData* GetMO(vtkIdType orbitalNumber) override;
|
||
|
void SetMO(vtkIdType orbitalNumber, vtkImageData* data);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Get/Set the vtkImageData for the molecule's electron density.
|
||
|
*/
|
||
|
vtkImageData* GetElectronDensity() override { return this->ElectronDensity; }
|
||
|
virtual void SetElectronDensity(vtkImageData*);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set the padding around the molecule to which the cube extends. This
|
||
|
* is used to determine the dataset bounds.
|
||
|
*/
|
||
|
vtkSetMacro(Padding, double);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Deep copies the data object into this.
|
||
|
*/
|
||
|
void DeepCopy(vtkDataObject* obj) override;
|
||
|
|
||
|
protected:
|
||
|
vtkProgrammableElectronicData();
|
||
|
~vtkProgrammableElectronicData() override;
|
||
|
|
||
|
/**
|
||
|
* Electronic data set property
|
||
|
*/
|
||
|
vtkIdType NumberOfElectrons;
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Storage for the vtkImageData objects
|
||
|
*/
|
||
|
StdVectorOfImageDataPointers* MOs;
|
||
|
vtkImageData* ElectronDensity;
|
||
|
//@}
|
||
|
|
||
|
private:
|
||
|
vtkProgrammableElectronicData(const vtkProgrammableElectronicData&) = delete;
|
||
|
void operator=(const vtkProgrammableElectronicData&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif
|