NuShellX - Large Scale Shell Model Calculations on your PC.
The faster, easy choice for large scale shell model calculations !

In 1976, I developed an idea for large scale shell model calculations by coupling the results of two smaller calculations together, using results from the Oxford Shell Model code. Nigel Godwin did the programming and the new code MultiShell was used for multi-particle-hole calculations. In NuShellX a similar idea is employed. First use NuShell to calculate the wavefunctions of the neutrons and protons separately then couple these together to work out the states of the total nucleus (n+p). This is what NuShellX does. The choice of neutrons and protons is not unique. The "n" and "p"  particles could be the same type of nucleon from different shells, but in this version of the code their number must be conserved.
This version of NuShellX is capable of calculations with dimensions well in excess of 100,000,000 on a Windows/Linux PC with 6GB of memory. The formalism has been given by the Strasbourg group (E.Caurier et al, PRC 59, 2033, 1999) and used in the code Nathan. NuShellX uses faster matrix multiplication as suggested by Jussi Toivanen (arXiv:nucl-th/0610028v1 9 Oct 2006 and to be published) and used in his new version of EICODE. This formalism treats the protons and neutrons separately and only calculates the np interaction terms as part of an iterative process.

But there are many differences. NuShellX does not use tables of coefficients of fractional parentage. It uses NuShell to calculate RTD's (reduced transition densities) and the nn and pp Hamiltonian matrices. I have written my own matrix multiplication routines that combine with bit-pattern logic to determine how to multiply the sparse matrices without including zeros. The code reduces the dependence on total spin J by using some ideas similar to those suggested by Jussi ( and with additional steps.

It is designed to run in parallel using Open MP. You get nearly the full benefit of the number of processors. It is written in Intel Fortran 95 code and will run on both 32 bit and 64 bit machines / operating systems. It uses the Lanczos iteration method but does not store the Hamiltonian operator instead it rebuilds the Hamiltonian operator each iteration from the RTD's and matrices, Racah coefficients, and np-interaction matrix elements in particle hole form. 
I have written a new Thick Restart Lanczos routine that can be used as an alternative to the standard  Lanczos routine. This has three advantages. The number of vectors stored on disk is smaller, the time taken to reorthogonalise is reduced, and the total number of iterations can be significantly less.
NuShellX shares the same modular design as NuShell. The transition  operator program NuTra  can take any combination of the operators  I , N, a+, a-, a+a-, a+a+ and a-a- for the neutrons and protons giving a total of about 22 useful possibilties. On of these 22 (a+a- x a+a-)  is used by the Lanczos routines. The combinations (a+ x a+a+ and a+a+ x a+a+) give 3 particle and alpha transfer spectroscopic factors. These are unique to NuShellX (and NuShell). The programs NuTrx and NuClx convert the output of NuTra to decay rates and spectroscopic amplitudes
On a 3GHz Xeon Duo with 4GB of memory the release version will diagonalise the 0+ of 56Ni in full fp-shell, dimension 15,443,684, in 19 hours. But note that the code only requires 1.3GB of memory plus system overhead for this case. But for full fp-shell calculations for 48Cr, the maximum time to diagonalize any matrix is about 19 mins for J=6, dimension 226,259, while the 0+, dimension 41,355, will take 38 seconds which is about 9 times faster than NuShell. For 48Cr the memory requirements are minimal. When N/=Z much faster times will be possible. All the above times are for the thick restart Lanczos method and 10 converged eigenvalues.
NushellX will be probably 5.5 and 10 times faster than published times for Antoine (Strasbourg group m-scheme cousin of Nathan)  for 0+ states in 56Ni and 52Fe correcting for processor differences. But in absolute terms it will be 16.8 and 30 times faster on the Xeon Duo for 0+ states in 56Ni and 52Fe. A calculation that took 14 hours and 60GB memory with Nushell has been done in less than 3 mins with 2GB memory with a pre-release version of NuShellX on the same machine. This is nearly 300 times faster. Note however that for small calculations NuShell will be faster than NuShellX and isospin can be used with NuShell but not with NuShellX. But the isospin of final states is easily and quickly calculated.
For larger calculations 4 or more processors are recommended to speed up the calculations, but the memory requirement also increases with the number of processors since each processor must have its own copy of the new Lanczos vector and its own buffers for intermediate storage. A large processor cache is also advantageous as is a 10,000 RPM disk.
Note that the diagonalisation of the Hamiltonian matrix has undergone extensive testing for some aspects particularly stability. The transition rate codes have not had extensive testing.
Alex Brown ( is now testing the codes prior to full release. Many  thanks to Mihai Horoi ( for finding an error in earlier versions.
Many very useful and helpful email exchanges with Jussi Toivanen are acknowledged.
Subject to terms of use. 
Download 64bit binary codes  Release  Code 
(new version 4.2  19/04/2008)

download here and the source code here.

 Produced by

  William Rae ,  Garsington, Dec 2007/ Apr 2008

  home page