Hi,
JuliaFEM developer here.
About performance. I recently measured FEM problem assembly time vs. solver
time to find out the performance of JuliaFEM. Point was to find out when
assembly time is less than time used to solve Ax=b which is done in FORTRAN
and nothing can be done for that by me. I solved a displacement for 3d
piston model[1] with different meshes up to size 282035 nodes,
approximately 1 million dofs. Here's the results:
nnodes nels cholmod total aster
4801 4503 0.37 2.00 1.83
9602 8801 0.75 3.85 3.08
21752 19408 2.02 9.30 8.67
29904 26237 2.79 13.09 12.03
53007 45060 6.23 25.69 28.26
65622 55429 8.29 32.80 42.15
74547 62876 8.81 36.69 48.92
89630 74777 13.50 50.49 71.83
110515 91068 21.01 75.01 107.85
145521 118138 41.58 125.31 191.23
178261 143849 56.19 166.12 283.90
212365 170801 76.75 206.91 481.30
244032 196436 112.12 270.06 557.24
282035 227333 150.56 332.14 811.62
Assembly isn't optimized anyway but even with this performance it can be
seen that solving Ax=b takes about same amount of time than assembly when
there's about 1 million dofs in model. I hope that bigger models can be
solved effectively using PETSc.jl in future. For now I use simply x = A \ b
but it gets impractical with bigger models because of it's memory usage.
These models are solved using my 5 years old PC so it's already possible to
solve 1M dof problems with JuliaFEM in a reasonable time.
Currently it's possible to solve heat/Poisson problems and linear/nonlinear
elasticity problems in 2d and 3d. I've started to write blog posts about
developing and using JuliaFEM under category juliafem[2], so the current
status of the project can be followed from there and also from project web
site[7], but it's quite unfinished at the moment. I have not yet written
about developing own "problems" (expect that to be next post about
developing JuliaFEM) but it has been made very simple. A standard poisson
assembly procedure is only 30 lines of code and it's quite self
explaining[3]. An example how to build FEM models from scratch can be found
from tests[4]. I have written a script to read mesh from Code Aster med
file to construct bigger and more realistic models using SALOME. A better
example of solving Poisson problem in 3d can be found from [5]. Results can
be saved to Xdmf file format and visualized using Paraview [6].
Br,
Jukka
[1] http://ahojukka5.github.io/images/piston_displacement_results.png
[2] http://ahojukka5.github.io/categories/juliafem/
[3] https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/src/heat.jl
[4] https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/test/test_heat.jl
[5] http://ahojukka5.github.io/files/juliafem_examples/heat.jl
[6] http://ahojukka5.github.io/images/juliafem_logo_heat_results.png
[7] http://juliafem.org/
keskiviikko 8. kesäkuuta 2016 11.11.04 UTC+3 CrocoDuck O'Ducks kirjoitti:
>
> Hi There!
>
> I am involved into some multiphysics FEM problems I solve with ElmerFEM
> <https://www.csc.fi/web/elmer>. Seems to me that everything being
> maintained is pretty much gravitating around JuliaFEM
> <https://github.com/JuliaFEM/JuliaFEM.jl> and ElipticFEM
> <https://github.com/gerhardtulzer/EllipticFEM.jl>. Any of you guys doing
> some FEM with Julia? If so, what do you use?
>