A Matlab Tutorial for Diffusion-Convection-Reaction Equations using DGFEM

Similar documents
Local discontinuous Galerkin methods for elliptic problems

The Discontinuous Galerkin Finite Element Method

ANALYSIS OF THE FEM AND DGM FOR AN ELLIPTIC PROBLEM WITH A NONLINEAR NEWTON BOUNDARY CONDITION

SECOND ORDER TIME DISCONTINUOUS GALERKIN METHOD FOR NONLINEAR CONVECTION-DIFFUSION PROBLEMS

An Equal-order DG Method for the Incompressible Navier-Stokes Equations

arxiv: v1 [math.na] 29 Feb 2016

A Two-grid Method for Coupled Free Flow with Porous Media Flow

A note on discontinuous Galerkin divergence-free solutions of the Navier-Stokes equations

A SIMPLE TUTORIAL ON DISCONTINUOUS GALERKIN METHODS. Jennifer Proft CERMICS, ENPC. J. Proft CERMICS, ENPC

Discontinuous Galerkin Method for interface problem of coupling different order elliptic equations

Energy norm a-posteriori error estimation for divergence-free discontinuous Galerkin approximations of the Navier-Stokes equations

LibMesh Experience and Usage

[2] (a) Develop and describe the piecewise linear Galerkin finite element approximation of,

Scientific Computing WS 2018/2019. Lecture 15. Jürgen Fuhrmann Lecture 15 Slide 1

Electronic Transactions on Numerical Analysis Volume 32, 2008

Numerical Analysis of Higher Order Discontinuous Galerkin Finite Element Methods

ANALYSIS OF AN INTERFACE STABILISED FINITE ELEMENT METHOD: THE ADVECTION-DIFFUSION-REACTION EQUATION

Scientific Computing WS 2017/2018. Lecture 18. Jürgen Fuhrmann Lecture 18 Slide 1

SUPERCONVERGENCE OF DG METHOD FOR ONE-DIMENSIONAL SINGULARLY PERTURBED PROBLEMS *1)

Finite difference method for elliptic problems: I

NUMERICAL SOLUTION OF CONVECTION DIFFUSION EQUATIONS USING UPWINDING TECHNIQUES SATISFYING THE DISCRETE MAXIMUM PRINCIPLE

Maximum-norm a posteriori estimates for discontinuous Galerkin methods

New class of finite element methods: weak Galerkin methods

Hybridized Discontinuous Galerkin Methods

Superconvergence and H(div) Projection for Discontinuous Galerkin Methods

DISCRETE MAXIMUM PRINCIPLES in THE FINITE ELEMENT SIMULATIONS

Discontinuous Galerkin methods for nonlinear elasticity

1. Introduction. We consider the model problem that seeks an unknown function u = u(x) satisfying

The Kuratowski Ryll-Nardzewski Theorem and semismooth Newton methods for Hamilton Jacobi Bellman equations

C e n t r u m v o o r W i s k u n d e e n I n f o r m a t i c a

Basic Concepts of Adaptive Finite Element Methods for Elliptic Boundary Value Problems

Finite Elements for Nonlinear Problems

A high order adaptive finite element method for solving nonlinear hyperbolic conservation laws

Discontinuous Galerkin Methods

Analysis of Hybrid Discontinuous Galerkin Methods for Incompressible Flow Problems

Chapter 5 HIGH ACCURACY CUBIC SPLINE APPROXIMATION FOR TWO DIMENSIONAL QUASI-LINEAR ELLIPTIC BOUNDARY VALUE PROBLEMS

Space-time sparse discretization of linear parabolic equations

A Nonoverlapping Subdomain Algorithm with Lagrange Multipliers and its Object Oriented Implementation for Interface Problems

Different Approaches to a Posteriori Error Analysis of the Discontinuous Galerkin Method

LibMesh Experience and Usage

Finite Elements. Colin Cotter. January 15, Colin Cotter FEM

AMS 529: Finite Element Methods: Fundamentals, Applications, and New Trends

A LAGRANGE MULTIPLIER METHOD FOR ELLIPTIC INTERFACE PROBLEMS USING NON-MATCHING MESHES

Divergence-conforming multigrid methods for incompressible flow problems

GeoPDEs. An Octave/Matlab software for research on IGA. R. Vázquez. IMATI Enrico Magenes, Pavia Consiglio Nazionale della Ricerca

arxiv: v2 [math.na] 23 Apr 2016

Review for Exam 2 Ben Wang and Mark Styczynski

A High Order Method for Three Phase Flow in Homogeneous Porous Media

An a posteriori error estimator for the weak Galerkin least-squares finite-element method

Numerical Solutions to Partial Differential Equations

A non-standard Finite Element Method based on boundary integral operators

arxiv: v1 [math.na] 11 Jul 2011

Fourier Type Error Analysis of the Direct Discontinuous Galerkin Method and Its Variations for Diffusion Equations

Graded Mesh Refinement and Error Estimates of Higher Order for DGFE-solutions of Elliptic Boundary Value Problems in Polygons

Discontinuous Galerkin Methods: Theory, Computation and Applications

A uniform additive Schwarz preconditioner for high order Discontinuous Galerkin approximations of elliptic problems

Iterative Methods for Linear Systems

Trefftz-DG solution to the Helmholtz equation involving integral equations

