aboutsummaryrefslogtreecommitdiff
path: root/boltzgen/kernel/template/collect_moments.cpp.mako
diff options
context:
space:
mode:
Diffstat (limited to 'boltzgen/kernel/template/collect_moments.cpp.mako')
-rw-r--r--boltzgen/kernel/template/collect_moments.cpp.mako21
1 files changed, 4 insertions, 17 deletions
diff --git a/boltzgen/kernel/template/collect_moments.cpp.mako b/boltzgen/kernel/template/collect_moments.cpp.mako
index 493c53d..570cf92 100644
--- a/boltzgen/kernel/template/collect_moments.cpp.mako
+++ b/boltzgen/kernel/template/collect_moments.cpp.mako
@@ -1,22 +1,10 @@
+<%namespace name="pattern" file="${'/pattern/%s.cpp.mako' % context['streaming']}"/>
<%
import sympy
+moments_subexpr, moments_assignment = model.moments()
%>
-void collect_moments(const ${float_type}* f,
- std::size_t gid,
- ${float_type}& rho,
- ${float_type} u[${descriptor.d}])
-{
- const ${float_type}* preshifted_f = f + ${layout.cell_preshift('gid')};
-
-% for i in range(0,descriptor.q):
- const ${float_type} f_curr_${i} = preshifted_f[${layout.pop_offset(i)}];
-% endfor
-
-<%
- moments_subexpr, moments_assignment = model.moments()
-%>
-
+<%call expr="pattern.functor_ab('collect_moments', [('%s&' % float_type, 'rho'), (float_type, 'u[%d]' % descriptor.d)])">
% for i, expr in enumerate(moments_subexpr):
const ${float_type} ${expr[0]} = ${sympy.ccode(expr[1])};
% endfor
@@ -28,5 +16,4 @@ void collect_moments(const ${float_type}* f,
u[${i-1}] = ${sympy.ccode(expr.rhs)};
% endif
% endfor
-}
-
+</%call>