Project

Finite Volume Method - Flux Limiters and Interpolation Schemes

(1) Need for Interpolation Schemes:

In the FVM method, we need to evaluate the surface and volume integrals for the finite volume formulation. But sometimes the integrals have unknown variables whose value we need to determine at points other than the computational nodes. For such calculations, Interpolation schemes are used to compute the value at these locations.

Consider the example of 1D Linear Heat Conduction Equation in a steady-state simulation:

If the value of alpha depends on temperature, we need to separately calculate alpha whose value will depend on the temperature of that particular face. To calculate the temperature at that face, we use interpolation scheme which takes the temperatures from adjoining cells. So we can say that Interpolation schemes are used to transform cell-center quantities to face centers.

Some types of Interpolation schemes are:

  • Upwind Interpolation
  • Linear Interpolation
  • Quadratic Upwind Interpolation
  • Total Variable Diminishing (TVD) Interpolation

(2) Need for Flux Limiters:

Flux limiters are used mainly to limit the values of flux quantities which can tend to oscillate and give unrealistic values due to shocks, discontinuities and sharp changes in the solution domain. The use of Flux limiters makes the solution Total Variable Diminishing.

The main idea behind the construction of flux limiter schemes is to limit the spatial derivatives to realistic values. They are used in high-resolution schemes for solving problems described by PDEs and only come into operation when sharp wavefronts are present. For smoothly changing waves, the flux limiters do not operate and the spatial derivatives can be represented by higher order approximations without introducing spurious oscillations.

Commonly used flux limiters are:

1. Minmod

2. Superbee

3. CHARM

4. Van Leer

This Matlab script solves the one-dimensional convection equation using a finite volume algorithm. The discretization forward Euler in time

 % This Matlab script solves the one-dimensional convection
 % equation using a finite volume algorithm. The
 % discretization forward Euler in time.

 clear all;
 close all;

 % Number of points
 Nx = 50;
 x = linspace(0,1,Nx+1);
 dx = 1/Nx;

 % Calculate midpoint v
 xmid = 0.5*(x(1:Nx) + x(2:Nx+1));

 % Set velocity
 u = 1;
   
 % Set final time
 tfinal = 1;
  
   % Set timestep
   CFL = 0.5;
   dt = CFL*dx/abs(u);

   % Set initial condition to U0 = exp(-xˆ2)
   % Note: technically, we should average the initial
   % distribution in each cell but I choose to just set
   % the value of U in each control volume to the midpoint
   % value of U0.
   U = 0.75*exp(-((xmid-0.5)/0.1).^2)';
   t = 0;

  % Loop until t > tfinal
 while (t < tfinal)


   Ubc = [U(Nx); U; U(1)]; % This enforces the periodic bc

   % Calculate the flux at each interface
   F = 0.5* u *( Ubc(2:Nx+2) + Ubc(1:Nx+1)) ...
   - 0.5*abs(u)*( Ubc(2:Nx+2) - Ubc(1:Nx+1));

   % Calculate residual in each cell 
   R = F(2:Nx+1) - F(1:Nx);

   % Forward Euler step
   U = U - (dt/dx)*R;

   % Increment time
   t = t + dt;

   % Plot current (numerical) solution
   stairs(x,[U; U(Nx)],'b-');
   axis([0, 1, -0.5, 1.5]);
   grid on;
   drawnow;
   
 end

 % overlay exact solution
 U = 0.75*exp(-((xmid-0.5)/0.1).^2)';
 hold on;
 stairs(x,[U; U(Nx)],'r-');

RESULT OF THE MATLAB SCRIPT FILE:

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.