~ubuntu-branches/ubuntu/quantal/psicode/quantal

« back to all changes in this revision

Viewing changes to src/bin/cints/Tools/prints.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck
  • Date: 2006-09-10 14:01:33 UTC
  • Revision ID: james.westby@ubuntu.com-20060910140133-ib2j86trekykfsfv
Tags: upstream-3.2.3
ImportĀ upstreamĀ versionĀ 3.2.3

Show diffs side-by-side

added added

removed removed

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