Optimal Error Estimates for the hp Version Interior Penalty Discontinuous Galerkin Finite Element Method

Implementation of the dg method

AMS 529: Finite Element Methods: Fundamentals, Applications, and New Trends

arxiv: v1 [math.na] 15 Jan 2019

Virtual Element Methods for general second order elliptic problems

Discontinuous Galerkin Methods: Theory, Computation and Applications

Parallel Discontinuous Galerkin Method

Partially Penalized Immersed Finite Element Methods for Parabolic Interface Problems

Analysis of Two-Grid Methods for Nonlinear Parabolic Equations by Expanded Mixed Finite Element Methods

R T (u H )v + (2.1) J S (u H )v v V, T (2.2) (2.3) H S J S (u H ) 2 L 2 (S). S T

Key words. Incompressible magnetohydrodynamics, mixed finite element methods, discontinuous Galerkin methods

Introduction into Implementation of Optimization problems with PDEs: Sheet 3

Chapter 6. Finite Element Method. Literature: (tiny selection from an enormous number of publications)

LECTURE 3: DISCRETE GRADIENT FLOWS

On the solution of incompressible two-phase ow by a p-version discontinuous Galerkin method

Development of discontinuous Galerkin method for linear strain gradient elasticity

ASM-BDDC Preconditioners with variable polynomial degree for CG- and DG-SEM

LECTURE # 0 BASIC NOTATIONS AND CONCEPTS IN THE THEORY OF PARTIAL DIFFERENTIAL EQUATIONS (PDES)

Discontinuous Galerkin Methods: An Overview and Some Applications. Daya Reddy UNIVERSITY OF CAPE TOWN

On Dual-Weighted Residual Error Estimates for p-dependent Discretizations

Adaptive Time Space Discretization for Combustion Problems

New DPG techniques for designing numerical schemes

Math 7824 Spring 2010 Numerical solution of partial differential equations Classroom notes and homework

Hybrid Discontinuous Galerkin methods for incompressible flow problems

Key words. preconditioned conjugate gradient method, saddle point problems, optimal control of PDEs, control and state constraints, multigrid method

FEniCS Course. Lecture 0: Introduction to FEM. Contributors Anders Logg, Kent-Andre Mardal

Lecture 9 Approximations of Laplace s Equation, Finite Element Method. Mathématiques appliquées (MATH0504-1) B. Dewals, C.

(f P Ω hf) vdx = 0 for all v V h, if and only if Ω (f P hf) φ i dx = 0, for i = 0, 1,..., n, where {φ i } V h is set of hat functions.

Overlapping Schwarz preconditioners for Fekete spectral elements

ITERATIVE METHODS FOR NONLINEAR ELLIPTIC EQUATIONS

WEAK GALERKIN FINITE ELEMENT METHODS ON POLYTOPAL MESHES

A Posteriori Error Estimates For Discontinuous Galerkin Methods Using Non-polynomial Basis Functions

Generalised Summation-by-Parts Operators and Variable Coefficients

IMPROVED LEAST-SQUARES ERROR ESTIMATES FOR SCALAR HYPERBOLIC PROBLEMS, 1

On an Approximation Result for Piecewise Polynomial Functions. O. Karakashian

Yongdeok Kim and Seki Kim

Computational Methods for Engineering Applications II. Homework Problem Sheet 4

An Adaptive Mixed Finite Element Method using the Lagrange Multiplier Technique

1. Let a(x) > 0, and assume that u and u h are the solutions of the Dirichlet problem:

Time-dependent variational forms

arxiv: v1 [math.na] 27 Jan 2016

Hamburger Beiträge zur Angewandten Mathematik

Transcription:

MIDDLE EAST TECHNICAL UNIVERSITY Ankara, Turkey INSTITUTE OF APPLIED MATHEMATICS http://iam.metu.edu.tr arxiv:1502.02941v1 [math.na] 10 Feb 2015 A Matlab Tutorial for Diffusion-Convection-Reaction Equations using DGFEM Murat Uzunca 1, Bülent Karasözen 2 Abstract. We present a collection of MATLAB routines using discontinuous Galerkin finite elements method (DGFEM) for solving steady-state diffusion-convection-reaction equations. The code employs the sparse matrix facilities of MATLAB with "vectorization" and uses multiple matrix multiplications "MULTIPROD" [5] to increase the efficiency of the program. Keywords. Discontinuous Galerkin FEMs, Diffusion-convection-reaction equations, Matlab Preprint No. 2014-4 August 2014 1 Department of Mathematics, Middle East Technical University, 06800 Ankara, Turkey, email: uzunca@metu.edu.tr 2 Department of Mathematics and Institute of Applied Mathematics, Middle East Technical University, 06800 Ankara, Turkey, email: bulent@metu.edu.tr

