Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Libmesh update 20250304 #30042

Merged
merged 13 commits into from
Mar 24, 2025
Merged

Libmesh update 20250304 #30042

merged 13 commits into from
Mar 24, 2025

Conversation

roystgnr
Copy link
Contributor

@roystgnr roystgnr commented Mar 6, 2025

  • Quadrature API changes. A few virtual QBase methods have had
    changed signatures, and some methods have been deprecated in favor
    of newer versions, requiring Elem inputs rather than mere
    ElemType inputs, to enable support for elements like arbitrary
    polygons and polyhedra where a single class can take on different
    topologies at run time.
  • FE and FEInterface API changes. Some methods have been
    deprecated in favor of newer versions, either in Elem or taking an
    Elem rather than an ElemType argument, also for runtime-topology
    compatibility.
  • Add APIs to control System name prefixing from C++, not just from
    the command line. This will enable fixes for a MOOSE bug with
    independent preconditioning of multiple nonlinear systems, affecting
    the optimization module.
  • Added an integrate_slits option to JumpErrorEstimator-based
    estimators
  • Added an OverlapCoupling ghosting functor, useful for integrating
    on slit meshes or between manifolds of overlapping meshes.
  • Bug fix: DistributedMesh::add_point now operates correctly when
    given a node id that was recently deleted from the mesh but has not
    yet been cleaned from the internal node container.
  • Bug fix: Prism6::build_side_ptr() now sets subdomain_id(); this
    fixes a failure in adaptive mesh refinement of Prism6 elements with
    subdomain-restricted variables.
  • Bug fix: methods which elevated mesh element order no longer
    renumber nodes and elements while doing so. This fixes potential
    iterator invalidations in some use cases, and it's more efficient.
  • Bug fix: when copying nodes and elements from a source mesh into a
    target DistributedMesh that is too small to use all its processors,
    the target mesh was left in an invalid state. This fixes errors
    triggered by certain mesh stitching operations.
  • Bug fix for range estimation bug in FParser optimizer
  • Minor FE code refactoring for more simplicity and readability
  • Minor optimization to some hash (and thus unordered_map) use cases
  • Cleaned up and commented code with high-precision floating-point
    constants

@lindsayad was hoping to get one more libMesh PR squeezed into this, and we can wait for that before merging, but I want to get the API changes into CI right away and see what surprises may be in store.

@roystgnr
Copy link
Contributor Author

roystgnr commented Mar 7, 2025

Yeah, those runtime --disable-deprecated failures are the sort of thing I was looking for.

@moosebuild
Copy link
Contributor

moosebuild commented Mar 7, 2025

Job Documentation, step Docs: sync website on 077bbab wanted to post the following:

View the site here

This comment will be updated on new commits.

@moosebuild
Copy link
Contributor

moosebuild commented Mar 7, 2025

Job Coverage, step Generate coverage on 077bbab wanted to post the following:

Framework coverage

051868 #30042 077bba
Total Total +/- New
Rate 85.29% 85.29% -0.00% 82.76%
Hits 109056 109041 -15 24
Misses 18809 18810 +1 5

Diff coverage report

Full coverage report

Modules coverage

Mutiple base shas were found when retrieving head reports:
92e4cfa
0518686

Full coverage reports

Reports
  • framework
  • chemical_reactions (FAILED)
  • combined
  • contact (FAILED)
  • electromagnetics (FAILED)
  • external_petsc_solver (FAILED)
  • fluid_properties (FAILED)
  • fsi (FAILED)
  • functional_expansion_tools (FAILED)
  • geochemistry (FAILED)
  • heat_transfer (FAILED)
  • level_set (FAILED)
  • misc (FAILED)
  • navier_stokes (FAILED)
  • optimization (FAILED)
  • peridynamics (FAILED)
  • phase_field (FAILED)
  • porous_flow (FAILED)
  • ray_tracing (FAILED)
  • rdg (FAILED)
  • reactor (FAILED)
  • richards
  • scalar_transport (FAILED)
  • solid_mechanics (FAILED)
  • solid_properties (FAILED)
  • stochastic_tools (FAILED)
  • subchannel (FAILED)
  • thermal_hydraulics (FAILED)
  • xfem (FAILED)

