mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-12 06:22:00 +00:00
ee536f7a53
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.
I/O Module - Mesh Import/Export
Purpose: Read and write mesh files from various FEM software packages.
Supported Formats
Abaqus (.inp)
Status: ✅ Active
Files:
AbaqusReader.jl- Main reader with keyword parsingabaqus_reader.jl- Simplified readerabaqus_download.jl- Download example mesheskeyword_register.jl- Keyword parsing system
Use: mesh = read_abaqus("model.inp")
Code Aster (.med, .rmed)
Status: ⚠️ Requires HDF5 (weak dependency)
Files:
AsterReader.jl- Main Aster readeraster_reader.jl- Simplified readerread_aster_mesh.jl- HDF5-based mesh reading (NOT included - needs HDF5.jl)read_aster_results.jl- HDF5-based results reading (NOT included)
Strategy: Implement as weak dependency - only load if HDF5.jl available
Gmsh (.msh)
Status: ✅ Active
Files:
gmsh_reader.jl- Gmsh mesh file parser
Use: mesh = read_gmsh("mesh.msh")
File Organization
Core Readers
io.jl- Common I/O utilitiesgmsh_reader.jl- Gmsh formatabaqus_reader.jl- Simple Abaqus readeraster_reader.jl- Simple Aster reader (no HDF5)
Legacy Vendor Package Infrastructure
AbaqusReader.jl- Full Abaqus reader (from vendor package)AsterReader.jl- Full Aster reader (from vendor package)keyword_register.jl- Keyword parsing systemparse_mesh.jl- Generic mesh parsingparse_model.jl- Model structure parsingcreate_surface_elements.jl- Surface element extraction
Disabled (Require HDF5)
read_aster_mesh.jl- ❌ Commented out (needs HDF5.jl)read_aster_results.jl- ❌ Commented out (needs HDF5.jl)
Design Philosophy
Weak Dependencies
For optional formats requiring heavy dependencies (HDF5):
# In Project.toml
[extras]
HDF5 = "..."
# In src/io/
if isdefined(Main, :HDF5)
include("read_aster_mesh.jl")
end
Two-Tier Strategy
- Simple readers - Basic functionality, minimal dependencies
- Full readers - Complete keyword support, complex features
Users can choose based on needs.
Future Work
Export Formats
- VTK/VTU for visualization
- Exodus II for multi-physics
- JSON for web applications
Import Enhancements
- NASTRAN (.bdf, .nas)
- ANSYS (.cdb)
- CalculiX (.inp)
Consolidation
- Unify simple vs full reader approaches
- Document which reader to use when
- Benchmarks for large meshes
Usage Examples
using JuliaFEM
# Abaqus
mesh = read_abaqus("cantilever.inp")
# Gmsh (if gmsh_jll available)
mesh = read_gmsh("geometry.msh")
# Aster (if HDF5 available)
mesh = read_aster("model.med")
Dependencies
Required:
- None (pure Julia)
Optional:
gmsh_jll- For Gmsh API accessHDF5.jl- For Code Aster .med filesDownloads.jl- For downloading example meshes
Maintainer: JuliaFEM Team
Last Updated: November 21, 2025