1 DG discretization of the linear model problem Many engineering problems such as chemical reaction processes, heat conduction, nuclear reactors, population dynamics etc. are governed by convection-diffusionreaction partial differential equations (PDEs). The general model problem used in the code is αu ε u+b u= f in Ω, (1a) u=g D on Γ D, (1b) ε u n= g N on Γ N. (1c) The domain Ω is bounded, open, convex in R 2 with boundary Ω = Γ D Γ N, Γ D Γ N = /0, 0<ε 1 is the diffusivity constant, f L 2 (Ω) is the source function, b ( W 1, (Ω) ) 2 is the velocity field, g D H 3/2 (Γ D ) is the Dirichlet boundary condition, g N H 1/2 (Γ N ) is the Neumann boundary condition and n denote the unit outward normal vector to the boundary. The weak formulation of (1) reads as: find u U such that Ω (ε u v+b uv+αuv)dx= Ω f vdx+ g N vds, v V (2) Γ N where the solution space U and the test function space V are given by U ={u H 1 (Ω) : u=g D on Γ D }, V ={v H 1 (Ω) : v=0 on Γ D }. Being the next step, an approximation to the problem (2) is found in a finitedimensional space V h. In case of classical (continuous) FEMs, the space V h is set to be the set of piecewise continuous polynomials vanishing on the boundary Ω. In contrast to the continuous FEMs, the DGFEMs uses the set of piecewise polynomials that are fully discontinuous at the interfaces. In this way, the DGFEMs approximation allows to capture the sharp gradients or singularities that affect the numerical solution locally. Moreover, the functions in V h do not need to vanish at the boundary since the boundary conditions in DGFEMs are imposed weakly. In our code, the discretization of the problem (1) is based on the discontinuous Galerkin methods for the diffusion part [1, 6] and the upwinding for the convection part [2, 4]. Let {ξ h } be a family of shape regular meshes with the elements (triangles) K i ξ h satisfying Ω= K and K i K j = /0 for K i, K j ξ h. Let us denote by Γ 0, Γ D and Γ N the set of interior, Dirichlet boundary and Neumann boundary edges, respectively, so that Γ 0 Γ D Γ N forms the skeleton of the mesh. For any K ξ h, let P k (K) be the set of all polynomials of degree at most k on K. Then, set the finite dimensional solution and test function space by V h = { v L 2 (Ω) : v K P k (K), K ξ h } V. 2

K j K i ne e Ω K i n e Figure 1: Two adjacent elements sharing an edge (left); an element near to domain boundary (right) Note that the trial and test function spaces are the same because the boundary conditions in discontinuous Galerkin methods are imposed in a weak manner. Since the functions in V h may have discontinuities along the inter-element boundaries, along an interior edge, there would be two different traces from the adjacent elements sharing that edge. In the light of this fact, let us first introduce some notations before giving the DG formulation. Let K i, K j ξ h (i< j) be two adjacent elements sharing an interior edge e=k i K j Γ 0 (see Fig.1). Denote the trace of a scalar function v from inside K i by v i and from inside K j by v j. Then, set the jump and average values of v on the edge e [v]=v i n e v j n e, {v}= 1 2 (v i+ v j ), where n e is the unit normal to the edge e oriented from K i to K j. Similarly, we set the jump and average values of a vector valued function q on e [q]=q i n e q j n e, {q}= 1 2 (q i+ q j ), Observe that [v] is a vector for a scalar function v, while, [q] is scalar for a vector valued function q. On the other hands, along any boundary edge e=k i Ω, we set [v]=v i n, {v}=v i, [q]=q i n, {q}=q i where n is the unit outward normal to the boundary at e. We also introduce the inflow parts of the domain boundary and the boundary of a mesh element K, respectively Γ ={x Ω : b(x) n(x)<0}, K ={x K : b(x) n K (x)<0}. Then, the DG discretized system to the problem (1) combining with the upwind discretization for the convection part reads as: find u h V h such that a h (u h,v h )=l h (v h ) v h V h, (3) 3

a h (u h,v h )= ε u h v h dx+ (b u h + αu h )v h dx K K {ε u h } [v h ]ds+κ {ε v h } [u h ]ds e Γ 0 Γ D e e Γ 0 Γ D e + b n(u out h u in h )v hds b nu in h v hds K \ Ω K Γ σε + [u h ] [v h ]ds, e Γ 0 Γ D h e e ( ) σε l h (v h )= f v h dx+ g D v h ε v h n ds K e Γ D e h e b ng D v h ds+ g N v h ds, K Γ e Γ N e where u out h and u in h denotes the values on an edge from outside and inside of an element K, respectively. The parameter κ determines the type of DG method, which takes the values { 1, 1, 0}: κ = 1 gives "symmetric interior penalty Galerkin" (SIPG) method, κ = 1 gives "non-symmetric interior penalty Galerkin" (NIPG) method and κ = 0 gives "inconsistent interior penalty Galerkin" (IIPG) method. The parameter σ R + 0 is called the penalty parameter which should be sufficiently large; independent of the mesh size h and the diffusion coefficient ε [6] [Sec. 2.7.1]. In our code, we choose the penalty parameter σ on interior edges depending on the polynomial degree k as σ = 3k(k+1) for the SIPG and IIPG methods, whereas, we take σ = 1 for the NIPG method. On boundary edges, we take the penalty parameter as twice of the penalty parameter on interior edges. 2 Descriptions of the MATLAB code The given codes are mostly self-explanatory with comments to explain what each section of the code does. In this section, we give the description of our main code. The use of the main code consists of three parts 1. Mesh generation, 2. Entry of user defined quantities (boundary conditions, order of basis etc.), 3. Forming and solving the linear systems, 4. Plotting the solutions. Except the last one, all the parts above take place in the m-file Main_Linear.m which is the main code to be used by the users for linear problems without need to entry to any other m-file. The last part, plotting the solutions, takes place in the m-file dg_error.m. 4

