13 void PDA(
double *,
double *,
double *,
int &);
16 void PDA(
double *we,
double *vi,
double *mom,
int &n)
20 double p[2*n + 1][2*n + 1];
22 for (i = 0; i < 2*n+1; i++)
24 for (j = 0; j < 2*n+1; j++)
32 for (i = 0; i < 2*n; i++)
34 norm_mom[i] = mom[i]/(max(mom[0],1.0e-10));
40 for (i = 1; i < 2*n; i++)
42 p[i][1] = Foam::pow(-1,
double (i))*norm_mom[i];
45 for (j = 2; j < 2*n+1; j++)
47 for(i = 0; i < 2*n+2-j; i++)
49 p[i][j] = p[0][j-1]*p[i+1][j-2] - p[0][j-2]*p[i+1][j-1];
55 for (i = 0; i < 2*n; i++)
60 for (i = 1; i < 2*n; i++)
62 if (p[0][i]*p[0][i-1] > 0)
64 zeta[i] = p[0][i+1]/(p[0][i]*p[0][i-1]);
73 double bb[n-1], cc[n-1];
75 for (i = 0; i < n-1; i++)
80 for (i = 1; i <= n; i++)
82 aa[i-1] = zeta[2*i - 1] + zeta[2*i - 2];
85 for (i = 1; i <= n-1; i++)
87 bb[i - 1] = zeta[2*i]*zeta[2*i - 1];
90 for (i = 1; i <= n-1; i++)
92 cc[i - 1] = Foam::sqrt(fabs(bb[i - 1]));
97 for (i = 0; i < n; i++)
99 for (j = 0; j < n; j++)
109 dsteqr_(choice,&n,aa,cc,&evec[0][0],&n,work,&info);
111 for (i = 0; i < n; i++)
121 for (j = 0; j < n; j++)
123 we[j] = mom[0]*Foam::pow(evec[j][0],2);
void PDA(double *, double *, double *, int &)