CONGEN  5.0
Configuration generation for SCATCI
congen_data.f90
Go to the documentation of this file.
1 ! Copyright 2019
2 !
3 ! For a comprehensive list of the developers that contributed to these codes
4 ! see the UK-AMOR website.
5 !
6 ! This file is part of UKRmol-in (UKRmol+ suite).
7 !
8 ! UKRmol-in is free software: you can redistribute it and/or modify
9 ! it under the terms of the GNU General Public License as published by
10 ! the Free Software Foundation, either version 3 of the License, or
11 ! (at your option) any later version.
12 !
13 ! UKRmol-in is distributed in the hope that it will be useful,
14 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 ! GNU General Public License for more details.
17 !
18 ! You should have received a copy of the GNU General Public License
19 ! along with UKRmol-in (in source/COPYING). Alternatively, you can also visit
20 ! <https://www.gnu.org/licenses/>.
33 
34  use precisn, only : wp
35  use consts, only : xhalf
36 
37  save
38 
39  integer, parameter :: lg = 75
40  integer, parameter :: nu = 20
41  integer, parameter :: ny = 150
42  integer, parameter :: nz = 150
43  integer, parameter :: jx = 75
44  integer, parameter :: jy = 10
46  integer, parameter :: jz = 10
47  integer, parameter :: ky = 75
48  integer, parameter :: kz = 500
49  integer, parameter :: mxtarg = 50
50 
51  real(kind=wp), parameter :: root2 = 0.7071067811865475_wp
52  real(kind=wp), parameter :: thresh1 = 1.e-10_wp
53  real(kind=wp), parameter :: thresh2 = 1.0e-30_wp
54 
55  integer, parameter :: nitem = 9
56  integer, parameter :: nftr = 5
57  integer :: nftw = 6
58 
59  character(len=4), dimension(3), parameter :: blnk43 = &
60  (/ ' ', ' ', ' ' /)
61  character(len=8), dimension(7), parameter :: header = &
62  (/ 'SHELL NO', 'OCCSHL ', 'SYM ', 'GUSHL ', 'PQN ', 'QNSHL ', 'CUP ' /)
63  character(len=4), dimension(7), parameter :: rhead = &
64  (/ ' ', 'MSHL', 'PQN ', 'NES ', 'SO1 ', 'SO2 ', 'G/U ' /)
65 
66  character(len=3), parameter :: lp = ' ( '
67  character(len=1), parameter :: star = '*'
68 
69  character(len=1), dimension(132) :: head
70  integer :: lppmax
71  integer :: lppr
72  integer :: npage
73 
74  integer :: lratio
75  integer :: icdi
76  integer :: iexcon
77  integer :: indi
78  integer :: inodi
79  integer :: iqnstr
80  integer :: irfcon
81  integer :: ndel
82  integer :: ndel1
83  integer :: ndel2
84  integer :: gutot
85  integer :: nisz
86  integer :: nndel
87  integer :: nnlecg
88  integer :: symtyp
89 
90  integer, dimension(3,lg) :: cup
91  integer, dimension(3,lg) :: pqnst
92  integer, dimension(lg) :: gushl
93  integer, dimension(lg) :: mshl
94  integer, dimension(lg) :: occshl
95  integer, dimension(lg) :: qnshlr
96  integer, dimension(lg) :: spnmin
97  integer, dimension(lg) :: sshlst
98  integer, dimension(2,lg) :: kslim
99  integer, dimension(2,lg) :: mclim
100  integer, dimension(3,2*lg) :: qnshl
101  integer, dimension(3) :: qntar
102  integer, dimension(3) :: qntot
103  integer, dimension(nu) :: shlmx1
104 
105  integer, parameter :: jsmax = 20
106  real(kind=wp), dimension((jsmax*jsmax + 3*jsmax + 4)/2) :: binom
107  integer, dimension(jsmax+2) :: ind
108 
109  integer :: ift
110  integer :: nobt
111  integer :: ntcon
112  integer :: nsym
113 
114  integer, dimension(nu) :: nobi
115  integer, dimension(nu) :: nshsym
116  integer, dimension(jz) :: nrcon
117  integer, dimension(jz) :: test
118  integer, dimension(nu,lg) :: nst
119 
120  integer :: confpf
121  integer :: ncsf
122  integer :: ne
123  integer :: nshl
124  integer :: ntyp
125  integer :: cdimx
126  integer :: ndist
127  integer :: nstate
128  integer :: megul
129  integer :: ncall
130  integer :: ndimx
131  integer :: nncsf
132  integer :: nodimx
133  integer :: ntso
134 
135  integer, allocatable :: exdet(:)
136  integer, allocatable :: exref(:)
137  integer, dimension(lg) :: nonew
138  integer, dimension(lg) :: norep
139  integer, dimension(nu) :: nsoi
140 
141  integer :: iidis2
142  integer :: lcdi
143  integer :: lndi
144  integer :: ni
145  integer :: nid
146  integer :: noi
147  integer :: next
148  integer :: nx
149  integer :: idcp
150  integer :: idop
151  integer :: ieltp
152 
153 end module congen_data
congen_data::header
character(len=8), dimension(7), parameter header
Definition: congen_data.f90:61
congen_data::nz
integer, parameter nz
Used to dimension REFDET in congen_driver::csfgen; maximum number of electrons.
Definition: congen_data.f90:42
congen_data::jx
integer, parameter jx
Used to dimension many arrays in congen_driver::csfgen; limit on the sum of elements in the NSHLP arr...
Definition: congen_data.f90:43
congen_data::mshl
integer, dimension(lg) mshl
Symmetry number from zero to n-1 (mvalue).
Definition: congen_data.f90:93
congen_data::nonew
integer, dimension(lg) nonew
Definition: congen_data.f90:137
congen_data::noi
integer noi
Number of determinants per CSF.
Definition: congen_data.f90:146
congen_data::lratio
integer lratio
Ratio of real size to integer size. Used to manage workspace data.
Definition: congen_data.f90:74
congen_data::nid
integer nid
Length of the integer array containing all packed determinants.
Definition: congen_data.f90:145
congen_data::jz
integer, parameter jz
Maximum number of constraints upon CSFs accepted (limit on input variable NTCON).
Definition: congen_data.f90:46
congen_data::megul
integer megul
File unit for binary output of generated configurations.
Definition: congen_data.f90:128
congen_data::nisz
integer nisz
Total S_z, set by CSFGEN, defaults to first element of qntot.
Definition: congen_data.f90:85
congen_data::ny
integer, parameter ny
Used to dimension REFGU and REFORB in csfgen. Limit on input variable NREFO.
Definition: congen_data.f90:41
congen_data::root2
real(kind=wp), parameter root2
Note that this is actually inverse square root!
Definition: congen_data.f90:51
congen_data::ndel2
integer ndel2
Workspace position used for reading CSFs from the input.
Definition: congen_data.f90:83
congen_data::rhead
character(len=4), dimension(7), parameter rhead
Definition: congen_data.f90:63
congen_data::lg
integer, parameter lg
??? used to dimension arrays below; also in CPLE[A,M].
Definition: congen_data.f90:39
congen_data::cup
integer, dimension(3, lg) cup
Coupling scheme data. ???
Definition: congen_data.f90:90
congen_data::ntcon
integer ntcon
Definition: congen_data.f90:111
congen_data::icdi
integer icdi
Position in workspace where the determinant coefficients start (one coeff per one determinant).
Definition: congen_data.f90:75
congen_data::lppmax
integer lppmax
Pagination limit - how many lines between two headers.
Definition: congen_data.f90:70
congen_data::kslim
integer, dimension(2, lg) kslim
Definition: congen_data.f90:98
congen_data::nu
integer, parameter nu
Maximal number of irreducible representation (= max dimension of NOB etc.).
Definition: congen_data.f90:40
congen_data::indi
integer indi
Position in workspace where packed determinants start (each as size + replacements).
Definition: congen_data.f90:77
congen_data::nstate
integer nstate
Number of couplings computed in congen_distribution::cplea or congen_distribution::cplem.
Definition: congen_data.f90:127
congen_data::nshsym
integer, dimension(nu) nshsym
Definition: congen_data.f90:115
congen_data::inodi
integer inodi
Position in workspace where CSFs start (as number of determinants per CSF).
Definition: congen_data.f90:78
congen_data::blnk43
character(len=4), dimension(3), parameter blnk43
Definition: congen_data.f90:59
congen_data::qntar
integer, dimension(3) qntar
Coupling control for current wfn group. ???
Definition: congen_data.f90:101
congen_data::symtyp
integer symtyp
Symmetry type, 0 = C_infv, 1 = D_infh, 2 = {D_2h, C_2v, C_s, E}.
Definition: congen_data.f90:88
congen_data::ind
integer, dimension(jsmax+2) ind
Pascal triangle row pointers into congen_data::binom.
Definition: congen_data.f90:107
congen_data::lppr
integer lppr
Global output line counter – number of lines on current page.
Definition: congen_data.f90:71
congen_data::ndist
integer ndist
Number of distributions generated from set of shells (set in congen_distribution::assign).
Definition: congen_data.f90:126
congen_data::confpf
integer confpf
Print flag for the amount of print given of configurations and prototypes.
Definition: congen_data.f90:120
congen_data::nshl
integer nshl
Number of shells in the set of orbitals currently being processed.
Definition: congen_data.f90:123
congen_data::npage
integer npage
Page counter, currently limited to 3 digits (see congen_pagecontrol::addl).
Definition: congen_data.f90:72
congen_data::ni
integer ni
Number of determinants currently in memory.
Definition: congen_data.f90:144
congen_data::occshl
integer, dimension(lg) occshl
Compressed shell occupations, all zeros deleted and pseudo shells expanded.
Definition: congen_data.f90:94
congen_data::ncsf
integer ncsf
Total number of CSFs generated.
Definition: congen_data.f90:121
congen_data::next
integer next
Position in the workspace indicating the first unused element.
Definition: congen_data.f90:147
congen_data::idcp
integer idcp
Definition: congen_data.f90:149
congen_data::nobt
integer nobt
Total number of all orbitals considered in the calculation, essentially equal to sum(nob).
Definition: congen_data.f90:110
congen_data::sshlst
integer, dimension(lg) sshlst
Definition: congen_data.f90:97
congen_data::nftr
integer, parameter nftr
Unit number for reading standard input.
Definition: congen_data.f90:56
congen_data::qntot
integer, dimension(3) qntot
Total quantum numbers.
Definition: congen_data.f90:102
congen_data::nftw
integer nftw
Unit number for printing; may be changed via the STATE namelist so not a parameter.
Definition: congen_data.f90:57
congen_data::nitem
integer, parameter nitem
Number of interesting things printed per line in the PRINT* routines.
Definition: congen_data.f90:55
congen_data::nsym
integer nsym
Number of symmetries given in input file (right-trimmed of those with zero orbitals).
Definition: congen_data.f90:112
congen_data::iqnstr
integer iqnstr
Starting position in workspace for per-shell quantum numbers (e.g. congen_distribution::cplem).
Definition: congen_data.f90:79
congen_data::ky
integer, parameter ky
Used to dimension REFGUG and REFORG in congen_driver::csfgen. Limit on input variable NREFOG?
Definition: congen_data.f90:47
congen_data::mclim
integer, dimension(2, lg) mclim
Definition: congen_data.f90:99
congen_data::ncall
integer ncall
Used to signal to "wfn" to initialize some variables.
Definition: congen_data.f90:129
congen_data::qnshlr
integer, dimension(lg) qnshlr
Total quantum numbers for all shells in the set of orbitals being processed.
Definition: congen_data.f90:95
congen_data::irfcon
integer irfcon
Definition: congen_data.f90:80
congen_data::gushl
integer, dimension(lg) gushl
Gerade/ungerade per shell.
Definition: congen_data.f90:92
congen_data::mxtarg
integer, parameter mxtarg
Maximum number of target state symmetries.
Definition: congen_data.f90:49
congen_data::spnmin
integer, dimension(lg) spnmin
Definition: congen_data.f90:96
congen_data::exdet
integer, dimension(:), allocatable exdet
Definition: congen_data.f90:135
congen_data::ieltp
integer ieltp
Definition: congen_data.f90:151
congen_data::lndi
integer lndi
Total number of integers forming packed determinants.
Definition: congen_data.f90:143
congen_data::shlmx1
integer, dimension(nu) shlmx1
Maximal occupancy of orbitals per symmetry.
Definition: congen_data.f90:103
congen_data::ndel
integer ndel
Workspace position used for the CSFs read from input.
Definition: congen_data.f90:81
congen_data::ne
integer ne
Definition: congen_data.f90:122
congen_data::ntyp
integer ntyp
Prototype number, updated in congen_distribution::distrb.
Definition: congen_data.f90:124
congen_data::ift
integer ift
Used to signal to congen_distribution::assign to initialize some variables.
Definition: congen_data.f90:109
congen_data::star
character(len=1), parameter star
Definition: congen_data.f90:67
congen_data::ntso
integer ntso
Total number of spin-orbitals, given the orbitals and their maximal occupacy (from group properties).
Definition: congen_data.f90:133
congen_data::idop
integer idop
Definition: congen_data.f90:150
congen_data::iidis2
integer iidis2
Definition: congen_data.f90:141
congen_data::nnlecg
integer nnlecg
The total number of electrons which are movable within the current wfn group.
Definition: congen_data.f90:87
congen_data::thresh2
real(kind=wp), parameter thresh2
Threshold used in congen_projection::wfgntr.
Definition: congen_data.f90:53
congen_data
Module containing parameters / data required throughout the CONGEN program.
Definition: congen_data.f90:32
congen_data::head
character(len=1), dimension(132) head
String with output page number and user-specific header text.
Definition: congen_data.f90:69
congen_data::iexcon
integer iexcon
Position in workspace where EX constraints start.
Definition: congen_data.f90:76
congen_data::gutot
integer gutot
Total gerade (= +1) / ungerade (= -1) quantum number.
Definition: congen_data.f90:84
congen_data::nobi
integer, dimension(nu) nobi
Running index of the first orbital in each symmetry.
Definition: congen_data.f90:114
congen_data::nncsf
integer nncsf
Number of CSFs generated by congen_distribution::wfn (total).
Definition: congen_data.f90:131
congen_data::kz
integer, parameter kz
Used to dimension REFDTG in csfgen; limit on input variable NELECG?
Definition: congen_data.f90:48
congen_data::pqnst
integer, dimension(3, lg) pqnst
Definition: congen_data.f90:91
congen_data::exref
integer, dimension(:), allocatable exref
Population of spin-orbitals (0 = not populated, 1 = populated).
Definition: congen_data.f90:136
congen_data::lp
character(len=3), parameter lp
Definition: congen_data.f90:66
congen_data::lcdi
integer lcdi
Total number of determinants (including those already flushed to disk).
Definition: congen_data.f90:142
congen_data::norep
integer, dimension(lg) norep
Definition: congen_data.f90:138
congen_data::thresh1
real(kind=wp), parameter thresh1
Threshold used in congen_distribution::cgcoef.
Definition: congen_data.f90:52
congen_data::binom
real(kind=wp), dimension((jsmax *jsmax+3 *jsmax+4)/2) binom
Table of precomputed Pascal triangle.
Definition: congen_data.f90:106
congen_data::test
integer, dimension(jz) test
Determines which of the two types of constraints will be used.
Definition: congen_data.f90:117
congen_data::jsmax
integer, parameter jsmax
Maximal order of precomputed binomial coefficients.
Definition: congen_data.f90:105
congen_data::qnshl
integer, dimension(3, 2 *lg) qnshl
Definition: congen_data.f90:100
congen_data::nst
integer, dimension(nu, lg) nst
Pointer to shell index and order count; only used in congen_distribution::assign.
Definition: congen_data.f90:118
congen_data::nx
integer nx
Full or remaining workspace size (depending on context).
Definition: congen_data.f90:148
congen_data::nodimx
integer nodimx
Maximal number of workspace elements usable for CSF information.
Definition: congen_data.f90:132
congen_data::ndimx
integer ndimx
Maximal number of workspace elements usable for packed determinant data.
Definition: congen_data.f90:130
congen_data::ndel1
integer ndel1
Workspace position used for reading CSFs from the input.
Definition: congen_data.f90:82
congen_data::jy
integer, parameter jy
Used to dimension various arrays in csfgen including NELECP and NSHLP. Limit on input variable NDPROD...
Definition: congen_data.f90:44
congen_data::cdimx
integer cdimx
Maximal number of determinants.
Definition: congen_data.f90:125
congen_data::nrcon
integer, dimension(jz) nrcon
Definition: congen_data.f90:116
congen_data::nndel
integer nndel
Number of workspace elements used for reservation of space needed when reading CSFs from input.
Definition: congen_data.f90:86
congen_data::nsoi
integer, dimension(nu) nsoi
Running index of the first spin-orbital within given total symmetry.
Definition: congen_data.f90:139