Jukka Aho
69e0f3d9e2
chore(sparse): remove unused SparseVector DOK prototype
...
Delete the experimental dictionary-backed sparse vector helper not wired into
the package entry manifest.
- Drop `src/sparse/sparsevectordok.jl`.
2026-05-09 18:21:34 +03:00
Jukka Aho
32e47f68b6
chore(sparse): delete duplicate CSC helper include target
...
Remove the standalone CSC utilities file now superseded by
`src/legacy/sparse_helpers.jl` and dropped from `sparse.jl`.
- Drop `src/sparse/sparsematrixcsc.jl`.
2026-05-09 18:21:32 +03:00
Jukka Aho
d66c5f78b6
refactor(sparse): slim COO module and SPDX header
...
Stop pulling deleted CSC helper includes into `sparse.jl`, adopt SPDX lines,
and drop unused dense helpers that duplicated `Legacy` utilities.
- Document that `SparseMatrixCOO` is legacy-oriented vs raw assembler triplets.
- Use `resize!(..., 0)` for `empty!` and qualify `Base.append!`.
- Remove `get_nonzero_rows`/`get_nonzero_columns` and `resize_sparse` helpers from
this file (see `src/legacy/sparse_helpers.jl`).
2026-05-09 18:21:11 +03:00
Jukka Aho
9c6086a554
fix(sparse): Qualify isempty() with Base.isempty()
...
Fix method ambiguity by explicitly qualifying Base.isempty calls.
Changes:
- function isempty(A::SparseMatrixCOO) → function Base.isempty(A::SparseMatrixCOO)
- Internal isempty() calls qualified with Base.isempty()
- Avoids method ambiguity warnings
Consistent with assembly/problems.jl fix (commit 0d41c8c ).
2025-11-15 05:33:26 +02:00
Jukka Aho
ef9cddff13
feat: Consolidate AbaqusReader and AsterReader (mesh I/O)
...
- Added 1111 lines of mesh reading code to src/readers/
- ABAQUS .inp format support (6 files: parse_mesh, parse_model, keywords, etc.)
- Code Aster .med format support (3 files: read_aster_mesh, read_aster_results)
- Modernized Julia 0.x → 1.x syntax:
* Nullable{T} → Union{T, Nothing}
* get(nullable) → direct field access
- Added Logging stdlib to Project.toml dependencies
- Functions verified: abaqus_read_mesh, aster_read_mesh
Result: 7 vendor packages consolidated (~6400 lines total)
FEMBasis, FEMBase, FEMQuad, FEMSparse, AbaqusReader, AsterReader
Tests: 5 passing (baseline maintained)
2025-11-08 11:25:13 +02:00
Jukka Aho
f6f3b97c16
feat: Consolidate FEMSparse.jl into JuliaFEM
...
Consolidated FEMSparse package into src/sparse/:
- sparsematrixcsc.jl: AssemblerSparsityPattern for efficient assembly
- sparsevectordok.jl: Skipped (old Julia syntax, not used)
Changes:
- Removed 'import FEMSparse' from JuliaFEM.jl
- Updated problems_elasticity.jl: FEMSparse.AssemblerSparsityPattern → AssemblerSparsityPattern
- Fixed include paths in sparse/sparse.jl (relative, not absolute)
Modernization:
- Fixed sparsevectordok.jl type keyword → mutable struct
- Fixed AbstractSparseArray type parameter syntax
- Chose to skip sparsevectordok for now (old {T,V} syntax, unused)
Result:
- ✅ JuliaFEM loads successfully
- ✅ 5 tests still passing (no regression)
- ✅ Three vendor packages now consolidated: FEMBase, FEMBasis, FEMQuad, FEMSparse
Remaining vendor packages: AbaqusReader, AsterReader, HeatTransfer, FEMBeam, Mortar packages
2025-11-08 11:08:10 +02:00
Jukka Aho
73ec910589
feat: Consolidate FEMBase.jl into JuliaFEM (Phase 1 complete)
...
MAJOR MILESTONE: FEMBase + FEMBasis fully consolidated, JuliaFEM loads!
Consolidated files:
- src/elements/ (3 files): elements.jl, elements_lagrange.jl, integrate.jl
- src/fields/ (1 file): fields.jl (DCTI, DVTI, DCTV, DVTV, etc.)
- src/sparse/ (1 file): sparse.jl (SparseMatrixCOO, SparseVectorCOO)
- src/assembly/ (2 files): problems.jl, assembly.jl
- src/solvers/ (1 file): solvers_base.jl
- src/analysis.jl, src/core_types.jl (Node, IP, IntegrationPoint)
Changes to JuliaFEM.jl:
- Added dependencies: Tensors, Calculus
- Removed @reexport using FEMBase (now consolidated)
- Added 20+ include statements for consolidated files
- Include order: fields → core_types → fembase_compat → sparse → elements
Compatibility layer:
- Created fembase_compat.jl: Minimal FEMBase submodule for vendor packages
- Temporarily disabled vendor-specific Mortar2D functions in solvers_modal.jl
Bug fixes:
- Changed i == 1 → isequal(i, 1) in integrate.jl (== operator overridden by fields)
- Resolved all FEMBasis. namespace references throughout codebase
Result:
- ✅ JuliaFEM loads successfully on Julia 1.12.1
- ✅ 134 exported symbols (was 171 with separate FEMBase)
- ✅ Core types accessible: Seg2, Quad4, Problem, AbstractProblem, etc.
- ⚠️ Vendor packages show FEMBase cache warnings (expected, harmless)
TODO:
- Re-enable Mortar2D functions after vendor consolidation
- Field system == operator override needs redesign (Phase 4)
- Continue Phase 2: Consolidate remaining vendor packages
2025-11-08 09:39:16 +02:00