Skip to content

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux - #4214

Merged
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api
May 15, 2026
Merged

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux#4214
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api

Conversation

@jorgensd

@jorgensdjorgensd commented May 14, 2026

Copy link
Copy Markdown
Member

Attempt to resolve: #4213.
Seems like running pytests in xdist mode requires all gmsh models to have unique names. This has now been added.

Adds support for:

  • dolfinx.fem.assemble_scalar on mixed topology meshes.

  • Second order prism and pyramids (the ones currently supported are not the ones we use for Lagrange elements, as they are missing the middle node of the quadrilateral faces, similar to serendipity).

  • Split tests in two:

    • simplex meshes tested for order 1,2,3
    • mixed meshes tested for order 1 and 2
  • Supports reading in meshes with model_to_mesh for mixed meshes. No meshtags are read in as we do not have a way of constructing these yet.

  • Mixed meshes with order > 2 is not supported, as create_entity_permutations doesn't work on mixed meshes.

Gemini Pro was used to create the 3D mixed mesh with two cylinders on top of each other. All other coding was done by me with no LLM.

The test now uses all 4 cell types for the 3D test (tetra green, pyramid orange, hex red, wedge blue):
image

Comment threadpython/dolfinx/io/gmsh.py Fixed
@jorgensdjorgensd added the enhancement New feature or request label May 14, 2026
@jorgensd
jorgensd requested a review from nate-simeMay 14, 2026 17:40
@jorgensdjorgensd added the io label May 14, 2026
Comment threadpython/dolfinx/io/gmsh.py Outdated
Comment threadpython/dolfinx/io/gmsh.py Outdated
Co-authored-by: Jørgen Schartum Dokken <dokken92@gmail.com>
Comment threadpython/test/unit/mesh/test_higher_order_mesh.py Fixed
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated:
https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

@jorgensdjorgensd changed the title Mixed topology assemble scalar and gmsh apiMixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinuxMay 15, 2026
@jorgensdjorgensd added the ci Continuous Integration label May 15, 2026
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated: https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

Resolved by giving each gmsh model a name that is unique for parametrized tests.

@jhale

jhale commented May 15, 2026

Copy link
Copy Markdown
Member

Thanks for fixing this and also finishing a cool new feature!

My view is that gmsh.initialize() and gmsh.finalize() are not properly cleaning up global state between pytest function calls on the same process and so we should probably add this to all gmsh-related tests.

@jhale
jhale added this pull request to the merge queueMay 15, 2026
Merged via the queue into main with commit ddf078dMay 15, 2026
19 of 20 checks passed
@jhale
jhale deleted the dokken/mixed-topology-assemble-scalar-and-gmsh-api branch May 15, 2026 13:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciContinuous IntegrationenhancementNew feature or requestio

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Non-reproducible gmsh recombination issue in test_higher_order.py

3 participants

@jorgensd@jhale@nate-sime
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux by jorgensd · Pull Request #4214 · FEniCS/dolfinx · GitHub
Skip to content

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux - #4214

Merged
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api
May 15, 2026
Merged

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux#4214
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api

Conversation

@jorgensd

@jorgensdjorgensd commented May 14, 2026

Copy link
Copy Markdown
Member

Attempt to resolve: #4213.
Seems like running pytests in xdist mode requires all gmsh models to have unique names. This has now been added.

Adds support for:

  • dolfinx.fem.assemble_scalar on mixed topology meshes.

  • Second order prism and pyramids (the ones currently supported are not the ones we use for Lagrange elements, as they are missing the middle node of the quadrilateral faces, similar to serendipity).

  • Split tests in two:

    • simplex meshes tested for order 1,2,3
    • mixed meshes tested for order 1 and 2
  • Supports reading in meshes with model_to_mesh for mixed meshes. No meshtags are read in as we do not have a way of constructing these yet.

  • Mixed meshes with order > 2 is not supported, as create_entity_permutations doesn't work on mixed meshes.

Gemini Pro was used to create the 3D mixed mesh with two cylinders on top of each other. All other coding was done by me with no LLM.

