Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
Public Member Functions | Public Attributes | List of all members
HartreeSolver Class Reference

Solver using only a Hartree wave function. More...

#include <hartreesolver.h>

Public Member Functions

 HartreeSolver (ElectronSystem *basisFunction)
 
virtual ~HartreeSolver ()
 
void reset ()
 
void advance ()
 
void setBasisFunction (ElectronSystem *basisFunction)
 
double energy ()
 

Public Attributes

double alpha [4]
 

Detailed Description

Solver using only a Hartree wave function.

Definition at line 11 of file hartreesolver.h.

Constructor & Destructor Documentation

HartreeSolver::HartreeSolver ( ElectronSystem basisFunction)
explicit

Definition at line 16 of file hartreesolver.cpp.

16  :
17  m_basisFunction(basisFunction)
18 {
19  cout << setprecision(20);
20  allocateQMemory();
21  reset();
22 }
HartreeSolver::~HartreeSolver ( )
virtual

Definition at line 24 of file hartreesolver.cpp.

25 {
26  cleanUpQMemory();
27 }

Member Function Documentation

void HartreeSolver::advance ( )

Definition at line 119 of file hartreesolver.cpp.

119  {
120  normalizeCwithRegardsToS();
121  setupF();
122 
123  vec s;
124  mat U;
125  eig_sym(s, U, S);
126 
127  mat V = U*diagmat(1.0/sqrt(s));
128 
129  F = V.t() * F * V;
130 
131  vec eps;
132  mat Cmat;
133  eig_sym(eps, Cmat, F);
134 
135  C = V*Cmat.col(0);
136  normalizeCwithRegardsToS();
137 
138  double energy = 0;
139 
140  ElectronSystem* f = m_basisFunction;
141  uint n = f->nBasisFunctions();
142 
143  for(uint p = 0; p < n; p++) {
144  for(uint q = 0; q < n; q++) {
145  energy += 2 * C(p) * C(q) * h(p,q);
146  }
147  }
148 
149  for(uint p = 0; p < n; p++) {
150  for(uint q = 0; q < n; q++) {
151  for(uint r = 0; r < n; r++) {
152  for(uint s = 0; s < n; s++) {
153  energy += Q[p][r][q][s] * C(p) * C(q) * C(r) * C(s);
154  }
155  }
156  }
157  }
158  m_energy = energy;
159 }
double HartreeSolver::energy ( )
inline

Definition at line 58 of file hartreesolver.h.

59 {
60  return m_energy;
61 }
void HartreeSolver::reset ( )

Definition at line 29 of file hartreesolver.cpp.

29  {
30  setuph();
31  setupS();
32  setupQ();
33  resetC();
34 }
void HartreeSolver::setBasisFunction ( ElectronSystem basisFunction)
inline

Definition at line 54 of file hartreesolver.h.

54  {
55  m_basisFunction = basisFunction;
56 }

Member Data Documentation

double HartreeSolver::alpha[4]

Definition at line 18 of file hartreesolver.h.


The documentation for this class was generated from the following files: