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?
>

Reply via email to