5
#include <libipv1/ip_lib.h>
6
#include <libciomr/libciomr.h>
13
char *cachetype = NULL;
14
char *read_ref, *read_eom_ref;
16
errcod = ip_string("WFN", &(params.wfn), 0);
18
if(!strcmp(params.wfn,"EOM_CC2")) {
19
psio_read_entry(CC_INFO, "CC2 Energy", (char *) &(moinfo.ecc),
21
fprintf(outfile,"\tCC2 energy (file100) = %20.15f\n",moinfo.ecc);
23
else if(!strcmp(params.wfn,"EOM_CCSD")) {
24
psio_read_entry(CC_INFO, "CCSD Energy", (char *) &(moinfo.ecc),
26
fprintf(outfile,"\tCCSD energy (file100) = %20.15f\n",moinfo.ecc);
28
else if(!strcmp(params.wfn,"EOM_CC3")) {
29
psio_read_entry(CC_INFO, "CC3 Energy", (char *) &(moinfo.ecc),
31
fprintf(outfile,"\tCC3 energy (file100) = %20.15f\n",moinfo.ecc);
34
params.semicanonical = 0;
35
errcod = ip_string("REFERENCE", &(read_ref),0);
36
if(!strcmp(read_ref, "RHF")) params.ref = 0;
37
else if(!strcmp(read_ref,"ROHF") && (!strcmp(params.wfn,"EOM_CC3"))) {
39
params.semicanonical = 1;
41
else if(!strcmp(read_ref, "ROHF")) params.ref = 1;
42
else if(!strcmp(read_ref, "UHF")) params.ref = 2;
45
"\nInvalid value of input keyword REFERENCE: %s\n", read_ref);
49
if (params.ref == 0) { /* for RHF refs, allow CCEOM to do RHF, ROHF, UHF modes */
50
errcod = ip_string("EOM_REFERENCE", &(read_eom_ref),0);
51
if (errcod == IPE_OK) {
52
if(!strcmp(read_eom_ref, "RHF")) params.eom_ref = 0;
53
else if(!strcmp(read_eom_ref, "ROHF")) params.eom_ref = 1;
54
else if(!strcmp(read_eom_ref, "UHF")) params.eom_ref = 2;
57
"\nInvalid value of input keyword EOM_REFERENCE: %s\n", read_eom_ref);
63
read_eom_ref = (char *) malloc(10*sizeof(char));
64
sprintf(read_eom_ref,"%s","RHF"); /* just for printing below */
67
else if (params.ref == 1) { /* for ROHF refs, allow CCEOM to do ROHF & UHF modes */
68
errcod = ip_string("EOM_REFERENCE", &(read_eom_ref),0);
69
if (errcod == IPE_OK) {
70
if(!strcmp(read_eom_ref, "ROHF")) params.eom_ref = 1;
71
else if(!strcmp(read_eom_ref, "UHF")) params.eom_ref = 2;
74
"\nInvalid value of input keyword EOM_REFERENCE: %s\n", read_eom_ref);
80
read_eom_ref = (char *) malloc(10*sizeof(char));
81
sprintf(read_eom_ref,"%s","ROHF"); /* just for printing below */
84
else { /* run in UHF mode - ignore EOM_REFERENCE */
86
read_eom_ref = (char *) malloc(10*sizeof(char));
87
sprintf(read_eom_ref,"%s","UHF"); /* just for printing below */
90
/* fprintf(outfile, "\nCCEOM not yet UHF capable\n"); */
92
fndcor(&(params.memory),infile,outfile);
95
errcod = ip_boolean("AO_BASIS", &(params.aobasis),0);
97
params.full_matrix = 0;
98
errcod = ip_boolean("FULL_MATRIX", &(params.full_matrix),0);
101
errcod = ip_data("CACHELEV", "%d", &(params.cachelev),0);
103
params.cachetype = 0;
105
errcod = ip_string("CACHETYPE", &(cachetype),0);
106
if(cachetype != NULL && strlen(cachetype)) {
107
if(!strcmp(cachetype,"LOW")) params.cachetype = 1;
108
else if(!strcmp(cachetype,"LRU")) params.cachetype = 0;
110
fprintf(outfile, "Error in input: invalid CACHETYPE = %s\n",
116
if(params.ref == 2) /* No LRU cacheing yet for UHF references */
117
params.cachetype = 0;
119
params.cachetype = 0;
121
if(ip_exist("ABCD",0)) {
122
errcod = ip_string("ABCD", &(params.abcd), 0);
123
if(strcmp(params.abcd,"NEW") && strcmp(params.abcd,"OLD")) {
124
fprintf(outfile, "Invalid ABCD algorithm: %s\n", params.abcd);
125
exit(PSI_RETURN_FAILURE);
128
else params.abcd = strdup("NEW");
130
params.t3_Ws_incore = 0;
131
errcod = ip_boolean("T3_WS_INCORE", &(params.t3_Ws_incore),0);
134
errcod = ip_boolean("LOCAL", &(params.local),0);
137
errcod = ip_data("LOCAL_CUTOFF", "%lf", &(local.cutoff), 0);
139
if(ip_exist("LOCAL_METHOD",0)) {
140
errcod = ip_string("LOCAL_METHOD", &(local.method), 0);
141
if(strcmp(local.method,"AOBASIS") && strcmp(local.method,"WERNER")) {
142
fprintf(outfile, "\nInvalid local correlation method: %s\n", local.method);
146
else if(params.local) {
147
local.method = (char *) malloc(7 * sizeof(char));
148
sprintf(local.method, "%s", "WERNER");
151
if(ip_exist("LOCAL_WEAKP",0)) {
152
errcod = ip_string("LOCAL_WEAKP", &(local.weakp), 0);
153
if(strcmp(local.weakp,"MP2") && strcmp(local.weakp,"NEGLECT") && strcmp(local.weakp,"NONE")) {
154
fprintf(outfile, "Invalid method for treating local pairs: %s\n", local.weakp);
158
else if(params.local) {
159
local.weakp = (char *) malloc(5 * sizeof(char));
160
sprintf(local.weakp, "%s", "NONE");
163
if(ip_exist("LOCAL_PRECONDITIONER",0) && params.local) {
164
errcod = ip_string("LOCAL_PRECONDITIONER", &(local.precon), 0);
165
if(strcmp(local.precon,"FOCK") && strcmp(local.precon,"HBAR")) {
166
fprintf(outfile, "Invalid choice of local-pair preconditioner: %s\n", local.precon);
170
else if(params.local){
171
local.precon = (char *) malloc(5 * sizeof(char));
172
sprintf(local.precon, "%s", "HBAR");
176
if(ip_exist("LOCAL_GHOST",0))
177
errcod = ip_data("LOCAL_GHOST", "%d", &(local.ghost), 0);
179
local.do_singles = 1;
180
errcod = ip_boolean("LOCAL_DO_SINGLES", &(local.do_singles), 0);
182
local.filter_singles = 1;
183
ip_boolean("LOCAL_FILTER_SINGLES", &(local.filter_singles), 0);
185
fprintf(outfile, "\n\tInput parameters:\n");
186
fprintf(outfile, "\t-----------------\n");
187
if(params.semicanonical)
188
fprintf(outfile, "\tReference wfn = ROHF changed to UHF for Semicanonical Orbitals\n");
190
fprintf(outfile, "\tReference wfn = %4s\n", read_ref);
191
fprintf(outfile, "\tReference EOM wfn= %4s\n", read_eom_ref);
192
fprintf(outfile, "\tMemory (Mbytes) = %5.1f\n",params.memory/1e6);
193
fprintf(outfile, "\tAO Basis = %s\n",
194
params.aobasis ? "Yes" : "No");
195
fprintf(outfile, "\tABCD = %s\n", params.abcd);
196
fprintf(outfile, "\tCache Level = %1d\n",
198
fprintf(outfile, "\tCache Type = %4s\n",
199
params.cachetype ? "LOW" : "LRU");
200
if ( !strcmp(params.wfn,"EOM_CC3") )
201
fprintf(outfile, "\tT3 Ws incore = %4s\n", params.t3_Ws_incore ? "Yes" : "No");
202
fprintf(outfile, "\tLocal CC = %s\n", params.local ? "Yes" : "No");
204
fprintf(outfile, "\tLocal Cutoff = %3.1e\n", local.cutoff);
205
fprintf(outfile, "\tLocal Method = %s\n", local.method);
206
fprintf(outfile, "\tWeak pairs = %s\n", local.weakp);
207
fprintf(outfile, "\tLocal precon. = %s\n", local.precon);
208
fprintf(outfile, "\tGhost atom = %d\n", local.ghost);
209
fprintf(outfile, "\tLocal guess = %s\n",
210
local.do_singles ? "HBAR_SS" : "UNIT VECTORS" );
211
fprintf(outfile, "\tFilter singles = %s\n", local.filter_singles ? "Yes" : "No");
213
fprintf(outfile, "\n");