19.06.2015 Views

PDE Software has changed from the 1990s to 2005 - FEniCS Project

PDE Software has changed from the 1990s to 2005 - FEniCS Project

PDE Software has changed from the 1990s to 2005 - FEniCS Project

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>PDE</strong> <strong>Software</strong> <strong>has</strong> <strong>changed</strong> <strong>from</strong> <strong>the</strong> <strong>1990s</strong> <strong>to</strong> <strong>2005</strong><br />

Fewer scientists program<br />

If <strong>the</strong>y program, <strong>the</strong>y often prefer Matlab<br />

The problems get more complex:<br />

multi–physics/domain/scale/institutional/code<br />

More high-quality/mature software libraries exist<br />

– no need <strong>to</strong> reinvent <strong>the</strong> wheel<br />

Legacy codes are here <strong>to</strong> stay – could we integrate <strong>the</strong>m in<br />

new systems as black boxes?<br />

Scientists want <strong>the</strong> numerics in problem solving environments


<strong>PDE</strong> <strong>Software</strong> <strong>has</strong> <strong>changed</strong> <strong>from</strong> <strong>the</strong> <strong>1990s</strong> <strong>to</strong> <strong>2005</strong><br />

Fewer scientists program<br />

If <strong>the</strong>y program, <strong>the</strong>y often prefer Matlab<br />

The problems get more complex:<br />

multi–physics/domain/scale/institutional/code<br />

More high-quality/mature software libraries exist<br />

– no need <strong>to</strong> reinvent <strong>the</strong> wheel<br />

Legacy codes are here <strong>to</strong> stay – could we integrate <strong>the</strong>m in<br />

new systems as black boxes?<br />

Scientists want <strong>the</strong> numerics in problem solving environments


<strong>PDE</strong> <strong>Software</strong> <strong>has</strong> <strong>changed</strong> <strong>from</strong> <strong>the</strong> <strong>1990s</strong> <strong>to</strong> <strong>2005</strong><br />

Fewer scientists program<br />

If <strong>the</strong>y program, <strong>the</strong>y often prefer Matlab<br />

The problems get more complex:<br />

multi–physics/domain/scale/institutional/code<br />

More high-quality/mature software libraries exist<br />

– no need <strong>to</strong> reinvent <strong>the</strong> wheel<br />

Legacy codes are here <strong>to</strong> stay – could we integrate <strong>the</strong>m in<br />

new systems as black boxes?<br />

Scientists want <strong>the</strong> numerics in problem solving environments


<strong>PDE</strong> <strong>Software</strong> <strong>has</strong> <strong>changed</strong> <strong>from</strong> <strong>the</strong> <strong>1990s</strong> <strong>to</strong> <strong>2005</strong><br />

Fewer scientists program<br />

If <strong>the</strong>y program, <strong>the</strong>y often prefer Matlab<br />

The problems get more complex:<br />

multi–physics/domain/scale/institutional/code<br />

More high-quality/mature software libraries exist<br />

– no need <strong>to</strong> reinvent <strong>the</strong> wheel<br />

Legacy codes are here <strong>to</strong> stay – could we integrate <strong>the</strong>m in<br />

new systems as black boxes?<br />

Scientists want <strong>the</strong> numerics in problem solving environments


<strong>PDE</strong> <strong>Software</strong> <strong>has</strong> <strong>changed</strong> <strong>from</strong> <strong>the</strong> <strong>1990s</strong> <strong>to</strong> <strong>2005</strong><br />

Fewer scientists program<br />

If <strong>the</strong>y program, <strong>the</strong>y often prefer Matlab<br />

The problems get more complex:<br />

multi–physics/domain/scale/institutional/code<br />

More high-quality/mature software libraries exist<br />

– no need <strong>to</strong> reinvent <strong>the</strong> wheel<br />

Legacy codes are here <strong>to</strong> stay – could we integrate <strong>the</strong>m in<br />

new systems as black boxes?<br />

Scientists want <strong>the</strong> numerics in problem solving environments


<strong>PDE</strong> <strong>Software</strong> <strong>has</strong> <strong>changed</strong> <strong>from</strong> <strong>the</strong> <strong>1990s</strong> <strong>to</strong> <strong>2005</strong><br />

Fewer scientists program<br />

If <strong>the</strong>y program, <strong>the</strong>y often prefer Matlab<br />

The problems get more complex:<br />

multi–physics/domain/scale/institutional/code<br />

More high-quality/mature software libraries exist<br />

– no need <strong>to</strong> reinvent <strong>the</strong> wheel<br />

