The poster will illustrate internals of SfePy (Simple Finite Elements in Python) - a framework for solving various kinds of problems (mechanics, physics, biology, ...) described by partial differential equations in two or three space dimensions. As its name suggests, the code is written mostly in Python. For speed in general, it relies on fast vectorized operations provided by NumPy arrays, with heavy use of advanced broadcasting and "index tricks" features. C and Cython are used in places where vectorization is not possible, or is too difficult/unreadable. Other components of the scientific Python software stack are used as well, among others: SciPy solvers and algorithms, Matplotlib for 2D plots, Mayavi for 3D plots and simple postprocessing GUI, IPython for a customized shell, SymPy for symbolic operations/code generation etc.
The basic structure of the code will be shown that allows flexible definition of various problems. The problems are defined using components directly corresponding to mathematical counterparts of a weak formulation in the finite element setting: solution domain and its sub-domains (regions), variables from various discrete function spaces, equations as sums of terms (weak form integrals), various kinds of boundary conditions, material/constitutive parameters etc. Examples from different application fields will be shown in form of images.