Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • inducer/meshmode
  • eshoag2/meshmode
  • kaushikcfd/meshmode
  • xywei/meshmode
  • fikl2/meshmode
  • cory/meshmode
  • ben_sepanski/meshmode
  • njchris2/meshmode
8 results
Show changes
Commits on Source (914)
Showing
with 379 additions and 613 deletions
sudo chown -R $(whoami) /github/home || true
sudo chmod -R a+rwX /github/home || true
sudo chmod -R a+rwX /__w || true
sudo apt update
sudo apt upgrade -y
sudo apt install time
sudo apt install -y pocl-opencl-icd ocl-icd-opencl-dev
. /home/firedrake/firedrake/bin/activate
. "/home/firedrake/myvenv/bin/activate"
grep -v loopy requirements.txt > /tmp/myreq.txt
sed -i s/pyopencl.git/pyopencl.git@v2020.2.2/ /tmp/myreq.txt
# no need for these in the Firedrake tests
sed -i "/boxtree/ d" /tmp/myreq.txt
sed -i "/sumpy/ d" /tmp/myreq.txt
sed -i "/pytential/ d" /tmp/myreq.txt
sed -i "/pyopencl/ d" /tmp/myreq.txt
# This shouldn't be necessary, but...
# https://github.com/inducer/meshmode/pull/48#issuecomment-687519451
pip install pybind11
pip install pytest
pip install -r /tmp/myreq.txt
pip install pyopencl[pocl]
# The Firedrake container is based on Py3.6 as of 2020-10-10, which
# doesn't have dataclasses.
pip install dataclasses
# Context: https://github.com/OP2/PyOP2/pull/605
python -m pip install --force-reinstall git+https://github.com/inducer/pytools.git
pip install pytest
# bring in up-to-date loopy
pip uninstall -y loopy
pip install "git+https://github.com/inducer/loopy.git#egg=loopy"
pip install -r /tmp/myreq.txt
pip install --force-reinstall git+https://github.com/inducer/loopy.git@firedrake-usable_for_potentials
pip install .
version: 2
updates:
# Set update schedule for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
# vim: sw=4
name: Gitlab mirror
on:
push:
branches:
- main
jobs:
autopush:
name: Automatic push to gitlab.tiker.net
if: startsWith(github.repository, 'inducer/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
curl -L -O https://tiker.net/ci-support-v0
. ./ci-support-v0
mirror_github_to_gitlab
env:
GITLAB_AUTOPUSH_KEY: ${{ secrets.GITLAB_AUTOPUSH_KEY }}
# vim: sw=4
......@@ -2,42 +2,72 @@ name: CI
on:
push:
branches:
- master
- main
pull_request:
schedule:
- cron: '17 3 * * 0'
concurrency:
group: ${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
flake8:
name: Flake8
typos:
name: Typos
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
-
uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v4
- uses: crate-ci/typos@master
ruff:
name: Ruff
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- name: "Main Script"
run: |
pip install ruff
ruff check
pylint:
name: Pylint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Main Script"
run: |
echo "- scipy" >> .test-conda-env-py3.yml
USE_CONDA_BUILD=1
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/master/prepare-and-run-pylint.sh
. ./prepare-and-run-pylint.sh "$(basename $GITHUB_REPOSITORY)" examples/*.py test/test_*.py
mypy:
name: Mypy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Main Script"
run: |
curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/prepare-and-run-flake8.sh
. ./prepare-and-run-flake8.sh "$(basename $GITHUB_REPOSITORY)" test examples
curl -L -O https://tiker.net/ci-support-v0
. ./ci-support-v0
build_py_project_in_conda_env
python -m pip install mypy
./run-mypy.sh
pytest3:
name: Pytest Conda Py3
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: "Main Script"
run: |
sudo apt update
sudo apt install octave openmpi-bin libopenmpi-dev
sudo apt update && sudo apt install octave
CONDA_ENVIRONMENT=.test-conda-env-py3.yml
export MPLBACKEND=Agg
curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/ci-support.sh
. ./ci-support.sh
curl -L -O https://tiker.net/ci-support-v0
. ./ci-support-v0
build_py_project_in_conda_env
with_echo python -m pip install mpi4py
test_py_project
firedrake:
......@@ -46,13 +76,31 @@ jobs:
container:
image: 'firedrakeproject/firedrake'
steps:
- uses: actions/checkout@v1
- name: "Checkout"
run: |
cd /home/firedrake
mkdir meshmode
cd meshmode
git init
git remote add origin "https://github.com/$GITHUB_REPOSITORY.git"
git fetch origin "$GITHUB_REF"
git checkout FETCH_HEAD
- name: "Make a venv"
run: |
cd /home/firedrake
python3 -m venv --system-site-packages myvenv
- name: "Dependencies"
run: |
cd /home/firedrake/meshmode
. .ci/install-for-firedrake.sh
- name: "Test"
run: |
. /home/firedrake/firedrake/bin/activate
cd /home/firedrake/meshmode
. /home/firedrake/myvenv/bin/activate
cd test
python -m pytest --tb=native -rxsw test_firedrake_interop.py
......@@ -62,44 +110,72 @@ jobs:
container:
image: 'firedrakeproject/firedrake'
steps:
- uses: actions/checkout@v1
- name: "Checkout"
run: |
cd /home/firedrake
mkdir meshmode
cd meshmode
git init
git remote add origin "https://github.com/$GITHUB_REPOSITORY.git"
git fetch origin "$GITHUB_REF"
git checkout FETCH_HEAD
- name: "Make a venv"
run: |
cd /home/firedrake
python3 -m venv --system-site-packages myvenv
- name: "Dependencies"
run: |
cd /home/firedrake/meshmode
. .ci/install-for-firedrake.sh
- name: "Examples"
run: |
. /home/firedrake/firedrake/bin/activate
cd /home/firedrake/meshmode
. /home/firedrake/myvenv/bin/activate
. ./.ci/run_firedrake_examples.sh
examples3:
name: Examples Conda Py3
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: "Main Script"
run: |
export MPLBACKEND=Agg
CONDA_ENVIRONMENT=.test-conda-env-py3.yml
USE_CONDA_BUILD=1
curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-py-project-and-run-examples.sh
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-py-project-and-run-examples.sh
. ./build-py-project-and-run-examples.sh
# Test lazy eval
rm -f *.vtu
python simple-dg.py --lazy
docs:
name: Documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
-
uses: actions/setup-python@v1
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: "Main Script"
run: |
CONDA_ENVIRONMENT=.test-conda-env-py3.yml
curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/ci-support.sh
# texlive is needed for sphinxcontrib-tikz
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
texlive-pictures texlive-latex-extra graphviz pdf2svg
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/ci-support.sh
. ci-support.sh
# https://github.com/sphinx-contrib/tikz/issues/21
export EXTRA_INSTALL="sphinxcontrib-tikz!=0.4.18"
build_py_project_in_conda_env
conda install graphviz
# Work around
# intersphinx inventory 'https://firedrakeproject.org/objects.inv' not fetchable
......@@ -111,4 +187,24 @@ jobs:
build_docs
downstream_tests:
strategy:
fail-fast: false
matrix:
downstream_project: [grudge, pytential, mirgecom, mirgecom_examples]
name: Tests for downstream project ${{ matrix.downstream_project }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Main Script"
env:
DOWNSTREAM_PROJECT: ${{ matrix.downstream_project }}
run: |
curl -L -O https://tiker.net/ci-support-v0
. ./ci-support-v0
if [[ "$DOWNSTREAM_PROJECT" == "grudge" && "$GITHUB_HEAD_REF" == "group-constr-drop-index" ]]; then
DOWNSTREAM_PROJECT=https://github.com/inducer/grudge.git@grad-test-overint
fi
test_downstream "$DOWNSTREAM_PROJECT"
# vim: sw=4
......@@ -14,8 +14,15 @@ distribute*tar.gz
a.out
*.vtu
*.pvtu
*.h5
*.xmf
*.hdf
*.pdf
*.stl
.cache
.pytest_cache
.pylintrc.yml
.run-pylint.py
test/nodal-dg
Python 3 POCL:
script: |
export PY_EXE=python3
export PYOPENCL_TEST=portable:pthread
export PYOPENCL_TEST=portable:cpu
# cython is here because pytential (for now, for TS) depends on it
export EXTRA_INSTALL="pybind11 cython numpy mako mpi4py oct2py"
curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
export EXTRA_INSTALL="pybind11 cython numpy mako mpi4py h5py oct2py"
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
. ./build-and-test-py-project.sh
tags:
- python3
......@@ -22,7 +22,7 @@ Python 3 Nvidia Titan V:
export PYOPENCL_TEST=nvi:titan
export EXTRA_INSTALL="pybind11 cython numpy mako oct2py"
# cython is here because pytential (for now, for TS) depends on it
curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
. ./build-and-test-py-project.sh
tags:
- python3
......@@ -37,10 +37,10 @@ Python 3 POCL Examples:
script:
- test -n "$SKIP_EXAMPLES" && exit
- export PY_EXE=python3
- export PYOPENCL_TEST=portable:pthread
- export PYOPENCL_TEST=portable:cpu
# cython is here because pytential (for now, for TS) depends on it
- export EXTRA_INSTALL="pybind11 cython numpy mako matplotlib"
- curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-py-project-and-run-examples.sh
- curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-py-project-and-run-examples.sh
- ". ./build-py-project-and-run-examples.sh"
tags:
- python3
......@@ -49,35 +49,38 @@ Python 3 POCL Examples:
except:
- tags
Python 3 POCL Firedrake:
tags:
- "docker-runner"
image: "firedrakeproject/firedrake"
script:
- . .ci/install-for-firedrake.sh
- cd test
- python -m pytest --tb=native --junitxml=pytest.xml -rxsw test_firedrake_interop.py
artifacts:
reports:
junit: test/pytest.xml
Python 3 POCL Firedrake Examples:
tags:
- "docker-runner"
image: "firedrakeproject/firedrake"
script:
- . .ci/install-for-firedrake.sh
- . ./.ci/run_firedrake_examples.sh
artifacts:
reports:
junit: test/pytest.xml
# The machine shop is too old for the Firedrake container.
# Lawrence Mitchell says that they likely build PETSc with -march=native
# on something like Skylake.
#
# Python 3 POCL Firedrake:
# tags:
# - "docker-runner"
# image: "firedrakeproject/firedrake"
# script:
# - . .ci/install-for-firedrake.sh
# - cd test
# - python -m pytest --tb=native --junitxml=pytest.xml -rxsw test_firedrake_interop.py
# artifacts:
# reports:
# junit: test/pytest.xml
#
# Python 3 POCL Firedrake Examples:
# tags:
# - "docker-runner"
# image: "firedrakeproject/firedrake"
# script:
# - . .ci/install-for-firedrake.sh
# - . ./.ci/run_firedrake_examples.sh
# artifacts:
# reports:
# junit: test/pytest.xml
Python 3 Conda:
script: |
CONDA_ENVIRONMENT=.test-conda-env-py3.yml
export PYOPENCL_TEST=portable:cpu
export MPLBACKEND=Agg
curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project-within-miniconda.sh
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project-within-miniconda.sh
. ./build-and-test-py-project-within-miniconda.sh
tags:
# - docker-runner
......@@ -88,17 +91,56 @@ Python 3 Conda:
Documentation:
script:
- EXTRA_INSTALL="pybind11 cython numpy"
- curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-docs.sh
- ". ./build-docs.sh"
# https://github.com/sphinx-contrib/tikz/issues/21
- EXTRA_INSTALL="pybind11 cython numpy sphinxcontrib-tikz!=0.4.18"
- curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-docs.sh
- . ./build-docs.sh
tags:
- python3
Flake8:
script:
- curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/prepare-and-run-flake8.sh
- . ./prepare-and-run-flake8.sh "$CI_PROJECT_NAME" test examples
Ruff:
script: |
pipx install ruff
ruff check
tags:
- docker-runner
except:
- tags
Pylint:
script: |
export PY_EXE=python3
EXTRA_INSTALL="Cython pybind11 numpy mako matplotlib scipy mpi4py h5py oct2py"
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/master/prepare-and-run-pylint.sh
. ./prepare-and-run-pylint.sh "$CI_PROJECT_NAME" examples/*.py test/test_*.py
tags:
- python3
except:
- tags
Mypy:
script: |
EXTRA_INSTALL="Cython mpi4py"
curl -L -O https://tiker.net/ci-support-v0
. ./ci-support-v0
build_py_project_in_venv
python -m pip install mypy
./run-mypy.sh
tags:
- python3
except:
- tags
Downstream:
parallel:
matrix:
- DOWNSTREAM_PROJECT: [grudge, pytential, mirgecom, mirgecom_examples]
tags:
- large-node
- "docker-runner"
script: |
curl -L -O https://tiker.net/ci-support-v0
. ./ci-support-v0
test_downstream "$DOWNSTREAM_PROJECT"
# vim: sw=2
- arg: py-version
val: '3.10'
- arg: ignore
val:
- firedrake
- to_firedrake.py
- from_firedrake.py
- test_firedrake_interop.py
- arg: extension-pkg-whitelist
val: mayavi
......@@ -6,9 +6,10 @@ channels:
dependencies:
- python=3
- git
- libhwloc=2
- numpy
- libhwloc=1
- pocl
# 3.1 needed for SVM functionality
- pocl>=3.1
- mako
- pyopencl
- islpy
......@@ -23,7 +24,14 @@ dependencies:
# for pymetis
- pybind11
# for MPI-based tests
- openmpi
- mpi4py
# for xdmf/hdf5 visualizer
- h5py=*=mpi_openmpi*
# Only needed to make pylint succeed
- matplotlib
- matplotlib-base
- pip
meshmode: High-Order Meshes and Discontinuous Function Spaces
=============================================================
.. image:: https://gitlab.tiker.net/inducer/meshmode/badges/master/pipeline.svg
.. image:: https://gitlab.tiker.net/inducer/meshmode/badges/main/pipeline.svg
:alt: Gitlab Build Status
:target: https://gitlab.tiker.net/inducer/meshmode/commits/master
.. image:: https://github.com/inducer/meshmode/workflows/CI/badge.svg
:target: https://gitlab.tiker.net/inducer/meshmode/commits/main
.. image:: https://github.com/inducer/meshmode/actions/workflows/ci.yml/badge.svg
:alt: Github Build Status
:target: https://github.com/inducer/meshmode/actions?query=branch%3Amaster+workflow%3ACI
.. image:: https://badge.fury.io/py/meshmode.png
:target: https://github.com/inducer/meshmode/actions/workflows/ci.yml
.. image:: https://badge.fury.io/py/meshmode.svg
:alt: Python Package Index Release Page
:target: https://pypi.org/project/meshmode/
* `Source code on Github <https://github.com/inducer/meshmode>`_
* `Documentation <https://documen.tician.de/meshmode>`_
Meshmode provides the "boring bits" of high-order unstructured discretization,
for simplices (triangles, tetrahedra) and tensor products (quads, hexahedra).
Features:
.. TODO
- 1/2/3D, line/surface/volume discretizations in each, curvilinear supported.
- "Everything is a (separate) discretization." (mesh boundaries are, element surfaces are,
refined versions of the same mesh are) "Connections" transfer information
between discretizations.
- Periodic connectivity.
- Mesh partitioning (not just) for distributed execution (e.g. via MPI).
- Interpolatory, quadrature (overintegration), and modal element-local discretizations.
- Independent of execution environment (GPU/CPU, numpy, ...)
via `array contexts <https://github.com/inducer/arraycontext/>`__.
- Simple mesh refinement (via bisection). Adjacency currently only
maintained if conforming.
- Input from Gmsh, Visualization to Vtk (both high-order curvilinear).
- Easy data exchange with `Firedrake <https://www.firedrakeproject.org/>`__.
Meshmode emerged as the shared discretization layer for `pytential
<https://github.com/inducer/pytential/>`__ (layer potentials) and `grudge
<https://github.com/inducer/grudge>`__ (discontinuous Galerkin).
Places on the web related to meshmode:
* `Source code on Github <https://github.com/inducer/meshmode>`__
* `Documentation <https://documen.tician.de/meshmode>`__
# Makefile for Sphinx documentation
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = python -m sphinx
PAPER =
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?= -n
SPHINXBUILD ?= python $(shell which sphinx-build)
SOURCEDIR = .
BUILDDIR = _build
# User-friendly check for sphinx-build
# ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
# $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from https://sphinx-doc.org/)
# endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
# Put it first so that "make" without argument is like "make help".
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/meshmode.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/meshmode.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/meshmode"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/meshmode"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
.PHONY: help Makefile
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
......@@ -7,3 +7,8 @@ Array Contexts
==============
.. automodule:: meshmode.array_context
Metadata for Program Transformation
===================================
.. automodule:: meshmode.transform_metadata
# -*- coding: utf-8 -*-
#
# meshmode documentation build configuration file, created by
# sphinx-quickstart on Thu Jun 5 15:22:45 2014.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
from importlib import metadata
from urllib.request import urlopen
import sys # noqa: F401
import os # noqa: F401
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
_conf_url = \
"https://raw.githubusercontent.com/inducer/sphinxconfig/main/sphinxconfig.py"
with urlopen(_conf_url) as _inf:
exec(compile(_inf.read(), _conf_url, "exec"), globals())
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = "1.0"
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named "sphinx.ext.*") or your custom
# ones.
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.doctest",
"sphinx.ext.intersphinx",
"sphinx.ext.mathjax",
extensions.extend([ # noqa: F821
"sphinx.ext.graphviz",
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]
# The suffix of source filenames.
source_suffix = ".rst"
# The encoding of source files.
#source_encoding = "utf-8-sig"
# The master toctree document.
master_doc = "index"
# General information about the project.
project = u"meshmode"
copyright = u"2014, Andreas Klöckner"
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
ver_dic = {}
exec(
compile(
open("../meshmode/version.py").read(), "../meshmode/version.py", "exec"),
ver_dic)
version = ".".join(str(x) for x in ver_dic["VERSION"])
# The full version, including alpha/beta/rc tags.
release = ver_dic["VERSION_TEXT"]
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ["_build"]
# The reST default role (used for this markup: `text`) to use for all
# documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = "sphinx"
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
#keep_warnings = False
# -- Options for HTML output ----------------------------------------------
html_theme = "alabaster"
html_theme_options = {
"extra_nav_links": {
"🚀 Github": "https://github.com/inducer/meshmode",
"💾 Download Releases": "https://pypi.org/project/meshmode",
}
}
html_sidebars = {
"**": [
"about.html",
"navigation.html",
"relations.html",
"searchbox.html",
]
}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = []
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#html_extra_path = []
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
"sphinxcontrib.tikz",
])
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
tikz_tikzlibraries = "decorations.markings"
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
copyright = "2014-2024, Meshmode contributors"
release = metadata.version("meshmode")
version = ".".join(release.split(".")[:2])
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = "meshmodedoc"
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ("letterpaper" or "a4paper").
#"papersize": "letterpaper",
# The font size ("10pt", "11pt" or "12pt").
#"pointsize": "10pt",
# Additional stuff for the LaTeX preamble.
#"preamble": '',
intersphinx_mapping = {
"arraycontext": ("https://documen.tician.de/arraycontext", None),
"fenics": ("https://fenics.readthedocs.io/projects/fiat/en/latest", None),
"FInAT": ("https://finat.github.io/FInAT/", None),
"firedrake": ("https://www.firedrakeproject.org", None),
"gmsh_interop": ("https://documen.tician.de/gmsh_interop", None),
"h5py": ("https://docs.h5py.org/en/stable", None),
"loopy": ("https://documen.tician.de/loopy", None),
"meshpy": ("https://documen.tician.de/meshpy", None),
"modepy": ("https://documen.tician.de/modepy", None),
"mpi4py": ("https://mpi4py.readthedocs.io/en/stable", None),
"numpy": ("https://numpy.org/doc/stable", None),
"pymetis": ("https://documen.tician.de/pymetis", None),
"pyopencl": ("https://documen.tician.de/pyopencl", None),
"python": ("https://docs.python.org/3", None),
"pytools": ("https://documen.tician.de/pytools", None),
"recursivenodes": ("https://tisaac.gitlab.io/recursivenodes", None),
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
("index", "meshmode.tex", u"meshmode Documentation",
u"Andreas Klöckner", "manual"),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# Some modules need to import things just so that sphinx can resolve symbols in
# type annotations. Often, we do not want these imports (e.g. of PyOpenCL) when
# in normal use (because they would introduce unintended side effects or hard
# dependencies). This flag exists so that these imports only occur during doc
# build. Since sphinx appears to resolve type hints lexically (as it should),
# this needs to be cross-module (since, e.g. an inherited arraycontext
# docstring can be read by sphinx when building meshmode, a dependent package),
# this needs a setting of the same name across all packages involved, that's
# why this name is as global-sounding as it is.
import sys
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
("index", "meshmode", u"meshmode Documentation",
[u"Andreas Klöckner"], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
("index", "meshmode", u"meshmode Documentation",
u"Andreas Klöckner", "meshmode", "One line description of project.",
"Miscellaneous"),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: "footnote", "no", or "inline".
#texinfo_show_urls = "footnote"
# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False
intersphinx_mapping = {
"https://docs.python.org/3/": None,
"https://numpy.org/doc/stable/": None,
"https://documen.tician.de/pytools": None,
"https://documen.tician.de/pyopencl": None,
"https://documen.tician.de/meshpy": None,
"https://documen.tician.de/modepy": None,
"https://documen.tician.de/loopy": None,
"https://documen.tician.de/gmsh_interop": None,
"https://firedrakeproject.org/": None,
"https://tisaac.gitlab.io/recursivenodes/": None,
"https://fenics.readthedocs.io/projects/fiat/en/latest/": None,
"https://finat.github.io/FInAT/": None,
}
autoclass_content = "class"
sys._BUILDING_SPHINX_DOCS = True
Distributed memory
==================
.. automodule:: meshmode.distributed
SOURCES := $(shell find $(SOURCEDIR) -name '*.tex')
OBJS := $(SOURCES:%.tex=%.png)
%.png: %.pdf
convert -density 300 $< -quality 90 $@
%.pdf: %.tex
pdflatex $<
.PHONY: all
all: $(OBJS)
rm -rf *.pdf *.out *.aux *.log
doc/images/facial-adjacency-group.png

7.75 KiB

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [thick] (0, 2) rectangle node {$0$}(3, 4);
\draw [thick] (3, 2) rectangle node {$1$}(6, 4);
\draw [thick] (0, 0) rectangle node {$2$} (4, 2);
\draw [thick] (4, 0) rectangle node {$3$}(6, 2);
\draw [line width=3pt, line cap=round, orange] (4, 0) -- (6, 0) -- (6, 2);
\draw [line width=3pt, line cap=round, magenta] (4, 0) -- (4, 2);
\draw [line width=3pt, line cap=round, green!60!black] (4, 2) -- (6, 2);
\end{tikzpicture}
\end{document}
doc/images/nodes-vertices.png

25.8 KiB

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\tikzset{-node-/.style={decoration={
markings,
mark=at position #1 with {
\draw[fill=green!60!black, line width=0.4] circle [radius=0.1];}},
postaction={decorate}}}
\begin{document}
\begin{tikzpicture}
\draw [thick, -node-=.33,-node-=0.66] (0, 0) to (3, 0);
\draw [thick, -node-=.33,-node-=0.66] (3, 0) to (0, 3);
\draw [thick, -node-=.33,-node-=0.66] (0, 3) to (0, 0);
\draw [fill=green!60!black] (0, 0) circle [radius=0.1];
\draw [fill=green!60!black] (3, 0) circle [radius=0.1];
\draw [fill=green!60!black] (0, 3) circle [radius=0.1];
\draw [fill=green!60!black] (1, 1) circle [radius=0.1];
\draw [ultra thick,bend left,->] (1.5, 2.5) to (3.5, 2.5);
\begin{scope}[shift={(4, 2)},rotate=-47]
\draw [thick, -node-=.33,-node-=0.66] (0, 0) to [bend left] (3, 0);
\draw [thick, -node-=.33,-node-=0.66] (3, 0) to [bend right] (0, 3);
\draw [thick, -node-=.33,-node-=0.66] (0, 3) to [bend right] (0, 0);
\draw [dashed] (3, 0) to [bend left] (5, 3);
\draw [dashed] (5, 3) to [bend right] (0, 3);
\draw [fill=magenta!60] (0, 0) circle [radius=0.15];
\draw [fill=magenta!60] (0, 3) circle [radius=0.15];
\draw [fill=magenta!60] (3, 0) circle [radius=0.15];
\draw [fill=green!60!black] (0.75, 1.5) circle [radius=0.1];
\end{scope}
\node at (1.5, -0.5) [below] {Reference Element};
\draw [fill=green!60!black] (0.25, -1.5) circle [radius=0.1]
node [right] {~ unit nodes};
\node at (6.5, -0.5) [below] {Mesh Element};
\draw [fill=green!60!black] (5.5, -1.5) circle [radius=0.1]
node [right] {~ nodes (unique)};
\draw [fill=magenta!60] (5.5, -2) circle [radius=0.15]
node [right] {~ vertices (shared)};
\end{tikzpicture}
\end{document}
doc/images/torus.png

80.6 KiB

......@@ -10,8 +10,11 @@ Contents:
array
discretization
connection
distributed
interop
misc
🚀 Github <https://github.com/inducer/meshmode>
💾 Download Releases <https://pypi.org/project/meshmode>
Indices and tables
==================
......