Skip to content

Commit

Permalink
Merge master
Browse files Browse the repository at this point in the history
  • Loading branch information
indiamai committed Jan 6, 2025
2 parents e755dbf + bfb7a19 commit 96bf913
Show file tree
Hide file tree
Showing 65 changed files with 917 additions and 1,047 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/build-mac.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ jobs:
run: |
. ../firedrake_venv/bin/activate
python -m pytest -v tests/firedrake/regression/ -k "poisson_strong or stokes_mini or dg_advection"
# also test for 'problem libraries' (spatialindex and libsupermesh)
python -m pytest -v tests/firedrake/regression/test_locate_cell.py
python -m pytest -v tests/firedrake/supermesh/test_assemble_mixed_mass_matrix.py
timeout-minutes: 30
- name: Post-run cleanup
if: ${{ always() }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ jobs:
--mpicxx="$MPICH_DIR"/mpicxx \
--mpif90="$MPICH_DIR"/mpif90 \
--mpiexec="$MPICH_DIR"/mpiexec \
--mpihome="$MPICH_DIR"/.. \
--venv-name firedrake_venv \
--no-package-manager \
--disable-ssh \
Expand Down
22 changes: 3 additions & 19 deletions .github/workflows/pip-mac.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,25 +68,6 @@ jobs:
--download-superlu_dist
make
- name: Install libsupermesh
run: |
source pip_venv/bin/activate
python -m pip install 'rtree>=1.2'
cd pip_venv/src
git clone https://github.com/firedrakeproject/libsupermesh.git
mkdir -p libsupermesh/build
cd libsupermesh/build
cmake .. \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX="$VIRTUAL_ENV" \
-DMPI_C_COMPILER=/opt/homebrew/bin/mpicc \
-DMPI_CXX_COMPILER=/opt/homebrew/bin/mpicxx \
-DMPI_Fortran_COMPILER=/opt/homebrew/bin/mpif90 \
-DCMAKE_Fortran_COMPILER=/opt/homebrew/bin/mpif90 \
-DMPIEXEC_EXECUTABLE=/opt/homebrew/bin/mpiexec
make
make install
- uses: actions/checkout@v4
with:
path: pip_venv/src/firedrake
Expand Down Expand Up @@ -118,6 +99,9 @@ jobs:
cd pip_venv/src/firedrake
python -m pytest --timeout=1800 -v tests/firedrake/regression \
-k "poisson_strong or stokes_mini or dg_advection"
# also test for 'problem libraries' (spatialindex and libsupermesh)
python -m pytest -v tests/firedrake/regression/test_locate_cell.py
python -m pytest -v tests/firedrake/supermesh/test_assemble_mixed_mass_matrix.py
timeout-minutes: 30

- name: Cleanup (post)
Expand Down
19 changes: 0 additions & 19 deletions .github/workflows/pip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,25 +56,6 @@ jobs:
with:
path: src/firedrake

- name: Install libsupermesh
run: |
source pip_venv/bin/activate
python -m pip install 'rtree>=1.2'
cd pip_venv/src
git clone https://github.com/firedrakeproject/libsupermesh.git
mkdir -p libsupermesh/build
cd libsupermesh/build
cmake .. \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX="$VIRTUAL_ENV" \
-DMPI_C_COMPILER="$MPICH_DIR/mpicc" \
-DMPI_CXX_COMPILER="$MPICH_DIR/mpicxx" \
-DMPI_Fortran_COMPILER="$MPICH_DIR/mpif90" \
-DCMAKE_Fortran_COMPILER="$MPICH_DIR/mpif90" \
-DMPIEXEC_EXECUTABLE="$MPICH_DIR/mpiexec"
make
make install
- name: Pip install
run: |
source pip_venv/bin/activate
Expand Down
42 changes: 4 additions & 38 deletions .github/workflows/pyop2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,25 +27,14 @@ jobs:
shell: bash
run: |
sudo apt update
sudo apt install build-essential mpich libmpich-dev \
sudo apt install build-essential libopenmpi-dev \
libblas-dev liblapack-dev gfortran libhwloc-dev libfabric-dev
- name: Set correct Python version
uses: actions/setup-python@v5
id: setup-python
with:
python-version: ${{ matrix.python-version }}
# By default setup-python pollutes the environment in such a way that virtual
# environments cannot be used. This prevents us from building libsupermesh because
# it relies on having rtree installed into a venv.
# https://github.com/actions/setup-python/issues/851
# https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#using-update-environment-flag
update-environment: false

- name: Create virtual environment
shell: bash
run: |
${{ steps.setup-python.outputs.python-path }} -m venv venv

- name: Clone PETSc
uses: actions/checkout@v4
Expand All @@ -65,25 +54,6 @@ jobs:
--with-fortran-bindings=0
make
- name: Install libsupermesh
shell: bash
run: |
source venv/bin/activate
python -m pip install 'rtree>=1.2'
git clone https://github.com/firedrakeproject/libsupermesh.git
mkdir -p libsupermesh/build
cd libsupermesh/build
cmake .. \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX="$VIRTUAL_ENV" \
-DMPI_C_COMPILER=mpicc \
-DMPI_CXX_COMPILER=mpicxx \
-DMPI_Fortran_COMPILER=mpif90 \
-DCMAKE_Fortran_COMPILER=mpif90 \
-DMPIEXEC_EXECUTABLE=mpiexec
make
make install
- name: Checkout Firedrake
uses: actions/checkout@v4
with:
Expand All @@ -93,15 +63,13 @@ jobs:
shell: bash
working-directory: firedrake
run: |
source ../venv/bin/activate
python -m pip install -U pip
python -m pip install -U pytest-timeout
- name: Install PyOP2
shell: bash
working-directory: firedrake
run: |
source ../venv/bin/activate
export CC=mpicc
export HDF5_DIR="$PETSC_DIR/$PETSC_ARCH"
export HDF5_MPI=ON
Expand All @@ -111,16 +79,14 @@ jobs:
shell: bash
working-directory: firedrake
run: |
source ../venv/bin/activate
pytest --tb=native --timeout=480 --timeout-method=thread -o faulthandler_timeout=540 -v tests/tsfc
timeout-minutes: 10

- name: Run PyOP2 tests
shell: bash
working-directory: firedrake
run: |
source ../venv/bin/activate
# Running parallel test cases separately works around a bug in pytest-mpi
pytest -k "not parallel" --tb=native --timeout=480 --timeout-method=thread -o faulthandler_timeout=540 -v tests/pyop2
mpiexec -n 3 pytest -k "parallel[3]" --tb=native --timeout=480 --timeout-method=thread -o faulthandler_timeout=540 -v tests/pyop2
pytest -m "not parallel" --tb=native --timeout=480 --timeout-method=thread -o faulthandler_timeout=540 -v tests/pyop2
mpiexec -n 2 --oversubscribe pytest -m "parallel[2]" --tb=native --timeout=480 --timeout-method=thread -o faulthandler_timeout=540 -v tests/pyop2
mpiexec -n 3 --oversubscribe pytest -m "parallel[3]" --tb=native --timeout=480 --timeout-method=thread -o faulthandler_timeout=540 -v tests/pyop2
timeout-minutes: 10
2 changes: 2 additions & 0 deletions AUTHORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -172,5 +172,7 @@ Florian Wechsung..............<https://florianwechsung.github.io>

Yian Zeng

Umberto Zerbinati.............<https://www.uzerbinati.eu>

Fangyi Zhou

1 change: 1 addition & 0 deletions docker/Dockerfile.complex
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@ RUN bash -c "python3 firedrake-install \
--mpicxx=$MPICH_DIR/mpicxx \
--mpif90=$MPICH_DIR/mpif90 \
--mpiexec=$MPICH_DIR/mpiexec \
--mpihome=$MPICH_DIR/.. \
--slepc \
--documentation-dependencies"
13 changes: 6 additions & 7 deletions docker/Dockerfile.env
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,14 @@ RUN bash -c 'cd petsc; \
--download-suitesparse \
--download-superlu_dist \
PETSC_ARCH=packages; \
mv packages/include/petscconf.h packages/include/old_petscconf.nope;'
mv packages/include/petscconf.h packages/include/old_petscconf.nope; \
rm -rf /home/firedrake/petsc/**/externalpackages; \
rm -rf /home/firedrake/petsc/src/docs; \
rm -f /home/firedrake/petsc/src/**/tutorials/output/*; \
rm -f /home/firedrake/petsc/src/**/tests/output/*'
# Don't run make here, we only want MPICH and HWLOC
# It is also necessary to move `petscconf.h` so packages isn't treated like a working PETSc
# Cleaned up unnecessary files

# Build default Firedrake PETSc
RUN bash -c 'export PACKAGES=/home/firedrake/petsc/packages; \
Expand Down Expand Up @@ -149,12 +154,6 @@ RUN bash -c 'export PETSC_DIR=/home/firedrake/petsc; \
./configure; \
make SLEPC_DIR=/home/firedrake/slepc PETSC_DIR=/home/firedrake/petsc PETSC_ARCH=complex;'

# Clean up unnecessary files
RUN rm -rf /home/firedrake/petsc/**/externalpackages \
&& rm -rf /home/firedrake/petsc/src/docs \
&& rm -f /home/firedrake/petsc/src/**/tutorials/output/* \
&& rm -f /home/firedrake/petsc/src/**/tests/output/*

# Set some useful environment variables
ENV PETSC_DIR /home/firedrake/petsc
ENV SLEPC_DIR /home/firedrake/slepc
Expand Down
3 changes: 2 additions & 1 deletion docker/Dockerfile.vanilla
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ RUN bash -c "python3 firedrake-install \
--mpicc=$MPICH_DIR/mpicc \
--mpicxx=$MPICH_DIR/mpicxx \
--mpif90=$MPICH_DIR/mpif90 \
--mpiexec=$MPICH_DIR/mpiexec"
--mpiexec=$MPICH_DIR/mpiexec \
--mpihome=$MPICH_DIR/.."
1 change: 0 additions & 1 deletion docs/source/download.rst
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,6 @@ Requirements
* An activated virtual environment.
* All the system requirements listed in :ref:`system-requirements`.
* A Firedrake-compatible PETSc installation (using our `fork of PETSc <https://github.com/firedrakeproject/petsc.git>`_). The set of flags passed to PETSc can be retrieved by passing the command ``--show-petsc-configure-options`` to ``firedrake-install``.
* `libsupermesh <https://github.com/firedrakeproject/libsupermesh.git>`_ to be installed inside the virtual environment (see `here <https://github.com/firedrakeproject/firedrake/blob/master/.github/workflows/pip.yml>`_ for an example of how to do this).
* The following environment variables to be set:

* ``PETSC_DIR`` and ``PETSC_ARCH`` to point to the correct location for the PETSc installation.
Expand Down
2 changes: 1 addition & 1 deletion docs/source/element_list.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from finat.ufl.elementlist import ufl_elements
# ~ from ufl.finiteelement.elementlist import ufl_elements
from tsfc.finatinterface import supported_elements
from finat.element_factory import supported_elements
import csv

shape_names = {
Expand Down
10 changes: 9 additions & 1 deletion docs/source/events.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,18 @@
Firedrake events
----------------

Firedrake USA'25
~~~~~~~~~~~~~~~~

The ninth Firedrake user and developer workshop will be held 28 February
and 1 March 2025 at Baylor University in Texas, USA. For more information
see :doc:`the workshop page <firedrake_usa_25>`.


Firedrake '24
~~~~~~~~~~~~~

The eighth Firedrake user and developer workshop will be held
The eighth Firedrake user and developer workshop was held
between 16-18 September 2024 at the University of Oxford. For more
information see :doc:`the workshop page <firedrake_24>`.

Expand Down
4 changes: 1 addition & 3 deletions docs/source/firedrake_usa_20.rst
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,7 @@ Organising Committee
University of Washington.
* `David Ham <https://www.imperial.ac.uk/people/david.ham>`_, Imperial
College London.
* `Lawrence Mitchell
<https://www.dur.ac.uk/computer.science/staff/profile/?id=17243>`_,
Durham University.
* Lawrence Mitchell, Durham University.


Further details
Expand Down
97 changes: 97 additions & 0 deletions docs/source/firedrake_usa_25.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
:orphan: true

.. title:: Firedrake USA '25

.. image:: images/baylor.jpg
:alt: Baylor University
:width: 100%
:align: center

Firedrake USA'25
----------------

The ninth Firedrake user and developer workshop will be held at
`Baylor University
<https://math.artsandsciences.baylor.edu>`__ from 28 February-1 March 2025.

The workshop will be an opportunity for Firedrake users and developers
to discuss the latest developments in the
project, anticipated future developments, and how Firedrake can be used
in the numerical solution of partial differential equations. The event
will provide Firedrake users with the opportunity to interact directly
with developers and with other users.

The conference will begin with a tutorial session on the morning of 28 February and end on the evening of 1 March.


Conference venue
----------------

The conference will take place in the Bill Daniel Student Center in Room 202 in the heart of the Baylor campus. A `campus map <https://map.baylor.edu/>`__ is available online, and both Apple Maps and Google Maps accurately locate the Bill Daniel Student Center.


Accommodation
-------------

We have reserved a block of hotel rooms at SpringHill Suites Waco, about a 15 minute walk from the Bill Daniel Student Center. Follow `this link <https://www.marriott.com/event-reservations/reservation-link.mi?id=1734040121673&key=GRP&guestreslink2=true&app=resvlink/>`__ to hold your room. The group rate is only available until 20 January 2025.


Conference dinner
-----------------

The conference dinner will be held Friday night at the Baylor Club in McLane Stadium. The dinner is included with the registration fee.


Registration
------------

Registration will be open soon.

The registration fees are as follows:

.. list-table::
:widths: 25 50
:header-rows: 0

* - Student:
- $50
* - Non-student:
- $200

The `SIAM Texas-Louisiana Section <https://www.siam.org/get-involved/connect-with-a-community/sections/siam-texas-louisiana-section/>`__ is providing some support for students currently attending universities in Texas or Louisiana to attend.
Conference registration is coming soon.



Abstract submission
-------------------

Abstracts can be submitted `via EasyChair <https://easychair.org/conferences/?conf=firedrakeusa25>`__.



Support
-------

The conference has been kindly supported by the SIAM TX-LA Section and EPSRC.


Travel to Waco
--------------

* By air: Waco has a small airport. There is daily service between Waco and Dallas/Fort Worth International Airport via American Airlines.

* By ground: We are less than two hours by car from the Dallas and Austin airports, and just under three hours from Bush Intercontinental Airport in Houston. Additionally, Waco is reachable by bus services such as Greyhound and FlixBus.

* Parking on campus: Baylor has plenty of visitor parking for your personal or rental vehicle, but consult `these instructions <https://dps.web.baylor.edu/parking-transportation/visitors>`__ and make sure to `register your vehicle <https://dps.web.baylor.edu/parking-transportation/visitors/visitor-parking-permit>`__.



Organising committee
--------------------

* `Robert Kirby <https://sites.baylor.edu/robert_kirby/>`__, Baylor University
* `David Ham <https://profiles.imperial.ac.uk/david.ham>`__, Imperial College London



Binary file added docs/source/images/baylor.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 3 additions & 2 deletions docs/source/parallelism.rst
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,12 @@ firedrake installer to use it, by running:

.. code-block:: shell
python3 firedrake-install --mpiexec=mpiexec --mpicc=mpicc --mpicxx=mpicxx --mpif90=mpif90
python3 firedrake-install --mpiexec=mpiexec --mpicc=mpicc --mpicxx=mpicxx --mpif90=mpif90 --mpihome mpihome
where ``mpiexec``, ``mpicc``, ``mpicxx``, and ``mpif90`` are the
commands to run an MPI job and to compile C, C++, and Fortran 90 code,
respectively.
respectively. ``mpihome`` is an extra variable that must point to the
root directory of the MPI installation (e.g. ``/usr`` or ``/opt/mpich``).

Printing in parallel
====================
Expand Down
Loading

0 comments on commit 96bf913

Please sign in to comment.