diff --git a/README.md b/README.md index 2cd9fee3..22cae903 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # FEniCS website -This repository contains the (new, not-yet finished) FEniCS website. +This repository contains the FEniCS website. ## Editing this website To edit this website: diff --git a/_test/test_links.py b/_test/test_links.py index 5d4f7fcb..6630cb51 100644 --- a/_test/test_links.py +++ b/_test/test_links.py @@ -72,7 +72,7 @@ def test_links(dir, file): if i.startswith("http:") or i.startswith("https:")] for i in external_links: print(f"Checking {i}") - if "fenicsproject.org" in i: + if "fenicsproject.org" in i and "docs.fenicsproject.org" not in i: assert "/pub/" in i or "/olddocs/" in i links = [i for i in links if not i.startswith("http:")] diff --git a/citing/index.md b/citing/index.md index 6937bb98..844ad4df 100644 --- a/citing/index.md +++ b/citing/index.md @@ -1,13 +1,34 @@ --- -title: Citing FEniCS +title: Citing FEniCSx permalink: /citing/ --- -If you use FEniCS in your research, the developers would be grateful if you would cite the -relevant publications. FEniCS is organized as a collection of components, so to give proper -credit to the developers of FEniCS, please cite the indicated references **for each relevant +If you use FEniCSx in your research, the developers would be grateful if you would cite the +relevant publications. FEniCSx is organized as a collection of components, so to give proper +credit to the developers of FEniCSx, please cite the indicated references **for each relevant component**. -## FEniCS +## FEniCSx + +### Basix + +{% include _paper.html + id="ScroggsEtal2022" + title="Construction of arbitrary order finite element degree-of-freedom maps on polygonal and polyhedral cell meshes" + author="M. W. Scroggs, J. S. Dokken, C. N. Richardson, and G. N. Wells" + submitted="ACM Transactions on Mathematical Software" + year="2022" + arxiv="2102.11901" +%} + +{% include _paper.html + id="BasixJoss" + title="Basix: a runtime finite element basis evaluation library" + author="M. W. Scroggs, I. A. Baratta, C. N. Richardson, and G. N. Wells" + submitted="Journal of Open Source Software" + year="2022" +%} + +## Legacy FEniCS {% include _paper.html id="AlnaesEtal2015" diff --git a/community/index.md b/community/index.md index 478427d4..8d4aa7cd 100644 --- a/community/index.md +++ b/community/index.md @@ -19,26 +19,32 @@ Everyone is invited to read and take part in discussions. You can join our Slack [entering your email address here](https://fenicsproject-slack-invite.herokuapp.com/). ## Asking questions -If you need help with using FEniCS, ask your question in the -[FEniCS Discourse site](https://fenicsproject.discourse.group/). -If you have a specific question related to obtaining, building or installing a FEniCS component, -please send a message to the [FEniCS support mailing list](https://groups.google.com/forum/#!forum/fenics-support). -If you would like to discuss FEniCS development or propose a new feature, please send a message -to the [FEniCS developer mailing list](https://groups.google.com/forum/#!forum/fenics-dev) -or join us on the [FEniCS Slack channels](https://fenicsproject.slack.com/). +If you need help with using FEniCS, or are encountering an error, you can ask a question in the +[FEniCS Discourse site](https://fenicsproject.discourse.group/). In order to make it more likely that you get a useful reply +to your question, you should: + +- make sure that your post title and description make it clear what you are trying to do, +- post a minimal code that reproduces any errors you are encountering +- post in full any error messages you are seeing +- include details of which FEniCS version you are using, and how you installed it (Docker/conda/pip/etc) + +You can find more advice about how to post a good question (and examples) +[here](https://fenicsproject.discourse.group/t/read-before-posting-how-do-i-get-my-question-answered/21/4). ## Reporting bugs If you encounter something you suspect is a bug, please -[file an issue for the appropriate FEniCS component on Bitbucket](https://bitbucket.org/fenics-project/). -In particular, for reporting bugs in the FEniCS user interface, -visit the [DOLFIN issues page](https://bitbucket.org/fenics-project/dolfin/issues). +[file an issue for the appropriate FEniCS component on GitHub](https://github.com/FEniCS). +In particular, for reporting bugs in the FEniCSx user interface, +visit the [DOLFINx issues page](https://github.com/FEniCS/dolfinx/issues). As above, post complete but minimal code examples. ## Contributing -We encourage users to take active part in developing and documenting FEniCS. As an active +We encourage users to take active part in developing and documenting FEniCSx. As an active developer, it is easy to influence the direction and focus of the project. To contribute to -FEniCS development, engage with other developers on the -[FEniCS Slack channels](https://fenicsproject.slack.com/). -The [FEniCS source code](https://bitbucket.org/fenics-project/) is hosted on Bitbucket. Signed copyright consents are needed for non-trivial +FEniCSx development, engage with other developers on the +[FEniCSx Slack channels](https://fenicsproject.slack.com/): in particular, you should join the **#fenicsx** and **#development** +channels. + +The [FEniCSx source code](https://github.com/FEniCS) is hosted on GitHub. Signed copyright consents are needed for non-trivial contributions. The copyright policy and the consent submission procedures are described in -[the governance documents](https://bitbucket.org/fenics-project/governance/src/master/project-license.md). +[the governance documents](https://github.com/FEniCS/governance/blob/master/project-license.md). diff --git a/conference/index.md b/conference/index.md index 87955226..f6e70d6b 100644 --- a/conference/index.md +++ b/conference/index.md @@ -2,7 +2,7 @@ title: The FEniCS Conference permalink: /conference/ --- -The FEniCS conference is held in a difference location each year. +The FEniCS conference is held in a different location each year. - [FEniCS 2022 (San Diego)](2022.md) - [FEniCS 2021 (online)](2021.md) diff --git a/documentation/archive.md b/documentation/archive.md new file mode 100644 index 00000000..4f1c0370 --- /dev/null +++ b/documentation/archive.md @@ -0,0 +1,61 @@ +--- +title: FEniCS Documentation +subtitle: fenicsversion +permalink: /documentation/archive/ +--- + +The FEniCS documentation includes a set of books, collections of documented demo programs and reference manuals. + +## The FEniCS Tutorial +![The FEniCS tutorial](/assets/img/docs/tutorial.png){: .image-right } +If you are new to FEniCS and want to quickly get started with solving PDEs in Python, +the [FEniCS Tutorial](tutorial.md) is a good starting point. The tutorial +explains the fundamental concepts of the finite element method, FEniCS programming, and +demonstrates how to quickly solve a range of PDEs. The tutorial assumes no prior knowledge of +the finite element method. The FEniCS Tutorial is published as part of the series +[Simula Springer Briefs on Computing](http://www.springer.com/series/13548). +The book is open access and the eBook can be downloaded for free +from Springer. + +Note that some of the FEniCS Tutorial example code may be obsolete, see the +[FEniCS Tutorial page](tutorial.md) for how to report comments and corrections. + +## The FEniCS API Documentation +The FEniCS Project consists of a number of components with DOLFIN and UFL providing the main +user interface. For detailed documentation of the FEniCS programming interface, use the + +- [DOLFIN (C++) API](https://fenicsproject.org/olddocs/dolfin/latest/cpp/classes.html) Class Index +- [DOLFIN (Python) API](https://fenicsproject.org/olddocs/dolfin/latest/python/) reference + +Not the version you are looking for? See also the list of +[documentation for other DOLFIN versions](https://fenicsproject.org/olddocs/dolfin/). +Some advanced user and more developer-oriented information can also be found in the +[FEniCS Reference Manual on Read the docs](https://fenics.readthedocs.io/en/latest/). + +The [DOLFIN ChangeLog](https://fenics.readthedocs.io/projects/dolfin/en/latest/ChangeLog.html) +provides an overview of changes in the FEniCS programming interfaces between different versions. + +## The FEniCS Demos +The FEniCS demo programs (demos) are a good starting point for building your own FEniCS +applications, and many users find these useful. The demos are included in the +[FEniCS source repositories](https://bitbucket.org/fenics-project/), +which are hosted on Bitbucket. For easy reference, we here provide quick links +to the demos: + +- [DOLFIN C++ demos](https://bitbucket.org/fenics-project/dolfin/src/master/demo/) (development version) +- [DOLFIN Python demos](https://bitbucket.org/fenics-project/dolfin/src/master/python/demo/) (development version) + +# The FEniCS book +![The FEniCS book](/assets/img/docs/book.png){: .image-right } +The book [Automated Solution of Differential Equations by the Finite Element Method](book.md) +explains the theoretical background and design of FEniCS. It describes the FEniCS software +components in detail and showcases a number of applications of FEniCS to problems in fluid +mechanics, solid mechanics, electromagnetics, and geophysics. The book was published in 2012, +which means that some of the examples presented in the book may use old interfaces that are no +longer supported by FEniCS. However, the book still gives a good description of the design of +FEniCS. + +## The FEniCS Notebooks +The FEniCS Notebooks are a collection of documented Jupyter/Python notebooks illustrating +various features of FEniCS and the application of FEniCS to a range of PDEs. The FEniCS +Notebooks are currently in preparation. diff --git a/documentation/index.md b/documentation/index.md index fe71a55c..d8efa959 100644 --- a/documentation/index.md +++ b/documentation/index.md @@ -4,46 +4,31 @@ subtitle: fenicsversion permalink: /documentation/ --- -The FEniCS documentation includes a set of books, collections of documented demo programs and reference manuals. +The FEniCSx documentation includes a set of books, collections of documented demo programs and reference manuals. -## The FEniCS Tutorial -![The FEniCS tutorial](/assets/img/docs/tutorial.png){: .image-right } +## The FEniCSx Tutorial +![The FEniCSx tutorial](/assets/img/docs/tutorial.png){: .image-right } If you are new to FEniCS and want to quickly get started with solving PDEs in Python, -the [FEniCS Tutorial](tutorial.md) is a good starting point. The tutorial -explains the fundamental concepts of the finite element method, FEniCS programming, and -demonstrates how to quickly solve a range of PDEs. The tutorial assumes no prior knowledge of -the finite element method. The FEniCS Tutorial is published as part of the series +the [FEniCSx tutorial](https://jorgensd.github.io/dolfinx-tutorial/) is a good place to start. +The tutorial explains the fundamental concepts of the finite element method, FEniCSx programming, and +demonstrates how to quickly solve a range of PDEs. +The FEniCSx Tutorial based on the [FEniCS Tutorial](tutorial.md) book which was published as part of the series [Simula Springer Briefs on Computing](http://www.springer.com/series/13548). -The book is open access and the eBook can be downloaded for free -from Springer. -Note that some of the FEniCS Tutorial example code may be obsolete, see the -[FEniCS Tutorial page](tutorial.md) for how to report comments and corrections. +## API Documentation +FEniCSx is comprised of four main components: -## The FEniCS API Documentation -The FEniCS Project consists of a number of components with DOLFIN and UFL providing the main -user interface. For detailed documentation of the FEniCS programming interface, use the +- UFL ([latest docs](https://fenics.readthedocs.io/projects/ufl/en/latest/)) (the Unified Form Language) is a form language + that allows the user to write a wide variety of finite element forms in Python. +- Basix ([latest docs](https://docs.fenicsproject.org/basix/main/)) is a element definition and tabulation library + that provides all the information FEniCSx needs about elements on the reference cell. +- FFCx ([latest docs](https://docs.fenicsproject.org/ffcx/main)) (the FEniCSx Form Compiler) is the Python library that interprets + UFL forms and generates C code to assemble these on cells. +- DOLFINx ([latest C++ docs](https://docs.fenicsproject.org/dolfinx/main/cpp/), [latest Python docs](https://docs.fenicsproject.org/dolfinx/main/python/)) + is the main user interface of FEniCSx, and handles meshes and linear algebra solvers among other things. -- [DOLFIN (C++) API](https://fenicsproject.org/olddocs/dolfin/latest/cpp/classes.html) Class Index -- [DOLFIN (Python) API](https://fenicsproject.org/olddocs/dolfin/latest/python/) reference - -Not the version you are looking for? See also the list of -[documentation for other DOLFIN versions](https://fenicsproject.org/olddocs/dolfin/). -Some advanced user and more developer-oriented information can also be found in the -[FEniCS Reference Manual on Read the docs](https://fenics.readthedocs.io/en/latest/). - -The [DOLFIN ChangeLog](https://fenics.readthedocs.io/projects/dolfin/en/latest/ChangeLog.html) -provides an overview of changes in the FEniCS programming interfaces between different versions. - -## The FEniCS Demos -The FEniCS demo programs (demos) are a good starting point for building your own FEniCS -applications, and many users find these useful. The demos are included in the -[FEniCS source repositories](https://bitbucket.org/fenics-project/), -which are hosted on Bitbucket. For easy reference, we here provide quick links -to the demos: - -- [DOLFIN C++ demos](https://bitbucket.org/fenics-project/dolfin/src/master/demo/) (development version) -- [DOLFIN Python demos](https://bitbucket.org/fenics-project/dolfin/src/master/python/demo/) (development version) +API documentation of the latest version of each component can be found using the links above. Documentation of +other versions can be found at [docs.fenicsproject.org](https://docs.fenicsproject.org/). # The FEniCS book ![The FEniCS book](/assets/img/docs/book.png){: .image-right } @@ -51,11 +36,13 @@ The book [Automated Solution of Differential Equations by the Finite Element Met explains the theoretical background and design of FEniCS. It describes the FEniCS software components in detail and showcases a number of applications of FEniCS to problems in fluid mechanics, solid mechanics, electromagnetics, and geophysics. The book was published in 2012, -which means that some of the examples presented in the book may use old interfaces that are no -longer supported by FEniCS. However, the book still gives a good description of the design of -FEniCS. - -## The FEniCS Notebooks -The FEniCS Notebooks are a collection of documented Jupyter/Python notebooks illustrating -various features of FEniCS and the application of FEniCS to a range of PDEs. The FEniCS -Notebooks are currently in preparation. +and was based on the legacy FEniCS library, so the code examples in the book are out of date. +However, the book still gives a good description of the many of the design principles that +FEniCSx is based on. + +The book is available as a [free ebook](http://launchpad.net/fenics-book/trunk/final/+download/fenics-book-2011-10-27-final.pdf), +or can be bought from [Springer](http://www.springer.com/mathematics/computational+science+%26+engineering/book/978-3-642-23098-1) +or many other bookshops. + +## Legacy FEniCS +Documnetation for the legacy version of FEniCS (version {{ site.fenicsversion }}) can be found [here](archive.md). diff --git a/download/archive.md b/download/archive.md new file mode 100644 index 00000000..e3a3767a --- /dev/null +++ b/download/archive.md @@ -0,0 +1,74 @@ +--- +title: Download +permalink: /download/archive/ +--- + +The latest stable release of legacy FEniCS is version {{ site.fenicsversion }}, which was released +in {{ site.fenicsversiondate }}. + +## FEniCS on Docker +To use our prebuilt, high-performance [Docker](https://www.docker.com/community-edition) images, +first install [Docker CE](https://www.docker.com/products/docker-desktop) for your platform +(Windows, Mac or Linux) and then run the following command: + +```bash +curl -s https://get.fenicsproject.org | bash +``` + +To run the FEniCS Docker image, use the command `fenicsproject run`. For more options and +features, see `fenicsproject help`. + +Alternatively, you can start a container with the following `docker` command: + +```bash +docker run -ti -p 127.0.0.1:8000:8000 -v $(pwd):/home/fenics/shared -w /home/fenics/shared quay.io/fenicsproject/stable:current +``` + +For detailed instructions, see the [FEniCS Reference Manual](http://fenics-containers.readthedocs.io/en/latest/index.html). + +## FEniCS on Windows 10 +To install FEniCS on Windows 10, enable the [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) +and install the Ubuntu distribution. Then follow the instructions for Ubuntu below. + +## Ubuntu FEniCS on Ubuntu +To install FEniCS on Ubuntu, run the following commands: + +```bash +sudo apt-get install software-properties-common +sudo add-apt-repository ppa:fenics-packages/fenics +sudo apt-get update +sudo apt-get install fenics +``` + +For detailed instructions, see the [FEniCS Reference Manual](http://fenics-containers.readthedocs.io/en/latest/index.html). + +## FEniCS on Anaconda +To use our prebuilt Anaconda Python packages (Linux and Mac only), first +[install Anaconda](https://docs.continuum.io/anaconda/install), then run following commands in +your terminal: + + +```bash +conda create -n fenicsproject -c conda-forge fenics +source activate fenicsproject +``` + +For further information on using Anaconda, see the [documentation](https://docs.continuum.io/anaconda/). + +Installing FEniCS via Anaconda is also supported in [Microsoft Azure Notebooks](https://notebooks.azure.com/). +In the first cell of a new Jupyter notebook, type: + +```python +!conda config --add channels conda-forge +!conda install fenics +``` + +**Warning**: FEniCS Anaconda recipes are maintained by the community and distributed binary +packages do not have a full feature set yet, especially regarding sparse direct solvers and +input/output facilities. + +**Update**. 2017.2.0 release on `conda-forge` features MUMPS direct solver, but lacks SuperLU_dist and MPI-enabled HDF5. + +## Building FEniCS from source +For installation in high performance computing clusters we recommend always building from source. +For detailed instructions, see the [FEniCS Reference Manual](https://fenics.readthedocs.io/en/latest/installation.html). diff --git a/download/index.md b/download/index.md index 6c68d29c..107a3f26 100644 --- a/download/index.md +++ b/download/index.md @@ -3,72 +3,31 @@ title: Download permalink: /download/ --- -The latest stable release of FEniCS is version {{ site.fenicsversion }}, which was released -in {{ site.fenicsversiondate }}. +The latest stable release of FEniCSx is version {{ site.fenicsxversion }}, which was released +in {{ site.fenicsxversiondate }}. -## FEniCS on Docker -To use our prebuilt, high-performance [Docker](https://www.docker.com/community-edition) images, -first install [Docker CE](https://www.docker.com/products/docker-desktop) for your platform -(Windows, Mac or Linux) and then run the following command: +## Running a Jupyter lab using Docker +The easiest way to start using FEniCSx is to run the Jupyter lab Docker image. This image contains +the latest version of FEniCSx and is automatically updated nightly. It can be used to run FEniCSx +without having to install it on your local system. -```bash -curl -s https://get.fenicsproject.org | bash -``` - -To run the FEniCS Docker image, use the command `fenicsproject run`. For more options and -features, see `fenicsproject help`. - -Alternatively, you can start a container with the following `docker` command: - -```bash -docker run -ti -p 127.0.0.1:8000:8000 -v $(pwd):/home/fenics/shared -w /home/fenics/shared quay.io/fenicsproject/stable:current -``` - -For detailed instructions, see the [FEniCS Reference Manual](http://fenics-containers.readthedocs.io/en/latest/index.html). - -## FEniCS on Windows 10 -To install FEniCS on Windows 10, enable the [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) -and install the Ubuntu distribution. Then follow the instructions for Ubuntu below. - -## Ubuntu FEniCS on Ubuntu -To install FEniCS on Ubuntu, run the following commands: +This image can be downloaded by running: ```bash -sudo apt-get install software-properties-common -sudo add-apt-repository ppa:fenics-packages/fenics -sudo apt-get update -sudo apt-get install fenics +docker pull dolfinx/lab ``` -For detailed instructions, see the [FEniCS Reference Manual](http://fenics-containers.readthedocs.io/en/latest/index.html). - -## FEniCS on Anaconda -To use our prebuilt Anaconda Python packages (Linux and Mac only), first -[install Anaconda](https://docs.continuum.io/anaconda/install), then run following commands in -your terminal: - +The image can then be started by running: ```bash -conda create -n fenicsproject -c conda-forge fenics -source activate fenicsproject -``` - -For further information on using Anaconda, see the [documentation](https://docs.continuum.io/anaconda/). - -Installing FEniCS via Anaconda is also supported in [Microsoft Azure Notebooks](https://notebooks.azure.com/). -In the first cell of a new Jupyter notebook, type: - -```python -!conda config --add channels conda-forge -!conda install fenics +docker run -p 8888:8888 dolfinx/lab ``` -**Warning**: FEniCS Anaconda recipes are maintained by the community and distributed binary -packages do not have a full feature set yet, especially regarding sparse direct solvers and -input/output facilities. +A URL will then be output in the terminal that leads to the Jupyter lab. From there, Jupyter notebooks and +Python scripts can be created and run. -**Update**. 2017.2.0 release on `conda-forge` features MUMPS direct solver, but lacks SuperLU_dist and MPI-enabled HDF5. +## Alternative installation methods +Details of alternative installation methods can be found [here](https://docs.fenicsproject.org/dolfinx/main/python/installation.html). -## Building FEniCS from source -For installation in high performance computing clusters we recommend always building from source. -For detailed instructions, see the [FEniCS Reference Manual](https://fenics.readthedocs.io/en/latest/installation.html). +## Legacy FEniCS +Instructions for installing the legacy version of FEniCS (version {{ site.fenicsversion }}) can be found [here](archive.md). diff --git a/index.md b/index.md index b959622c..4a0b9c1e 100644 --- a/index.md +++ b/index.md @@ -102,6 +102,18 @@ containers, binary packages, Spack packages and source code. Visit our [installa version of FEniCSx. FEniCSx comes with [extensive documentation](documentation/index.md) and numerous examples. A good starting point is the [FEniCSx Tutorial](https://jorgensd.github.io/dolfinx-tutorial/). +## FEniCSx vs legacy FEniCSx +In 2018, work started on FEniCSx: the new version of the FEniCS library. FEniCSx has a number of major improvements +over the legacy library, including support for a wide range of cell types and elements, memory parallelisation, and +complex number support, as well as a large number of improvements to the overall library design. +FEniCSx is comprised of the libraries UFL, Basix, FFCx and DOLFINx. +The latest version of FEniCSx ({{ site.fenicsxversion }}) was released in {{ site.fenicsxversiondate }}. + +Now that development is focussed on FEniCSx, updates are made very rarely to the legacy FEniCS library. We +recommend that users consider using FEniCSx instead of the legacy library. +Lecacy FEniCS is comprised of the libraries UFL, FIAT, FFC and DOLFIN. +The latest version of legacy FEniCS ({{ site.fenicsversion }}) was released in {{ site.fenicsversiondate }}. + ## About The FEniCS Project is developed and maintained as a freely available, open-source project by a global community of scientists and software developers. The project is developed by the FEniCS