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