From f62cfbe7a0d9b28a14a9b34eb8e09d6555b35e9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ne=C4=8Dada?= Date: Tue, 13 Aug 2019 14:38:02 +0300 Subject: [PATCH] Test whether single vswf and vswf array give the same result Former-commit-id: ad74493b0f8854cfda302d8c98f2cdc216bc276c --- qpms/tests/vswf_arr_and_single.c | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 qpms/tests/vswf_arr_and_single.c diff --git a/qpms/tests/vswf_arr_and_single.c b/qpms/tests/vswf_arr_and_single.c new file mode 100644 index 0000000..8a14b31 --- /dev/null +++ b/qpms/tests/vswf_arr_and_single.c @@ -0,0 +1,34 @@ +// c99 -I .. vswf_single.c -lqpms -lgsl -lblas +#include "indexing.h" +#include "vswf.h" +#include + +int main(int argc, char **argv) { + const qpms_l_t lMax = 2; + csph_t point = {1.4554, 1.2424, 4.2545}; + + qpms_vswf_set_spec_t *bspec = qpms_vswf_set_spec_from_lMax(lMax, QPMS_NORMALISATION_CONVENTION_KRISTENSSON); + + csphvec_t arr[bspec->n]; + qpms_uvswf_fill(arr, bspec, point, QPMS_BESSEL_REGULAR); + + for(size_t i = 0; i < bspec->n; i++) { + csphvec_t v = arr[i]; + qpms_vswf_type_t t; qpms_m_t m; qpms_l_t l; + qpms_uvswfi2tmn(bspec->ilist[i], &t, &m, &l); + printf("arr; l=%d,m=%+d,t=%d, @(%g,%g,%g): (%g%+gj, %g%+gj, %g%+gj)\n", + l, m, t, creal(point.r), point.theta, point.phi, creal(v.rc), cimag(v.rc), + creal(v.thetac), cimag(v.thetac), creal(v.phic), cimag(v.phic)); + if (t == QPMS_VSWF_ELECTRIC) + v = qpms_vswf_single_el_csph(m, l, point,QPMS_BESSEL_REGULAR,bspec->norm); + else + v = qpms_vswf_single_mg_csph(m, l, point,QPMS_BESSEL_REGULAR,bspec->norm); + printf("sgl; l=%d,m=%+d,t=%d, @(%g,%g,%g): (%g%+gj, %g%+gj, %g%+gj)\n", + l, m, t, creal(point.r), point.theta, point.phi, creal(v.rc), cimag(v.rc), + creal(v.thetac), cimag(v.thetac), creal(v.phic), cimag(v.phic)); + } + qpms_vswf_set_spec_free(bspec); + return 0; +} + +