From b92676d3cd0907d5bfe6e6ad25e3e77210d107a8 Mon Sep 17 00:00:00 2001 From: Jonas Plewinski <jonas.plewinski@fau.de> Date: Thu, 26 Nov 2020 09:16:00 +0100 Subject: [PATCH] Added function get_central_moments to moments.py --- lbmpy/moments.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lbmpy/moments.py b/lbmpy/moments.py index cfb868a7..f46fd0f5 100644 --- a/lbmpy/moments.py +++ b/lbmpy/moments.py @@ -417,6 +417,36 @@ def shift_matrix(moments, stencil): return sp.Matrix(shift_matrix_list) +def get_central_moments(stencil, u=tuple(sp.symbols("u_0 u_1 u_2"))): + """ + Returns the central moments for D2Q9 or D3Q27 + """ + x, y, z = MOMENT_SYMBOLS + if len(stencil) == 9: + central_moments = (sp.sympify(1), x - u[0], y - u[1], + (x - u[0]) ** 2, (y - u[1]) ** 2, (x - u[0]) * (y - u[1]), + (x - u[0]) ** 2 * (y - u[1]), (x - u[0]) * (y - u[1]) ** 2, + (x - u[0]) ** 2 * (y - u[1]) ** 2) + return central_moments + elif len(stencil) == 27: + central_moments = (sp.sympify(1), + x - u[0], y - u[1], z - u[2], + (x - u[0]) ** 2, (y - u[1]) ** 2, (z - u[2]) ** 2, (x - u[0]) * (y - u[1]), + (x - u[0]) * (z - u[2]), (y - u[1]) * (z - u[2]), + (x - u[0]) ** 2 * (y - u[1]), (x - u[0]) ** 2 * (z - u[2]), (x - u[0]) * (y - u[1]) ** 2, + (x - u[0]) * (z - u[2]) ** 2, (y - u[1]) ** 2 * (z - u[2]), (y - u[1]) * (z - u[2]) ** 2, + (x - u[0]) * (y - u[1]) * (z - u[2]), + (x - u[0]) ** 2 * (y - u[1]) ** 2, (x - u[0]) ** 2 * (z - u[2]) ** 2, + (y - u[1]) ** 2 * (z - u[2]) ** 2, (x - u[0]) ** 2 * (y - u[1]) * (z - u[2]), + (x - u[0]) * (y - u[1]) ** 2 * (z - u[2]), (x - u[0]) * (y - u[1]) * (z - u[2]) ** 2, + (x - u[0]) ** 2 * (y - u[1]) ** 2 * (z - u[2]), + (x - u[0]) ** 2 * (y - u[1]) * (z - u[2]) ** 2, + (x - u[0]) * (y - u[1]) ** 2 * (z - u[2]) ** 2, + (x - u[0]) ** 2 * (y - u[1]) ** 2 * (z - u[2]) ** 2) + return central_moments + + + def gram_schmidt(moments, stencil, weights=None): r""" Computes orthogonal set of moments using the method by Gram-Schmidt -- GitLab