3
\brief Enter brief description of file here
8
#include <libdpd/dpd.h>
9
#include <libipv1/ip_lib.h>
16
namespace psi { namespace ccdensity {
18
void get_td_params(void)
25
if(ip_exist("PROP_SYM",0) && ip_exist("PROP_ROOT",0)) {
26
ip_data("PROP_SYM","%d",&(params.prop_sym),0);
27
ip_data("PROP_ROOT","%d",&(params.prop_root),0);
28
/*User input counts from 1*/
30
params.prop_root -= 1;
33
else if(ip_exist("STATES_PER_IRREP",0)) {
34
ip_count("STATES_PER_IRREP", &i, 0);
35
if(i != moinfo.nirreps) {
36
fprintf(outfile,"Dim. of states_per_irrep vector must be %d\n",
40
for(i=0;i<moinfo.nirreps;++i) {
41
ip_data("STATES_PER_IRREP","%d",&j,1,i);
46
fprintf(outfile,"\nUse STATES_PER_IRREP or PROP_SYM and PROP_ROOT\n");
51
fprintf(outfile,"\tNumber of States = %d\n",params.nstates);
55
td_params = (struct TD_Params *)malloc(params.nstates*sizeof(struct TD_Params));
58
if(ip_exist("PROP_SYM",0) && ip_exist("PROP_ROOT",0)) {
59
td_params[0].irrep = params.prop_sym ^ moinfo.sym;
60
k = td_params[0].root = params.prop_root;
62
if(!strcmp(params.wfn,"CC2") || !strcmp(params.wfn,"EOM_CC2")) {
63
sprintf(lbl,"EOM CC2 Energy for root %d %d", td_params[0].irrep, k);
64
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[0].cceom_energy),
66
sprintf(lbl,"EOM CC2 R0 for root %d %d",td_params[0].irrep, k);
67
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[0].R0),sizeof(double));
69
else if(!strcmp(params.wfn,"CCSD") || !strcmp(params.wfn,"EOM_CCSD")) {
70
sprintf(lbl,"EOM CCSD Energy for root %d %d", td_params[0].irrep, k);
71
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[0].cceom_energy),
73
sprintf(lbl,"EOM CCSD R0 for root %d %d",td_params[0].irrep, k);
74
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[0].R0),sizeof(double));
76
else if(!strcmp(params.wfn,"CC3") || !strcmp(params.wfn,"EOM_CC3")) {
77
sprintf(lbl,"EOM CC3 Energy for root %d %d", td_params[0].irrep, k);
78
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[0].cceom_energy),
80
sprintf(lbl,"EOM CC3 R0 for root %d %d",td_params[0].irrep, k);
81
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[0].R0),sizeof(double));
84
sprintf(td_params[l].L1A_lbl,"LIA %d %d",td_params[0].irrep, k);
85
sprintf(td_params[l].L1B_lbl,"Lia %d %d",td_params[0].irrep, k);
86
sprintf(td_params[l].L2AA_lbl,"LIJAB %d %d",td_params[0].irrep, k);
87
sprintf(td_params[l].L2BB_lbl,"Lijab %d %d",td_params[0].irrep, k);
88
sprintf(td_params[l].L2AB_lbl,"LIjAb %d %d",td_params[0].irrep, k);
89
sprintf(td_params[l].R1A_lbl,"RIA %d %d",td_params[0].irrep, k);
90
sprintf(td_params[l].R1B_lbl,"Ria %d %d",td_params[0].irrep, k);
91
sprintf(td_params[l].R2AA_lbl,"RIJAB %d %d",td_params[0].irrep, k);
92
sprintf(td_params[l].R2BB_lbl,"Rijab %d %d",td_params[0].irrep, k);
93
sprintf(td_params[l].R2AB_lbl,"RIjAb %d %d",td_params[0].irrep, k);
95
else if(ip_exist("STATES_PER_IRREP",0)) {
96
for(i=0;i<moinfo.nirreps;++i) {
97
ip_data("STATES_PER_IRREP","%d",&j,1,i);
99
td_params[l].irrep = i^moinfo.sym;
100
td_params[l].root = k;
102
if(!strcmp(params.wfn,"CC2") || !strcmp(params.wfn,"EOM_CC2")) {
103
sprintf(lbl,"EOM CC2 Energy for root %d %d", td_params[l].irrep, k);
104
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[l].cceom_energy),
106
sprintf(lbl,"EOM CC2 R0 for root %d %d",td_params[l].irrep, k);
107
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[l].R0),sizeof(double));
109
else if(!strcmp(params.wfn,"CCSD") || !strcmp(params.wfn,"EOM_CCSD")) {
110
sprintf(lbl,"EOM CCSD Energy for root %d %d", td_params[l].irrep, k);
111
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[l].cceom_energy),
113
sprintf(lbl,"EOM CCSD R0 for root %d %d",td_params[l].irrep, k);
114
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[l].R0),sizeof(double));
116
else if(!strcmp(params.wfn,"CC3") || !strcmp(params.wfn,"EOM_CC3")) {
117
sprintf(lbl,"EOM CC3 Energy for root %d %d", td_params[l].irrep, k);
118
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[l].cceom_energy),
120
sprintf(lbl,"EOM CC3 R0 for root %d %d",td_params[l].irrep, k);
121
psio_read_entry(CC_INFO,lbl,(char*)&(td_params[l].R0),sizeof(double));
124
sprintf(td_params[l].L1A_lbl,"LIA %d %d",td_params[l].irrep, k);
125
sprintf(td_params[l].L1B_lbl,"Lia %d %d",td_params[l].irrep, k);
126
sprintf(td_params[l].L2AA_lbl,"LIJAB %d %d",td_params[l].irrep, k);
127
sprintf(td_params[l].L2BB_lbl,"Lijab %d %d",td_params[l].irrep, k);
128
sprintf(td_params[l].L2AB_lbl,"LIjAb %d %d",td_params[l].irrep, k);
129
sprintf(td_params[l].R1A_lbl,"RIA %d %d",td_params[l].irrep, k);
130
sprintf(td_params[l].R1B_lbl,"Ria %d %d",td_params[l].irrep, k);
131
sprintf(td_params[l].R2AA_lbl,"RIJAB %d %d",td_params[l].irrep, k);
132
sprintf(td_params[l].R2BB_lbl,"Rijab %d %d",td_params[l].irrep, k);
133
sprintf(td_params[l].R2AB_lbl,"RIjAb %d %d",td_params[l].irrep, k);
139
fprintf(outfile,"\n\tState\t EOM Energy\t R0\n");
140
for(i=0; i<params.nstates; i++) {
141
fprintf(outfile,"\t %d%3s %15.10lf %12.8lf\n",
142
td_params[i].root+1,moinfo.labels[td_params[i].irrep],
143
td_params[i].cceom_energy,td_params[i].R0);
150
}} // namespace psi::ccdensity