Skip to content
Open
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
e0a29e8
working on cpp verification
mscroggs Apr 1, 2026
996ae6f
simplefem++
mscroggs Apr 1, 2026
9da3b8d
working towards jittable C++
mscroggs Apr 1, 2026
83a0471
fix paths
mscroggs Apr 1, 2026
e4c7180
trying to get cpp working
mscroggs Apr 8, 2026
1da5a7d
working on cpp interface
mscroggs Apr 9, 2026
322f9f1
it works!!
mscroggs Apr 9, 2026
cf8505f
indentataion, and a little bit of simplifying
mscroggs Apr 9, 2026
f7ec08d
ruff format
mscroggs Apr 9, 2026
71d26b4
mypy
mscroggs Apr 9, 2026
2a90d14
simplify
mscroggs Apr 9, 2026
41eadb0
pydocstyle
mscroggs Apr 10, 2026
b75d20e
move simplefempp into simplefem.py
mscroggs Apr 10, 2026
d879e10
add test that C++ jit works
mscroggs Apr 10, 2026
8f03d84
mdpsan license
mscroggs Apr 10, 2026
a445eca
Merge branch 'main' into mscroggs/cpp
mscroggs Apr 10, 2026
5763bdb
website build tools version
mscroggs Apr 10, 2026
ad98ff2
simplefempp
mscroggs Apr 10, 2026
026826b
add documentation
mscroggs Apr 14, 2026
51de709
@classmethod, ruff
mscroggs Apr 14, 2026
746f763
list[]
mscroggs Apr 14, 2026
8238e13
rename file
mscroggs Apr 15, 2026
c9d674a
Merge branch 'main' into mscroggs/cpp
mscroggs Apr 23, 2026
90dc6cc
Merge branch 'main' into mscroggs/cpp
mscroggs May 5, 2026
4530ea8
Merge branch 'main' into mscroggs/cpp
mscroggs May 18, 2026
8a2c042
Merge branch 'main' into mscroggs/cpp
mscroggs Jun 25, 2026
f4615fd
Merge branch 'main' into mscroggs/cpp
mscroggs Jul 28, 2026
8088129
ruff updates
mscroggs Jul 28, 2026
eba8cbd
move replacer to function not lambda function
mscroggs Jul 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/test-and-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,9 @@ jobs:
- run: python3 verify.py --fail-on-missing-libraries --impl simplefem --assert-passing --print-reasons
name: Check that simplefem verification passes

- run: python3 verify.py --fail-on-missing-libraries --impl simplefempp --assert-passing --print-reasons
name: Check that simplefem++ verification passes

- run: python3 verify.py verification-serial.json --test auto --fail-on-missing-libraries
name: Run verification test in serial
- run: python3 verify.py verification-4.json --test auto --processes 4 --fail-on-missing-libraries
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ is released under an [MIT license](LICENSE.txt).
The content of the DefElement website itself (including `data/`, `elements/`, `files/`, `pages/`, `people/`)
is released under a [Creative Commons Attribution 4.0 International (CC BY 4.0) license](LICENSE-CC.txt).

Font Awesome (`files/fontawesome`) is released under a [Font Awesome Free License](files/fontawesome/LICENSE.txt).
Font Awesome (`files/fontawesome`) is released under a [Font Awesome Free license](files/fontawesome/LICENSE.txt).

The Kokkos implementation of mdspan (`defelement/implementations/jit/cpp/mdspan.hpp`) is released under an [Apache 2.0 license with LLVM exceptions](https://kokkos.org/LICENSE/).

## Archive
Archived snapshots of code for building DefElement and website builds can be found at https://doi.org/10.5281/zenodo.17904468
8 changes: 4 additions & 4 deletions build.py
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ def write_html_page(
libraries = [(i, j.name, j.url, j.install) for i, j in implementations.items()]
libraries.sort(key=lambda i: i[0])
for codename, libname, url, pip in libraries:
if not include_simplefem and codename == "simplefem":
if not include_simplefem and codename in ["simplefem", "simplefempp"]:
continue
jscodename = jsify(libname)
code_examples = {}
Expand Down Expand Up @@ -973,7 +973,7 @@ def write_html_page(
if i.startswith("*(") and i.endswith(")"):
continue
vs.append(i)
if not include_simplefem and i == "simplefem":
if not include_simplefem and i in ["simplefem", "simplefempp"]:
continue
content += f"<td><a href='/verification/{i}.html'>{implementations[i].name}</a></td>"
long_content += (
Expand All @@ -987,7 +987,7 @@ def write_html_page(
row = "<tr>"
row += f"<td><a href='/elements/{e.filename}.html'>{e.html_name}</a></td>"
for i in vs:
if not include_simplefem and i == "simplefem":
if not include_simplefem and i in ["simplefem", "simplefempp"]:
continue
row += "<td>"
if e.filename in verification and i in verification[e.filename]:
Expand Down Expand Up @@ -1147,7 +1147,7 @@ def write_html_page(
"</tr>"
"</table>"
)
if not include_simplefem and i == "simplefem":
if not include_simplefem and i in ["simplefem", "simplefempp"]:
continue
c += (
"<tr>"
Expand Down
1 change: 1 addition & 0 deletions defelement/implementations/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
VariantNotImplemented,
parse_example,
)
from defelement.implementations import jit

__all__ = [
"DegreeNotImplemented",
Expand Down
2 changes: 1 addition & 1 deletion defelement/implementations/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ def examples(cls, element: Element, language: str) -> str:
code += "\n\n"
if language == "python":
code += "# "
elif language in ["rust", "c++", "c"]:
elif language in ["rust", "cpp", "c"]:
code += "// "
else:
raise ValueError(f"Unsupported language: {language}")
Expand Down
4 changes: 4 additions & 0 deletions defelement/implementations/jit/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
"""Just-in-time compilation."""

from defelement.implementations.jit.argument_types import array, ndarray, integer, double
from defelement.implementations.jit.cpp import compile as cpp
Loading
Loading