Legacy codes are here <strong>to</strong> stay – could we integrate <strong>the</strong>m in<br />

new systems as black boxes?<br />

Scientists want <strong>the</strong> numerics in problem solving environments


Current views on <strong>PDE</strong> <strong>Software</strong> at Simula<br />

<strong>Software</strong> <strong>to</strong>ols must be programmable at all levels<br />

Users can program with a Matlab-like syntax (Python)<br />

Problem solving environment = set of Python modules<br />

”Standard operations” are performed by ”standard libraries”:<br />

LAPACK, PETSc, Trilinos, ML, Hypre, Vtk, ...<br />

Solve <strong>PDE</strong> systems by connecting individual <strong>PDE</strong> solvers<br />

Potential users have 10 min attention span<br />

– requires strong focus on build/install and documentation


Current views on <strong>PDE</strong> <strong>Software</strong> at Simula<br />

<strong>Software</strong> <strong>to</strong>ols must be programmable at all levels<br />

Users can program with a Matlab-like syntax (Python)<br />

Problem solving environment = set of Python modules<br />

”Standard operations” are performed by ”standard libraries”:<br />

LAPACK, PETSc, Trilinos, ML, Hypre, Vtk, ...<br />

Solve <strong>PDE</strong> systems by connecting individual <strong>PDE</strong> solvers<br />

Potential users have 10 min attention span<br />

– requires strong focus on build/install and documentation


Current views on <strong>PDE</strong> <strong>Software</strong> at Simula<br />

<strong>Software</strong> <strong>to</strong>ols must be programmable at all levels<br />

Users can program with a Matlab-like syntax (Python)<br />

Problem solving environment = set of Python modules<br />

”Standard operations” are performed by ”standard libraries”:<br />

LAPACK, PETSc, Trilinos, ML, Hypre, Vtk, ...<br />

Solve <strong>PDE</strong> systems by connecting individual <strong>PDE</strong> solvers<br />

Potential users have 10 min attention span<br />

– requires strong focus on build/install and documentation


Current views on <strong>PDE</strong> <strong>Software</strong> at Simula<br />

<strong>Software</strong> <strong>to</strong>ols must be programmable at all levels<br />

Users can program with a Matlab-like syntax (Python)<br />

Problem solving environment = set of Python modules<br />

”Standard operations” are performed by ”standard libraries”:<br />

LAPACK, PETSc, Trilinos, ML, Hypre, Vtk, ...<br />

Solve <strong>PDE</strong> systems by connecting individual <strong>PDE</strong> solvers<br />

Potential users have 10 min attention span<br />

– requires strong focus on build/install and documentation


Current views on <strong>PDE</strong> <strong>Software</strong> at Simula<br />

<strong>Software</strong> <strong>to</strong>ols must be programmable at all levels<br />

Users can program with a Matlab-like syntax (Python)<br />

Problem solving environment = set of Python modules<br />

”Standard operations” are performed by ”standard libraries”:<br />

LAPACK, PETSc, Trilinos, ML, Hypre, Vtk, ...<br />

Solve <strong>PDE</strong> systems by connecting individual <strong>PDE</strong> solvers<br />

Potential users have 10 min attention span<br />

– requires strong focus on build/install and documentation


Current views on <strong>PDE</strong> <strong>Software</strong> at Simula<br />

<strong>Software</strong> <strong>to</strong>ols must be programmable at all levels<br />

Users can program with a Matlab-like syntax (Python)<br />

Problem solving environment = set of Python modules<br />

”Standard operations” are performed by ”standard libraries”:<br />

LAPACK, PETSc, Trilinos, ML, Hypre, Vtk, ...<br />

Solve <strong>PDE</strong> systems by connecting individual <strong>PDE</strong> solvers<br />

Potential users have 10 min attention span<br />

– requires strong focus on build/install and documentation


Example on connecting single-<strong>PDE</strong> components<br />

Build turbulent flow solvers <strong>from</strong> <strong>PDE</strong> components<br />

Basic idea: solve <strong>PDE</strong> systems by opera<strong>to</strong>r splitting<br />

Can also split an implicit formulation by block preconditioning<br />

Navier-S<strong>to</strong>kes solver: S<strong>to</strong>kes solver, advection solver<br />

k-ɛ model: N-S solver, convection-diffusion-reaction solvers<br />

The same idea is applies <strong>to</strong> RANS/URANS, LES, DNS,<br />

elliptic relaxation models (and <strong>PDE</strong> systems in general)<br />

Goal<br />

Composing turbulent flow solvers is like composing matrix-based<br />

algorithms in Matlab


Example on connecting single-<strong>PDE</strong> components<br />

