1 /*
2    $Id$
3 */
4 
5 #include   <stdio.h>
6 #include   <math.h>
7 #include   <stdlib.h>
8 
9 #include   "paw_loggrid.h"
10 
paw_get_kinetic_energy(int num_states,int * l,double * fill,double ** psi,double ** psi_prime)11 double paw_get_kinetic_energy(int num_states, int *l, double *fill, double **psi, double **psi_prime)
12 {
13     int    i;
14     int    k;
15     int Ngrid;
16     double ekin;
17     double ekin_total;
18     double log_amesh;
19     double *f;
20     double *r;
21 
22     Ngrid     = paw_N_LogGrid();
23     log_amesh = paw_log_amesh_LogGrid();
24     r         = paw_r_LogGrid();
25 
26     f = paw_alloc_LogGrid();
27 
28     ekin_total = 0.0;
29 
30     for (i=0; i<=num_states-1; i++)
31     {
32         for (k=0; k<=Ngrid-1; k++)
33         {
34             f[k] = 0.5*psi_prime[i][k]/(r[k]*log_amesh)*
35                    psi_prime[i][k]/(r[k]*log_amesh)
36                    +0.5*l[i]*(l[i]+1)/(r[k]*r[k])*psi[i][k]*psi[i][k];
37         }
38 
39         ekin  = paw_Def_Integr(0.0,f,0.0,Ngrid-1);
40         ekin_total = ekin_total + ekin*fill[i];
41 
42     }
43 
44     paw_dealloc_LogGrid(f);
45 
46     return ekin_total;
47 }
48 
49 
50