UFL - Unified Form Language
The Unified Form Language (UFL) is a domain specific language for declaration of finite element discretizations of variational forms. More precisely, it defines a flexible interface for choosing finite element spaces and defining expressions for weak forms in a notation close to mathematical notation.
UFL is described in the paper:
Alnæs, M. S., Logg A., Ølgaard, K. B., Rognes, M. E. and Wells, G. N. (2014). Unified Form Language: A domain-specific language for weak formulations of partial differential equations. ACM Transactions on Mathematical Software 40(2), Article 9, 37 pages. <http://dx.doi.org/doi:10.1145/2566630>, <http://arxiv.org/abs/1211.4047>
The UFL documentation can be views at http://fenics-ufl.readthedocs.org/.
sudo python setup.py install
All source code for the UFL implementation.
Commandline utilities like "ufl-analyse", "ufl-convert" and "form2ufl".
Several ufl form files which demonstrates the use of the form language.
The UFL documentation resides here. See doc/sphinx/README for how to generate the documentation.
Unit tests for the UFL implementation. Run all tests by typing "python test.py" inside the test/ directory.
For more information about the utilities, type:
ufl-analyse -h ufl-convert -h form2ufl -h
About the Python modules
The global namespace of the module ufl contains the entire UFL language:
from ufl import *
Form compilers may want to import additional implementation details like:
from ufl.classes import *
from ufl.algorithms import *
Importing a .ufl file can be done easily from Python:
from ufl.algorithms import load_ufl_file filedata = load_ufl_file("filename.ufl") forms = filedata.forms elements = filedata.elements
to get lists of forms and elements from the .ufl file, or:
from ufl.algorithms import load_forms forms = load_forms("filename.ufl")
to get a list of forms in the .ufl file.
Send feature requests and questions to
The Git source repository for UFL is located at
and bugs can be registered at
UFL is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
UFL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with UFL. If not, see <http://www.gnu.org/licenses/>.