Advection-Diffusion-Reaction Equation Solver

This solves a range of problems using the spectral/hp discretisation and is a good starting point for using the library. A number of example session files are included in the solvers/ADRSolver/Examples directory.

To run the solver provide an XML session file defining the problem to solve:

./ADRSolver <session>.xml 

A range of solvers are already implemented in the framework:

Helmholtz
Laplace
MonodomainAlievPanfilov Phenomological model of canine cardiac electrophysiology.
MonodomainFitzHughNagumo Phenomological model of nerve cell electrophysiology.
Poisson
SteadyAdvectionDiffusion
SteadyAdvectionDiffusionReaction
SteadyDiffusion Alias for Poisson
SteadyDiffusionReaction Alias for Helmholtz
UnsteadyAdvection Unsteady Advection equation.
UnsteadyAdvectionDiffusion
UnsteadyDiffusion
UnsteadyInviscidBurger

Example: Advection Equation

As an example, consider the advection equation

\[ \frac{\partial u}{\partial t} = \frac{\partial u}{\partial x} \]

on a 2D domain with mixed time-dependent boundary conditions. A corresponding session file is given in solvers/ADRSolver/Examples/Advection.xml. The file consists of three sections:

A number of components of the <CONDITIONS> section are of importance here. First, we set the <PARAMETERS> for our time integration by setting the FinTime, NumSteps and TimeStep values.

    <P> FinTime        = 0.75             </P>
    <P> NumSteps       = 500              </P>
    <P> TimeStep       = FinTime/NumSteps </P>

The frequency of checkpoint files and status updates can be controlled through a further two parameters:

    <P> IO_CheckSteps  = NumSteps         </P>
    <P> IO_InfoSteps   = 1000             </P>

The final two parameters indicate the advection velocity. Although these are not directly used by the solver, they are embedded in the boundary conditions defined later.

    <P> advx           = 1                </P>
    <P> advy           = 1                </P>

The <SOLVERINFO> section allows us to specify the solver, the type of projection (continuous or discontinuous) and the time integration scheme to use.

 <SOLVERINFO>
    <I PROPERTY="EQTYPE" VALUE="UnsteadyAdvection"/>
    <I PROPERTY="Projection" VALUE="Continuous"/>
    <I PROPERTY="TimeIntegrationMethod"  VALUE="ClassicalRungeKutta4"/>
 </SOLVERINFO>

For the advection equation we must specify the advection velocity for the solver. This is done in the <USERDEFINEDEQNS> subsection:

 <USERDEFINEDEQNS>
    <F LHS="Vx" VALUE="1"  />
    <F LHS="Vy" VALUE="1" />
 </USERDEFINEDEQNS>

Creating new modules

Details on how to implement a new module can be found in ADRSolver Framework.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines