


RK2 One step of Explicit Runge-Kutta second order scheme.
[u1]=rk2(tt,deltat,f,u0,dx,A,w,visc,uex,uex1,bc);
Input : tt =time
deltat = time step
f = function for the r.h.s of the parabolic equation
u0 = initial data
dx = LGL first derivative matrix
A = matrix related to differential operator
w = LGL weights array
visc = viscosity coefficient (constant > 0)
uex = exact solution (uex=@(x)[uex(x)], with .*, .^, ./)
uex1 = exact solution (uex=@(x)[uex(x)], with .*, .^, ./)
bc = choice of boundary conditions: 1 == Dirichlet
2 == Neumann
Output: u1 = array solution, computed with one step of RK2

0001 function [u1]=rk2(t,deltat,f,u0,dx,A,w,visc,uex,uex1,bc); 0002 % RK2 One step of Explicit Runge-Kutta second order scheme. 0003 % 0004 % [u1]=rk2(tt,deltat,f,u0,dx,A,w,visc,uex,uex1,bc); 0005 % 0006 % Input : tt =time 0007 % deltat = time step 0008 % f = function for the r.h.s of the parabolic equation 0009 % u0 = initial data 0010 % dx = LGL first derivative matrix 0011 % A = matrix related to differential operator 0012 % w = LGL weights array 0013 % visc = viscosity coefficient (constant > 0) 0014 % uex = exact solution (uex=@(x)[uex(x)], with .*, .^, ./) 0015 % uex1 = exact solution (uex=@(x)[uex(x)], with .*, .^, ./) 0016 % bc = choice of boundary conditions: 1 == Dirichlet 0017 % 2 == Neumann 0018 % 0019 % Output: u1 = array solution, computed with one step of RK2 0020 % 0021 0022 % Written by Paola Gervasio 0023 % $Date: 2007/04/01$ 0024 % 0025 0026 K1=feval(f,t,deltat,u0,A,dx,w,visc,uex,uex1); 0027 t1=t+deltat; u1=u0+deltat*K1; 0028 if bc ==1 0029 u1(1)=uex(-1,t1); u1(np)=uex(1,t1); 0030 end 0031 0032 K2=feval(f,t1,deltat,u0,A,dx,w,visc,uex,uex1); 0033 u1=u0+deltat/2*(K1+K2); 0034 if bc ==1 0035 u1(1)=uex(-1,t1); u1(np)=uex(1,t1); 0036 end 0037 0038 return 0039