Development

The SfePy development takes place in the sfepy/sfepy repository on Github. The users and developers can also communicate using the mailing list.

General Information

We are interested in any contribution. There are many ways how you can contribute:

  • You can report bugs using our mailing list. You can also add a bug report (or a comment) into the issues.
  • You can contribute interesting examples/tutorials.
  • You can blog about how you use SfePy (let us know!).
  • You can help with improving our documentation and these pages.

To get acquainted with SfePy, you can start by reading the Tutorial and Primer sections of the documentation and trying out the examples that come with the sources. Your first contribution could be pinpointing anything that is not clear in the docs.

We also recommend reading the How to Contribute section of our Developer Guide.

Topics

Several specific topics that we wish to address in the future are listed below. If you would like to contribute code/advice to our project with respect to these topics, do not hesitate to contact us (either directly: cimrman3(at)ntc.zcu.cz, or on our mailing list)

  • finish/improve IGA implementation (see Isogeometric Analysis):
    • support multiple patches
    • efficient quadrature formulas
    • local refinement?
  • discretization methods:
    • implement vector elements (Nedelec, Raviart-Thomas, …)
    • implement the discontinuous Galerkin method
  • material models: plasticity, viscoplasticity, damage, …
  • improve parallelization (see Solving Problems in Parallel):
    • cluster installation with fast BLAS
    • parallel code speed-up
    • remove (some of) the serial parts
    • preconditioning for multi-physics problems
  • solvers:
    • better defaults/recommendations for iterative solvers (PETSc) with respect to large problems
    • dynamics/time-stepping solvers, interface PETSc time-steppers
    • interface more sparse linear solvers (or enable via PETSc), for example BDDCML
    • interface more eigenvalue problem solvers (SLEPc, other?)
  • visualization of large data
  • automatic differentiation:
    • for tangent matrices
    • for identification of (material) parameters
  • core data structures & programming:
    • using octree-based(?) mesh representation for local refinement
    • continue with/improve the current hanging nodes implementation
    • exploit lazy evaluation

See also the enhacement issues.