Warnings

  • framework new line coverage rate 82.76% is less than the suggested 90.0%

This comment will be updated on new commits.

- Quadrature API changes.  A few virtual `QBase` methods have had
  changed signatures, and some methods have been deprecated in favor
  of newer versions, requiring `Elem` inputs rather than mere
  `ElemType` inputs, to enable support for elements like arbitrary
  polygons and polyhedra where a single class can take on different
  topologies at run time.
- `FE` and `FEInterface` API changes.  Some methods have been
  deprecated in favor of newer versions, either in `Elem` or taking an
  `Elem` rather than an `ElemType` argument, also for runtime-topology
  compatibility.
- Add APIs to control `System` name prefixing from C++, not just from
  the command line.  This will enable fixes for a MOOSE bug with
  independent preconditioning of multiple nonlinear systems, affecting
  the optimization module.
- Added an `integrate_slits` option to `JumpErrorEstimator`-based
  estimators
- Added an `OverlapCoupling` ghosting functor, useful for integrating
  on slit meshes or between manifolds of overlapping meshes.
- Bug fix: `DistributedMesh::add_point` now operates correctly when
  given a node id that was recently deleted from the mesh but has not
  yet been cleaned from the internal node container.
- Bug fix: `Prism6::build_side_ptr()` now sets `subdomain_id()`; this
  fixes a failure in adaptive mesh refinement of Prism6 elements with
  subdomain-restricted variables.
- Bug fix: methods which elevated mesh element order no longer
  renumber nodes and elements while doing so.  This fixes potential
  iterator invalidations in some use cases, and it's more efficient.
- Bug fix: when copying nodes and elements from a source mesh into a
  target `DistributedMesh` that is too small to use all its processors,
  the target mesh was left in an invalid state.  This fixes errors
  triggered by certain mesh stitching operations.
- Bug fix for range estimation bug in FParser optimizer
- Minor FE code refactoring for more simplicity and readability
- Minor optimization to some hash (and thus `unordered_map`) use cases
- Cleaned up and commented code with high-precision floating-point
  constants

Refs #0
@roystgnr roystgnr force-pushed the libmesh_update_20250304 branch from 9d5194c to f18838d Compare March 13, 2025 17:57
@loganharbour
Copy link
Member

Already?!

@lindsayad
Copy link
Member

We needs it

@loganharbour
Copy link
Member

ETA on this?

@roystgnr
Copy link
Contributor Author

Hopefully this week, but definitely not soon at this rate. I'm still working through the upgrades for --disable-deprecated, and I can't even imagine what could be triggering e.g. PC failed due to FACTOR_OUTMEMORY in the navier_stokes distributed test step.

@lindsayad
Copy link
Member

PC failed due to FACTOR_OUTMEMORY in the navier_stokes distributed test step.

sporadic failure

@GiudGiud
Copy link
Contributor

sporadic failure

i ll try to patch this

libMesh::FEInterface::inverse_map is now deprecated.
The former function is now deprecated as redundant
This is also a little faster, skipping an unnecessary test.

This is *broken* if users try to use a sufficiently higher quadrature
order on faces than on interiors for some reason, but in that use case
the existing code was broken too.  Fixing this without a performance
regression in typical use cases is going to require a new libMesh API.
We need n_dofs() with an actual Elem if we want to be able to handle
polyhedra where the result depends on more than just the ElemType
I'm not looking forward to this breaking when someone tries to get_xyz()
or something, but I can't justify adding even a little more expense in
an inner loop based on a hypothetical future possibility.
@roystgnr roystgnr force-pushed the libmesh_update_20250304 branch from 945292b to 3f4285c Compare March 19, 2025 21:27
@roystgnr roystgnr force-pushed the libmesh_update_20250304 branch from 3f4285c to 077bbab Compare March 20, 2025 13:59
@moosebuild
Copy link
Contributor

