From a3add110f6768c45e56d750087b57a2cb4f0e3c5 Mon Sep 17 00:00:00 2001
From: Martin Bauer <martin.bauer@fau.de>
Date: Thu, 1 Aug 2019 16:55:55 +0200
Subject: [PATCH] Added test for fluctuating LB generation

---
 lbmpy_walberla/templates/LatticeModel.tmpl.cpp |  9 ++++-----
 lbmpy_walberla_tests/test_walberla_codegen.py  | 15 +++++++++++++++
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/lbmpy_walberla/templates/LatticeModel.tmpl.cpp b/lbmpy_walberla/templates/LatticeModel.tmpl.cpp
index 6f80084..3db08c0 100644
--- a/lbmpy_walberla/templates/LatticeModel.tmpl.cpp
+++ b/lbmpy_walberla/templates/LatticeModel.tmpl.cpp
@@ -24,11 +24,6 @@
 #include "lbm/sweeps/Streaming.h"
 #include "{{class_name}}.h"
 
-{% for header in headers %}
-#include {{header}}
-{% endfor %}
-
-
 #ifdef _MSC_VER
 #  pragma warning( disable : 4458 )
 #endif
@@ -48,6 +43,10 @@
 #   pragma GCC diagnostic ignored "-Wunused-parameter"
 #endif
 
+{% for header in headers %}
+#include {{header}}
+{% endfor %}
+
 
 using namespace std;
 
diff --git a/lbmpy_walberla_tests/test_walberla_codegen.py b/lbmpy_walberla_tests/test_walberla_codegen.py
index a62711c..f4d7333 100644
--- a/lbmpy_walberla_tests/test_walberla_codegen.py
+++ b/lbmpy_walberla_tests/test_walberla_codegen.py
@@ -75,6 +75,21 @@ class WalberlaLbmpyCodegenTest(unittest.TestCase):
             cr = create_lb_collision_rule(**parameters)
             generate_lattice_model(ctx, 'Model', cr)
 
+    @staticmethod
+    def test_fluctuating():
+        with ManualCodeGenerationContext(openmp=True, double_accuracy=True) as ctx:
+            omega_shear, omega_bulk = sp.symbols("omega, omega_free")
+            force_field, vel_field = ps.fields("force(3), velocity(3): [3D]", layout='fzyx')
+
+            # the collision rule of the LB method where the some advanced features
+            collision_rule = create_lb_collision_rule(
+                stencil='D3Q19', compressible=True, fluctuating=True,
+                method='mrt3', relaxation_rates=[omega_shear, omega_bulk],
+                force_model='guo', force=force_field.center_vector,
+                optimization={'cse_global': False}
+            )
+            generate_lattice_model(ctx, 'FluctuatingMRT', collision_rule)
+
     @staticmethod
     def test_boundary():
         with ManualCodeGenerationContext(openmp=True, double_accuracy=True) as ctx:
-- 
GitLab