2.1 Mesh generation In this section, we define the data structure of a triangular mesh on a polygonal domain in R 2. The data structure presented here is based on simple arrays [3] which are stored in a MATLAB "struct" that collects two or more data fields in one object that can then be passed to routines. To obtain an initial mesh, firstly, we define the nodes, elements, Dirichlet and Neumann conditions in the m-file Main_Linear.m, and we call the getmesh function to form the initial mesh structure mesh. % Generate t h e mesh % Nodes Nodes = [ 0, 0 ; 0. 5, 0 ; 1, 0 ; 0, 0. 5 ; 0. 5, 0. 5 ; 1, 0. 5 ; 0, 1 ; 0. 5, 1 ; 1, 1 ] ; % E lements E lements = [ 4, 1, 5 ; 1, 2, 5 ; 5, 2, 6 ; 2, 3, 6 ; 7, 4, 8 ; 4, 5, 8 ; 8, 5, 9 ; 5, 6, 9 ] ; % D i r i c h l e t bdry edges D i r i c h l e t = [ 1, 2 ; 2, 3 ; 1, 4 ; 3, 6 ; 4, 7 ; 6, 9 ; 7, 8 ; 8, 9 ] ; % Neumann bdry edges Neumann = [ ] ; % I n i t i a l mesh s t r u c t mesh = getmesh ( Nodes, Elements, D i r i c h l e t, Neumann ) ; As it can be understood, each row in the Nodes array corresponds to a mesh node with the first column keeps the x-coordinate of the node and the second is for the y-coordinate, and the i th row of the Nodes array is called the node having index i. In the Elements array, each row with 3 columns corresponds to a triangular element in the mesh containing the indices of the nodes forming the 3 vertices of the triangles in the counter-clockwise orientation. Finally, in the Dirichlet and Neumann arrays, each row with 2 columns corresponds to a Dirichlet and Neumann boundary edge containing the indices of the starting and ending nodes, respectively (see Fig.2). The mesh "struct" in the code has the following fields: Nodes, Elements, Edges, intedges, DbdEdges, NbdEdges, intedges vertices1, vertices2, vertices3, Dirichlet, Neumann, EdgeEls, ElementsE. which can be reached by mesh.nodes, mesh.elements and so on, and they are used by the other functions to form the DG construction. The initial mesh can be uniformly refined several times in a "for loop" by calling the function uniformrefine. f o r j j =1:2 mesh= u n i f o r m r e f i n e ( mesh ) ; %R e f i n e end mesh 5

n 7 e 7 n 8 e 8 n 9 E 5 E 7 e 5 e 6 E 6 E 8 n 4 n 5 n 6 E 1 E 3 e 3 e 4 E 2 E 4 n 1 e 1 n 2 e 2 n 3 Figure 2: Initial mesh on the unit square Ω=[0,1] 2 with nodes n i, triangles E j and edges e k 2.2 User defined quantities There are certain input values that have to be supplied by the user. Here, we will describe that how one can define these quantities in the main code Main_Linear.m. One determines the type of the DG method (SIPG, NIPG or IIPG) and the order of the polynomial basis to be used by the variables method and degree, respectively. According to these choices, the values of the penalty parameter and the parameter κ { 1,1,0} defining DG method in (3) are set by calling the sub-function set_parameter. % m ethod : NIPG=1, SIPG =2, IIPG =3 method =2; % Degree o f p o l y n o m i a l s d e g r e e =1; % S e t up t h e problem [ p e n a l t y, kappa ]= s e t _ p a r a m e t e r ( method, d e g r e e ) ; The next step is to supply the problem parameters. The diffusion constant ε, the advection vector b and the linear reaction term α are defined via the sub-functions fdiff, fadv and freact, respectively. 6

%% D e f i n e d i f f u s i o n, a d v e c t i o n, and r e a c t i o n as s u b f u n c t i o n s % D i f f u s i o n f u n c t i o n d i f f = f d i f f ( x, y ) d i f f = ( 1 0 ^ ( 6 ) ). ones ( s i z e ( x ) ) ; end % A d v e c t i o n f u n c t i o n [ adv1, adv2 ] = fadv ( x, y ) adv1 = ( 1 / s q r t ( 5 ) ) ones ( s i z e ( x ) ) ; adv2 = ( 2 / s q r t ( 5 ) ) ones ( s i z e ( x ) ) ; end % L i n e a r r e a c t i o n f u n c t i o n r e a c t = f r e a c t ( x, y ) r e a c t = ones ( s i z e ( x ) ) ; end The exact solution (if exists) and the source function f are defined via the subfunctions fexact and fsource, respectively. Finally, the boundary conditions are supplied via the sub-functions DBCexact and NBCexact. % F i r s t d e r i v a t i v e wrt x yex_x = ( 1. / ( s q r t (5 d i f f ) ) ). ( sech ( ( 2 x y 0. 2 5 ). /... ( s q r t (5 d i f f ) ) ) ). ^ 2 ; % F i r s t d e r i v a t i v e wrt y yex_y = ( ( 0. 5 ). / ( s q r t (5 d i f f ) ) ). ( sech ( ( 2 x y 0. 2 5 ). /... ( s q r t (5 d i f f ) ) ) ). ^ 2 ; % Second d e r i v a t i v e wrt x yex_xx = ( ( 0. 8 ). / d i f f ). tanh ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ).... ( sech ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ) ). ^ 2 ; % Second d e r i v a t i v e wrt y yex_yy = ( ( 0. 2 ). / d i f f ). tanh ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ).... ( sech ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ) ). ^ 2 ; % Force f u n c t i o n s o u r c e= d i f f. ( yex_xx+yex_yy ) + ( adv1. yex_x +adv2. yex_y ) +... 2.3 Forming and solving linear systems To form the linear systems, firstly, let us rewrite the discrete DG scheme (3) as a h (u h,v h ) := D h (u h,v h )+C h (u h,v h )+R h (u h,v h )=l h (v h ) v h V h, (5) 7

