[MeshioPlusPlusApplication] Multi-format mesh I/O, mesh operations and field-data operations - #14583
Open
loumalouomega wants to merge 92 commits into
Open
Conversation
This commit introduces the MeshioPlusPlusIO class, which facilitates reading and writing of approximately 35 different mesh file formats using the meshio++ library. The implementation supports both static and transient output, allowing for the extension of existing files or the creation of new ones. Additionally, a dedicated XdmfTimeSeriesWriter class is included to handle the writing of XDMF time series data, ensuring compatibility with ParaView. The new functionality enhances the flexibility and usability of the Kratos framework for various mesh operations.
…rs, and supported formats
…hance logging functionality
loumalouomega
had a problem deploying
to
github-pages
July 17, 2026 09:10 — with
GitHub Actions
Failure
…al for compatibility; increase buffer size in gmsh.cpp for precision in output formatting
loumalouomega
had a problem deploying
to
github-pages
July 17, 2026 10:13 — with
GitHub Actions
Failure
…conflicts with Boost uBLAS
loumalouomega
had a problem deploying
to
github-pages
July 27, 2026 20:54 — with
GitHub Actions
Failure
loumalouomega
force-pushed
the
core/adding-meshioplusplus-io
branch
from
July 27, 2026 20:59
870306a to
926cff0
Compare
loumalouomega
had a problem deploying
to
github-pages
July 27, 2026 21:02 — with
GitHub Actions
Failure
loumalouomega
marked this pull request as ready for review
July 28, 2026 11:00
loumalouomega
had a problem deploying
to
github-pages
July 28, 2026 20:39 — with
GitHub Actions
Failure
loumalouomega
had a problem deploying
to
github-pages
July 29, 2026 10:56 — with
GitHub Actions
Failure
…checks in MeshioPlusPlus
…e calculation, and surface checks
…xelize, and compute_sdf; enhance data handling with write_mdpa_ids support
…ped MDPA node IDs in MeshioPlusPlus
loumalouomega
had a problem deploying
to
github-pages
August 6, 2026 14:41 — with
GitHub Actions
Failure
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
name: ✨ Feature
about: MeshioPlusPlusApplication: multi-format mesh I/O, mesh operations and field-data operations
📝 Description
Adds
MeshioPlusPlusApplication, wrapping the meshio++ library to bring multi-format mesh I/O, native read/write support for ~35 mesh file formats (vtu,vtk,gmsh,med,xdmf,abaqus,medit,stl,obj,su2,tecplot,unv, ...) in addition to.mdpa., and a full mesh/data operations layer into Kratos, consumed as a normal external dependency (nothing vendored — built and installed separately, linked viafind_package(meshioplusplus CONFIG REQUIRED COMPONENTS CXX)).I/O (
MeshioPlusPlusIO)mdpa, resolved explicitly or by extension.SmallDisplacementElement3D4N, ...) andPropertiesmaterial data are preserved across a round trip instead of degrading to the generic cell-type name / losing values.kratos/python_scripts/python_solver.py's_ImportModelPartnow delegates anyinput_typethe core doesn't handle itself to this application (lazily imported, so the core has no hard dependency on it).Mesh operations (
MeshioPlusPlusMeshOperations)Parameters, one"operation"name per meshio++ verb:clean,transform,convert_cells,refine,decimate,smooth,reorder,extract_surface,extract_skin,crop_bbox,crop_halfspace,slice,isosurface,attach_quality,split,partition,stats,quality, plusMerge,Diff,ComputeStatistics/Quality/Bandwidthas separate entry points.data_calc,data_condition,data_manage,data_info,point_data_to_cell_data,cell_data_to_point_data, and cross-meshInterpolate(nearest/barycentric sampling of one mesh's field data onto another's geometry).MeshioPlusPlusIOuses), which also makesisosurfaceusable in practice for the first time. A result array survives the trip back into Kratos only when its name matches a registeredVariable— documented as a hard framework constraint, not a gap (e.g.attach_quality's own"quality:scaled_jacobian"naming never round-trips).Python surface
MeshioInputModeler,MeshioOperationModeler(generic, covers every single-source operation),MeshioInterpolateModeler(dedicated, sinceInterpolateneeds two independent source model parts and doesn't fit the generic shape).MeshioOutputProcessfor transient/steady output from a solver'sParameters.python_registry_lists.pyand.github/workflows/ci_apps_linux.json.Docs & tests
applications/MeshioPlusPlusApplication/README.mdplus 5 pages underdocs/pages/Applications/MeshioPlusPlus_Application/(Overview, the three modelers, Mesh Operations, Output Process).tests/cpp_tests/) and 56 Python unittest cases (tests/), covering format round trips, transient output, every mesh/data operation, field-data staging and write-back, the write-back constraint, and all three modelers.MESHIOPLUSPLUS_ABI_VERSION(currently 3, meshio++ v9.2.0+) rather than an exact release, so a release that can't affect a compiled consumer needs no rebuild; a real mismatch fails at configure/link time rather than silently.