Skip to content

Commit

Permalink
Merge branch 'main' into add-tpe-dt-util
Browse files Browse the repository at this point in the history
  • Loading branch information
MTCam authored Jul 27, 2024
2 parents b3eff8b + 23fbc05 commit 1d8cc05
Show file tree
Hide file tree
Showing 51 changed files with 1,583 additions and 1,049 deletions.
9 changes: 5 additions & 4 deletions .github/workflows/autopush.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ on:
jobs:
autopush:
name: Automatic push to gitlab.tiker.net
if: startsWith(github.repository, 'inducer/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
mkdir ~/.ssh && echo -e "Host gitlab.tiker.net\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
eval $(ssh-agent) && echo "$GITLAB_AUTOPUSH_KEY" | ssh-add -
git fetch --unshallow
git push "[email protected]:inducer/$(basename $GITHUB_REPOSITORY).git" main
curl -L -O https://tiker.net/ci-support-v0
. ./ci-support-v0
mirror_github_to_gitlab
env:
GITLAB_AUTOPUSH_KEY: ${{ secrets.GITLAB_AUTOPUSH_KEY }}
Expand Down
18 changes: 4 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,15 @@ on:
- cron: '17 3 * * 0'

jobs:
flake8:
name: Flake8
ruff:
name: Ruff
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
-
uses: actions/setup-python@v5
with:
# matches compat target in setup.py
python-version: '3.8'
- name: "Main Script"
run: |
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/prepare-and-run-flake8.sh
. ./prepare-and-run-flake8.sh "$(basename $GITHUB_REPOSITORY)" examples test
pipx install ruff
ruff check
pylint:
name: Pylint
Expand Down Expand Up @@ -84,11 +79,6 @@ jobs:
echo "- matplotlib" >> .test-conda-env-py3.yml
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/ci-support.sh
# Work around regression introduced in
# https://github.com/sphinx-doc/sphinx/pull/11645
# see also https://github.com/sphinx-doc/sphinx/issues/11662
export CI_SUPPORT_SPHINX_VERSION_SPECIFIER="<7.2.5"
. ci-support.sh
build_py_project_in_conda_env
build_docs
Expand Down
11 changes: 3 additions & 8 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,6 @@ Python 3 Conda Examples:
Documentation:
script: |
# Work around regression introduced in
# https://github.com/sphinx-doc/sphinx/pull/11645
# see also https://github.com/sphinx-doc/sphinx/issues/11662
export CI_SUPPORT_SPHINX_VERSION_SPECIFIER="<7.2.5"
EXTRA_INSTALL="pybind11 numpy matplotlib"
curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-docs.sh
. ./build-docs.sh
Expand All @@ -106,10 +101,10 @@ Documentation:

Flake8:
script:
- curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/prepare-and-run-flake8.sh
- . ./prepare-and-run-flake8.sh "$CI_PROJECT_NAME" examples test
- pipx install ruff
- ruff check
tags:
- python3
- docker-runner
except:
- tags

Expand Down
42 changes: 15 additions & 27 deletions doc/conf.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import os
from importlib import metadata
from urllib.request import urlopen


_conf_url = \
"https://raw.githubusercontent.com/inducer/sphinxconfig/main/sphinxconfig.py"
with urlopen(_conf_url) as _inf:
Expand All @@ -8,37 +11,22 @@
extensions = globals()["extensions"] + [
"matplotlib.sphinxext.plot_directive"]

copyright = "2015-21, grudge contributors"
author = "grudge contributors"


def get_version():
conf = {}
src = "../grudge/version.py"
exec(
compile(open(src).read(), src, "exec"),
conf)
return conf["VERSION_TEXT"]


version = get_version()

# The full version, including alpha/beta/rc tags.
release = version
copyright = "2015-2024, Grudge contributors"
author = "Grudge contributors"
release = metadata.version("grudge")
version = ".".join(release.split(".")[:2])

intersphinx_mapping = {
"python": ("https://docs.python.org/3/", None),
"numpy": ("https://numpy.org/doc/stable/", None),
"pyopencl": ("https://documen.tician.de/pyopencl/", None),
"modepy": ("https://documen.tician.de/modepy/", None),
"pymbolic": ("https://documen.tician.de/pymbolic/", None),
"arraycontext": ("https://documen.tician.de/arraycontext/", None),
"meshmode": ("https://documen.tician.de/meshmode/", None),
"loopy": ("https://documen.tician.de/loopy/", None),
"meshmode": ("https://documen.tician.de/meshmode/", None),
"modepy": ("https://documen.tician.de/modepy/", None),
"mpi4py": ("https://mpi4py.readthedocs.io/en/stable", None),
}
"numpy": ("https://numpy.org/doc/stable/", None),
"pymbolic": ("https://documen.tician.de/pymbolic/", None),
"pyopencl": ("https://documen.tician.de/pyopencl/", None),
"python": ("https://docs.python.org/3/", None),
}