where the forms D h (u h,v h ), C h (u h,v h ) and R h (u h,v h ) corresponding to the diffusion, convection and linear reaction parts of the problem, respectively σε D h (u h,v h )= ε u h v h dx+ [u h ] [v h ]ds K e Γ 0 Γ D h e e {ε u h } [v h ]ds+κ {ε v h } [u h ]ds e Γ 0 Γ D e e Γ 0 Γ D e C h (u h,v h )= b u h v h dx K + b n(u out h u in h )v hds b nu in h v hds K \ Ω K Γ R h (u h,v h )= αu h v h dx l h (v h )= K ( ) σε f v h dx+ g D v h ε v h n ds e Γ D e h e b ng D v h ds+ g N v h ds, K Γ e Γ N e K For a set of basis functions {φ i } N i=1 spanning the space V h, the discrete solution u h V h is of the form u h = N j=1 υ j φ j (7) where υ =(υ 1,υ 2,...,υ N ) T is the unknown coefficient vector. After substituting (7) into (5) and taking v h = φ i, we get the linear system of equations N j=1 υ j D h (φ j,φ i )+ N j=1 υ j C h (φ j,φ i )+ N j=1 υ j R h (φ j,φ i )=l h (φ i ), i=1,2,...,n (8) Thus, for i=1,2,...,n, to form the linear system in matrix-vector form, we need the matrices D,C,R R N N related to the terms including the forms D h, C h and R h in (8), respectively, satisfying Dυ+Cυ+ Rυ = F with the unknown coefficient vector υ and the vector F R N related to the linear rhs functionals l h (φ i ) such that F i = l h (φ i ), i=1,2,...,n. In the code Main_Linear.m, all the matrices D,C, R and the vector F are obtained by calling the function global_system, in which the sub-functions introduced in the previous subsection are used. We set the stiffness matrix, Stiff, as the sum of the obtained matrices and we solve the linear system for the unknown coefficient vector coef:= υ. 8

%Compute g l o b a l m a t r i c e s and r h s g l o b a l v e c t o r [D, C, R, F]= g l o b a l _ s y s t e m ( mesh, @fdiff, @fadv, @freact,... @fsource, @DBCexact, @NBCexact, p e n a l t y, kappa, d e g r e e ) ; S t i f f =D+C+R ; % S t i f f n e s s m a t r i x c o e f = S t i f f \ F ; % S o l v e t h e l i n e a r s y s t e m 2.4 Plotting the solution After solving the problem for the unknown coefficient vector, the solutions are plotted via the the function dg_error, and also the L 2 -error between the exact and numerical solution is computed. % Compute L2 e r r o r and p l o t t h e s o l u t i o n [ l 2 e r r, hmax ]= d g _ e r r o r ( coef, mesh, @fexact, @fdiff, d e g r e e ) ; 3 Models with non-linear reaction mechanisms Most of the problems include non-linear source or sink terms. The general model problem in this case is αu ε u+b u+r(u)= f in Ω, (9a) u=g D on Γ D, (9b) ε u n=g N on Γ N. (9c) which arises from the time discretization of the time-dependent non-linear diffusionconvection-reaction equations. Here, the coefficient of the linear reaction term, α > 0, stand for the temporal discretization, corresponding to 1/ t, where t is the discrete time-step. The model (9) differs from the model (1) by the additional nonlinear term r(u). To have a unique solution, in addition to the assumptions given in Section 1, we assume that the non-linear reaction term, r(u), is bounded, locally Lipschitz continuous and monotone, i.e. satisfies for any s,s 1,s 2 0, s,s 1,s 2 R the following conditions [7] r i (s) C, C > 0 r i (s 1 ) r i (s 2 ) L 2 (Ω) L s 1 s 2 L 2 (Ω), L>0 r i C 1 (R + 0 ), r i(0)=0, r i(s) 0. The non-linear reaction term r(u) occur in chemical engineering usually in the form of products and rational functions of concentrations, or exponential functions of the temperature, expressed by the Arrhenius law. Such models describe chemical processes and they are strongly coupled as an inaccuracy in one unknown affects all 9

