16 Commits

Author SHA1 Message Date
Jukka Aho 4a9f020e13 chore(deps): add Gmsh and WriteVTK extensions to Project.toml
Optional mesh and VTK stacks load only via weakdeps so the default install
stays slim while readers remain available for examples and tests.

- Add weakdeps Gmsh and WriteVTK with JuliaFEMGmshExt and JuliaFEMWriteVTKExt
- Pin Gmsh compat 0.3 and WriteVTK 1.21.2; add WriteVTK to extras and tests
- Refresh Manifest project_hash and JuliaFEM extension entries
2026-05-11 02:57:19 +03:00
Jukka Aho 4fc007547c chore(deps): slim runtime deps, add CSV, and register Aqua for tests
Runtime `[deps]` no longer pull in mesh tooling or dev-formatting stacks,
while CSV is available for lightweight tabular I/O and Aqua can run as part
of the standard test target.

- `Project.toml`: drop `BenchmarkTools`, `Gmsh`, and `JuliaFormatter` from `[deps]`; add `CSV` with `[compat]` entries `CSV = "0.10"` and `Aqua = "0.8"`; remove `Gmsh`/`JuliaFormatter` compat pins while keeping `BenchmarkTools` for extras-only use
- `Project.toml`: trim `[extras]` to packages still referenced by tests (add `Aqua`, drop unused entries such as `Documenter`, `ForwardDiff`, `HDF5`, `LightXML`, duplicate stdlib listings) and extend `[targets].test` with `Aqua` while removing `Gmsh`
- `Manifest.toml`: refresh `project_hash` and JuliaFEM stanza so the resolved tree matches the slimmer direct deps, pruning the `gmsh_jll`/`JuliaFormatter`/`BenchmarkTools` transitive closure and recording the CSV dependency subgraph (e.g. `Tables`, `Parsers`, `TranscodingStreams`)
2026-05-11 02:28:51 +03:00
Jukka Aho e3717ce2ed feat(root): add Manifest.toml
Manifest.toml | 836 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  1 file changed, 836 insertions(+)
2026-05-09 16:30:23 +03:00
Jukka Aho 3f36111bba chore: remove Manifest.toml from repository
Remove Manifest.toml from version control as it is a generated file
that should not be tracked.

- Remove Manifest.toml from git tracking
2025-12-12 23:26:31 +02:00
Jukka Aho 447edd5694 chore: Update Manifest.toml with JuliaFormatter dependencies
Machine-generated lockfile update for:
- Added JuliaFormatter v2.2.0 and its dependencies
- Added CommonMark v0.9.1 (required by JuliaFormatter)
- Added JuliaSyntax v0.4.10 (required by JuliaFormatter)
2025-11-21 00:32:41 +02:00
Jukka Aho f7659a6992 deps: Update manifest for StaticArrays
- Lock StaticArrays at v1.9.15
- Update dependency resolution after adding StaticArrays
2025-11-19 02:13:27 +02:00
Jukka Aho 6743aa0d72 deps(manifest): Pin LinearOperators in Manifest.toml
- Added: `LinearOperators` to the `deps` list for the `JuliaFEM` project entry

Reason: The project requires linear-operator abstractions for matrix-free and operator-based solvers/benchmarks. Pinning here documents the dependency and helps maintain reproducible builds.
2025-11-18 15:08:38 +02:00
Jukka Aho d721b90f56 deps: Update Manifest.toml for LinearOperators addition
Lock file update after adding LinearOperators.jl dependency.
Includes transitive dependencies: ExprTools, FastClosures,
Requires, TimerOutputs.
2025-11-14 21:54:11 +02:00
Jukka Aho 4e872a1765 deps: Update Manifest.toml for IterativeSolvers
- Lock IterativeSolvers.jl v0.9.4
- Update dependency tree after Project.toml changes
2025-11-10 22:23:49 +02:00
Jukka Aho 6a8f8adc1f docs: Benchmark manual vs AD derivatives for Tet10
RESEARCH QUESTION: Should JuliaFEM use hand-calculated derivatives or AD?

Created comprehensive benchmark comparing:
- Manual: Hand-calculated derivatives (traditional FEM)
- AD: Tensors.jl gradient() (automatic differentiation)

RESULTS (AMD Ryzen 9, Julia 1.12.1):
- Manual: 8.7 ns, 0 allocations
- AD:     268.1 ns, 0 allocations
- AD is 30× SLOWER than manual

KEY FINDINGS:
 Both achieve zero allocations (Tensors.jl is well-optimized)
 AD has 30× compute overhead from dual number arithmetic
⚠️  In assembly loops: millions of calls = 10+ seconds extra per solve

RECOMMENDATION:
- Keep manual derivatives for common elements (Tet10, Hex8, Quad4, etc.)
- Use AD for prototyping and rare elements
- Unit test manual vs AD to catch errors
- Future: Generate derivatives symbolically (Symbolics.jl)

WHY NOT AD EVERYWHERE?
Assembly is hottest path in FEM. 30× overhead = unacceptable for
production code. Users will notice the performance difference.

WHY NOT ABANDON AD?
- Excellent for prototyping
- Required for exotic bases (NURBS)
- Perfect for unit testing manual derivatives
- Zero allocations impressive

Files:
- benchmarks/tet10_derivatives_benchmark.jl (runnable benchmark)
- docs/benchmarks/shape_function_derivatives_ad_vs_manual.md (analysis)

Dependencies added: BenchmarkTools

This answers the research question definitively with data.
2025-11-09 03:41:47 +02:00
Jukka Aho 5a07b3ab21 docs: Document Tutorial 3 API limitations, update test runner
Current state discovery:
- Element basis function evaluation broken (eval_basis! signature mismatch)
- Field interpolation at integration points broken (same root cause)
- Jacobian evaluation at integration points broken
- These are fundamental API issues affecting multiple test paths

Impact:
- Tutorial 3 (basis functions) deferred until API fixed
- Affects any code trying to evaluate fields at integration points
- Related to Quad4 assembly issues discovered in Tutorial 4

Working tutorials (107/107 tests passing):
- Tutorial 1: Element creation (5 tests)
- Tutorial 2: Gmsh mesh reading (72 tests)
- Tutorial 4: 1-element validation (35 tests)

Next: Focus on tutorials using working APIs only
2025-11-09 02:58:09 +02:00
Jukka Aho ebfd1392f6 chore: Regenerate Manifest.toml with minimal dependencies
Clean manifest with only:
- stdlib packages (LinearAlgebra, Logging, SparseArrays)
- Tensors.jl and its dependencies (StaticArrays, etc.)

Removed vendor packages and heavy dependencies.
2025-11-08 14:31:45 +02:00
Jukka Aho d3fc55f13e feat: Integrate FEMBasis into JuliaFEM module (partial)
- Add Tensors and Calculus to Project.toml dependencies
- Add basis includes to src/JuliaFEM.jl (Phase 1 integration)
- Fix FEMBasis. namespace references → use JuliaFEM namespace
- Update create_basis.jl: AbstractBasis (not FEMBasis.AbstractBasis)

Status: Basis files load, but conflict with FEMBase expectations
Next: Need to consolidate FEMBase or work around AbstractElement type constraints

This is expected during consolidation - we're bridging two systems.
2025-11-08 09:09:54 +02:00
Jukka Aho 724ed52923 Add Manifest.toml 2025-11-08 08:50:59 +02:00
Jukka Aho 80f6eb2b72 Remove Manifest.toml 2019-11-26 22:35:51 +07:00
Kristoffer Carlsson 09c355b916 make backwards compatible 2018-11-29 17:40:55 -05:00