Skip to content

Commit

Permalink
Merge with main.
Browse files Browse the repository at this point in the history
MTCam committed Jul 19, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
2 parents e2db31a + 7181e8b commit 4410722
Showing 49 changed files with 1,054 additions and 917 deletions.
13 changes: 4 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -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
6 changes: 3 additions & 3 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -106,10 +106,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

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:
@@ -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
@@ -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__)


@@ -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)
@@ -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()
@@ -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:
@@ -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),
@@ -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)
@@ -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)

@@ -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)
@@ -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)

32 changes: 15 additions & 17 deletions examples/advection/var-velocity.py
Original file line number Diff line number Diff line change
@@ -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__)


@@ -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)
@@ -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, "-")
@@ -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)

@@ -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 = {
@@ -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
)
@@ -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
26 changes: 13 additions & 13 deletions examples/advection/weak.py
Original file line number Diff line number Diff line change
@@ -23,22 +23,22 @@
THE SOFTWARE.
"""

import logging
import os

import numpy as np
import numpy.linalg as la

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

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


import logging
logger = logging.getLogger(__name__)


@@ -58,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)
@@ -69,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, "-")
@@ -89,7 +89,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)

@@ -131,9 +131,9 @@ def main(ctx_factory, dim=2, order=4, visualize=False):
[np.linspace(-d/2, d/2, npoints) for _ in range(dim)],
order=order)

from grudge import DiscretizationCollection
from grudge.discretization import make_discretization_collection

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

# }}}

Loading

0 comments on commit 4410722

Please sign in to comment.