the others. To solve the non-linear problems, we use the m-file Main_Nonlinear which is similar to the m-file Main_Linear, but now we use Newton iteration to solve for i=1,2,...,n the non-linear system of equations N j=1 υ j D h (φ j,φ i )+ N j=1 υ j C h (φ j,φ i )+ N j=1 υ j R h (φ j,φ i )+ r(u h )φ i dx=l h (φ i ) (10) Ω Similar to the linear case, the above system leads to the matrix-vector form Dυ+Cυ+ Rυ+ H(υ)=F where, in addition to the matrices D,C,R R N N and the vector F R N, we also need the vector H R N related to the non-linear term such that H i (υ)= r Ω ( N j=1υ j φ j ) φ i dx, i=1,2,...,n. We solve the nonlinear system by Newton method. For an initial guess υ 0 = (υ 0 1,υ0 2,...,υ0 N )T, we solve the system J k w k = Res k (11) υ k+1 = w k + υ k, k=0,1,2,... until a user defined tolerance is satisfied. In (11), Res k and J k denote the vector of system residual and its Jacobian matrix at the current iterate υ k, respectively, given by Res k = (D+C+R)υ k + H(υ k ) F J k = D+C+R+HJ(υ k ) where HJ(υ k ) is the Jacobian matrix of the non-linear vector H at υ k HJ(υ k )= H 1 (υ k ) υ k 1. H N (υ k ) υ k 1 H 1 (υ k ) υ k 2 H 1 (υ k ) υ k N.... H N (υ k ) υ k 2 H N (υ k ) υ k N In the code Main_Nonlinear, obtaining the matrices D,C,R and the rhs vector F is similar to the linear case, but now, additionally, we introduce an initial guess for Newton iteration, and we solve the nonlinear system by Newton method. 10

% I n i t i a l g u e s s f o r Newton i t e r a t i o n c o e f = z e r o s ( s i z e ( S t i f f, 1 ), 1 ) ; % Newton i t e r a t i o n n o i =0; f o r i i =1:50 n o i = n o i +1; % Compute t h e n o n l i n e a r v e c t o r and i t s Jacobian m a t r i x a t % t h e c u r r e n t i t e r a t e [H, HJ ]= n o n l i n e a r _ g l o b a l ( coef, mesh, @ f r e a c t _ n o n l i n e a r, d e g r e e ) ; % Form t h e r e s i d u a l o f t h e s y s t e m Res = S t i f f c o e f + H F ; % Form t h e Jacobian m a t r i x o f t h e s y s t e m % (w. r. t. unknown c o e f f i c i e n t s c o e f ) J = S t i f f + HJ ; end % S o l v e t h e l i n e a r s y s t e m f o r t h e c o r r e c t i o n "w" w = J \ ( Res ) ; % Update t h e i t e r a t e c o e f = c o e f + w; % Check t h e accuracy i f norm ( J w+res ) < 1e 20 break ; end To obtain the non-linear vector H and its Jacobian HJ at the current iterate, we call the function nonlinear_global, and it uses the function handle freact_nonlinear which is a sub-function in the file Main_Nonlinear. The sub-function freact_nonlinear has to be supplied by user as the non-linear term r(u) and its derivative r (u). % N o n l i n e a r r e a c t i o n f u n c t i o n [ r, dr ] = f r e a c t _ n o n l i n e a r ( u ) % Value o f t h e n o n l i n e a r r e a c t i o n term a t t h e c u r r e n t i t e r a t e r = u. ^ 2 ; % Value o f t h e d e r i v a t i v e o f t h e n o n l i n e a r r e a c t i o n % term a t t h e c u r r e n t i t e r a t e dr = 2 u ; end 11

