3
\brief Enter brief description of file here
6
** CCSORT: Program to reorganize integrals for CC and MBPT calculations.
12
#include <libipv1/ip_lib.h>
13
#include <libciomr/libciomr.h>
14
#include <libdpd/dpd.h>
15
#include <libpsio/psio.h>
23
namespace psi { namespace ccsort {
25
#define IOFF_MAX 32641
27
void init_io(int argc, char *argv[]);
30
void get_params(void);
31
void get_moinfo(void);
47
int **cacheprep_uhf(int level, int *cachefiles);
48
int **cacheprep_rhf(int level, int *cachefiles);
49
void cachedone_uhf(int **cachelist);
50
void cachedone_rhf(int **cachelist);
51
void local_init(void);
52
void local_done(void);
53
void cc_memcheck(void);
55
}} //namespace psi::ccsort
57
using namespace psi::ccsort;
59
int main(int argc, char *argv[])
62
int **cachelist, *cachefiles;
63
int bamount,famount; /* Truncated theoretical number of B/F-type ints that
64
could be stored in cache at once */
66
unsigned long int ia_size, ab_size, ij_size, f_size, t2_size, b_size;
77
cachefiles = init_int_array(PSIO_MAXUNIT);
79
if(params.ref == 2) { /*** UHF references ***/
80
cachelist = cacheprep_uhf(params.cachelev, cachefiles);
82
dpd_init(0, moinfo.nirreps, params.memory, 0, cachefiles, cachelist,
83
NULL, 4, moinfo.aoccpi, moinfo.aocc_sym, moinfo.avirtpi, moinfo.avir_sym,
84
moinfo.boccpi, moinfo.bocc_sym, moinfo.bvirtpi, moinfo.bvir_sym);
86
else { /*** RHF/ROHF references ***/
87
cachelist = cacheprep_rhf(params.cachelev, cachefiles);
89
dpd_init(0, moinfo.nirreps, params.memory, 0, cachefiles, cachelist,
90
NULL, 2, moinfo.occpi, moinfo.occ_sym, moinfo.virtpi,
94
/* run a small computation of memory and disk requirements */
97
fprintf(outfile, "\n");
105
if(params.ref == 0) {
114
/* CPHF stuff for local correlation tests */
122
if(params.ref == 2) cachedone_uhf(cachelist);
123
else cachedone_rhf(cachelist);
130
exit(PSI_RETURN_SUCCESS);
133
extern "C" { const char *gprgid() { const char *prgid = "CCSORT"; return(prgid); } }
135
namespace psi { namespace ccsort {
137
void init_io(int argc, char *argv[])
140
char *progid, **argv_unparsed;
142
progid = (char *) malloc(strlen(gprgid())+2);
143
sprintf(progid, ":%s",gprgid());
145
argv_unparsed = (char **) malloc(argc * sizeof(char *));
147
for(i=1, num_unparsed=0; i < argc; i++) {
148
if(!strcmp(argv[i], "--reset")) params.reset = 1;
149
else argv_unparsed[num_unparsed++] = argv[i];
152
psi_start(&infile,&outfile,&psi_file_prefix,num_unparsed, argv_unparsed, 0);
158
psio_init(); psio_ipv1_config();
160
if(params.reset) for(i=CC_MIN; i <= CC_MAX; i++) psio_open(i,0);
161
else for(i=CC_MIN; i <= CC_MAX; i++) psio_open(i,1);
166
fprintf(outfile, "\n");
167
fprintf(outfile, "\t\t\t**************************\n");
168
fprintf(outfile, "\t\t\t* *\n");
169
fprintf(outfile, "\t\t\t* CCSORT *\n");
170
fprintf(outfile, "\t\t\t* *\n");
171
fprintf(outfile, "\t\t\t**************************\n");
172
fprintf(outfile, "\n");
178
for(i=CC_MIN; i < CC_TMP; i++) psio_close(i,1);
179
for(i=CC_TMP; i <= CC_TMP11; i++) psio_close(i,0); /* get rid of TMP files */
180
for(i=CC_TMP11+1; i <= CC_MAX; i++) psio_close(i,1);
184
psi_stop(infile,outfile,psi_file_prefix);
190
ioff = init_int_array(IOFF_MAX);
192
for(i=1; i < IOFF_MAX; i++) ioff[i] = ioff[i-1] + i;
199
psio_write_entry(CC_INFO, "Reference Energy", (char *) &(moinfo.eref),
202
if(params.ref == 2) {
204
free(moinfo.pitz2qt_A);
205
free(moinfo.pitz2qt_B);
206
free(moinfo.qt2pitz_A);
207
free(moinfo.qt2pitz_B);
213
free(moinfo.all_aocc);
214
free(moinfo.all_bocc);
215
free(moinfo.all_avir);
216
free(moinfo.all_bvir);
219
free(moinfo.avirtpi);
220
free(moinfo.bvirtpi);
221
free(moinfo.all_aoccpi);
222
free(moinfo.all_boccpi);
223
free(moinfo.all_avirtpi);
224
free(moinfo.all_bvirtpi);
226
free(moinfo.cc_aocc);
227
free(moinfo.cc_bocc);
228
free(moinfo.cc_avir);
229
free(moinfo.cc_bvir);
230
free(moinfo.qt_aocc);
231
free(moinfo.qt_bocc);
232
free(moinfo.qt_avir);
233
free(moinfo.qt_bvir);
234
free(moinfo.aocc_sym);
235
free(moinfo.bocc_sym);
236
free(moinfo.avir_sym);
237
free(moinfo.bvir_sym);
239
free(moinfo.cc_allaocc);
240
free(moinfo.cc_allbocc);
241
free(moinfo.cc_allavir);
242
free(moinfo.cc_allbvir);
243
free(moinfo.qt_allaocc);
244
free(moinfo.qt_allbocc);
245
free(moinfo.qt_allavir);
246
free(moinfo.qt_allbvir);
247
free(moinfo.allaocc_sym);
248
free(moinfo.allbocc_sym);
249
free(moinfo.allavir_sym);
250
free(moinfo.allbvir_sym);
252
free(moinfo.aocc_off);
253
free(moinfo.bocc_off);
254
free(moinfo.avir_off);
255
free(moinfo.bvir_off);
256
free(moinfo.all_aocc_off);
257
free(moinfo.all_bocc_off);
258
free(moinfo.all_avir_off);
259
free(moinfo.all_bvir_off);
263
free(moinfo.pitz2qt);
264
free(moinfo.qt2pitz);
268
free(moinfo.all_occ);
269
free(moinfo.all_vir);
271
free(moinfo.all_socc);
274
free(moinfo.all_occpi);
275
free(moinfo.all_virtpi);
282
free(moinfo.occ_sym);
283
free(moinfo.vir_sym);
285
free(moinfo.cc_allocc);
286
free(moinfo.cc_allvir);
287
free(moinfo.qt_allocc);
288
free(moinfo.qt_allvir);
289
free(moinfo.allocc_sym);
290
free(moinfo.allvir_sym);
292
free(moinfo.occ_off);
293
free(moinfo.vir_off);
294
free(moinfo.all_occ_off);
295
free(moinfo.all_vir_off);
299
free(moinfo.pitzer2qt);
300
free(moinfo.qt2pitzer);
309
for(i=0; i < moinfo.nirreps; i++)
310
free(moinfo.labels[i]);
316
}} //namespace psi::ccsort