Build turbulent flow solvers <strong>from</strong> <strong>PDE</strong> components<br />

Basic idea: solve <strong>PDE</strong> systems by opera<strong>to</strong>r splitting<br />

Can also split an implicit formulation by block preconditioning<br />

Navier-S<strong>to</strong>kes solver: S<strong>to</strong>kes solver, advection solver<br />

k-ɛ model: N-S solver, convection-diffusion-reaction solvers<br />

The same idea is applies <strong>to</strong> RANS/URANS, LES, DNS,<br />

elliptic relaxation models (and <strong>PDE</strong> systems in general)<br />

Goal<br />

Composing turbulent flow solvers is like composing matrix-based<br />

algorithms in Matlab


Current software initatives at Simula<br />

FAMMS: au<strong>to</strong>matic <strong>PDE</strong> code verification<br />

Swiginac: symbolic math in Python<br />

PYSE: finite difference stencils in Python<br />

Symbolic ”FIAT” (finite element basis functions)<br />

SciPy extensions for sparse matrices<br />

Anyplot: generic Matlab-like interface <strong>to</strong> curve plotting<br />

Plans for Anyviz (for scalar and vec<strong>to</strong>r fields over grids)<br />

How <strong>to</strong> write efficient <strong>PDE</strong> solvers in Python?<br />

(PETSc, ML, <strong>FEniCS</strong>, Diffpack)<br />

Parallelizing legacy codes via Python<br />

Multi-physics/domain/scale and parallelization via domain<br />

decomposition


Current software initatives at Simula<br />

FAMMS: au<strong>to</strong>matic <strong>PDE</strong> code verification<br />

Swiginac: symbolic math in Python<br />

PYSE: finite difference stencils in Python<br />

Symbolic ”FIAT” (finite element basis functions)<br />

SciPy extensions for sparse matrices<br />

Anyplot: generic Matlab-like interface <strong>to</strong> curve plotting<br />

Plans for Anyviz (for scalar and vec<strong>to</strong>r fields over grids)<br />

How <strong>to</strong> write efficient <strong>PDE</strong> solvers in Python?<br />

(PETSc, ML, <strong>FEniCS</strong>, Diffpack)<br />

Parallelizing legacy codes via Python<br />

Multi-physics/domain/scale and parallelization via domain<br />

decomposition


Current software initatives at Simula<br />

FAMMS: au<strong>to</strong>matic <strong>PDE</strong> code verification<br />

Swiginac: symbolic math in Python<br />

PYSE: finite difference stencils in Python<br />

Symbolic ”FIAT” (finite element basis functions)<br />

SciPy extensions for sparse matrices<br />

Anyplot: generic Matlab-like interface <strong>to</strong> curve plotting<br />

Plans for Anyviz (for scalar and vec<strong>to</strong>r fields over grids)<br />

How <strong>to</strong> write efficient <strong>PDE</strong> solvers in Python?<br />

(PETSc, ML, <strong>FEniCS</strong>, Diffpack)<br />

Parallelizing legacy codes via Python<br />

Multi-physics/domain/scale and parallelization via domain<br />

decomposition


Current software initatives at Simula<br />

FAMMS: au<strong>to</strong>matic <strong>PDE</strong> code verification<br />

Swiginac: symbolic math in Python<br />

PYSE: finite difference stencils in Python<br />

Symbolic ”FIAT” (finite element basis functions)<br />

SciPy extensions for sparse matrices<br />

Anyplot: generic Matlab-like interface <strong>to</strong> curve plotting<br />

Plans for Anyviz (for scalar and vec<strong>to</strong>r fields over grids)<br />

How <strong>to</strong> write efficient <strong>PDE</strong> solvers in Python?<br />

(PETSc, ML, <strong>FEniCS</strong>, Diffpack)<br />

Parallelizing legacy codes via Python<br />

Multi-physics/domain/scale and parallelization via domain<br />

decomposition


Current software initatives at Simula<br />

FAMMS: au<strong>to</strong>matic <strong>PDE</strong> code verification<br />

Swiginac: symbolic math in Python<br />

PYSE: finite difference stencils in Python<br />

Symbolic ”FIAT” (finite element basis functions)<br />

SciPy extensions for sparse matrices<br />

Anyplot: generic Matlab-like interface <strong>to</strong> curve plotting<br />

Plans for Anyviz (for scalar and vec<strong>to</strong>r fields over grids)<br />

How <strong>to</strong> write efficient <strong>PDE</strong> solvers in Python?<br />

(PETSc, ML, <strong>FEniCS</strong>, Diffpack)<br />

