Elsevier Science Home
Computer Physics Communications Program Library
Full text online from Science Direct
Programs in Physics & Physical Chemistry
CPC Home

[Licence| Download | New Version Template] adiu_v1_0.tar.gz(14 Kbytes)
Manuscript Title: An oscillation suppressing semi-Lagrangian solver for advection equation.
Authors: F. Xiao, T. Yabe, T. Ebisuzaki
Program title: RCIP
Catalogue identifier: ADIU_v1_0
Distribution format: tar.gz
Journal reference: Comput. Phys. Commun. 116(1999)121
Programming language: Fortran.
Computer: Dec Alpha Server.
Operating system: UNIX, MS-DOS.
RAM: 203K words
Word size: 64
Keywords: Fluid dynamics, Computational algorithm, Advection equation, Semi-lagrangian method, Rational function, Oscillation preventing.
Classification: 12.

Nature of problem:
As a kind of first order hyperbolic partial differential equations, advection equation describes a wide spectrum of phenomena from physical problems such as material transport, heat transfer and wave propagation. The code has been developed to solve the advection equation in 1, 2 and 3 dimensions with a Eulerian computational grid.

Solution method:
A rational interpolation function is used to reconstruct the profile and the dependent variable is updated based on a Semi-Lagrangian formulation.

Restrictions:
The current code (subroutines) is designed for the first hyperbolic equation cast in an advective (convective) form. It is not yet a general scheme for solving also hyperbolic conservation law.

Unusual features:
The advection equation solver presented here is a new kind of Semi-Lagrangian method. It predicts explicitly the first order derivative(s) which is needed in constructing the interpolation function. This makes the scheme highly compact. Using rational interpolation function makes the scheme oscillation suppressing and the slope limiters that are used in most high resolution schemes appear not necessary here.

Running time:
This depends on the size of the problem to be solved. A one step execution of the 1D subroutine with a mesh of 10**6 on an Alpha server 4100/400MHZ is 1 second of wall-clock time. The same amount of time is consumed by the one step execution of the 2D subroutine with a mesh of 500 x 500 or the 3D subroutine with a mesh of 50 x 50 x 50.