ONSAS / ONSAS.jl

An Open Nonlinear Structural Analysis Solver in Julia
MIT License
7 stars 1 forks source link

LinearSolve static analysis #467

Closed mvanzulli closed 9 months ago

mvanzulli commented 10 months ago

Description

This PR implements the interface using LinearSolve.jl pkg including a new linear_solver object to solve linear systems. By the moment the computation is done non-inplace, I've created this issue to follow up #475

Benchmark results

Previous results using cg! form IterativeSolvers.jl:

ID time GC time memory allocations
["linear_cylinder_internal_pressure", "point_eval_handler, ms = 0.5, nelems = 2321, nnodes = 816, npoints = 1000"] 147.156 ms (5%) 59.58 MiB (1%) 1882863
["linear_cylinder_internal_pressure", "point_eval_handler, ms = 0.5, nelems = 2321, nnodes = 816, npoints = 125"] 20.103 ms (5%) 8.22 MiB (1%) 262401
["linear_cylinder_internal_pressure", "point_eval_handler, ms = 1.0, nelems = 10804, nnodes = 3092, npoints = 1000"] 675.662 ms (5%) 10.921 ms 261.83 MiB (1%) 8510117
["linear_cylinder_internal_pressure", "point_eval_handler, ms = 1.0, nelems = 10804, nnodes = 3092, npoints = 125"] 94.399 ms (5%) 35.34 MiB (1%) 1151102
["linear_cylinder_internal_pressure", "solve!, ms = 0.5, nelems = 2321, nnodes = 816"] 111.429 ms (5%) 6.336 ms 174.21 MiB (1%) 711754
["linear_cylinder_internal_pressure", "solve!, ms = 1.0, nelems = 10804, nnodes = 3092"] 1.937 s (5%) 57.378 ms 809.43 MiB (1%) 3300405
["linear_cylinder_internal_pressure", "structure, ms = 0.5, nelems = 2321, nnodes = 816"] 66.666 ms (5%) 12.59 MiB (1%) 167123
["linear_cylinder_internal_pressure", "structure, ms = 1.0, nelems = 10804, nnodes = 3092"] 263.812 ms (5%) 49.96 MiB (1%) 668519
["linear_extension", "solve, ms = 0.1, nelems = 9239, nnodes = 2137"] 462.767 ms (5%) 43.934 ms 688.37 MiB (1%) 2790054
["linear_extension", "solve, ms = 0.2, nelems = 1316, nnodes = 398"] 56.211 ms (5%) 6.260 ms 98.15 MiB (1%) 398717
["linear_extension", "solve, ms = 0.3, nelems = 579, nnodes = 201"] 22.264 ms (5%) 43.33 MiB (1%) 175760
["linear_extension", "solve, ms = 0.4, nelems = 256, nnodes = 107"] 9.352 ms (5%) 19.29 MiB (1%) 78027
["linear_extension", "solve, ms = 0.5, nelems = 144, nnodes = 62"] 5.276 ms (5%) 10.84 MiB (1%) 43971

Closes #413

codecov-commenter commented 10 months ago

Codecov Report

Merging #467 (c968665) into main (dda2504) will decrease coverage by 0.18%. The diff coverage is 82.14%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.

@@            Coverage Diff             @@
##             main     #467      +/-   ##
==========================================
- Coverage   86.95%   86.78%   -0.18%     
==========================================
  Files          44       44              
  Lines        1694     1710      +16     
==========================================
+ Hits         1473     1484      +11     
- Misses        221      226       +5     
Files Coverage Δ
src/StructuralAnalyses/StaticAnalyses.jl 100.00% <100.00%> (ø)
src/StructuralAnalyses/StaticStates.jl 88.09% <100.00%> (+0.29%) :arrow_up:
src/StructuralSolvers/StructuralSolvers.jl 68.65% <100.00%> (ø)
src/StructuralAnalyses/LinearStaticAnalyses.jl 84.44% <88.88%> (-0.85%) :arrow_down:
src/StructuralAnalyses/StructuralAnalyses.jl 76.47% <0.00%> (-4.78%) :arrow_down:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more