Job Precheck, step Versioner verify on 077bbab wanted to post the following:

Versioner templates

Found 16 templates, 0 failed

Versioner versions

Found 10 packages, 2 changed, 0 failed

package status hash to hash version to version
libmesh CHANGE dabc922 c2aeeb2 2025.02.25 build 0 2025.03.06 build 0
moose-dev CHANGE fcaa73c ca0a369 2025.03.03 2025.03.06

@moosebuild
Copy link
Contributor

Job Modules parallel on 077bbab : invalidated by @roystgnr

Kicking "Modules parallel" - "test:finite_volume/ins/turbulence/lid-driven.lid_driven_turb_capped/result_physics: Solve Did NOT Converge!" from a "distributed threads" step

@moosebuild
Copy link
Contributor

Job Coverage, step Verify coverage on 077bbab wanted to post the following:

The following coverage requirement(s) failed:

  • Failed to generate chemical_reactions coverage rate (required: 92.0%)
  • Failed to generate contact coverage rate (required: 87.0%)
  • Failed to generate electromagnetics coverage rate (required: 94.0%)
  • Failed to generate external_petsc_solver coverage rate (required: 84.0%)
  • Failed to generate fluid_properties coverage rate (required: 84.0%)
  • Failed to generate fsi coverage rate (required: 85.0%)
  • Failed to generate functional_expansion_tools coverage rate (required: 81.0%)
  • Failed to generate geochemistry coverage rate (required: 96.0%)
  • Failed to generate heat_transfer coverage rate (required: 87.0%)
  • Failed to generate level_set coverage rate (required: 85.0%)
  • Failed to generate misc coverage rate (required: 32.0%)
  • Failed to generate navier_stokes coverage rate (required: 77.0%)
  • Failed to generate optimization coverage rate (required: 86.0%)
  • Failed to generate peridynamics coverage rate (required: 77.0%)
  • Failed to generate phase_field coverage rate (required: 85.0%)
  • Failed to generate porous_flow coverage rate (required: 95.0%)
  • Failed to generate ray_tracing coverage rate (required: 93.0%)
  • Failed to generate rdg coverage rate (required: 63.0%)
  • Failed to generate reactor coverage rate (required: 90.0%)
  • Failed to generate scalar_transport coverage rate (required: 81.0%)
  • Failed to generate solid_mechanics coverage rate (required: 84.0%)
  • Failed to generate solid_properties coverage rate (required: 83.0%)
  • Failed to generate stochastic_tools coverage rate (required: 88.0%)
  • Failed to generate subchannel coverage rate (required: 87.0%)
  • Failed to generate thermal_hydraulics coverage rate (required: 88.0%)
  • Failed to generate xfem coverage rate (required: 80.0%)

@roystgnr
Copy link
Contributor Author

The coverage errors here are the usual "Multiple base SHAs" issue

@loganharbour
Copy link
Member

Let's leave the final merge to @milljm

@milljm
Copy link
Member

milljm commented Mar 24, 2025

Minus next being busted for something @GiudGiud says he will fix (today: #28235), I am ready for this.

@milljm milljm merged commit e410ade into idaholab:next Mar 24, 2025
98 of 99 checks passed
@roystgnr roystgnr deleted the libmesh_update_20250304 branch March 24, 2025 16:06
@@ -863,3 +863,34 @@ fd5f7bc651f0d6a8e2d23e5d4c2c2dadca58aa0b: #29978
wasp:
full_version: 2025.02.25_0
hash: 46ea1c0
9c3c8d833ce9c5d8fbb748dc6b870a075f4b2827:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Noted that this is missing a ticket number comment while rebasing #29984. Will add in a commit in that PR for completeness.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This must be something missing in --build-template

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought the specific ticket number was something we should be adding manually after copy-pasting the versioner.py --summary output into versioner_hashes.yaml.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right. I never scrolled that far in the wiki instructions 😆 I do think that this third step should also be somehow automated and included in --build-template

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants