quantumdot::QdotInteraction Class Reference

Computes lab frame matrix elements <a b|V|c d> in HO basis of the Coulomb interaction (or another radial potential). More...

#include <QdotInteraction.hpp>

Collaboration diagram for quantumdot::QdotInteraction:

[legend]
List of all members.

Public Member Functions

 QdotInteraction ()
 Default constructor.
void setRadialPotential (const RadialPotential &u)
 Assign a RadialPotential object. (The default object is a Coulomb potential.).
void buildInteractionComBlocks ()
 Build Coulomb matrix blocks in COM frame. This can easily be modified to produce a different interaction.
void buildEffectiveInteractionComBlocks (int g)
 Build *effective* Coulomb matrix blocks.
void setLambda (double ell)
 Set the interaction strength.
void setR (int the_R)
 Set the maximum shell number R.
double singleElement (int N1, int m1, int N2, int m2, int N1pr, int m1pr, int N2pr, int m2pr)
 Compute the matrix element <a1 a2|U|b1 b2> of the interaction. Here, a1 = (N1, m1), a2 = (N2, m2), b1 = (N1pr, m2pr) and b2 = (N2pr, m2pr).
double singleElementAnalytic (int N1, int m1, int N2, int m2, int N4, int m4, int N3, int m3)
 Analytic computation of LAB frame elements. Note: The order of arguments is not wrong! This is included only for completeness, and it is really slow and inaccurate for many shells. For many-particle problems (>3) it can be useful since we are then restricted to only a few shells.
void precomputeLabFrameMatrix ()
 Precopute lab frame version of the interaction.

Protected Member Functions

void buildTalmiBlocks ()
 Build the Talmi matrices up to 2*R shells. (We need 2*R blocks if we use direct product Hilbert space; only R otherwise. But this is insignificant in the greater scheme of things.).
int orbitalMap2 (int N, int m)
 Map quantum number pair to orbital number. Used for precomputing lab frame interaction. Harmonic oscillator energy is given by E = N + 1, and the usual radial quantum number n is defined through N = 2*n + abs(m).

Detailed Description

Computes lab frame matrix elements <a b|V|c d> in HO basis of the Coulomb interaction (or another radial potential).

By default, the interaction matrix is given in COM coordinates, then transformed the lab frame on the fly using the Talmi matrices. This is the fastest option for 2 or 3-body problems.

The user may also precompute lab frame matrix elements. This is especially handy if many-body calculations (as opposed to 2 or 3-body) are performed. Then, precomputeLabFrameMatrix() should be called before use. This is really not useful for 2-body problems, since the number of matrix elements created will be much higher than the resulting Hamiltonian matrix in general! For 3-body problems this is not so asymptotically, but in practice it is.

Most likely, an instance of QdotInteraction will be fed to a QdotMatrixElements instance. The latter computes the matrix elements <(a sigma) (b tau) | V | (c sigma') (d tau')>, i.e., it adds spin degrees of freedom.

QdotInteraction has an instance of RadialPotential which defines the actual potential. By default, this is a Coulomb potential.

QdotInteraction also can compute the effective interaction in the lab frame.

Typical use:

 QdotInteraction m;
 m.setR(5);
 m.setRadialPotential( u ); // assign a RadialPotential instance, if not Coulomb is wanted.
 m.buildInteractionBlocks(); // builds Coulomb interaction.
 if (i_want_to_precompute_in_lab_frame)
   m.precoputeLabFrameMatrix();

 // Ready to use! Call singleElement(N1,m1,N2,m2,N3,m3,N4,m4) to calculate!


Member Function Documentation

void quantumdot::QdotInteraction::buildEffectiveInteractionComBlocks ( int  g  ) 

Build *effective* Coulomb matrix blocks.

Parameters:
g Use R*g shells for effective Coulomb blocks.

int quantumdot::QdotInteraction::orbitalMap2 ( int  N,
int  m 
) [inline, protected]

Map quantum number pair to orbital number. Used for precomputing lab frame interaction. Harmonic oscillator energy is given by E = N + 1, and the usual radial quantum number n is defined through N = 2*n + abs(m).

Parameters:
N Shell number quantum number
m Angular momentum quantum number.

void quantumdot::QdotInteraction::setLambda ( double  ell  )  [inline]

Set the interaction strength.

Parameters:
ell The value for lambda.

void quantumdot::QdotInteraction::setR ( int  the_R  )  [inline]

Set the maximum shell number R.

Parameters:
the_R The value for R.

Here is the call graph for this function:

double quantumdot::QdotInteraction::singleElementAnalytic ( int  N1,
int  m1,
int  N2,
int  m2,
int  N4,
int  m4,
int  N3,
int  m3 
)

Analytic computation of LAB frame elements. Note: The order of arguments is not wrong! This is included only for completeness, and it is really slow and inaccurate for many shells. For many-particle problems (>3) it can be useful since we are then restricted to only a few shells.

NOTE: In the code in QdotInteraction.cc, it would be better to take the log of f0, f1 etc and use exp(f0+....) instead of f0*f1... Should implement this; if I haven't done it when you read this, do so yourself. :-)


The documentation for this class was generated from the following files:
Generated on Wed Jun 17 11:44:03 2009 for OpenFCI by  doxygen 1.4.7