From f825d761e512497ead275cf3bc91ae74ab9a00ce Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Thu, 30 May 2019 16:17:43 -0500 Subject: [PATCH 1/5] Wrap rocviarecur3p_init and mplocquadu2 routines --- vec_wrappers.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++ wrappers.pyf.mako | 11 +++++++++ 2 files changed, 71 insertions(+) diff --git a/vec_wrappers.py b/vec_wrappers.py index bcf597f..adff769 100644 --- a/vec_wrappers.py +++ b/vec_wrappers.py @@ -389,6 +389,14 @@ def gen_vector_wrappers(): real*8 triarea(nvcount) """, ["triarea"]) + gen_vector_wrapper("rotviarecur3p_init", """ + integer ier(nvcount) + real*8 rotmat(0:ldc,0:ldc,-ldc:ldc,nvcount) + integer ldc + real*8 theta(nvcount) + """, + ["ier", "rotmat"]) + # }}} # {{{ special functions @@ -826,6 +834,58 @@ def gen_vector_wrappers(): # }}} + # {{{ mploc_quadu2 translation operators + + dims = 3 + xlat = "mploc" + for eqn in [cgh.Laplace(dims), cgh.Helmholtz(dims)]: + func_name = "%s%dd%squadu2_trunc" % (eqn.lh_letter(), dims, xlat) + + args_template = Template(""" + ${ extra_args } + + real*8 rscale1(${input_dim}) + real*8 center1(${dims}, ${input_dim}) + complex*16 expn1(${expn_dims_1}, ${input_dim}) + integer nterms1 + + real*8 rscale2(nvcount) + real*8 center2(${dims}, nvcount) + complex*16 expn2(${expn_dims_2}, nvcount) + integer nterms2 + + %if lh_letter == "h": + real*8 radius(nvcount) + real*8 xnodes(nquad) + real*8 wts(nquad) + integer nquad + %endif + integer ier(nvcount) + + real*8 rotmatf(0:ldm,0:ldm,-ldm:ldm, ${input_dim}) + real*8 rotmatb(0:ldm,0:ldm,-ldm:ldm, ${input_dim}) + integer ldm + + """, strict_undefined=True) + + args = args_template.render( + dims=dims, + lh_letter=eqn.lh_letter(), + expn_dims_1=eqn.expansion_dims("nterms1"), + expn_dims_2=eqn.expansion_dims("nterms2"), + extra_args=eqn.in_arg_decls(with_intent=False), + input_dim="*INDIRECT_MANY", + ) + + gen_vector_wrapper( + func_name, + args, + ["ier", "expn2"], + output_reductions={"expn2": "sum", "ier": "max"}, + tmp_init={"ier": "0"}) + + # }}} + result.append("! vim: filetype=fortran") return "\n".join(result) diff --git a/wrappers.pyf.mako b/wrappers.pyf.mako index f10dd8e..87efd65 100644 --- a/wrappers.pyf.mako +++ b/wrappers.pyf.mako @@ -252,6 +252,17 @@ python module _internal integer, intent(out) :: ier end subroutine h2dterms + ! }}} + + ! {{{ rotation matrix construction + + subroutine rotviarecur3p_init(ier,rotmat,ldc,theta) + integer, intent(out) :: ier + real*8, intent(out) :: rotmat(0:ldc,0:ldc,-ldc:ldc) + integer, intent(in) :: ldc + real*8 intent(in) :: theta + end subroutine rotviarecur3p_init + ! }}} ! {{{ generated vectorized wrappers -- GitLab From f6efdfa20fab938884cc6cee9be56284989d8c38 Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Thu, 30 May 2019 18:00:40 -0500 Subject: [PATCH 2/5] Change name --- vec_wrappers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vec_wrappers.py b/vec_wrappers.py index adff769..ada8408 100644 --- a/vec_wrappers.py +++ b/vec_wrappers.py @@ -865,7 +865,6 @@ def gen_vector_wrappers(): real*8 rotmatf(0:ldm,0:ldm,-ldm:ldm, ${input_dim}) real*8 rotmatb(0:ldm,0:ldm,-ldm:ldm, ${input_dim}) integer ldm - """, strict_undefined=True) args = args_template.render( @@ -881,6 +880,7 @@ def gen_vector_wrappers(): func_name, args, ["ier", "expn2"], + vec_func_name=func_name + "_imany", output_reductions={"expn2": "sum", "ier": "max"}, tmp_init={"ier": "0"}) -- GitLab From 272e91d866fef6f6e8bae6e2e78847ed2b17bdef Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Fri, 31 May 2019 00:29:56 -0500 Subject: [PATCH 3/5] Add missing argument --- vec_wrappers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/vec_wrappers.py b/vec_wrappers.py index ada8408..561391a 100644 --- a/vec_wrappers.py +++ b/vec_wrappers.py @@ -847,6 +847,7 @@ def gen_vector_wrappers(): real*8 rscale1(${input_dim}) real*8 center1(${dims}, ${input_dim}) complex*16 expn1(${expn_dims_1}, ${input_dim}) + integer nterms integer nterms1 real*8 rscale2(nvcount) -- GitLab From 8ec6a1dc21e8832a0e6838f358395f8eca3db0b9 Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Fri, 31 May 2019 00:31:45 -0500 Subject: [PATCH 4/5] Fix whitespace --- vec_wrappers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vec_wrappers.py b/vec_wrappers.py index 561391a..7dce1d6 100644 --- a/vec_wrappers.py +++ b/vec_wrappers.py @@ -396,7 +396,7 @@ def gen_vector_wrappers(): real*8 theta(nvcount) """, ["ier", "rotmat"]) - + # }}} # {{{ special functions @@ -876,7 +876,7 @@ def gen_vector_wrappers(): extra_args=eqn.in_arg_decls(with_intent=False), input_dim="*INDIRECT_MANY", ) - + gen_vector_wrapper( func_name, args, -- GitLab From 7e9dbd9c21ad3a3f3d793da21203db0cdb09fc28 Mon Sep 17 00:00:00 2001 From: Matt Wala Date: Fri, 31 May 2019 00:32:16 -0500 Subject: [PATCH 5/5] Bump version --- pyfmmlib/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfmmlib/version.py b/pyfmmlib/version.py index a41920d..6ba2863 100644 --- a/pyfmmlib/version.py +++ b/pyfmmlib/version.py @@ -1,3 +1,3 @@ -VERSION = (2018, 1, 3) +VERSION = (2019, 1) VERSION_STATUS = "" VERSION_TEXT = ".".join(str(x) for x in VERSION) + VERSION_STATUS -- GitLab