Commit Graph

27 Commits

Author SHA1 Message Date
Jukka Aho c02af32e75 refactor(io): use Logging for Gmsh reader progress
Replace unconditional `println` chatter with structured `@info` events so
library callers can filter noise via the standard logging pipeline.

- Log the filename when ingest starts and emit a single summary record with
  node/element counts plus physical group keys.
2026-05-09 17:20:04 +03:00
Jukka Aho 148ad8f5ed docs(io): describe default Gmsh reader and Legacy ingest
Rewrite the module README now that Abaqus/Code_Aster stacks live behind the
opt-in Legacy flag and only Gmsh ASCII ingest ships unconditionally.

- Document `JULIAFEM_ENABLE_LEGACY=1` and `src/legacy/io/` for vendor parsers.
- Focus the file list on `gmsh_reader.jl` / `GmshReader` instead of deleted stubs.
- Trim emoji/status tables and stale usage snippets; note roadmap for a native
  `.inp` path aligned with `Mesh{T}` / `create_elements!`.
2026-05-09 17:19:45 +03:00
Jukka Aho ac2a747cc7 chore(io): delete RMED result-file helpers
Remove the lightweight HDF5 wrappers around Code_Aster `.rmed` post-processing.

- Drop `RMEDFile`, `aster_read_nodes`, and related helpers from
  `src/io/read_aster_results.jl`.
2026-05-09 17:19:17 +03:00
Jukka Aho 1cdae68f4f chore(io): remove Code_Aster MED mesh reader implementation
Delete the MED/HDF5 parsing routines that built Dict meshes from Code_Aster
exports.

- Drop `src/io/read_aster_mesh.jl` (`aster_parse_nodes`, connectivity walks,
  `aster_read_mesh` glue).
2026-05-09 17:19:04 +03:00
Jukka Aho 004a1e61fd chore(io): delete Dict-backed Abaqus model AST
Remove the mutable `Model`/`Mesh` containers and parse helpers that powered the
legacy `.inp` ingestion stack.

- Drop `src/io/parse_model.jl` (material/step/boundary pseudo-types and reader
  state machine); identical functionality remains opt-in under `Legacy`.
2026-05-09 17:18:49 +03:00
Jukka Aho fa113717b3 chore(io): remove in-tree Abaqus mesh parser
Delete the hand-rolled `.inp` mesh scanner that mapped Abaqus element codes to
legacy JuliaFEM symbols.

- Drop `src/io/parse_mesh.jl` (element trait tables, node-set parsing, section
  dispatch) now duplicated under `src/legacy/io/` behind the opt-in flag.
2026-05-09 17:18:35 +03:00
Jukka Aho 844797f2d7 chore(io): drop global Abaqus keyword registration helpers
Remove the mutable global register used by the retired `.inp` parser to tag
top-level keywords.

- Delete `register_abaqus_keyword` / `is_abaqus_keyword_registered` from
  `src/io/keyword_register.jl` (Legacy carries its own registration path).
2026-05-09 17:18:06 +03:00
Jukka Aho 8f79706802 chore(io): remove unused JuliaFEM.IO submodule stub
Delete the nested `IO` module that only re-exported the retired Abaqus glue;
the package entry point now includes `gmsh_reader.jl` directly.

- Remove `src/io/io.jl` (SparseArrays/Logging imports and `abaqus_reader`
  forwarding).
2026-05-09 17:14:17 +03:00
Jukka Aho ef0ad6672c chore(io): remove Dict-based surface element factory
Drop the Abaqus side-mapping tables and helpers that produced boundary
facets from raw mesh dictionaries.

- Delete `create_surface_element` / `create_surface_elements` and the static
  `element_mapping` entry points under `src/io/create_surface_elements.jl`.
2026-05-09 17:13:22 +03:00
Jukka Aho 2596d33420 chore(io): delete MED/Code_Aster element glue tables
Remove the standalone connectivity permutation maps and element-name tables
that wired Code_Aster MED exports into legacy JuliaFEM symbols.

- Drop `src/io/aster_reader.jl` from the default tree (no longer pulled into
  `JuliaFEM`).
2026-05-09 17:13:04 +03:00
Jukka Aho a170b0802a chore(io): remove JuliaFEM-local Abaqus mesh adapters
Delete the thin wrappers that translated `AbaqusReader` output into the
pre-2.0 `Mesh`/`Element` bag-of-fields API.

