~ubuntu-branches/ubuntu/karmic/psicode/karmic

« back to all changes in this revision

Viewing changes to src/bin/ccdensity/get_td_params.cc

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck, Michael Banck, Daniel Leidert
  • Date: 2009-02-23 00:12:02 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20090223001202-rutldoy3dimfpesc
Tags: 3.4.0-1
* New upstream release.

[ Michael Banck ]
* debian/patches/01_DESTDIR.dpatch: Refreshed.
* debian/patches/02_FHS.dpatch: Removed, applied upstream.
* debian/patches/03_debian_docdir: Likewise.
* debian/patches/04_man.dpatch: Likewise.
* debian/patches/06_466828_fix_gcc_43_ftbfs.dpatch: Likewise.
* debian/patches/07_464867_move_executables: Fixed and refreshed.
* debian/patches/00list: Adjusted.
* debian/control: Improved description.
* debian/patches-held: Removed.
* debian/rules (install/psi3): Do not ship the ruby bindings for now.

[ Daniel Leidert ]
* debian/rules: Fix txtdir via DEB_MAKE_INSTALL_TARGET.
* debian/patches/01_DESTDIR.dpatch: Refreshed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*! \file
 
2
    \ingroup CCDENSITY
 
3
    \brief Enter brief description of file here 
 
4
*/
 
5
#include <cstdio>
 
6
#include <cstdlib>
 
7
#include <cstring>
 
8
#include <libdpd/dpd.h>
 
9
#include <libipv1/ip_lib.h>
 
10
#include "MOInfo.h"
 
11
#include "Params.h"
 
12
#include "Frozen.h"
 
13
#define EXTERN
 
14
#include "globals.h"
 
15
 
 
16
namespace psi { namespace ccdensity {
 
17
 
 
18
void get_td_params(void)
 
19
{
 
20
  int i,j,k,l;
 
21
  char lbl[32];
 
22
 
 
23
  params.nstates = 0;
 
24
 
 
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*/ 
 
29
    params.prop_sym -= 1;  
 
30
    params.prop_root -= 1; 
 
31
    params.nstates = 1;
 
32
  }
 
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",
 
37
              moinfo.nirreps) ;
 
38
      exit(0);
 
39
    }
 
40
    for(i=0;i<moinfo.nirreps;++i) {
 
41
      ip_data("STATES_PER_IRREP","%d",&j,1,i);
 
42
      params.nstates += j;
 
43
    }
 
44
  }
 
45
  else {
 
46
    fprintf(outfile,"\nUse STATES_PER_IRREP or PROP_SYM and PROP_ROOT\n");
 
47
    exit(0);
 
48
  }
 
49
 
 
50
  /*
 
51
  fprintf(outfile,"\tNumber of States = %d\n",params.nstates);
 
52
  fflush(outfile);
 
53
  */
 
54
 
 
55
  td_params = (struct TD_Params *)malloc(params.nstates*sizeof(struct TD_Params));
 
56
 
 
57
  l=0; 
 
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;
 
61
 
 
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),
 
65
                      sizeof(double));
 
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));
 
68
    }
 
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),
 
72
                      sizeof(double));
 
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));
 
75
    }
 
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),
 
79
                      sizeof(double));
 
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));
 
82
    }
 
83
 
 
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);
 
94
  }
 
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);
 
98
      for (k=0;k<j;++k) {
 
99
        td_params[l].irrep = i^moinfo.sym;
 
100
        td_params[l].root = k;
 
101
 
 
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),
 
105
                        sizeof(double));
 
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));
 
108
        }
 
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),
 
112
                        sizeof(double));
 
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));
 
115
        }
 
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),
 
119
                        sizeof(double));
 
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));
 
122
        }
 
123
 
 
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);
 
134
        l++;
 
135
      }
 
136
    }
 
137
  }
 
138
  /*
 
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);
 
144
  }
 
145
  */
 
146
 
 
147
  return;
 
148
}
 
149
 
 
150
}} // namespace psi::ccdensity