The test now uses all 4 cell types for the 3D test (tetra green, pyramid orange, hex red, wedge blue):
image

Comment threadpython/dolfinx/io/gmsh.py Fixed
@jorgensdjorgensd added the enhancement New feature or request label May 14, 2026
@jorgensd
jorgensd requested a review from nate-simeMay 14, 2026 17:40
@jorgensdjorgensd added the io label May 14, 2026
Comment threadpython/dolfinx/io/gmsh.py Outdated
Comment threadpython/dolfinx/io/gmsh.py Outdated
Co-authored-by: Jørgen Schartum Dokken <dokken92@gmail.com>
Comment threadpython/test/unit/mesh/test_higher_order_mesh.py Fixed
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated:
https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

@jorgensdjorgensd changed the title Mixed topology assemble scalar and gmsh apiMixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinuxMay 15, 2026
@jorgensdjorgensd added the ci Continuous Integration label May 15, 2026
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated: https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

Resolved by giving each gmsh model a name that is unique for parametrized tests.

@jhale

jhale commented May 15, 2026

Copy link
Copy Markdown
Member

Thanks for fixing this and also finishing a cool new feature!

My view is that gmsh.initialize() and gmsh.finalize() are not properly cleaning up global state between pytest function calls on the same process and so we should probably add this to all gmsh-related tests.

@jhale
jhale added this pull request to the merge queueMay 15, 2026
Merged via the queue into main with commit ddf078dMay 15, 2026
19 of 20 checks passed
@jhale
jhale deleted the dokken/mixed-topology-assemble-scalar-and-gmsh-api branch May 15, 2026 13:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciContinuous IntegrationenhancementNew feature or requestio

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Non-reproducible gmsh recombination issue in test_higher_order.py

3 participants

@jorgensd@jhale@nate-sime
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux by jorgensd · Pull Request #4214 · FEniCS/dolfinx · GitHub
Skip to content

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux - #4214

Merged
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api
May 15, 2026
Merged

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux#4214
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api

Conversation

@jorgensd

@jorgensdjorgensd commented May 14, 2026

Copy link
Copy Markdown
Member

Attempt to resolve: #4213.
Seems like running pytests in xdist mode requires all gmsh models to have unique names. This has now been added.

Adds support for:

  • dolfinx.fem.assemble_scalar on mixed topology meshes.

  • Second order prism and pyramids (the ones currently supported are not the ones we use for Lagrange elements, as they are missing the middle node of the quadrilateral faces, similar to serendipity).

  • Split tests in two:

    • simplex meshes tested for order 1,2,3
    • mixed meshes tested for order 1 and 2
  • Supports reading in meshes with model_to_mesh for mixed meshes. No meshtags are read in as we do not have a way of constructing these yet.

  • Mixed meshes with order > 2 is not supported, as create_entity_permutations doesn't work on mixed meshes.

Gemini Pro was used to create the 3D mixed mesh with two cylinders on top of each other. All other coding was done by me with no LLM.

The test now uses all 4 cell types for the 3D test (tetra green, pyramid orange, hex red, wedge blue):
image

Comment threadpython/dolfinx/io/gmsh.py Fixed
@jorgensdjorgensd added the enhancement New feature or request label May 14, 2026
@jorgensd
jorgensd requested a review from nate-simeMay 14, 2026 17:40
@jorgensdjorgensd added the io label May 14, 2026
Comment threadpython/dolfinx/io/gmsh.py Outdated
Comment threadpython/dolfinx/io/gmsh.py Outdated
Co-authored-by: Jørgen Schartum Dokken <dokken92@gmail.com>
Comment threadpython/test/unit/mesh/test_higher_order_mesh.py Fixed
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated:
https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

@jorgensdjorgensd changed the title Mixed topology assemble scalar and gmsh apiMixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinuxMay 15, 2026
@jorgensdjorgensd added the ci Continuous Integration label May 15, 2026
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated: https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

Resolved by giving each gmsh model a name that is unique for parametrized tests.