Parallelizing legacy codes via Python<br />

Multi-physics/domain/scale and parallelization via domain<br />

decomposition


Current software initatives at Simula<br />

FAMMS: au<strong>to</strong>matic <strong>PDE</strong> code verification<br />

Swiginac: symbolic math in Python<br />

PYSE: finite difference stencils in Python<br />

Symbolic ”FIAT” (finite element basis functions)<br />

SciPy extensions for sparse matrices<br />

Anyplot: generic Matlab-like interface <strong>to</strong> curve plotting<br />

Plans for Anyviz (for scalar and vec<strong>to</strong>r fields over grids)<br />

How <strong>to</strong> write efficient <strong>PDE</strong> solvers in Python?<br />

(PETSc, ML, <strong>FEniCS</strong>, Diffpack)<br />

Parallelizing legacy codes via Python<br />

Multi-physics/domain/scale and parallelization via domain<br />

decomposition


Current software initatives at Simula<br />

FAMMS: au<strong>to</strong>matic <strong>PDE</strong> code verification<br />

Swiginac: symbolic math in Python<br />

PYSE: finite difference stencils in Python<br />

Symbolic ”FIAT” (finite element basis functions)<br />

SciPy extensions for sparse matrices<br />

Anyplot: generic Matlab-like interface <strong>to</strong> curve plotting<br />

Plans for Anyviz (for scalar and vec<strong>to</strong>r fields over grids)<br />

How <strong>to</strong> write efficient <strong>PDE</strong> solvers in Python?<br />

(PETSc, ML, <strong>FEniCS</strong>, Diffpack)<br />

Parallelizing legacy codes via Python<br />

Multi-physics/domain/scale and parallelization via domain<br />

decomposition


Current software initatives at Simula<br />

FAMMS: au<strong>to</strong>matic <strong>PDE</strong> code verification<br />

Swiginac: symbolic math in Python<br />

PYSE: finite difference stencils in Python<br />

Symbolic ”FIAT” (finite element basis functions)<br />

SciPy extensions for sparse matrices<br />

Anyplot: generic Matlab-like interface <strong>to</strong> curve plotting<br />

Plans for Anyviz (for scalar and vec<strong>to</strong>r fields over grids)<br />

How <strong>to</strong> write efficient <strong>PDE</strong> solvers in Python?<br />

(PETSc, ML, <strong>FEniCS</strong>, Diffpack)<br />

Parallelizing legacy codes via Python<br />

Multi-physics/domain/scale and parallelization via domain<br />

decomposition


Current software initatives at Simula<br />

FAMMS: au<strong>to</strong>matic <strong>PDE</strong> code verification<br />

Swiginac: symbolic math in Python<br />

PYSE: finite difference stencils in Python<br />

Symbolic ”FIAT” (finite element basis functions)<br />

SciPy extensions for sparse matrices<br />

Anyplot: generic Matlab-like interface <strong>to</strong> curve plotting<br />

Plans for Anyviz (for scalar and vec<strong>to</strong>r fields over grids)<br />

How <strong>to</strong> write efficient <strong>PDE</strong> solvers in Python?<br />

(PETSc, ML, <strong>FEniCS</strong>, Diffpack)<br />

Parallelizing legacy codes via Python<br />

Multi-physics/domain/scale and parallelization via domain<br />

decomposition


Current software initatives at Simula<br />

FAMMS: au<strong>to</strong>matic <strong>PDE</strong> code verification<br />

Swiginac: symbolic math in Python<br />

PYSE: finite difference stencils in Python<br />

Symbolic ”FIAT” (finite element basis functions)<br />

SciPy extensions for sparse matrices<br />

Anyplot: generic Matlab-like interface <strong>to</strong> curve plotting<br />

Plans for Anyviz (for scalar and vec<strong>to</strong>r fields over grids)<br />

How <strong>to</strong> write efficient <strong>PDE</strong> solvers in Python?<br />

(PETSc, ML, <strong>FEniCS</strong>, Diffpack)<br />

Parallelizing legacy codes via Python<br />

Multi-physics/domain/scale and parallelization via domain<br />

decomposition


Example: tsunami simulation (<strong>the</strong> Dec 26, 2004 event)<br />

0.55<br />

2000<br />

0.475<br />

0.4<br />

1000<br />

0.325<br />

0.25<br />

0.175<br />

0.1<br />

0<br />

0.025<br />

−0.05<br />

−0.125<br />

−0.2<br />

−2000 −1000 0 1000


Multi-physics/domain/code via domain decomposition<br />

p1<br />

p4<br />

768<br />

