== Introduction ==
Octave is a package for solving partial differential equations. Obviously, Fem-fenics is not the only extra package for Octave with this purpose. For example, [[Bim_package]] uses finite volumes to solve diffusion-advection-reaction equations, while secs1d/2d/3d [http://octave.sourceforge.net/secs1d/index.html] are suited for the resolution of the drift-diffusion system. Furthermore, to use profitably the software, you can integrate it with msh [http://octave.sourceforge.net/msh/index.html] for the generation of the mesh and with fpl [http://octave.sourceforge.net/fpl/index.html] for the post-processing of data. The objective of Fem-fenics is to be a generic library of finite elements, thereby allowing the user to resolve any type of pde, choosing also the most appropriate Finite Element space for any specific problem.
As the name suggests, the Fem-fenics pkg is a wrapper for FEniCS [http://fenicsproject.org/] functions and classes. Thus, ideally the Fem-fenics final goal would be to be able to reproduce all the features available in FEniCS, simplifying them where it is possible or using the Octave function whenever available (like the "\" for the resolution of a linear system or the odepkg [http://octave.sourceforge.net/odepkg/index.html] for the resolution of a time dependent problem).
== Tutorials ==
A generic problem has to be solved in two steps:
* a file where the '''abstract problem''' is described: this file has to be written in Unified Form Language (UFL), which is ''a domain specific language for defining discrete variational forms and functionals in a notation close to pen-and-paper formulation.'' UFL is easy to learn, and in any case the User manual provides explanations and examples. [http://fenicsproject.org/documentation/ufl/1.2.0/user/user_manual.html#ufl-user-manual]* a script file where the abstract problem is imported and a '''specific problem''' is implemented and solved: this is the script file where the fem-fenics functions are
needed. Their sintax is as close as possible to the python interface, so that Fenics users are comfortable with that, but it is alos quite intuitive for beginners. The examples below show the equivalence between the different programming languages.