# index-page demo uses pyopencl via plot_directive
import os
# switch to "port:cpu" once we're firmly migrated to pocl 4.0
os.environ["PYOPENCL_TEST"] = "port:0"
os.environ["PYOPENCL_TEST"] = "port:cpu"
44 changes: 22 additions & 22 deletions examples/advection/surface.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,24 +25,23 @@
THE SOFTWARE.
"""

import logging
import os

import numpy as np

import pyopencl as cl
import pyopencl.tools as cl_tools

from grudge.array_context import PyOpenCLArrayContext

from meshmode.dof_array import flatten
from arraycontext import flatten
from meshmode.discretization.connection import FACE_RESTR_INTERIOR

from pytools.obj_array import make_obj_array

import grudge.dof_desc as dof_desc
import grudge.op as op
import grudge.geometry as geo
import grudge.op as op
from grudge.array_context import PyOpenCLArrayContext


import logging
logger = logging.getLogger(__name__)


Expand All @@ -62,8 +61,8 @@ def __init__(self, actx, dcoll, order, visualize=True):
import matplotlib.pyplot as pt
self.fig = pt.figure(figsize=(8, 8), dpi=300)

x = actx.thaw(dcoll.discr_from_dd(dof_desc.DD_VOLUME).nodes())
self.x = actx.to_numpy(flatten(actx.np.arctan2(x[1], x[0])))
x = actx.thaw(dcoll.discr_from_dd(dof_desc.DD_VOLUME_ALL).nodes())
self.x = actx.to_numpy(flatten(actx.np.arctan2(x[1], x[0]), self.actx))
elif self.ambient_dim == 3:
from grudge.shortcuts import make_visualizer
self.vis = make_visualizer(dcoll)
Expand All @@ -75,12 +74,12 @@ def __call__(self, evt, basename, overwrite=True):
return

if self.ambient_dim == 2:
u = self.actx.to_numpy(flatten(evt.state_component))
u = self.actx.to_numpy(flatten(evt.state_component, self.actx))

filename = "%s.png" % basename
filename = f"{basename}.png"
if not overwrite and os.path.exists(filename):
from meshmode import FileExistsError
raise FileExistsError("output file '%s' already exists" % filename)
raise FileExistsError(f"output file '{filename}' already exists")

ax = self.fig.gca()
ax.grid()
Expand All @@ -93,7 +92,7 @@ def __call__(self, evt, basename, overwrite=True):
self.fig.savefig(filename)
self.fig.clf()
elif self.ambient_dim == 3:
self.vis.write_vtk_file("%s.vtu" % basename, [
self.vis.write_vtk_file(f"{basename}.vtu", [
("u", evt.state_component)
], overwrite=overwrite)
else:
Expand Down Expand Up @@ -129,7 +128,7 @@ def main(ctx_factory, dim=2, order=4, use_quad=False, visualize=False):
# {{{ discretization

if dim == 2:
from meshmode.mesh.generation import make_curve_mesh, ellipse
from meshmode.mesh.generation import ellipse, make_curve_mesh
mesh = make_curve_mesh(
lambda t: radius * ellipse(1.0, t),
np.linspace(0.0, 1.0, resolution + 1),
Expand All @@ -147,9 +146,10 @@ def main(ctx_factory, dim=2, order=4, use_quad=False, visualize=False):
else:
qtag = None

from meshmode.discretization.poly_element import \
default_simplex_group_factory, \
QuadratureSimplexGroupFactory
from meshmode.discretization.poly_element import (
QuadratureSimplexGroupFactory,
default_simplex_group_factory,
)

discr_tag_to_group_factory[dof_desc.DISCR_TAG_BASE] = \
default_simplex_group_factory(base_dim=dim-1, order=order)
Expand All @@ -158,14 +158,14 @@ def main(ctx_factory, dim=2, order=4, use_quad=False, visualize=False):
discr_tag_to_group_factory[qtag] = \
QuadratureSimplexGroupFactory(order=4*order)

from grudge import DiscretizationCollection
from grudge.discretization import make_discretization_collection

dcoll = DiscretizationCollection(
dcoll = make_discretization_collection(
actx, mesh,
discr_tag_to_group_factory=discr_tag_to_group_factory
)

volume_discr = dcoll.discr_from_dd(dof_desc.DD_VOLUME)
volume_discr = dcoll.discr_from_dd(dof_desc.DD_VOLUME_ALL)
logger.info("ndofs: %d", volume_discr.ndofs)
logger.info("nelements: %d", volume_discr.mesh.nelements)

Expand Down Expand Up @@ -196,7 +196,7 @@ def rhs(t, u):
# check velocity is tangential
from grudge.geometry import normal

surf_normal = normal(actx, dcoll, dd=dof_desc.DD_VOLUME)
surf_normal = normal(actx, dcoll, dd=dof_desc.DD_VOLUME_ALL)

error = op.norm(dcoll, c.dot(surf_normal), 2)
logger.info("u_dot_n: %.5e", error)
Expand Down Expand Up @@ -236,7 +236,7 @@ def rhs(t, u):
overwrite=True
)

df = dof_desc.DOFDesc(FACE_RESTR_INTERIOR)
df = dof_desc.as_dofdesc(FACE_RESTR_INTERIOR)
face_discr = dcoll.discr_from_dd(df)
face_normal = geo.normal(actx, dcoll, dd=df)

Expand Down
42 changes: 20 additions & 22 deletions examples/advection/var-velocity.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,23 +23,22 @@
THE SOFTWARE.
"""

