# Contributor - PDE Solver

## Description

While there are many specialized PDE solvers on the market, there are users who wish to use Scilab in order to solve PDE's specific to engineering domains like: heat flow and transfer, fluid mechanics, stress and strain analysis, electromagnetics, chemical reactions, and diffusion. These systems include 1D, 2D, and 3D problems. The PDE solver should enable users to do the following:

- Create a geometry with a geometry modeler
- Create (1D, 2D, 3D) meshes automatically (Establish properties for adapting or optimizing meshes)
- Set boundary conditions
- Solve PDEs for each of the major engineering domains listed above.

For example, in fluid mechanics Arbitrary Lagrange/Eulerian (ALE) formulation can be used in several ways:

- Constraining the mesh to the fluid velocity, utilizing a fully Lagrangian model.
- Relaxing the mesh within moving boundaries to maintain mesh integrity.
- Or removing the mesh moving equations performs a Eulerian computation

Each engineering area will need several PDE formulations which are commonly used in the specific field.

A premium is placed on the speed of computation of the PDEs.

## Ideas

This project could be divided into two pieces, with the 1-3 above being one portion of the project (mesh generation and boundary conditions) and 4 above (development of optimized PDE solvers). The ideal solution enables all 4 capabilities to be accessible to the user at the user's option.

## Existing tools

### Scilab

A complete review for finite elements is available at Finite Elements in Scilab and for finite volumes at Finite Volumes in Scilab.

There is a 2D mesh algorithm in the Metanet toolbox for Scilab : this is the mesh2d function:

* mesh2d : triangulation of n points in the plane

A plot of a 2D mesh created by this function is given in https://scilab.gitlab.io/legacy_wiki/New%20Scientific%20Features%20in%202008#Metanet_updated_in_Scilab_v5.0

There is the "scipde" toolbox on the Forge:

http://forge.scilab.org/index.php/p/scipde/

This toolbox provides two functions:

- scipde_heat1Dsolve — Solve a 1D diffusion equation
- scipde_heat1Dsteady — Stationnary state of a 1D diffusion equation

### Matlab

For parabolic-elliptic PDEs in 1D, Matlab provides the pdepe function:

http://www.mathworks.fr/fr/help/matlab/ref/pdepe.html

To evaluate the solution of pdepe at one point x, Matlab provides the pdeval function:

http://www.mathworks.fr/fr/help/matlab/ref/pdeval.html

Matlab provides a PDE toolbox :

http://www.mathworks.com/products/pde/

See also the paper by Shampine on this topic: "Solving Hyperbolic PDEs in Matlab", L.F. Shampine

### Octave

The following tool allows to solve 1D PDEs in Octave :

http://waxworksmath.com/Software/pdeone_rkc.html

Octave-bim is a package for solving Diffusion Advection Reaction (DAR) Partial Differential Equaltions based on the Finite Volume Scharfetter-Gummel (FVSG) method a.k.a Box Integration Method (BIM) for Octave. Octave-bim is developped by Culpo Massimiliano. The latest version is at http://downloads.sourceforge.net/octave/bim-0.1.1.tar.gz?download.

The sources are available at:

for example:

## CLAWPACK

CLAWPACK is a software package designed to compute numerical solutions to hyperbolic partial differential equations using a wave propagation approach.

In principle, it should be feasible to make the link between Scilab and Python.

http://www.amath.washington.edu/~claw/

More on this topic is available at Finite Volumes in Scilab.

## Others

Dune project: http://www.dune-project.org/