|
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().