@jhale

jhale commented May 15, 2026

Copy link
Copy Markdown
Member

Thanks for fixing this and also finishing a cool new feature!

My view is that gmsh.initialize() and gmsh.finalize() are not properly cleaning up global state between pytest function calls on the same process and so we should probably add this to all gmsh-related tests.

@jhale
jhale added this pull request to the merge queueMay 15, 2026
Merged via the queue into main with commit ddf078dMay 15, 2026
19 of 20 checks passed
@jhale
jhale deleted the dokken/mixed-topology-assemble-scalar-and-gmsh-api branch May 15, 2026 13:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciContinuous IntegrationenhancementNew feature or requestio

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Non-reproducible gmsh recombination issue in test_higher_order.py

3 participants

@jorgensd@jhale@nate-sime
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux by jorgensd · Pull Request #4214 · FEniCS/dolfinx · GitHub
Skip to content

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux - #4214

Merged
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api
May 15, 2026
Merged

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux#4214
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api

Conversation

@jorgensd

@jorgensdjorgensd commented May 14, 2026

Copy link
Copy Markdown
Member

Attempt to resolve: #4213.
Seems like running pytests in xdist mode requires all gmsh models to have unique names. This has now been added.

Adds support for:

  • dolfinx.fem.assemble_scalar on mixed topology meshes.

  • Second order prism and pyramids (the ones currently supported are not the ones we use for Lagrange elements, as they are missing the middle node of the quadrilateral faces, similar to serendipity).

  • Split tests in two:

    • simplex meshes tested for order 1,2,3
    • mixed meshes tested for order 1 and 2
  • Supports reading in meshes with model_to_mesh for mixed meshes. No meshtags are read in as we do not have a way of constructing these yet.

  • Mixed meshes with order > 2 is not supported, as create_entity_permutations doesn't work on mixed meshes.

Gemini Pro was used to create the 3D mixed mesh with two cylinders on top of each other. All other coding was done by me with no LLM.

The test now uses all 4 cell types for the 3D test (tetra green, pyramid orange, hex red, wedge blue):
image

Comment threadpython/dolfinx/io/gmsh.py Fixed
@jorgensdjorgensd added the enhancement New feature or request label May 14, 2026
@jorgensd
jorgensd requested a review from nate-simeMay 14, 2026 17:40
@jorgensdjorgensd added the io label May 14, 2026
Comment threadpython/dolfinx/io/gmsh.py Outdated
Comment threadpython/dolfinx/io/gmsh.py Outdated
Co-authored-by: Jørgen Schartum Dokken <dokken92@gmail.com>
Comment threadpython/test/unit/mesh/test_higher_order_mesh.py Fixed
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated:
https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

@jorgensdjorgensd changed the title Mixed topology assemble scalar and gmsh apiMixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinuxMay 15, 2026
@jorgensdjorgensd added the ci Continuous Integration label May 15, 2026
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated: https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

Resolved by giving each gmsh model a name that is unique for parametrized tests.

@jhale

jhale commented May 15, 2026

Copy link
Copy Markdown
Member

Thanks for fixing this and also finishing a cool new feature!

My view is that gmsh.initialize() and gmsh.finalize() are not properly cleaning up global state between pytest function calls on the same process and so we should probably add this to all gmsh-related tests.

@jhale
jhale added this pull request to the merge queueMay 15, 2026
Merged via the queue into main with commit ddf078dMay 15, 2026
19 of 20 checks passed
@jhale
jhale deleted the dokken/mixed-topology-assemble-scalar-and-gmsh-api branch May 15, 2026 13:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciContinuous IntegrationenhancementNew feature or requestio

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Non-reproducible gmsh recombination issue in test_higher_order.py

3 participants

@jorgensd@jhale@nate-sime
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux by jorgensd · Pull Request #4214 · FEniCS/dolfinx · GitHub
Skip to content

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux - #4214

Merged
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api
May 15, 2026
Merged

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux#4214
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api

Conversation

@jorgensd

@jorgensdjorgensd commented May 14, 2026