- Drop `abaqus_read_mesh`, legacy `create_surface_elements`, and nodal-element
  helpers from `src/io/abaqus_reader.jl` (superseded by `Legacy` tooling).
2026-05-09 17:12:48 +03:00
Jukka Aho d2b67e284f chore(io): delete example-model downloader helper
Remove `abaqus_download`, which depended on environment-configured URLs and
was only useful for CI/tutorial fetches of vendor `.inp` decks.

- Drop `src/io/abaqus_download.jl`; Legacy retains its own copy when enabled.
2026-05-09 17:12:23 +03:00
Jukka Aho ab5aed8dea chore(io): remove Code_Aster reader module stub
Remove the HDF5-backed `AsterReader` wrapper from the default package tree so
the slim IO surface only exposes the maintained mesh ingest path.

- Drop `src/io/AsterReader.jl` (mesh/results includes are no longer shipped here).
2026-05-09 17:10:35 +03:00
Jukka Aho cab05be2b2 chore(io): remove legacy AbaqusReader module stub
Drop the thin `AbaqusReader` wrapper that only forwarded includes into the old
parser stack; opt-in Abaqus ingestion now ships from `Legacy` instead.

- Delete the standalone `src/io/AbaqusReader.jl` entry module (Nullables-era).
2026-05-09 17:09:12 +03:00
Jukka Aho 291384dcb9 feat(io): add Code Aster .rmed results reading (requires HDF5)
New 60-line Code Aster results reader:
- RMEDFile: Code Aster result .rmed file structure
- aster_read_nodes(): read nodes from result file
- aster_read_data(): read nodal/Gauss point field data
- Supports NODE and ELGA (Gauss point) field types
- Requires HDF5.jl (optional dependency)
- Required by AsterReader module

Provides Code Aster .rmed file results reading functionality.
2025-12-15 06:15:00 +02:00
Jukka Aho ae9de8dd91 feat(io): add Code Aster .med mesh reading (requires HDF5)
New 222-line Code Aster mesh reader:
- MEDFile: Code Aster binary .med file structure
- aster_read_mesh_raw(): read mesh from .med file using HDF5
- aster_parse_nodes(): parse node coordinates from text sections
- get_mesh_names(), get_mesh(): mesh access utilities
- get_node_sets(), get_element_sets(): extract named sets
- to_ascii(): convert Int8 vectors to ASCII strings
- Requires HDF5.jl (optional dependency)
- Required by AsterReader module

Provides Code Aster .med file mesh reading functionality.
2025-12-15 06:14:40 +02:00
Jukka Aho d7607f09fd feat(io): add AsterReader module for Code Aster .med/.rmed files
New 25-line AsterReader module:
- Module wrapper for Code Aster reader (requires HDF5.jl)
- Includes: read_aster_mesh.jl, read_aster_results.jl
- Exports: aster_read_mesh
- parse_node_id(): utility for parsing node IDs from names
- Requires HDF5.jl (optional dependency, conditionally loaded)

Provides Code Aster .med/.rmed file reading infrastructure.
2025-12-15 06:14:19 +02:00
Jukka Aho 832bf2a34d feat(io): add Abaqus model download utility
New 43-line download utility:
- abaqus_download(): download Abaqus models from internet
- Uses environment variables: ABAQUS_DOWNLOAD_URL, ABAQUS_DOWNLOAD_DIR
- Checks if file already exists before downloading
- Supports dry-run mode for testing
- Required by AbaqusReader module for example model downloads

Provides utility for downloading Abaqus example models from documentation.
2025-12-15 06:13:51 +02:00
Jukka Aho 11ff412ed2 feat(io): add surface element creation from Abaqus surfaces
New 68-line surface element creation:
- create_surface_element(): create surface elements from solid element faces
- element_mapping: mapping table for element face → surface element topology
- Supports Tet4→Tri3, Tet10→Tri6, Hex8→Quad4, Hex20→Quad8, Wedge6→Quad4/Tri3
- Maps Abaqus surface definitions to JuliaFEM element types
- Required by abaqus_reader.jl for boundary condition application

