Commit Graph

13 Commits

Author SHA1 Message Date
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