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

« back to all changes in this revision

Viewing changes to src/bin/cints/Tools/prints.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 prints.cc
 
2
    \ingroup CINTS
 
3
    \brief Enter brief description of file here 
 
4
*/
 
5
 
 
6
#include<cstdio>
 
7
#include<cstdlib>
 
8
 
 
9
#include<libint/libint.h>
 
10
#include<libqt/qt.h>
 
11
#include<libciomr/libciomr.h>
 
12
 
 
13
#include"defines.h"
 
14
#define EXTERN
 
15
#include"global.h"
 
16
#include <stdexcept>
 
17
 
 
18
namespace psi {
 
19
  namespace CINTS {
 
20
 
 
21
void print_intro()
 
22
{
 
23
  if (UserOptions.print_lvl >= PRINT_INTRO) {
 
24
     tstart(outfile);
 
25
     fprintf(outfile,"                  --------------------------------------------\n");
 
26
     fprintf(outfile,"                    CINTS: An integrals program written in C\n");
 
27
     fprintf(outfile,"                     Justin T. Fermann and Edward F. Valeev\n");
 
28
     fprintf(outfile,"                  --------------------------------------------\n\n");
 
29
  }
 
30
 
 
31
  return;
 
32
}
 
33
 
 
34
 
 
35
void print_scalars()
 
36
{
 
37
  int i;
 
38
 
 
39
  /*----------------------
 
40
     Print constants, etc.
 
41
    ----------------------*/
 
42
   if (UserOptions.print_lvl >= PRINT_OPTIONS) {
 
43
     fprintf(outfile,"\n  -OPTIONS:\n");
 
44
     fprintf(outfile,"    Print level                 = %d\n",UserOptions.print_lvl);
 
45
     if (UserOptions.restart)
 
46
       fprintf(outfile,"    Restart                     = yes\n");
 
47
     fprintf(outfile,"    Integral tolerance          = %1.0e\n",UserOptions.cutoff);
 
48
     fprintf(outfile,"    Max. memory to use          = %ld double words\n",UserOptions.max_memory);
 
49
     fprintf(outfile,"    Number of threads           = %d\n",UserOptions.num_threads);
 
50
     fprintf(outfile,"    LIBINT's real type length   = %d bit\n",sizeof(REALTYPE)*8);
 
51
     fprintf(outfile,"\n  -CALCULATION CONSTANTS:\n");
 
52
     fprintf(outfile,"    Label                       = %s\n", Molecule.label);
 
53
     fprintf(outfile,"    Number of atoms             = %d\n", Molecule.num_atoms);
 
54
     if (UserOptions.print_lvl >= PRINT_BASIS) {
 
55
       fprintf(outfile,"    Number of shells            = %d\n", BasisSet.num_shells);
 
56
       fprintf(outfile,"    Number of primitives        = %d\n", BasisSet.num_prims);
 
57
     }
 
58
     fprintf(outfile,"    Number of atomic orbitals   = %d\n", BasisSet.num_ao);
 
59
     fprintf(outfile,"    Number of symmetry orbitals = %d\n", Symmetry.num_so);
 
60
     fprintf(outfile,"    Maximum AM in the basis     = %d\n", BasisSet.max_am - 1);
 
61
     if (UserOptions.fine_structure_alpha != 1.0)
 
62
       fprintf(outfile,"    Fine-structure alpha scaling = %8.4lf\n", UserOptions.fine_structure_alpha);
 
63
     fprintf(outfile,"\n  -SYMMETRY INFORMATION;\n");
 
64
     fprintf(outfile,"    Computational point group        = %s\n", Symmetry.symlabel);
 
65
     fprintf(outfile,"    Number of irreps                 = %d\n", Symmetry.nirreps);
 
66
     if (UserOptions.print_lvl >= PRINT_BASIS) {
 
67
       fprintf(outfile,"    Number of symmetry unique shells = %d\n", Symmetry.num_unique_shells);
 
68
     }
 
69
   }
 
70
   if (UserOptions.print_lvl >= PRINT_GEOMETRY) {
 
71
     fprintf(outfile,"\n  -CARTESIAN COORDINATES (a.u.):\n");
 
72
     fprintf(outfile,"     Nuc. charge           X                  Y                   Z\n");
 
73
     fprintf(outfile,"    -------------   -----------------  -----------------  -----------------\n");
 
74
 
 
75
     for(i=0;i<Molecule.num_atoms;i++){
 
76
       fprintf(outfile,"      %8.3lf    ",Molecule.centers[i].Z_nuc);
 
77
       fprintf(outfile,"  %17.12lf  %17.12lf  %17.12lf",
 
78
               Molecule.centers[i].x, Molecule.centers[i].y, Molecule.centers[i].z);
 
79
       fprintf(outfile,"\n");
 
80
     }
 
81
     fprintf(outfile,"\n");
 
82
   }
 
83
   fflush(outfile);
 
84
 
 
85
   return;
 
86
}
 
87
 
 
88
 
 
89
void print_basisset()
 
90
{
 
91
  int i, j;
 
92
 
 
93
  /*---------------------
 
94
     Print basis set info
 
95
    ---------------------*/
 
96
   if (UserOptions.print_lvl >= PRINT_BASIS) {
 
97
     fprintf(outfile,"\n  -BASIS SET INFORMATION:\n");
 
98
     fprintf(outfile,"    Prim#     Exponent   ");
 
99
     for(i=0;i<BasisSet.max_am;i++)
 
100
       fprintf(outfile,"  Norm. CCoeff. (L=%1d)",i);
 
101
     fprintf(outfile,"\n");
 
102
     fprintf(outfile,"    -----  --------------");
 
103
     for(i=0;i<BasisSet.max_am;i++)
 
104
       fprintf(outfile,"  -------------------");
 
105
     fprintf(outfile,"\n");
 
106
     for(i=0;i<BasisSet.num_prims;i++) {
 
107
       fprintf(outfile,"    %3d    %14.7lf",i+1,BasisSet.cgtos[i].exp);
 
108
       for(j=0;j<BasisSet.max_am;j++)
 
109
         fprintf(outfile,"    %15.10lf  ",BasisSet.cgtos[i].ccoeff[j]);
 
110
       fprintf(outfile,"\n");
 
111
     }
 
112
     fprintf(outfile,"\n\n");
 
113
     fprintf(outfile,"    Shell#  Nuc#  L  SPRIM  SNUMG\n");
 
114
     fprintf(outfile,"    ------  ----  -  -----  -----\n");
 
115
     for(i=0;i<BasisSet.num_shells;i++)
 
116
       fprintf(outfile,"    %4d    %3d  %2d  %3d    %3d\n",i+1,
 
117
               BasisSet.shells[i].center,BasisSet.shells[i].am-1,
 
118
               BasisSet.shells[i].fprim,BasisSet.shells[i].n_prims);
 
119
     fprintf(outfile,"\n\n");
 
120
     fflush(outfile);
 
121
   }
 
122
 
 
123
   return;
 
124
}
 
125
 
 
126
 
 
127
void print_quote()
 
128
{
 
129
  /*--- It's about recurrence relations, well, sort of... ---*/
 
130
   if (UserOptions.print_lvl) {
 
131
     fprintf(outfile,"           ---------------------------------------------\n");
 
132
     fprintf(outfile,"                 'I will find a center in you.\n");
 
133
     fprintf(outfile,"                  I will chew it up and leave,\n");
 
134
     fprintf(outfile,"                   I will work to elevate you\n");
 
135
     fprintf(outfile,"                 just enough to bring you down.'\n");
 
136
     fprintf(outfile,"                                       'Sober', Tool\n");
 
137
     fprintf(outfile,"           ---------------------------------------------\n\n");
 
138
   }
 
139
 
 
140
   return;
 
141
}
 
142
 
 
143
 
 
144
void print_opdm()
 
145
{
 
146
  if (UserOptions.print_lvl >= PRINT_OPDM) {
 
147
    fprintf(outfile,"  -Total density matrix in AO basis :\n");
 
148
    print_mat(Dens,BasisSet.num_ao,BasisSet.num_ao,outfile);
 
149
    fprintf(outfile,"\n\n");
 
150
    fprintf(outfile,"  -Energy weighted density matrix in AO basis :\n");
 
151
    print_mat(Lagr,BasisSet.num_ao,BasisSet.num_ao,outfile);
 
152
    fprintf(outfile,"\n\n");
 
153
  }
 
154
 
 
155
  return;
 
156
}
 
157
 
 
158
 
 
159
/*!----------------------------------------------------
 
160
  May be used to print out gradients and other vector
 
161
  quantities associated with atoms
 
162
 ----------------------------------------------------*/
 
163
void print_atomvec(const char *quantity, double **vecs)
 
164
{
 
165
  int i;
 
166
 
 
167
  fprintf(outfile,"\n  -%s:\n",quantity);
 
168
  fprintf(outfile,"     Atom            X                  Y                   Z\n");
 
169
  fprintf(outfile,"    ------   -----------------  -----------------  -----------------\n");
 
170
 
 
171
  for(i=0;i<Molecule.num_atoms;i++){
 
172
    fprintf(outfile,"    %4d   ",i+1);
 
173
    fprintf(outfile,"  %17.12lf  %17.12lf  %17.12lf",vecs[i][0], vecs[i][1], vecs[i][2]);
 
174
    fprintf(outfile,"\n");
 
175
  }
 
176
  fprintf(outfile,"\n");
 
177
  
 
178
  return;
 
179
}
 
180
 
 
181
/*!---------------------------------------------------------
 
182
  May be used to print out Hessian and other square matrix
 
183
  quantities associated with atoms
 
184
 
 
185
  N.B. for now uses print_mat()
 
186
 ---------------------------------------------------------*/
 
187
void print_atommat(const char *quantity, double **mat)
 
188
{
 
189
  int i;
 
190
  
 
191
  fprintf(outfile,"\n  -%s:\n",quantity);
 
192
 
 
193
  /*  fprintf(outfile,"     Atom            X                  Y                   Z\n");
 
194
  fprintf(outfile,"    ------   -----------------  -----------------  -----------------\n");
 
195
  
 
196
  for(i=0;i<Molecule.num_atoms;i++){
 
197
    fprintf(outfile,"    %4d   ",i+1);
 
198
    fprintf(outfile,"  %17.12lf  %17.12lf  %17.12lf",vecs[i][0], vecs[i][1], vecs[i][2]);
 
199
    fprintf(outfile,"\n");
 
200
    }*/
 
201
 
 
202
  print_mat(mat,Molecule.num_atoms*3,Molecule.num_atoms*3,outfile);
 
203
  fprintf(outfile,"\n");
 
204
  
 
205
  return;
 
206
}
 
207
 
 
208
void print_moinfo_corr()
 
209
{
 
210
  int i;
 
211
  
 
212
  if (UserOptions.print_lvl >= PRINT_MOINFO_CORR) {
 
213
    fprintf(outfile,"\n  -MO information:\n");
 
214
    fprintf(outfile,"    Number of MOs    = %d\n",MOInfo.num_mo);
 
215
    fprintf(outfile,
 
216
            "    Label\t# FZDC\t# DOCC\t# SOCC\t# VIRT\t# FZVR\n");
 
217
    fprintf(outfile,
 
218
            "    -----\t------\t------\t------\t------\t------\n");
 
219
    for(i=0; i < Symmetry.nirreps; i++) {
 
220
        fprintf(outfile,
 
221
                "     %s\t   %d\t   %d\t    %d\t    %d\t    %d\n",
 
222
                Symmetry.irr_labels[i],MOInfo.frozen_docc[i],
 
223
                MOInfo.clsdpi[i],MOInfo.openpi[i],MOInfo.virtpi[i],
 
224
                MOInfo.frozen_uocc[i]);
 
225
    }
 
226
    fprintf(outfile,"\n");
 
227
  }
 
228
  fflush(outfile);
 
229
 
 
230
  return;
 
231
}
 
232
};};