Copy link
Copy Markdown
Member

Attempt to resolve: #4213.
Seems like running pytests in xdist mode requires all gmsh models to have unique names. This has now been added.

Adds support for:

  • dolfinx.fem.assemble_scalar on mixed topology meshes.

  • Second order prism and pyramids (the ones currently supported are not the ones we use for Lagrange elements, as they are missing the middle node of the quadrilateral faces, similar to serendipity).

  • Split tests in two:

    • simplex meshes tested for order 1,2,3
    • mixed meshes tested for order 1 and 2
  • Supports reading in meshes with model_to_mesh for mixed meshes. No meshtags are read in as we do not have a way of constructing these yet.

  • Mixed meshes with order > 2 is not supported, as create_entity_permutations doesn't work on mixed meshes.

Gemini Pro was used to create the 3D mixed mesh with two cylinders on top of each other. All other coding was done by me with no LLM.

The test now uses all 4 cell types for the 3D test (tetra green, pyramid orange, hex red, wedge blue):
image

Comment threadpython/dolfinx/io/gmsh.py Fixed
@jorgensdjorgensd added the enhancement New feature or request label May 14, 2026
@jorgensd
jorgensd requested a review from nate-simeMay 14, 2026 17:40
@jorgensdjorgensd added the io label May 14, 2026
Comment threadpython/dolfinx/io/gmsh.py Outdated
Comment threadpython/dolfinx/io/gmsh.py Outdated
Co-authored-by: Jørgen Schartum Dokken <dokken92@gmail.com>
Comment threadpython/test/unit/mesh/test_higher_order_mesh.py Fixed
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated:
https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

@jorgensdjorgensd changed the title Mixed topology assemble scalar and gmsh apiMixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinuxMay 15, 2026
@jorgensdjorgensd added the ci Continuous Integration label May 15, 2026
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated: https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

Resolved by giving each gmsh model a name that is unique for parametrized tests.

@jhale

jhale commented May 15, 2026

Copy link
Copy Markdown
Member

Thanks for fixing this and also finishing a cool new feature!

My view is that gmsh.initialize() and gmsh.finalize() are not properly cleaning up global state between pytest function calls on the same process and so we should probably add this to all gmsh-related tests.

@jhale
jhale added this pull request to the merge queueMay 15, 2026
Merged via the queue into main with commit ddf078dMay 15, 2026
19 of 20 checks passed
@jhale
jhale deleted the dokken/mixed-topology-assemble-scalar-and-gmsh-api branch May 15, 2026 13:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciContinuous IntegrationenhancementNew feature or requestio

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Non-reproducible gmsh recombination issue in test_higher_order.py

3 participants

@jorgensd@jhale@nate-sime
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux by jorgensd · Pull Request #4214 · FEniCS/dolfinx · GitHub
Skip to content

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux - #4214

Merged
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api
May 15, 2026
Merged

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux#4214
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api

Conversation

@jorgensd

@jorgensdjorgensd commented May 14, 2026

Copy link
Copy Markdown
Member

Attempt to resolve: #4213.
Seems like running pytests in xdist mode requires all gmsh models to have unique names. This has now been added.

Adds support for:

  • dolfinx.fem.assemble_scalar on mixed topology meshes.

  • Second order prism and pyramids (the ones currently supported are not the ones we use for Lagrange elements, as they are missing the middle node of the quadrilateral faces, similar to serendipity).

  • Split tests in two:

    • simplex meshes tested for order 1,2,3
    • mixed meshes tested for order 1 and 2
  • Supports reading in meshes with model_to_mesh for mixed meshes. No meshtags are read in as we do not have a way of constructing these yet.

  • Mixed meshes with order > 2 is not supported, as create_entity_permutations doesn't work on mixed meshes.

Gemini Pro was used to create the 3D mixed mesh with two cylinders on top of each other. All other coding was done by me with no LLM.

The test now uses all 4 cell types for the 3D test (tetra green, pyramid orange, hex red, wedge blue):
image

