Skip to content

v0.2.7 - Package Revival and Modernization

Latest

Choose a tag to compare

@ahojukka5 ahojukka5 released this 16 Nov 16:56
v0.2.7
8761ed4

Major improvements after 4+ years of dormancy.

🎉 New Features

  • String-based parsing API: abaqus_parse_mesh() and abaqus_parse_model()
    • Parse directly from string buffers without file I/O
    • Better for testing and programmatic use
  • Element database externalization: Moved to data/abaqus_elements.toml
    • Easy to extend without code changes
    • Simple TOML format for adding new element types

🐛 Bug Fixes

  • Fixed parser to properly handle ABAQUS boolean flags (NLGEOM, PERTURBATION)
  • Fixed FREQUENCY parser to handle optional parameters with NaN
  • Changed parse_abaqus() to accept any IO type instead of just IOStream

🧪 Testing & Quality

  • Increased test coverage: 192 tests (up from 140)
  • Added comprehensive test suites:
    • test_element_database.jl (36 tests)
    • test_model_sections.jl (55 tests)
  • String-based tests eliminate need for temporary files
  • New coverage analysis scripts for developers

📚 Documentation

🏗️ Infrastructure

  • Updated LICENSE copyright to Jukka Aho (2017-2025)
  • Migrated to modern Julia practices (Julia 1.0+)
  • Removed deprecated dependencies (Nullables.jl)
  • CI improvements: Julia 1.6 LTS allowed to fail gracefully
  • Modernized TagBot workflow with proper permissions

📦 Installation

using Pkg
Pkg.add("AbaqusReader")

🚀 Quick Start

using AbaqusReader

# For mesh-only parsing (simple Dict)
mesh = abaqus_read_mesh("model.inp")

# For complete model parsing (structured Model object)
model = abaqus_read_model("model.inp")

# New: Parse from string buffer
inp_content = read("model.inp", String)
model = abaqus_parse_model(inp_content)

This release brings the package back to life with modern Julia idioms, better testing, working documentation, and a cleaner API. 🎊