Chapter 1
Introduction

Welcome to the tutorial of the Advection problem using the Advection-Diffusion-Reaction (ADR) Solver in the Nektar++ framework. This tutorial is aimed to show the main features of the ADR solver in a simple manner. If you have not already downloaded and installed Nektar++, please do so by visiting nektar.info, where you can also find the User-Guide with the instructions to install the library.

This tutorial requires:

1.1 Goals

After the completion of this tutorial, you will be familiar with:

Task: 1.1 Prepare for the tutorial. Make sure that you have:

Task: 1.2 Additionally, you should also install

1.2 Background

The ADR solver can solve various problems, including the unsteady advection, unsteady diffusion, unsteady advection diffusion equation, etc. For a more detailed description of this solver, please refer to the User-Guide.

In this tutorial we focus on the unsteady advection equation

∂u
∂t-+ V ⋅∇u  = 0,
(1.1)

where u is the independent variable and V = [Vx Vy Vz] is the advection velocity. The unsteady advection equation can be solved in one, two and three spatial dimensions. We will here consider a two-dimensional problem, so that V = [Vx Vy].

1.3 Problem description

The problem we want to run consists of a given initial condition (which depends on x and y) travelling in the x-direction at a constant advection velocity. To model this problem we create a computational domain also referred to as mesh or grid (see section 2.1) on which we apply the following two-dimensional function as initial condition and periodic as well as time-dependent Dirichlet boundary conditions at the mesh boundaries

∂u-+  Vx∂u-+  Vy∂u- = 0,
 ∂t     ∂x      ∂y
u(x,y; t = 0) = sin (κx )cos(κy),

u(xb = [- 1,1],yb; t) = periodic,

u(xb,yb = [- 1,1]; t) = sin(κ(x- Vx t))cos(κ(y - Vy t)),
(1.2)

where xb and yb represent the boundaries of the computational domain (see section 2.2), Vx = 2,Vy = 0 and κ = 2π.

We successively setup the other parameters of the problem, such as the time-step, the time-integration scheme, the I/O configuration, etc. (see section 2.2). We finally run the solver (see section 3) and post-process the data in order to visualise the results (see section 4).