diff --git a/apps/tutorials/codegen/02_CodegenLbmpy.dox b/apps/tutorials/codegen/02_CodegenLbmpy.dox
new file mode 100644
index 0000000000000000000000000000000000000000..d16b36f3802adc7d276839cba01a0e49e8dab562
--- /dev/null
+++ b/apps/tutorials/codegen/02_CodegenLbmpy.dox
@@ -0,0 +1,25 @@
+namespace walberla{
+
+/**
+\page tutorial_codegen02 Tutorial - Code Generation 2: Lattice Model Generation with lbmpy
+
+\section overview Overview
+
+This tutorial demonstrates how to use <a href="https://pycodegen.pages.i10git.cs.fau.de/lbmpy/notebooks/00_tutorial_lbmpy_walberla_overview.html" target="_blank">lbmpy</a> in conjunction with waLBerla to generate efficient implementations of various Lattice Boltzmann Methods to be included in large-scale distributed memory fluid flow simulations. While waLBerla provides an advanced framework for setting up and running complex fluid simulations, it only implements a small set of Lattice Boltzmann collision operators. Writing an efficient C++ implementation of an advanced Lattice-Boltzmann method can be very cumbersome. For this reason, lbmpy has been developed. It is a Python framework which allows to define a set of LB equations at different levels of abstraction, and then generate a highly optimized C implementation of these equations. An introduction to lbmpy can be found <a href="https://pycodegen.pages.i10git.cs.fau.de/lbmpy/notebooks/00_tutorial_lbmpy_walberla_overview.html" target="_blank">here</a>. 
+
+
+As in the previous tutorial (\ref tutorial_codegen01), we will first define the numeric methods and set up code generation in a Python script. We will then include the generated code in a waLBerla application to simulate a two-dimensional shear flow in a periodic domain. Additionally, it will be shown how a waLBerla simulation with complex initial conditions can be initialized using parameter files.
+
+\section lbmpy_codegen_script The Code Generation Script
+
+\section lbmpy_simulation_app The Simulation application
+
+\subsection lbmpy_codegen_inclusion Inclusion of the generated code
+
+\subsection lbmpy_shear_flow_init Initialization of the Shear Flow
+
+\tableofcontents
+
+*/
+
+}
\ No newline at end of file
diff --git a/apps/tutorials/codegen/02_LBMLatticeModelGeneration.cpp b/apps/tutorials/codegen/02_LBMLatticeModelGeneration.cpp
index 2295e2f0ddfa536327102c5f681a01ab2fd5917a..268e18605968fb05eeaabc4240459ba939d7a17b 100644
--- a/apps/tutorials/codegen/02_LBMLatticeModelGeneration.cpp
+++ b/apps/tutorials/codegen/02_LBMLatticeModelGeneration.cpp
@@ -103,7 +103,7 @@ struct ShearFlowInit
  public:
    ShearFlowInit(const shared_ptr< StructuredBlockForest >& blocks, const Config::BlockHandle& setup)
       : exprInitFunc_(blocks), noiseMagnitude_(setup.getParameter< real_t >("u_y_noise_magnitude")),
-        rng_(setup.getParameter< std::mt19937::result_type >("noise_seed"))
+        rng_(setup.getParameter< std::mt19937::result_type >("noise_seed", 42))
    {
       if (!exprInitFunc_.parse(setup)) { WALBERLA_ABORT("Shear Flow Setup was incomplete."); }
    }
diff --git a/doc/Mainpage.dox b/doc/Mainpage.dox
index ed13b558e7565c5ea9ce6a273fc955c99157c9ac..6e2ec2407f3c2fac83d4f8de5fa3dccc60faeab2 100644
--- a/doc/Mainpage.dox
+++ b/doc/Mainpage.dox
@@ -43,10 +43,12 @@ all the basic data strcutures and concepts of the framework.
 - \ref tutorial_lbm04 \n
   A LBM simulation with complex geometries is built.
 
-\subsection codegen Code Generation with pystencils
+\subsection codegen Code Generation
 
 - \ref tutorial_codegen01 \n
   This tutorial shows how to use pystencils to generate waLBerla sweeps from symbolic descriptions. 
+- \ref tutorial_codegen02 \n
+   
    
 \section further_info Further information