Page 1 of 1

a note on code efficiency

Posted: 08 Aug 2020, 05:13
by spacedout
I am looking at Fig 18.5 in ElmerSolverManual.pdf It strikes me that ElmerSolver will call the solver subroutine every time step for a transient simulation and therefore the same .sif file will be inspected every timestep before the nonlinear iteration loop. Wouldn't it be faster to scan that configuration file only once ? In other words, before the first timestep. Again, bear with me. I am just a neophyte. Please be so kind as to put me back on the right track if I happen to be sailing adrift.

Re: a note on code efficiency

Posted: 09 Aug 2020, 16:57
by raback
Hi

Sif file is inspected once at the start of the simulation. From the sif file + mesh files the real structures are created.

You do however correctly observe that each module (aka Solver) is really called separately for each timestep. The time spent just for calling is insignificant. What can be questioned whether it makes sense to create the matrices anew every timestep and whether it makes sense to call the user defined functions for each element. Usually in Elmer we make no assumptions of constant coefficients and hence by default everything is computed again. Working with real-world multiphysics cases our philosophy has been that assume nothing. Any coefficient can be constant, dependence table, mathematical MATC/LUA expression or user defined function. This generality has served us well.

In cases where you really have constant matrices it is easy to save them from previous timestep. Many modules have a feature where by request you can skip the reassembly of the matrices

-Peter

Re: a note on code efficiency

Posted: 10 Aug 2020, 06:45
by spacedout
Very well.
I should have known better - that the entire structure was copied from the .sif file to ram memory. And of course the amount of time spent scanning strings from memory pales by comparison with the time spent doing number crunching (floating point arithmetic).
Have a great day
Marc