JuliaFEM / FEMBeam.jl

Beam implementation for JuliaEFM
MIT License
5 stars 4 forks source link

Mixing beam models with different number of dofs #22

Open sebastianpech opened 5 years ago

sebastianpech commented 5 years ago

I implemented a simple spring element (3 dofs, only normal forces). Now I want to combine it with the euler-bernoulli beam element. However, the global stiffness matrix is not positive definite. In general mixing elements should be supported right? I think the main problem is that while having the same geometry for both types of elements, one has 3 and the other has 6 dofs. Here no conversion between problem dofs to solver dofs is done and here only problem based dofs are considered, right? So the only way I currently see to get the assembly right is making sure that the dof numbering between the two problems matches, which is not very user friendly.

Is there something I'm missing or is the only way to use set_gdofs(problem, element, dofs) and manually map the dofs of the 6 dof problem to the ones of the 3 dof problem?

sebastianpech commented 5 years ago

I managed to get it running with setting the matching dofs. Now I have the problem that in the stage of writing back the field results, the wrong dofs are written to the fields. I think the problem is that this function infers the number of nodes with

 nnodes = round(Int, length(u)/field_dim)

which is obviously not given for my problem because u has storage for 6 dofs per node while field_dim is 3.

So the more general way would be to use get_gdofs to extract the values from u and then reshape.

I can make a PR for that if that is something that's useful for the package and is not messing with something else (I don't have such a good overview of all the related packages yet ;))