~ubuntu-branches/ubuntu/vivid/psicode/vivid

« back to all changes in this revision

Viewing changes to src/bin/cints/Default_Deriv2/oe_deriv2.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck
  • Date: 2008-06-07 16:49:57 UTC
  • mfrom: (2.1.2 hardy)
  • Revision ID: james.westby@ubuntu.com-20080607164957-8pifvb133yjlkagn
Tags: 3.3.0-3
* debian/rules (DEB_MAKE_CHECK_TARGET): Do not abort test suite on
  failures.
* debian/rules (DEB_CONFIGURE_EXTRA_FLAGS): Set ${bindir} to /usr/lib/psi.
* debian/rules (install/psi3): Move psi3 file to /usr/bin.
* debian/patches/07_464867_move_executables.dpatch: New patch, add
  /usr/lib/psi to the $PATH, so that the moved executables are found.
  (closes: #464867)
* debian/patches/00list: Adjusted.

Show diffs side-by-side

added added

removed removed

Lines of Context:
43
43
                     struct coordinates PB);
44
44
static double f_n(int k, int l1, int l2, double A, double B);
45
45
static double int_pow(double a, int p);
46
 
static double ***init_box(int a, int b, int c);
47
 
static void free_box(double ***box, int a, int b);
48
46
 
49
47
/*-------------------------------------------------------------
50
48
  This function computes derivatives of one-electron integrals
90
88
   double ab2;
91
89
   double tmp;
92
90
   double inorm, jnorm, over_pf;
93
 
   double norm_pf, normover_pf, dens_pf, wdens_pf, zdens_pf, znormover_pf;
 
91
   double norm_pf, normover_pf, dens_pf, wdens_pf, zdens_pf, znormover_pf, hds_norm_pf;
94
92
   double twozeta_a, twozeta_b, upuppfac, updownpfac, s_int, t_int, v_int;
95
93
   double *ptr1, *ptr2, norm1, norm12;
96
94
   double ***AI0;
203
201
                    dens_pf *= norm_pf;
204
202
                    wdens_pf = (-1.0)*Lagr[I][J];
205
203
                    wdens_pf *= norm_pf;
 
204
                    hds_norm_pf = norm_pf;
206
205
                    if (I != J) {
207
206
                      dens_pf *= 2.0;
208
207
                      wdens_pf *= 2.0;
213
212
                      wdens_pf *= 0.5;
214
213
 
215
214
                    /*----------------------------------
 
215
                      Half-derivative overap integrals
 
216
                     ----------------------------------*/
 
217
                    /*--- d/dAx ---*/
 
218
                    tmp = 2.0*a1*overlap_int(a1, l1+1, m1, n1, inorm, a2, l2, m2, 
 
219
                                             n2, jnorm, AB, PA, PB);
 
220
                    if (l1)
 
221
                      tmp -= l1*overlap_int(a1, l1-1, m1, n1, inorm, a2, l2, m2, 
 
222
                                            n2, jnorm, AB, PA, PB);
 
223
                    HDS[coord_ax][I][J] += tmp*hds_norm_pf;
 
224
 
 
225
                    /*--- d/dAy ---*/
 
226
                    tmp = 2.0*a1*overlap_int(a1, l1, m1+1, n1, inorm, a2, l2, m2, 
 
227
                                             n2, jnorm, AB, PA, PB);
 
228
                    if (m1)
 
229
                      tmp -= m1*overlap_int(a1, l1, m1-1, n1, inorm, a2, l2, m2, 
 
230
                                            n2, jnorm, AB, PA, PB);
 
231
                    HDS[coord_ay][I][J] += tmp*hds_norm_pf;
 
232
 
 
233
                    /*--- d/dAz ---*/
 
234
                    tmp = 2.0*a1*overlap_int(a1, l1, m1, n1+1, inorm, a2, l2, m2, 
 
235
                                             n2, jnorm, AB, PA, PB);
 
236
                    if (n1)
 
237
                      tmp -= n1*overlap_int(a1, l1, m1, n1-1, inorm, a2, l2, m2, 
 
238
                                            n2, jnorm, AB, PA, PB);
 
239
                    HDS[coord_az][I][J] += tmp*hds_norm_pf;
 
240
 
 
241
                    if(I != J) {
 
242
                      /*--- d/dAx ---*/
 
243
                      tmp = 2.0*a2*overlap_int(a2, l2+1, m2, n2, jnorm, a1, l1, m1,
 
244
                                               n1, inorm, AB, PB, PA);
 
245
                      if (l2)
 
246
                        tmp -= l2*overlap_int(a2, l2-1, m2, n2, jnorm, a1, l1, m1,
 
247
                                              n1, inorm, AB, PB, PA);
 
248
                      HDS[coord_bx][J][I] += tmp*hds_norm_pf;
 
249
  
 
250
                      /*--- d/dAy ---*/
 
251
                      tmp = 2.0*a2*overlap_int(a2, l2, m2+1, n2, jnorm, a1, l1, m1,
 
252
                                               n1, inorm, AB, PB, PA);
 
253
                      if (m2)
 
254
                        tmp -= m2*overlap_int(a2, l2, m2-1, n2, jnorm, a1, l1, m1,
 
255
                                              n1, inorm, AB, PB, PA);
 
256
                      HDS[coord_by][J][I] += tmp*hds_norm_pf;
 
257
  
 
258
                      /*--- d/dAz ---*/
 
259
                      tmp = 2.0*a2*overlap_int(a2, l2, m2, n2+1, jnorm, a1, l1, m1,
 
260
                                               n1, inorm, AB, PB, PA);
 
261
                      if (n2)
 
262
                        tmp -= n2*overlap_int(a2, l2, m2, n2-1, jnorm, a1, l1, m1,
 
263
                                              n1, inorm, AB, PB, PA);
 
264
                      HDS[coord_bz][J][I] += tmp*hds_norm_pf;
 
265
                    }
 
266
 
 
267
                    /*----------------------------------
216
268
                      First derivative overap integrals
217
269
                     ----------------------------------*/
218
270
                    /*--- d/dAx ---*/
1567
1619
  return b;
1568
1620
}
1569
1621
 
1570
 
 
1571
 
double ***init_box(int a, int b, int c)
1572
 
{
1573
 
  int i,j,k;
1574
 
  double ***box;
1575
 
 
1576
 
  box = (double ***) malloc(sizeof(double **)*a);
1577
 
  for(i=0;i<a;i++)
1578
 
    box[i] = (double **) malloc(sizeof(double *)*b);
1579
 
  for(i=0;i<a;i++)
1580
 
    for(j=0;j<b;j++) {
1581
 
        box[i][j] = (double *) malloc(sizeof(double)*c);
1582
 
        bzero((char *) box[i][j],sizeof(double)*c);
1583
 
    }
1584
 
 
1585
 
  return box;
1586
 
 
1587
 
}
1588
 
 
1589
 
 
1590
 
void free_box(double ***box, int a, int b)
1591
 
{
1592
 
  int i,j;
1593
 
 
1594
 
  for(i=0;i<a;i++)
1595
 
    for(j=0;j<b;j++)
1596
 
      free(box[i][j]);
1597
 
 
1598
 
  for(i=0;i<a;i++)
1599
 
    free(box[i]); 
1600
 
 
1601
 
  free(box);
1602
 
 
1603
 
  return;
1604
 
}
1605