4 MATLAB routines for main code Here, we give the main m-file Main_Nonlinear.m of the code. The full code is available upon request to the e-mail address uzunca@gmail.com. 1 % T h i s r o u t i n e s o l v e s t h e d i f f u s i o n c o n v e c t i o n r e a c t i o n e q u a t i o n 2 % 3 % \ alpha u \ e p s i l o n \ D e l t a u + b \ d o t \ nabla u + r ( u ) = f 4 % 5 % u s i n g DG FEM. 6 7 f u n c t i o n Main_Nonlinear ( ) 8 9 c l e a r a l l 10 c l c 11 12 % Generate t h e mesh 13 14 % Nodes 15 Nodes = [ 0, 0 ; 0. 5, 0 ; 1, 0 ; 0, 0. 5 ; 0. 5, 0. 5 ; 1, 0. 5 ; 0, 1 ; 0. 5, 1 ; 1, 1 ] ; 16 % E lements 17 E lements = [ 4, 1, 5 ; 1, 2, 5 ; 5, 2, 6 ; 2, 3, 6 ; 7, 4, 8 ; 4, 5, 8 ; 8, 5, 9 ; 5, 6, 9 ] ; 18 % D i r i c h l e t bdry edges 19 D i r i c h l e t = [ 1, 2 ; 2, 3 ; 1, 4 ; 3, 6 ; 4, 7 ; 6, 9 ; 7, 8 ; 8, 9 ] ; 20 % Neumann bdry edges 21 Neumann = [ ] ; 22 % I n i t i a l mesh s t r u c t 23 mesh = getmesh ( Nodes, Elements, D i r i c h l e t, Neumann ) ; 24 25 f o r j j =1:2 26 mesh= u n i f o r m r e f i n e ( mesh ) ; %R e f i n e mesh 27 end 28 29 % m ethod : NIPG=1, SIPG =2, IIPG=3 30 method =2; 31 32 % Degree o f p o l y n o m i a l s 33 d e g r e e =1; 34 35 % S e t up t h e problem 36 [ p e n a l t y, kappa ]= s e t _ p a r a m e t e r ( method, d e g r e e ) ; 37 38 %Compute g l o b a l m a t r i c e s and r h s g l o b a l v e c t o r 39 [D, C, R, F ]= g l o b a l _ s y s t e m ( mesh, @fdiff, @fadv, @freact,... 12

40 @fsource, @DBCexact, @NBCexact, p e n a l t y, kappa, d e g r e e ) ; 41 42 S t i f f =D+C+R; % S t i f f n e s s m a t r i x 43 44 % I n i t i a l g u e s s f o r Newton i t e r a t i o n 45 c o e f = z e r o s ( s i z e ( S t i f f, 1 ), 1 ) ; 46 47 % Newton i t e r a t i o n 48 n o i =0; 49 f o r i i =1:50 50 n o i = n o i +1; 51 52 % Compute t h e n o n l i n e a r v e c t o r and i t s Jacobian m a t r i x a t 53 % t h e c u r r e n t i t e r a t e 54 [H, HJ]= n o n l i n e a r _ g l o b a l ( coef, mesh, @ f r e a c t _ n o n l i n e a r, d e g r e e ) ; 55 56 % Form t h e r e s i d u a l o f t h e s y s t e m 57 Res = S t i f f c o e f + H F ; 58 59 % Form t h e Jacobian m a t r i x o f t h e s y s t e m 60 % (w. r. t. unknown c o e f f i c i e n t s c o e f ) 61 J = S t i f f + HJ ; 62 63 % S o l v e t h e l i n e a r s y s t e m f o r t h e c o r r e c t i o n "w" 64 w = J \ ( Res ) ; 65 66 % Update t h e i t e r a t e 67 c o e f = c o e f + w; 68 69 % Check t h e accuracy 70 i f norm ( J w+res ) < 1e 20 71 break ; 72 end 73 74 end 75 76 % Compute L2 e r r o r and p l o t t h e s o l u t i o n 77 [ l 2 e r r, hmax ]= d g _ e r r o r ( coef, mesh, @fexact, @fdiff, d e g r e e ) ; 78 79 % Degree o f freedom 80 dof = s i z e ( mesh. Elements, 1 ) ( d e g r e e + 1 ) ( d e g r e e + 2 ) 0.5; 81 82 f p r i n t f ( DoFs h_max L2 e r r o r # i t \ n ) 83 13

84 f p r i n t f ( %7d %5.3 f %5.3 e %d \ n,... 85 dof, hmax, l 2 e r r, n o i ) ; 86 end % End o f f u n c t i o n Main_Nonlinear 87 88 %% D e f i n e d i f f u s i o n, a d v e c t i o n, and r e a c t i o n as s u b f u n c t i o n s 89 90 % D i f f u s i o n 91 f u n c t i o n d i f f = f d i f f ( x, y ) 92 d i f f = ( 1 0 ^ ( 6 ) ). ones ( s i z e ( x ) ) ; 93 end 94 95 % A d v e c t i o n 96 f u n c t i o n [ adv1, adv2 ] = fadv ( x, y ) 97 adv1 = ( 1 / s q r t ( 5 ) ) ones ( s i z e ( x ) ) ; 98 adv2 = ( 2 / s q r t ( 5 ) ) ones ( s i z e ( x ) ) ; 99 end 100 101 % L i n e a r r e a c t i o n 102 f u n c t i o n r e a c t = f r e a c t ( x, y ) 103 r e a c t = ones ( s i z e ( x ) ) ; 104 end 105 106 % N o n l i n e a r r e a c t i o n 107 f u n c t i o n [ r, dr ] = f r e a c t _ n o n l i n e a r ( u ) 108 % Value o f t h e n o n l i n e a r r e a c t i o n term a t t h e c u r r e n t i t e r a t e 109 r = u. ^ 2 ; 110 111 % Value o f t h e d e r i v a t i v e o f t h e n o n l i n e a r r e a c t i o n 112 % term a t t h e c u r r e n t i t e r a t e 113 dr = 2 u ; 114 end 115 116 %% D e f i n e e x a c t s o l u t i o n and f o r c e as s u b f u n c t i o n s 117 118 % E xact s o l u t i o n 119 f u n c t i o n [ yex, yex_x, yex_y ] = f e x a c t ( f d i f f, x, y ) 120 % E v a l u a t e t h e d i f f u s i o n f u n c t i o n 121 d i f f = f e v a l ( f d i f f, x, y ) ; 122 % E xact v a l u e 123 yex =0.5 (1 tanh ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ) ) ; 124 % F i r s t d e r i v a t i v e wrt x 125 yex_x = ( 1. / ( s q r t (5 d i f f ) ) ). ( sech ( ( 2 x y 0. 2 5 ). /... 126 ( s q r t (5 d i f f ) ) ) ). ^ 2 ; 127 % F i r s t d e r i v a t i v e wrt y 14

