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
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