CONGEN
5.0
Configuration generation for SCATCI
|
Distribute electrons to available orbitals.
Functions/Subroutines | |
subroutine, private | assign (nshl, ndist, nused, refcon, excon, qnstor, nx, nftw) |
Assign quantum numbers to real shells. More... | |
subroutine, private | cgcoef (j1, j2, j3, m3, n, ms, c, intpfg) |
Clebsch-Gordan coefficients. More... | |
subroutine, private | getsa (ne, l, is, isz, m, nc, c, iso) |
Form ne electrons in a shell coupled to (l,is). More... | |
subroutine, private | getsm (ne, isz, nc, c, iso) |
Form ne electrons in a shell coupled to (l,is). More... | |
subroutine, private | getso (ns, intpfg, nti, iqns, ci, nd, id, cd, last) |
? More... | |
subroutine, private | cplea (nncsf, nadel, x, nftw) |
Loop through (and fill) all allowed couplings for a given electron distribution into shells. More... | |
subroutine, private | cplem (nncsf, nadel, x, nftw) |
? More... | |
subroutine, public | distrb (nelecp, nshlp, shlmx, occshl, nslsv, kdssv, loopf, ksss, pqn, occst, shlmx1, pqnst, mshl, mshlst, gushl, gushst, cup, cupst, ndprod, symtyp, confpf, sshl, sshlst, ncsf, nncsf, nadel, nndel, x, nftw) |
Distribute electrons to spin-orbitals. More... | |
subroutine, private | packdet (iqn, ni, jqn, nj, ci, cj, nt) |
Copy determinant data. More... | |
subroutine, private | print1 (qnstor) |
? More... | |
subroutine, private | print2 (iidis1) |
? More... | |
subroutine, private | print3 (iidis1, i13) |
? More... | |
subroutine, private | print4 (nd, x, ix) |
? More... | |
subroutine, private | print5 (nd, ndi) |
? More... | |
subroutine, private | state (ns, x, last, nd, confpf) |
? More... | |
subroutine | wfcple (nam, iqn, isz, icup, iqns, c, last, lc2, intpfg) |
? More... | |
subroutine, private | wfn (nncsf, nadel, iidist, iidis3, nodi, ndi, cdi, ndel, pqnshl, x, ix, nx) |
TODO... More... | |
|
private |
nshl | Number of shells. |
ndist | Number of distributions generated from a given set of shells. |
nused | Number of slots used for finally assigned shells. |
refcon | ? |
excon | ? |
qnstor | Finally assigned quantum numbers. |
nx | Dimension of x overlayed with qnstor . |
nftw | Text output file unit. |
Definition at line 53 of file congen_distribution.f90.
References congen_data::ift, congen_data::nobi, congen_data::nobt, congen_data::nrcon, congen_data::nshsym, congen_data::nst, congen_data::ntcon, congen_data::occshl, congen_data::pqnst, congen_data::qnshlr, congen_data::sshlst, and congen_data::test.
Referenced by cplea(), and cplem().
|
private |
Evaluates all Clebsch-Gordan coefficients for given \( j_1, j_2, j_2 \) and \( m_3 \).
j1 | Angular momentum 1. |
j2 | Angular momentum 2. |
j3 | Angular momentum 3. |
m3 | Angular momentum projection 3. |
n | On return, number of (m1 , m2 ) pairs giving non-zero Clebsch-Gordan coefficients. |
ms | On return, pairs of projections m1 , m2 for angular momenta j1 and j2. |
c | On return, array of resulting n Clebsch-Gordan coefficients. |
intpfg | Requested text output intensity. |
Definition at line 197 of file congen_distribution.f90.
References congen_data::binom, congen_data::ind, congen_data::nftw, and congen_data::thresh1.
Referenced by wfcple().
|
private |
CUPSET IS THE ENTRY TO SET LOCATIONS OF ARRAYS MSHL(NSHL) SYMMETRY NUMBER FROM ZERO TO N-1 (MVALUE) QNSHL(3,2*NSHL-1) 1 -- MULT / 2 -- SYMMETRY / 3 -- +- (NOT USED) CUP(3,NSHL-1) QNTOT(3) TOTAL QN'S SPNMIN(NSHL-1) TEMP STORAGE FOR LOWEST SPIN COUPLING X(NX) WORK AREA (R*8) NSHL NUMBER OF TRUE SHELLS OCCUPIED NSTATE NUMBER OF COUPLINGS (COMPUTED) NTYPE PROTO-TYPE NUMBER (INPUT) NDIST NUMBER OF PQN ASSIGNMENTS NCSF RUNNING CSF NUMBER SYMTYP GE 2 FOR MOLECULE CONPF PRINT FLAG GUSHELL(NSHL) GU VALUE FOR EACH SHELL SHLMX(NSHL) MAX OCCUPATION FOR A SHELL OCCSHL(NSHL) COMPRESSED SHELL OCC'S / ALL ZEROS DELETED AND PSEUDO SHELLS EXPANDED QNSHL(3,NSHL) FIRST INDEX = 1 MULTIPLICITY FOR EACH COUPLING FIRST INDEX = 2 M-VALUE FOR EACH COUPLING FIRST INDEX = 3 +1 FOR (S+) -1 FOR (S-) OTHERWIZE ZERO CUP(3,NSHL) COUPLING SCEME IN ORDER STATE A TO STATE B GIVES STATE C QNTOT(3) INPUT STATE TO BE SEARCHED FOR. ORDER: MULTI- PLICITY,ANG.MOM., PLUS(+1) OR MINUS(-1) GUTOT G(+1) OR U(-1) FOR INPUT STATE KSLIM(2,NSHL) FIRST INDEX = 1 IS NUMBER OF STATES ALREDY LOOPED OVER IN A SHELL FIRST INDEX = 2 IS THE NUMBER OF STATES FOR A SHELL MCLIM(2,NSHL) FIRST INDEX = 1 IS THE NUMBER OF STATES ALREADY LOOPED OVER IN A COUPLING FIRST INDEX = 2 IS THE MAXIMUM NUMBER OF STATES IN A COUPLING QNTMP(2,3,NSHL) FIRST INDEX POINTS ON + OR QNTMP(2,3,NSHL) FIRST INDEX POINTS ON +- AND M(2 AND 1 RESP.) SECOND INDEX POINTS ON POSSIBLE COUPLINGS (M+M,M-M,2*M,S+,S-) SAVE AREA DOWN THE LOOPS SPNMIN(NSHL) MIN MULTIPLICITY FOR A COUPLING
Definition at line 574 of file congen_distribution.f90.
References assign(), congen_data::cdimx, congen_data::confpf, congen_data::cup, congen_data::gushl, congen_data::gutot, congen_data::icdi, congen_data::iexcon, congen_data::indi, congen_data::inodi, congen_data::iqnstr, congen_data::irfcon, congen_data::kslim, congen_data::lg, congen_data::mclim, congen_data::mshl, congen_data::ndel, congen_data::ndimx, congen_data::ndist, congen_data::next, congen_data::nndel, congen_data::nodimx, congen_data::nshl, congen_data::nstate, congen_data::nx, congen_data::occshl, print1(), print2(), print3(), congen_data::qnshl, congen_data::qntar, congen_data::qntot, congen_data::shlmx1, congen_data::spnmin, and wfn().
Referenced by distrb().
|
private |
nncsf | Number of CSFs (total). |
nadel | Number of processed configurations. |
x | Real workspace (or the free part of it). |
nftw | Text output unit. |
Definition at line 801 of file congen_distribution.f90.
References assign(), congen_data::confpf, congen_data::cup, congen_data::icdi, congen_data::iexcon, congen_data::indi, congen_data::inodi, congen_data::iqnstr, congen_data::irfcon, congen_data::lg, congen_data::mshl, congen_data::ndel, congen_data::ndist, congen_data::next, congen_data::nndel, congen_data::nshl, congen_data::nstate, congen_data::nx, congen_data::occshl, print1(), print2(), print3(), congen_data::qnshl, congen_data::qntar, congen_data::qntot, congen_data::shlmx1, congen_data::spnmin, and wfn().
Referenced by distrb().
subroutine, public congen_distribution::distrb | ( | integer, dimension(*), intent(in) | nelecp, |
integer, dimension(*), intent(in) | nshlp, | ||
integer, dimension(*), intent(in) | shlmx, | ||
integer, dimension(*), intent(inout) | occshl, | ||
integer, dimension(*), intent(inout) | nslsv, | ||
integer, dimension(*), intent(inout) | kdssv, | ||
integer, dimension(*), intent(inout) | loopf, | ||
integer, dimension(*), intent(inout) | ksss, | ||
integer, dimension(3,*), intent(in) | pqn, | ||
integer, dimension(*), intent(inout) | occst, | ||
integer, dimension(*), intent(in) | shlmx1, | ||
integer, dimension(3,*), intent(out) | pqnst, | ||
integer, dimension(*), intent(in) | mshl, | ||
integer, dimension(*), intent(out) | mshlst, | ||
integer, dimension(*), intent(in) | gushl, | ||
integer, dimension(*), intent(out) | gushst, | ||
integer, dimension(3,*), intent(in) | cup, | ||
integer, dimension(3,*), intent(inout) | cupst, | ||
integer, intent(in) | ndprod, | ||
integer, intent(in) | symtyp, | ||
integer, intent(in) | confpf, | ||
integer, dimension(*), intent(in) | sshl, | ||
integer, dimension(*), intent(out) | sshlst, | ||
integer, intent(in) | ncsf, | ||
integer | nncsf, | ||
integer | nadel, | ||
integer, intent(in) | nndel, | ||
real(kind=wp), dimension(*) | x, | ||
integer | nftw | ||
) |
This subroutine will generate all possible configuration state functions subject to setup and constraints set by the input namelist. All generated configurations are normally stored in the global arrays nodi
, ndi
and cdi
, but if the storage is about to overflow (which is very likely for large molecules), it is flushed to the output file sooner (see congen_distribution::wfn), providing space for further configurations.
nelecp | Number of electrons per set of orbitals. |
nshlp | Number of shells in a set of orbitals. |
shlmx | Max occupation of a shell or a pseudoshell. |
occshl | On return, occupation of shells / pseudoshells. |
nslsv | Save area for index, per shell. |
kdssv | ? |
loopf | Pointer for zero occup or pseudoshell, per shell. |
ksss | Save area for index, per shell. |
pqn | Shell data (triplet per shell): 1st == 0 (pseudoshell) or /= 0 (real shell index), 2nd start index for pseudoshell, 3rd end index for pseudoshell. |
occst | ? |
shlmx1 | ? |
pqnst | ? |
mshl | Quantum number of a shell or of a pseudoshell, per shell. |
mshlst | ? |
gushl | Gerade/ungerade flag, per shell. |
gushst | ? |
cup | Coupling scheme. |
cupst | Expanded shells with zeroes deleted. |
ndprod | Number of sets of orbitals. |
symtyp | Symmetry group flag (< 2 diatomic, >= 2 abelian). |
confpf | ? |
sshl | ? |
sshlst | ? |
ncsf | ? |
nncsf | ? |
nadel | ? |
nndel | ? |
x | Real workspace. |
nftw | Unit for text output of the program. |
Definition at line 994 of file congen_distribution.f90.
References congen_data::confpf, cplea(), cplem(), congen_data::ncsf, congen_data::ndist, congen_data::nshl, congen_data::nstate, and congen_data::ntyp.
Referenced by congen_driver::csfgen().
|
private |
This version is for linear molecules (Alchemy).
ne | Number of electrons. |
l | Lambda of shell. |
is | Spin of coupled shell (is=2*s+1). |
isz | 2*sz+1 |
m | Projection of lambda of coupled shell. |
nc | Number of determinants required for shell. |
c | Coefficient of determinant, |
iso | Spin-orbitals for determinants according to the following table 0 sa 0 l+a 1 sb 1 l+b 2 l-a 3 l-b |
Definition at line 289 of file congen_distribution.f90.
References congen_data::root2.
Referenced by getso().
|
private |
This version is for non-linear molecules (Molecule).
ne | Number of electrons |
isz | 2*sz+1 |
nc | Number of determinants required for shell. |
c | Coefficient of determinant. |
iso | Spin-orbitals for determinants according to the following table: 0 sa 0 l+a 1 sb 1 l+b 2 l-a 3 l-b |
Definition at line 374 of file congen_distribution.f90.
Referenced by getso().
|
private |
ns | ? |
intpfg | Print level flag. |
nti | ? |
iqns | ? |
ci | ? |
nd | ? |
id | ? |
cd | ? |
last | ? |
Definition at line 416 of file congen_distribution.f90.
References getsa(), getsm(), congen_data::mshl, congen_data::ne, congen_data::nftw, congen_data::nnlecg, congen_data::occshl, congen_data::qnshl, and congen_data::symtyp.
Referenced by state().
|
private |
Whatever was this function originally designed for, it just straghtforwardly copies arrays of data.
iqn | Source data for jqn . |
ni | Second rank of iqn . |
jqn | Destination for data from iqn . |
nj | Second rank of jqn . |
ci | Source data for cj . |
cj | Destination for data from ci . |
nt | Minimal dimension of of ci and cj and of the third rank of iqn and jqn . |
Definition at line 1280 of file congen_distribution.f90.
Referenced by state().
|
private |
Definition at line 1299 of file congen_distribution.f90.
References congen_pagecontrol::addl(), congen_data::blnk43, congen_data::confpf, congen_data::gushl, congen_data::header, congen_data::lp, congen_data::mshl, congen_data::ndist, congen_data::ne, congen_pagecontrol::newpg(), congen_data::nftw, congen_data::nitem, congen_data::nnlecg, congen_data::nshl, congen_data::ntyp, congen_data::occshl, congen_data::pqnst, congen_data::qnshl, congen_pagecontrol::space(), congen_data::star, congen_data::symtyp, congen_pagecontrol::taddl(), and congen_pagecontrol::taddl1().
Referenced by cplea(), and cplem().
|
private |
Definition at line 1408 of file congen_distribution.f90.
References congen_pagecontrol::addl(), congen_data::blnk43, congen_data::confpf, congen_data::cup, congen_data::header, congen_data::lp, congen_data::ncsf, congen_data::ndist, congen_data::nftw, congen_data::nitem, congen_data::nshl, congen_data::nstate, congen_data::qnshl, congen_pagecontrol::space(), and congen_data::symtyp.
Referenced by cplea(), and cplem().
|
private |
Definition at line 1473 of file congen_distribution.f90.
References congen_pagecontrol::addl(), congen_data::confpf, congen_data::ncsf, congen_data::ndist, congen_data::nftw, congen_data::nitem, congen_data::nshl, congen_data::nstate, congen_data::ntyp, congen_pagecontrol::space(), congen_data::star, and congen_pagecontrol::taddl().
Referenced by cplea(), and cplem().
|
private |
Definition at line 1507 of file congen_distribution.f90.
References congen_pagecontrol::addl(), congen_data::ne, congen_data::nftw, and congen_pagecontrol::space().
Referenced by wfn().
|
private |
Definition at line 1551 of file congen_distribution.f90.
References congen_pagecontrol::addl(), congen_data::ncsf, and congen_data::nftw.
Referenced by wfn().
|
private |
ns | Actually, this is just reference to the global congen_data::nshl (number of shells in the set of orbitals currently being processed.) |
x | Real workspace (or the currently free part of it). |
last | Number of available elements in the workspace. |
nd | ? |
confpf | Print level flag. |
Definition at line 1602 of file congen_distribution.f90.
References congen_data::cup, getso(), congen_data::lratio, congen_data::ne, congen_data::nisz, congen_data::nnlecg, packdet(), congen_data::qnshl, and wfcple().
Referenced by wfn().
subroutine congen_distribution::wfcple | ( | integer, intent(in) | nam, |
integer, dimension(3,*) | iqn, | ||
integer, intent(in) | isz, | ||
integer, dimension(3,lg), intent(in) | icup, | ||
integer, dimension(2,nam,*), intent(inout) | iqns, | ||
real(kind=wp), dimension(*), intent(inout) | c, | ||
integer, intent(in) | last, | ||
integer, intent(inout) | lc2, | ||
integer | intpfg | ||
) |
Definition at line 1667 of file congen_distribution.f90.
References cgcoef(), congen_data::lg, congen_data::nftw, and congen_data::root2.
Referenced by state().
|
private |
One of interesting features of this subroutine is that it can detect if the storage for determinants is about to overflow. In such a case it will automatically flush the data to the output file (not waiting for the call to congen_driver::csfout), providing space for further calculation.
nncsf | Number of CSFs (total). |
nadel | Number of processed configurations. |
iidist | ? |
iidis3 | ? |
nodi | Number of determinants per CSF (1 ... noi ). |
ndi | Compressed determinants (1 ... nid ). |
cdi | Determinant coefficients (1 ... nid ). |
ndel | Configurations read from input. |
pqnshl | ? |
x | Real workspace, far enough after the chunk corresponding to pqnshl . |
ix | Actually, the same address as x , so the same workspace (just cast to integer). |
nx | Available elements in the real workspace. |
Definition at line 1814 of file congen_distribution.f90.
References congen_data::cdimx, congen_data::confpf, congen_data::exdet, congen_data::exref, congen_data::iidis2, congen_data::lcdi, congen_data::lndi, congen_data::lratio, congen_data::megul, congen_data::ncall, congen_data::ncsf, congen_data::ndimx, congen_data::ndist, congen_data::nftw, congen_data::ni, congen_data::nid, congen_data::nndel, congen_data::nnlecg, congen_data::nodimx, congen_data::noi, congen_data::nonew, congen_data::norep, congen_data::nshl, congen_data::nsoi, congen_data::ntso, congen_data::occshl, print4(), print5(), congen_data::shlmx1, congen_data::sshlst, and state().
Referenced by cplea(), and cplem().