
`VLUGR2: A Vectorizable Adaptive Grid Solver for PDEs in 2D'
by J.G. Blom, R.A. Trompert, and J.G. Verwer.

This code solves systems of PDEs of the type
         F(t,x,y,U,Ut,Ux,Uy,Uxx,Uxy,Uyy)=0
with boundary conditions
         B(t,x,y,U,Ut,Ux,Uy)=0
and initial values
         U(t0,x,y)=U0
on a 2D domain bounded by right-angled polygons.

In space Local Uniform Grid Refinement is applied to resolve local
sharp gradients in the solution. For the time integration the
implicit BDF2 method is used with variable stepsizes.



Description of contents of source code files
--------------------------------------------
(Both single precision and double precision available)

src.f        Main module, contains documentation

ilubsn.f        ILU decomposition and backsolve
                for arbitrary number of PDE components
ilubs1.f        ILU decomposition and backsolve
                for optimal vector performance for PDE with 1 component
ilubs2.f        ILU decomposition and backsolve
                for optimal vector performance for PDE with 2 components
ilubs3.f        ILU decomposition and backsolve
                for optimal vector performance for PDE with 3 components

user.f          Default modules that can be replaced by user's own
                (see description in paper)

blas.f          BLAS modules

exmpl.f         Calling program for the first time interval of the example
                in the paper
exmplr.f        Calling program for the second time interval of the example
                in the paper
probi.f         Calling program for problem I in the paper
probii.f        Calling program for problem II in the paper

prtsol.f        Program to print out solution from file generated by the
                DUMP routine
wrtuni.f        Program that reads the file generated by the DUMP routine
		and writes the (interpolated) solution on a uniform grid
		of a specified grid level and the maximum used grid level
		in each point to file.



plot.m          Matlab plotting routine to plot the data generated by
		WRTUNI.f




How to use the solver:
----------------------
Compile and link the modules in
	exmpl.f
	user.f (only the SUBROUTINE DERIVF)
	src.f
	ilubSn.f
	blas.f (if the BLAS library is not available on the platform)
The module blas.f contains, a.o., the functions I1MACH and R/D1MACH which set
machine-dependent values. These functions need to be adapted to the platform.

The results and integration information can be found in the files
	exmpl_runinfo
	exmpl_output
A file DUMP is created that contains all the necessary information to
restart the integration on the second time interval.


For the second run one should compile and link the modules in
        exmplr.f
	user.f (only (a dummy) FUNCTION INIDOM and SUBROUTINE CHSPCM)
        src.f
        ilubsn.f
        blas.f (if the BLAS library is not available on the platform)

The results for this run is in the file
        exmplr_output


To get an optimal vector performance for a small number of PDE components
one should use the specific ilubs#.f code, in this case: ilubs2.f
