00001 #ifndef HAMILTONIANIDEAL_H 00002 #define HAMILTONIANIDEAL_H 00003 #define ZERO 1.0E-10 00004 #include <armadillo> 00005 using namespace arma; 00006 00007 #include "hamiltonian.h" 00008 00012 class HamiltonianIdeal : public Hamiltonian 00013 { 00014 public: 00015 HamiltonianIdeal(Config *config); 00016 double kineticEnergy(WaveFunction *wave, vec2 r[]); 00017 double potentialEnergy(WaveFunction *wave, vec2 r[]); 00018 double externalPotentialEnergy(WaveFunction *wave, vec2 r[]); 00019 double interactionPotentialEnergy(WaveFunction *wave, vec2 r[]); 00020 00021 double totalExternalPotentialEnergy() { 00022 return m_totalExternalPotentialEnergy; 00023 } 00024 double totalInteractionPotentialEnergy() { 00025 return m_totalInteractionPotentialEnergy; 00026 } 00027 void resetTotalEnergies(); 00028 string totalsString(); 00029 void outputTotals(); 00030 00031 private: 00032 double omega; 00033 double m_totalExternalPotentialEnergy; 00034 double m_totalInteractionPotentialEnergy; 00035 }; 00036 00037 #endif // HAMILTONIANIDEAL_H