gaunt coeff generators mathematica

Former-commit-id: 43fb56d338faf193083035ab4ae4da115ca0bbaf
This commit is contained in:
Marek Nečada 2018-02-13 01:45:26 +02:00
parent 85ef4d7a70
commit 93ac5730b2
3 changed files with 29 additions and 7 deletions

View File

@ -36,17 +36,18 @@ int main() {
qpms_l_t lMax = 8; qpms_l_t lMax = 8;
//qpms_l_t viewlMax = 2; //qpms_l_t viewlMax = 2;
int npoints = 10; int npoints = 10;
double sigma = 1.3; double sigma = 0.1;
double shiftsigma = 2.;
cart3_t o2minuso1; cart3_t o2minuso1;
o2minuso1.x = gsl_ran_gaussian(rng, sigma); o2minuso1.x = gsl_ran_gaussian(rng, shiftsigma);
o2minuso1.y = gsl_ran_gaussian(rng, sigma); o2minuso1.y = gsl_ran_gaussian(rng, shiftsigma);
o2minuso1.z = gsl_ran_gaussian(rng, sigma); o2minuso1.z = gsl_ran_gaussian(rng, shiftsigma);
cart3_t points[npoints]; cart3_t points[npoints];
double relerrs[npoints]; double relerrs[npoints];
memset(points, 0, npoints * sizeof(cart3_t)); memset(points, 0, npoints * sizeof(cart3_t));
points[0].x = points[1].y = points[2].z = 1.; points[0].x = points[1].y = points[2].z = sigma;
double relerrthreshold = 1e-11; double relerrthreshold = 1e-11;
for (unsigned i = 3; i < npoints; ++i) { for (unsigned i = 3; i < npoints; ++i) {
cart3_t *w = points+i; cart3_t *w = points+i;

View File

@ -6,13 +6,13 @@ gaunt[m_, n_, mu_, nu_,
0}, {nu, 0}, {p, 0}] ThreeJSymbol[{n, m}, {nu, 0}, {nu, 0}, {p, 0}] ThreeJSymbol[{n, m}, {nu,
mu}, {p, -m - mu}] mu}, {p, -m - mu}]
lMax := 100 lMax := 30
For[n = 0, n <= lMax, n++, For[n = 0, n <= lMax, n++,
For[nu = 0, nu <= lMax, nu++, For[nu = 0, nu <= lMax, nu++,
For[m = -n, m <= n, m++, For[m = -n, m <= n, m++,
For[mu = -nu, mu <= nu, mu++, For[mu = -nu, mu <= nu, mu++,
For[q = 0, q <= Min[n, nu, (n + nu - Abs[m + mu])/2],q++, For[q = 0, q <= Min[n, nu, (n + nu - Abs[m + mu])/2],q++,
Print[StringForm["{`1`, `2`, `3`, `4`, `5`, `6`},",m,n,mu,nu,q,N[gaunt[m, n, mu, nu, n + nu - 2 q],32]]] Print[StringForm["{`1`, `2`, `3`, `4`, `5`, `6`},",m,n,mu,nu,q,CForm[N[gaunt[m, n, mu, nu, n + nu - 2 q],32]]]]
] ]
] ]
] ]

21
tests/gauntgenbare.m Normal file
View File

@ -0,0 +1,21 @@
gaunt[m_, n_, mu_, nu_,
p_] := (-1)^(m + mu) (2 p + 1) Sqrt[
Factorial[n + m] Factorial[
nu + mu] Factorial[p - m - mu]/Factorial[n - m]/
Factorial[nu - mu] / Factorial[p + m + mu]] ThreeJSymbol[{n,
0}, {nu, 0}, {p, 0}] ThreeJSymbol[{n, m}, {nu,
mu}, {p, -m - mu}]
lMax := 18
For[n = 0, n <= lMax, n++,
For[m = -n, m <= n, m++,
For[nu = 0, nu <= lMax, nu++,
For[mu = -nu, mu <= nu, mu++,
For[q = 0, q <= Min[n, nu, (n + nu - Abs[m + mu])/2],q++,
Print[CForm[N[gaunt[m, n, mu, nu, n + nu - 2 q],16]]]
]
]
]
]
]