Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move legacy FEniCS info to archive pages #70

Merged
merged 16 commits into from
Feb 4, 2022
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
2 changes: 1 addition & 1 deletion _test/test_links.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:")]
Expand Down
31 changes: 26 additions & 5 deletions citing/index.md
Original file line number Diff line number Diff line change
@@ -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**.

mscroggs marked this conversation as resolved.
Show resolved Hide resolved
## 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"
Expand Down
36 changes: 21 additions & 15 deletions community/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
2 changes: 1 addition & 1 deletion conference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
61 changes: 61 additions & 0 deletions documentation/archive.md
Original file line number Diff line number Diff line change
@@ -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.
71 changes: 29 additions & 42 deletions documentation/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,58 +4,45 @@ 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 }
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.
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).
74 changes: 74 additions & 0 deletions download/archive.md
Original file line number Diff line number Diff line change
@@ -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).
Loading