import logging
import os

import numpy as np

import pyopencl as cl
import pyopencl.tools as cl_tools

from grudge.array_context import PyOpenCLArrayContext

from meshmode.dof_array import flatten
from arraycontext import flatten
from meshmode.mesh import BTAG_ALL

from pytools.obj_array import flat_obj_array

import grudge.dof_desc as dof_desc
import grudge.op as op
from grudge.array_context import PyOpenCLArrayContext


import logging
logger = logging.getLogger(__name__)


Expand All @@ -59,8 +58,8 @@ def __init__(self, actx, dcoll, order, visualize=True, ylim=None):
self.fig = pt.figure(figsize=(8, 8), dpi=300)
self.ylim = ylim

volume_discr = dcoll.discr_from_dd(dof_desc.DD_VOLUME)
self.x = actx.to_numpy(flatten(actx.thaw(volume_discr.nodes()[0])))
volume_discr = dcoll.discr_from_dd(dof_desc.DD_VOLUME_ALL)
self.x = actx.to_numpy(flatten(volume_discr.nodes()[0], self.actx))
else:
from grudge.shortcuts import make_visualizer
self.vis = make_visualizer(dcoll)
Expand All @@ -70,12 +69,12 @@ def __call__(self, evt, basename, overwrite=True):
return

if self.dim == 1:
u = self.actx.to_numpy(flatten(evt.state_component))
u = self.actx.to_numpy(flatten(evt.state_component, self.actx))

filename = "%s.png" % basename
filename = f"{basename}.png"
if not overwrite and os.path.exists(filename):
from meshmode import FileExistsError
raise FileExistsError("output file '%s' already exists" % filename)
raise FileExistsError(f"output file '{filename}' already exists")

ax = self.fig.gca()
ax.plot(self.x, u, "-")
Expand All @@ -89,7 +88,7 @@ def __call__(self, evt, basename, overwrite=True):
self.fig.savefig(filename)
self.fig.clf()
else:
self.vis.write_vtk_file("%s.vtu" % basename, [
self.vis.write_vtk_file(f"{basename}.vtu", [
("u", evt.state_component)
], overwrite=overwrite)

Expand Down Expand Up @@ -131,8 +130,7 @@ def main(ctx_factory, dim=2, order=4, use_quad=False, visualize=False,
npoints_per_axis=(npoints,)*dim,
order=order)

from meshmode.discretization.poly_element import \
QuadratureSimplexGroupFactory
from meshmode.discretization.poly_element import QuadratureSimplexGroupFactory

if use_quad:
discr_tag_to_group_factory = {
Expand All @@ -141,9 +139,9 @@ def main(ctx_factory, dim=2, order=4, use_quad=False, visualize=False,
else:
discr_tag_to_group_factory = {}

from grudge import DiscretizationCollection
from grudge.discretization import make_discretization_collection

dcoll = DiscretizationCollection(
dcoll = make_discretization_collection(
actx, mesh, order=order,
discr_tag_to_group_factory=discr_tag_to_group_factory
)
Expand All @@ -162,7 +160,7 @@ def f_halfcircle(x):
* (0.5+0.5*actx.np.tanh(500*(dist[0]))))

def zero_inflow_bc(dtag, t=0):
dd = dof_desc.DOFDesc(dtag, qtag)
dd = dof_desc.as_dofdesc(dtag, qtag)
return dcoll.discr_from_dd(dd).zeros(actx)

from grudge.models.advection import VariableCoefficientAdvectionOperator
Expand Down Expand Up @@ -215,12 +213,12 @@ def rhs(t, u):
norm_u = actx.to_numpy(op.norm(dcoll, event.state_component, 2))
plot(event, "fld-var-velocity-%04d" % step)

step += 1
logger.info("[%04d] t = %.5f |u| = %.5e", step, event.t, norm_u)
logger.info("[%04d] t = %.5f |u| = %.5e", step, event.t, norm_u)
# NOTE: These are here to ensure the solution is bounded for the
# time interval specified
assert norm_u < 1

# NOTE: These are here to ensure the solution is bounded for the
# time interval specified
assert norm_u < 1
step += 1

# }}}

Expand Down
Loading

0 comments on commit 1d8cc05

Please sign in to comment.