Comment threadpython/dolfinx/io/gmsh.py Fixed
@jorgensdjorgensd added the enhancement New feature or request label May 14, 2026
@jorgensd
jorgensd requested a review from nate-simeMay 14, 2026 17:40
@jorgensdjorgensd added the io label May 14, 2026
Comment threadpython/dolfinx/io/gmsh.py Outdated
Comment threadpython/dolfinx/io/gmsh.py Outdated
Co-authored-by: Jørgen Schartum Dokken <dokken92@gmail.com>
Comment threadpython/test/unit/mesh/test_higher_order_mesh.py Fixed
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated:
https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

@jorgensdjorgensd changed the title Mixed topology assemble scalar and gmsh apiMixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinuxMay 15, 2026
@jorgensdjorgensd added the ci Continuous Integration label May 15, 2026
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated: https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

Resolved by giving each gmsh model a name that is unique for parametrized tests.

@jhale

jhale commented May 15, 2026

Copy link
Copy Markdown
Member

Thanks for fixing this and also finishing a cool new feature!

My view is that gmsh.initialize() and gmsh.finalize() are not properly cleaning up global state between pytest function calls on the same process and so we should probably add this to all gmsh-related tests.

@jhale
jhale added this pull request to the merge queueMay 15, 2026
Merged via the queue into main with commit ddf078dMay 15, 2026
19 of 20 checks passed
@jhale
jhale deleted the dokken/mixed-topology-assemble-scalar-and-gmsh-api branch May 15, 2026 13:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciContinuous IntegrationenhancementNew feature or requestio

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Non-reproducible gmsh recombination issue in test_higher_order.py

3 participants

@jorgensd@jhale@nate-sime
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux by jorgensd · Pull Request #4214 · FEniCS/dolfinx · GitHub
Skip to content

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux - #4214

Merged
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api
May 15, 2026
Merged

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux#4214
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api

Conversation

@jorgensd

@jorgensdjorgensd commented May 14, 2026

Copy link
Copy Markdown
Member

Attempt to resolve: #4213.
Seems like running pytests in xdist mode requires all gmsh models to have unique names. This has now been added.

Adds support for:

  • dolfinx.fem.assemble_scalar on mixed topology meshes.

  • Second order prism and pyramids (the ones currently supported are not the ones we use for Lagrange elements, as they are missing the middle node of the quadrilateral faces, similar to serendipity).

  • Split tests in two:

    • simplex meshes tested for order 1,2,3
    • mixed meshes tested for order 1 and 2
  • Supports reading in meshes with model_to_mesh for mixed meshes. No meshtags are read in as we do not have a way of constructing these yet.

  • Mixed meshes with order > 2 is not supported, as create_entity_permutations doesn't work on mixed meshes.

Gemini Pro was used to create the 3D mixed mesh with two cylinders on top of each other. All other coding was done by me with no LLM.

The test now uses all 4 cell types for the 3D test (tetra green, pyramid orange, hex red, wedge blue):
image

Comment threadpython/dolfinx/io/gmsh.py Fixed
@jorgensdjorgensd added the enhancement New feature or request label May 14, 2026
@jorgensd
jorgensd requested a review from nate-simeMay 14, 2026 17:40
@jorgensdjorgensd added the io label May 14, 2026
Comment threadpython/dolfinx/io/gmsh.py Outdated
Comment threadpython/dolfinx/io/gmsh.py Outdated
Co-authored-by: Jørgen Schartum Dokken <dokken92@gmail.com>
Comment threadpython/test/unit/mesh/test_higher_order_mesh.py Fixed
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated:
https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

@jorgensdjorgensd changed the title Mixed topology assemble scalar and gmsh apiMixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinuxMay 15, 2026
@jorgensdjorgensd added the ci Continuous Integration label May 15, 2026
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated: https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

Resolved by giving each gmsh model a name that is unique for parametrized tests.

@jhale

jhale commented May 15, 2026

Copy link
Copy Markdown
Member

Thanks for fixing this and also finishing a cool new feature!

