Collaboration diagram for quantumdot::QdotInteraction:
Public Member Functions
|Default constructor. |
|void||setRadialPotential (const RadialPotential &u)|
|Assign a RadialPotential object. (The default object is a Coulomb potential.). |
|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. |
|Precopute lab frame version of the interaction. |
Protected Member Functions
|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). |
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.
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!
Build *effective* Coulomb matrix blocks.
|g||Use R*g shells for effective Coulomb blocks.|
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).
|N||Shell number quantum number|
|m||Angular momentum quantum number.|
Set the interaction strength.
|ell||The value for lambda.|
Set the maximum shell number R.
|the_R||The value for R.|
Here is the call graph for this function:
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. :-)