JuliaFEM / JuliaFEM.jl

The JuliaFEM software library is a framework that allows for the distributed processing of large Finite Element Models across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage.
http://juliafem.github.io/JuliaFEM.jl/latest/
MIT License
249 stars 66 forks source link

Elasticity: add a local buffer struct to preallocate things needed in the assembly loop #220

Closed KristofferC closed 4 years ago

KristofferC commented 5 years ago

This is one step towards https://github.com/JuliaFEM/JuliaFEM.jl/issues/219 where we need to preallocate all the local buffers that each thread will use. This makes that simpler.

KristofferC commented 5 years ago

The creation of this local buffers should probably be moved to somewhere around https://github.com/JuliaFEM/FEMBase.jl/blob/master/src/assembly.jl#L85.

ahojukka5 commented 5 years ago

After looking at this pull request with detail, it looks that some parts of code is missing, which is defining K_csc and f_csc to problem.assembly. Anyway, we should design this so that we have an abstract representation of matrices in Assembly, so that we can just change SparseMatrixCOO -> SparseMatrixCSC and everything works as expected, and not define several different stiffness matrices to Assembly.

As a general note, this pull requests is trying to do too many things at once, and commits should have some meaningful description of what they are doing so that they can be merged separately. I tried to rebase this to newest master but lost the idea in the first rebase conflict. As this is still clearly "work in progress" stage, we should rebase commits so that we can pick already working ideas to the master branch.

TeroFrondelius commented 5 years ago

As this is still clearly "work in progress" stage, we should rebase commits so that we can pick already working ideas to the master branch.

@KristofferC do you agree with @ahojukka5's comment here? I would need to get this merged. What would be the minimum energy principle to get there?