Provides surface element extraction from Abaqus .inp file surface definitions.
2025-12-15 06:13:44 +02:00
Jukka Aho 2174c7b1e4 feat(io): add Abaqus model parsing with full keyword support
New 347-line Abaqus model parser:
- Model, Mesh, Material, Elastic, Step, BoundaryCondition, OutputRequest types
- AbaqusReaderState: parsing state machine
- parse_model(): parse full ABAQUS .inp files (mesh + BCs + loads + steps)
- Keyword registration system integration
- Section parsing: SOLID_SECTION, MATERIAL, ELASTIC, STEP, BOUNDARY, CLOAD, DLOAD
- abaqus_read_model(): read complete model vs abaqus_read_mesh() for mesh only
- Required by AbaqusReader module for full model parsing

Provides complete Abaqus .inp file model parsing with boundary conditions and load steps.
2025-12-15 06:13:14 +02:00
Jukka Aho ee536f7a53 feat(io): add Abaqus mesh parsing implementation
New 305-line Abaqus mesh parser:
- element_has_nodes(), element_has_type(): Abaqus element type mappings
- Supports C3D4, C3D8, C3D10, C3D20, S3, CPS4, T2D2, T3D2, B33, etc.
- parse_abaqus(): main parsing function for .inp files
- parse_numbers(), parse_definition(), matchset(): parsing utilities
- empty_or_comment_line(): comment/empty line detection
- Required by AbaqusReader module for mesh reading

Provides core Abaqus .inp file mesh parsing functionality.
2025-12-15 06:12:43 +02:00
Jukka Aho d9fcc6f80c feat(io): add Abaqus keyword registration system
New 24-line keyword registration system:
- register_abaqus_keyword(): register keywords for section parsing
- is_abaqus_keyword_registered(): check if keyword is registered
- Global registry for ABAQUS .inp file keywords
- Required by parse_model.jl for section parsing

Provides keyword registration infrastructure for AbaqusReader module.
2025-12-15 06:12:22 +02:00
Jukka Aho 21309009fc feat(io): add AbaqusReader module for full Abaqus .inp parsing
New 17-line AbaqusReader module:
- Module wrapper for full Abaqus reader functionality
- Includes: parse_mesh.jl, keyword_register.jl, parse_model.jl, create_surface_elements.jl, abaqus_download.jl
- Exports: abaqus_read_mesh, abaqus_read_model, create_surface_elements, abaqus_download
- Required by abaqus_reader.jl (simple wrapper calls AbaqusReader.abaqus_read_mesh)
- Full keyword parsing support vs simplified reader

Provides complete Abaqus .inp file parsing infrastructure.
2025-12-15 06:11:54 +02:00
Jukka Aho bb51559d92 docs(io): add I/O module documentation for mesh import/export
New 120-line documentation file describing:
- Supported mesh formats (Abaqus .inp, Code Aster .med/.rmed, Gmsh .msh)
- File organization (core readers vs legacy vendor package infrastructure)
- Design philosophy (weak dependencies, two-tier strategy)
- Future work (export formats, import enhancements, consolidation)
- Usage examples and dependency requirements

Documents the mesh I/O architecture and reader strategy.
2025-12-15 05:47:02 +02:00
Jukka Aho 22a1dbfd8a chore(io): Limit IO module imports to only Element and Mesh
- Removed unused imports (`add_node!`, `add_element_to_element_set!`, `add_node_to_node_set!`) from the `using ..JuliaFEM:` line
- Keep `Preprocess` re-exported for convenience

This reduces namespace pollution and lowers the chance of circular import issues; no functional changes expected.
2025-11-18 15:09:37 +02:00
Jukka Aho c00f9e0efa Move src/gmsh_reader.jl to src/io/gmsh_reader.jl 2025-11-18 14:16:00 +02:00
Jukka Aho c317e3440f feat: Create IO submodule for mesh readers and result writers
New structure:
- src/io/io.jl: IO submodule definition and exports
- src/io/aster_reader.jl: Code Aster .med reader (ready for HDF5 extension)

Benefits:
- Clean separation of I/O code
- ABAQUS reader works with stdlib only
- Ready for package extensions (HDF5, LightXML)
- Easy to add new formats (VTK, Gmsh, etc.)

The IO submodule exports abaqus_read_mesh() to main JuliaFEM namespace.
2025-11-08 14:32:27 +02:00