Nonlinear shallow water eqs.<br />

700<br />

Dispersive (Boussinesq) equations<br />

629.2<br />

200.4 300 331.8<br />

2000<br />

1000<br />

0<br />

−1000<br />

−2000<br />

−2581<br />

−6000 −4000 −2000 0 1000<br />

6.78<br />

6.1<br />

5.43<br />

4.75<br />

4.07<br />

3.39<br />

2.71<br />

2.03<br />

1.36<br />

0.678<br />

0<br />

p2<br />

p3


Multi-physics/domain/code via domain decomposition<br />

p1<br />

p4<br />

768<br />

New finite element code<br />

700<br />

Finite difference legacy code<br />

629.2<br />

200.4 300 331.8<br />

2000<br />

1000<br />

0<br />

−1000<br />

−2000<br />

−2581<br />

−6000 −4000 −2000 0 1000<br />

6.78<br />

6.1<br />

5.43<br />

4.75<br />

4.07<br />

3.39<br />

2.71<br />

2.03<br />

1.36<br />

0.678<br />

0<br />

p2<br />

p3


Summary: Simula ↔ <strong>FEniCS</strong><br />

We see <strong>FEniCS</strong> as a good place <strong>to</strong> publish software<br />

The <strong>FEniCS</strong> modules (FIAT, FFC, Sieve, ...) looks very<br />

promising<br />

We are interested in <strong>the</strong> flow software and methods<br />

We have experience with writing generic <strong>PDE</strong> software<br />

(code, documentation, users, industry)<br />

We work on challenging applications<br />

We have experience with publishing, conferences and<br />

workshops in <strong>the</strong> ”<strong>PDE</strong> software” field


Summary: Simula ↔ <strong>FEniCS</strong><br />

We see <strong>FEniCS</strong> as a good place <strong>to</strong> publish software<br />

The <strong>FEniCS</strong> modules (FIAT, FFC, Sieve, ...) looks very<br />

promising<br />

We are interested in <strong>the</strong> flow software and methods<br />

We have experience with writing generic <strong>PDE</strong> software<br />

(code, documentation, users, industry)<br />

We work on challenging applications<br />

We have experience with publishing, conferences and<br />

workshops in <strong>the</strong> ”<strong>PDE</strong> software” field


Summary: Simula ↔ <strong>FEniCS</strong><br />

We see <strong>FEniCS</strong> as a good place <strong>to</strong> publish software<br />

The <strong>FEniCS</strong> modules (FIAT, FFC, Sieve, ...) looks very<br />

promising<br />

We are interested in <strong>the</strong> flow software and methods<br />

We have experience with writing generic <strong>PDE</strong> software<br />

(code, documentation, users, industry)<br />

We work on challenging applications<br />

We have experience with publishing, conferences and<br />

workshops in <strong>the</strong> ”<strong>PDE</strong> software” field


Summary: Simula ↔ <strong>FEniCS</strong><br />

We see <strong>FEniCS</strong> as a good place <strong>to</strong> publish software<br />

The <strong>FEniCS</strong> modules (FIAT, FFC, Sieve, ...) looks very<br />

promising<br />

We are interested in <strong>the</strong> flow software and methods<br />

We have experience with writing generic <strong>PDE</strong> software<br />

(code, documentation, users, industry)<br />

We work on challenging applications<br />

We have experience with publishing, conferences and<br />

workshops in <strong>the</strong> ”<strong>PDE</strong> software” field


Summary: Simula ↔ <strong>FEniCS</strong><br />

We see <strong>FEniCS</strong> as a good place <strong>to</strong> publish software<br />

The <strong>FEniCS</strong> modules (FIAT, FFC, Sieve, ...) looks very<br />

promising<br />

We are interested in <strong>the</strong> flow software and methods<br />

We have experience with writing generic <strong>PDE</strong> software<br />

(code, documentation, users, industry)<br />

We work on challenging applications<br />

We have experience with publishing, conferences and<br />

workshops in <strong>the</strong> ”<strong>PDE</strong> software” field


Summary: Simula ↔ <strong>FEniCS</strong><br />

We see <strong>FEniCS</strong> as a good place <strong>to</strong> publish software<br />

The <strong>FEniCS</strong> modules (FIAT, FFC, Sieve, ...) looks very<br />

promising<br />

We are interested in <strong>the</strong> flow software and methods<br />

We have experience with writing generic <strong>PDE</strong> software<br />

(code, documentation, users, industry)<br />

We work on challenging applications<br />

We have experience with publishing, conferences and<br />

workshops in <strong>the</strong> ”<strong>PDE</strong> software” field

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!