From 93ac5730b2d477b0ef2606e26d07727b7b8b8026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ne=C4=8Dada?= Date: Tue, 13 Feb 2018 01:45:26 +0200 Subject: [PATCH] gaunt coeff generators mathematica Former-commit-id: 43fb56d338faf193083035ab4ae4da115ca0bbaf --- qpms/test_vswf_translations.c | 11 ++++++----- tests/gauntgen.m | 4 ++-- tests/gauntgenbare.m | 21 +++++++++++++++++++++ 3 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 tests/gauntgenbare.m diff --git a/qpms/test_vswf_translations.c b/qpms/test_vswf_translations.c index 7f22e25..29f578d 100644 --- a/qpms/test_vswf_translations.c +++ b/qpms/test_vswf_translations.c @@ -36,17 +36,18 @@ int main() { qpms_l_t lMax = 8; //qpms_l_t viewlMax = 2; int npoints = 10; - double sigma = 1.3; + double sigma = 0.1; + double shiftsigma = 2.; cart3_t o2minuso1; - o2minuso1.x = gsl_ran_gaussian(rng, sigma); - o2minuso1.y = gsl_ran_gaussian(rng, sigma); - o2minuso1.z = gsl_ran_gaussian(rng, sigma); + o2minuso1.x = gsl_ran_gaussian(rng, shiftsigma); + o2minuso1.y = gsl_ran_gaussian(rng, shiftsigma); + o2minuso1.z = gsl_ran_gaussian(rng, shiftsigma); cart3_t points[npoints]; double relerrs[npoints]; 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; for (unsigned i = 3; i < npoints; ++i) { cart3_t *w = points+i; diff --git a/tests/gauntgen.m b/tests/gauntgen.m index c1f6ea4..f62866b 100644 --- a/tests/gauntgen.m +++ b/tests/gauntgen.m @@ -6,13 +6,13 @@ gaunt[m_, n_, mu_, nu_, 0}, {nu, 0}, {p, 0}] ThreeJSymbol[{n, m}, {nu, mu}, {p, -m - mu}] -lMax := 100 +lMax := 30 For[n = 0, n <= lMax, n++, For[nu = 0, nu <= lMax, nu++, For[m = -n, m <= n, m++, For[mu = -nu, mu <= nu, mu++, 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]]]] ] ] ] diff --git a/tests/gauntgenbare.m b/tests/gauntgenbare.m new file mode 100644 index 0000000..dbf75fb --- /dev/null +++ b/tests/gauntgenbare.m @@ -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]]] + ] + ] + ] + ] + ] +