128 yex_y = ( ( 0. 5 ). / ( s q r t (5 d i f f ) ) ). ( sech ( ( 2 x y 0. 2 5 ). /... 129 ( s q r t (5 d i f f ) ) ) ). ^ 2 ; 130 end 131 132 % Force f u n c t i o n 133 f u n c t i o n s o u r c e = f s o u r c e ( f d i f f, fadv, f r e a c t, x, y ) 134 % E v a l u a t e t h e d i f f u s i o n f u n c t i o n 135 d i f f = f e v a l ( f d i f f, x, y ) ; 136 % E v a l u a t e t h e a d v e c t i o n f u n c t i o n 137 [ adv1, adv2 ] = f e v a l ( fadv, x, y ) ; 138 % E v a l u a t e t h e l i n e a r r e a c t i o n f u n c t i o n 139 r e a c = f e v a l ( f r e a c t, x, y ) ; 140 141 % E xact v a l u e 142 yex =0.5 (1 tanh ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ) ) ; 143 % F i r s t d e r i v a t i v e wrt x 144 yex_x = ( 1. / ( s q r t (5 d i f f ) ) ). ( sech ( ( 2 x y 0. 2 5 ). /... 145 ( s q r t (5 d i f f ) ) ) ). ^ 2 ; 146 % F i r s t d e r i v a t i v e wrt y 147 yex_y = ( ( 0. 5 ). / ( s q r t (5 d i f f ) ) ). ( sech ( ( 2 x y 0. 2 5 ). /... 148 ( s q r t (5 d i f f ) ) ) ). ^ 2 ; 149 % Second d e r i v a t i v e wrt x 150 yex_xx = ( ( 0. 8 ). / d i f f ). tanh ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ).... 151 ( sech ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ) ). ^ 2 ; 152 % Second d e r i v a t i v e wrt y 153 yex_yy = ( ( 0. 2 ). / d i f f ). tanh ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ).... 154 ( sech ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ) ). ^ 2 ; 155 156 % Force f u n c t i o n 157 s o u r c e= d i f f. ( yex_xx+yex_yy ) + ( adv1. yex_x +adv2. yex_y ) +... 158 r e a c. yex+yex. ^ 2 ; 159 end 160 161 162 %% Boundary C o n d i t i o n s 163 164 % D r i c h l e t Boundary C o n d i t i o n 165 f u n c t i o n DBC=DBCexact ( f d i f f, x, y ) 166 % E v a l u a t e t h e d i f f u s i o n f u n c t i o n 167 d i f f = f e v a l ( f d i f f, x, y ) ; 168 % D r i c h l e t Boundary C o n d i t i o n 169 DBC=0.5 (1 tanh ( ( 2 x y 0. 2 5 ). / ( s q r t (5 d i f f ) ) ) ) ; 170 end 171 15

172 % Neumann Boundary C o n d i t i o n 173 f u n c t i o n NC = NBCexact ( mesh, f d i f f, x, y ) 174 % Neumann Boundary C o n d i t i o n 175 NC= z e r o s ( s i z e ( x ) ) ; 176 end 177 178 179 180 %% Set up p a r a m e t e r s f u n c t i o n f o r DG FEM 181 182 f u n c t i o n [ p e n a l t y, kappa ]= s e t _ p a r a m e t e r ( method, d e g r e e ) 183 184 g l o b a l E q u a t i o n ; 185 186 E q u a t i o n. b0 =1; % S u p e r p e n a l i z a t i o n parameter ( In s t a n d a r t b0 =1) 187 E q u a t i o n. base =2; % Choose t h e b a s i s ( 1: monomials, 2: Dubiner B a s i s ) 188 189 s w i t c h method 190 c a s e 1 191 %NIPG 192 E q u a t i o n. method =1; 193 kappa =1; % t y p e o f p r i m a l method 194 p e n a l t y =1; % p e n a l t y parameter 195 c a s e 2 196 %SIPG 197 E q u a t i o n. method =2; 198 kappa = 1; % t y p e o f p r i m a l method 199 p e n a l t y =3 d e g r e e ( d e g r e e + 1 ) ; % p e n a l t y parameter 200 c a s e 3 201 %IIPG 202 E q u a t i o n. method =3; 203 kappa =0; % t y p e o f p r i m a l method 204 p e n a l t y =3 d e g r e e ( d e g r e e + 1 ) ; % p e n a l t y parameter 205 206 end 207 208 end References [1] D. Arnold, F. Brezzi, B. Cockborn, and L. Marini: Unified analysis of discontinuous Galerkin methods for elliptic problems. SIAM J. Numer. Anal., 39, 1749-1779, (2002). 16

[2] B. Ayuso, and L.D. Marini: Discontinuous Galerkin methods for advectiondiffusion-reaction problems. SIAM J. Numer. Anal., 47, 1391-1420, (2009). [3] L. Chen: ifem: an innovative finite element method package in MATLAB, an innovative finite element methods package in MATLAB. Tech. rep.:department of Mathematics, University of California, Irvine, (2008). [4] P. Houston, C. Schwab, and E. Süli: Discontinuous hp-finite element methods for advection-diffusion-reaction problems. SIAM J. Numer. Anal., 39, 2133-2163, (2002). [5] P. d. Leva: MULTIPROD TOOLBOX, Multiple matrix multiplications, with array expansion enabled, University of Rome Foro Italico, Rome. [6] B. Rivière: Discontinuous Galerkin methods for solving elliptic and parabolic equations. Theory and implementation, SIAM, (2008). [7] M. Uzunca, B. Karasözen, and M. Manguoǧlu: Adaptive discontinuous Galerkin methods for non-linear diffusion-convection-reaction equations. Computers and Chemical Engineering, 68, 24-37, (2014). [8] R. Verfürth: A posteriori Error Estimates Techniques for Finite Element Methods. Oxford University Press, (2013). 17