My view is that gmsh.initialize() and gmsh.finalize() are not properly cleaning up global state between pytest function calls on the same process and so we should probably add this to all gmsh-related tests.

@jhale
jhale added this pull request to the merge queueMay 15, 2026
Merged via the queue into main with commit ddf078dMay 15, 2026
19 of 20 checks passed
@jhale
jhale deleted the dokken/mixed-topology-assemble-scalar-and-gmsh-api branch May 15, 2026 13:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciContinuous IntegrationenhancementNew feature or requestio

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Non-reproducible gmsh recombination issue in test_higher_order.py

3 participants

@jorgensd@jhale@nate-sime
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux by jorgensd · Pull Request #4214 · FEniCS/dolfinx · GitHub
Skip to content

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux - #4214

Merged
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api
May 15, 2026
Merged

Mixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinux#4214
jhale merged 17 commits into
mainfrom
dokken/mixed-topology-assemble-scalar-and-gmsh-api

Conversation

@jorgensd

@jorgensdjorgensd commented May 14, 2026

Copy link
Copy Markdown
Member

Attempt to resolve: #4213.
Seems like running pytests in xdist mode requires all gmsh models to have unique names. This has now been added.

Adds support for:

  • dolfinx.fem.assemble_scalar on mixed topology meshes.

  • Second order prism and pyramids (the ones currently supported are not the ones we use for Lagrange elements, as they are missing the middle node of the quadrilateral faces, similar to serendipity).

  • Split tests in two:

    • simplex meshes tested for order 1,2,3
    • mixed meshes tested for order 1 and 2
  • Supports reading in meshes with model_to_mesh for mixed meshes. No meshtags are read in as we do not have a way of constructing these yet.

  • Mixed meshes with order > 2 is not supported, as create_entity_permutations doesn't work on mixed meshes.

Gemini Pro was used to create the 3D mixed mesh with two cylinders on top of each other. All other coding was done by me with no LLM.

The test now uses all 4 cell types for the 3D test (tetra green, pyramid orange, hex red, wedge blue):
image

Comment threadpython/dolfinx/io/gmsh.py Fixed
@jorgensdjorgensd added the enhancement New feature or request label May 14, 2026
@jorgensd
jorgensd requested a review from nate-simeMay 14, 2026 17:40
@jorgensdjorgensd added the io label May 14, 2026
Comment threadpython/dolfinx/io/gmsh.py Outdated
Comment threadpython/dolfinx/io/gmsh.py Outdated
Co-authored-by: Jørgen Schartum Dokken <dokken92@gmail.com>
Comment threadpython/test/unit/mesh/test_higher_order_mesh.py Fixed
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated:
https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

@jorgensdjorgensd changed the title Mixed topology assemble scalar and gmsh apiMixed topology assemble scalar and gmsh api + fix GMSH tests on AlmaLinuxMay 15, 2026
@jorgensdjorgensd added the ci Continuous Integration label May 15, 2026
@jorgensd

Copy link
Copy Markdown
MemberAuthor

@jhale this still occasionally crashes on alma linux. Now I'm not sure why, as our API should support the meshes generated: https://github.com/FEniCS/dolfinx/actions/runs/25905433471/job/76137968460

Resolved by giving each gmsh model a name that is unique for parametrized tests.

@jhale

jhale commented May 15, 2026

Copy link
Copy Markdown
Member

Thanks for fixing this and also finishing a cool new feature!

My view is that gmsh.initialize() and gmsh.finalize() are not properly cleaning up global state between pytest function calls on the same process and so we should probably add this to all gmsh-related tests.

@jhale
jhale added this pull request to the merge queueMay 15, 2026
Merged via the queue into main with commit ddf078dMay 15, 2026
19 of 20 checks passed
@jhale
jhale deleted the dokken/mixed-topology-assemble-scalar-and-gmsh-api branch May 15, 2026 13:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciContinuous IntegrationenhancementNew feature or requestio

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Non-reproducible gmsh recombination issue in test_higher_order.py

3 participants

@jorgensd@jhale@nate-sime