BriefFiniteElementNet / BriefFiniteElement.Net

BriefFiniteElementDotNET (BFE.NET) is a library for linear-static Finite Element Method (FEM) analysis of solids and structures in .NET
GNU Lesser General Public License v3.0
154 stars 57 forks source link

Validation of TetrahedronElement #93

Closed epsi1on closed 3 years ago

epsi1on commented 3 years ago

TetrahedronElement needs to be validated against other implementations, @rubsy92 can you please create a beam model with tetrahedron, something like this image (i found it over web)

image

The beam is fixed to ground from one side, and free on other side (cantilever beam) Two different loadings, 1- concentrated load on tip of beam, on each node for example 1kn force. 2- uniform body load for all elements, for example 100 kN/m3 I did the coding section, but am not familiar and have no access to packages like abaqus, so can you please make this model and send me the plain text results which inclode node locations and final displacements? I'll do the C# part. Thanks...

rubsy92 commented 3 years ago

Hi @epsi1on ,

Could you already make a model in BFE? Then I can make the Abaqus model in such a way that the elements are equally sized/located as in your model.

epsi1on commented 3 years ago

Hi, Code is already done in this file

https://github.com/BriefFiniteElementNet/BriefFiniteElement.Net/blob/master/BriefFiniteElementNet.Validation/Case_03/Validator.cs

To execute code inside this file you should put a breakpoint in line 55, and set the BriefFiniteElementNet.Validation.Ui as startup project and start debugging. it will automatically execute this file (using Attribute)

Thanks

epsi1on commented 3 years ago

Hi @rubsy92 , jetbrains.com have a backing service for opensource projects and they give free software license to the opensource projects. I also have requested license for this opensource project (BFE.NET) from their site and they gave me licenses. As you are contributing to this project, do you need a full license for JetBrains Ultimate (includes Resharper and other products)? I'll send to your email for free.

Thanks

rubsy92 commented 3 years ago

Hi @epsi1on

There is an issue with how Abaqus meshes things.. afbeelding

As you can see this mesh is different from BFE and it places the outer elements in a nice grid, but the inner ones are going from center to center (see the red element in the image above). Would it be interesting to generate a BFE model based on an Abaqus input file? In that way the elements and nodes are in the same place. The only downside is that we would need to reference an input file and convert it (I'll be happy to do it for this case). Let me know

On the Jetbrains: I'll look into it and I'll let you know.

epsi1on commented 3 years ago

Hi, Thanks for the details. I think better to have exactly identical models. Currently i'm working on tetrahedron and I think some problems still exists and I was not able to fix them yet. So I think better to re-generate BFE model from Abaqus model to have EXACTLY same element count, dimensions and nodal locations.

Thanks

epsi1on commented 3 years ago

Hi, Can you please let me know when you finished the abaqus modeling and output. Any arbitrary console beam modeled with tetrahedron.

Thanks

rubsy92 commented 3 years ago

Hi,

I'm working on it right now. So far I can read the nodes and create the elements, but I would like to read the loads etc as well. I hope to push it today.

By the way, regarding the Jetbrains license: I won't be needing that, but thanks for the offer!

rubsy92 commented 3 years ago

Hi @epsi1on ,

You have a pull-request which includes an Abaqus input file, as well as the code for auto-generating an BFE from it. Note that the code generates the nodes, elements, concentrated forces and the boundary conditions with the following limitations:

Today I don't have an Abaqus license - so I can't run my Abaqus model to compare. This does give us some time to add other features if needed.

epsi1on commented 3 years ago

Thank you for adding the Abaqus result (pull request number 98) Now I can find the problem with tetrahedron code...

epsi1on commented 2 years ago

Hi @rubsy92 , Hope you still have Abaqus input and output of this issue on you computer. in pull request #98 you added some images input file and also two output file of Abaqus, but i also need the nodal displacement of model after abaqus solves. If possible can you please provide abaqus nodal displacement output file also?

Thanks

rubsy92 commented 2 years ago

Hi @epsi1on ,

Please see the attached file. Let me know if I can provide further assistance

Displacements.txt .

epsi1on commented 2 years ago

Works like a charm! here is result bfe vs abq:

Maximum ABS error: 5.0418071254145326E-10 Average ABS error: 1.236253815089115E-10

Thanks, this issue is done...

rubsy92 commented 2 years ago

Great! Do you want me to make a second example to test it more?

epsi1on commented 2 years ago

I think it is good enough for tetrahedron, but it would be good for hexahedral (brick) element if have a validation for that

https://github.com/BriefFiniteElementNet/BriefFiniteElement.Net/blob/ea22990436047a97c7567f4828d8e1ce63110f5d/BriefFiniteElementNet.CustomElements/Elements/HexahedralElement.cs

If you can handle the abaqus side, then i'll handle the bfe side and do a validation for the hexahedral (brick) element

Thanks

rubsy92 commented 2 years ago

Okay. Maybe the same example, but meshed with bricks? I think it would be handy since then we can see the difference in accuracy between the two types of elements.

epsi1on commented 2 years ago

Okay. Maybe the same example, but meshed with bricks? I think it would be handy since then we can see the difference in accuracy between the two types of elements.

yes, that would be good.

rubsy92 commented 2 years ago

Hi @epsi1on,

See the pull request for the validation data from Abaqus, as well as a hexahedral class I tried to make in the past. It is not fully working, however it might be a start?

epsi1on commented 2 years ago

Hi @epsi1on,

See the pull request for the validation data from Abaqus, as well as a hexahedral class I tried to make in the past. It is not fully working, however it might be a start?

Thanks. your files are good. But i need to have some checks with the BFE, in some cases, the determinant of jacobian matrix of hexa element is negative, that is because node order - arrangement of brick element.

The node order for TetraElement has a simple rule, can be simple checked with a vector cross etc. https://github.com/BriefFiniteElementNet/BriefFiniteElement.Net/blob/983677507ed606284bd95182ab48579e73146a8a/BriefFiniteElementNet.CustomElements/Elements/HexahedralElement.cs#L72

But for HexahedralElement it must be a little more complicated. I was not able to find a reference for detailed calculation for checking and fixing node order for hexa. So i'll continue looking for that and then implement it. Any info that helps to check the node order of hexa element is highly welcomed!...

rubsy92 commented 2 years ago

Maybe this can help subtettest.pdf ?