BriefFiniteElementNet / BriefFiniteElement.Net

BriefFiniteElementDotNET (BFE.NET) is a library for linear-static Finite Element Method (FEM) analysis of solids and structures in .NET
https://www.bfe-framework.net
GNU Lesser General Public License v3.0
154 stars 58 forks source link

Inconsistent results when using BarElement (replaceing FrameElement2Node) #58

Closed shazadInayat closed 4 years ago

shazadInayat commented 4 years ago

Describe the bug I am trying to migrate some code using the FrameElement2Node to the BarElement. Since FrameElement2Node is obsolete.

My code is analyzing a simple portal frame same as in the example on code project. The problem I am faceing, if when using BarElement.element.GetInternalForceAt(x).My, I am getting inconsistent results in comparison to the same procedure applied to the old FrameElement2Node..GetInternalForceAt(x).My.

The issue can be reproduced by looking at example 3 on code project. If value for My at the end of e0 should be the same as at the start of e1, however this is not the case. Hence I think this could be potential bug.

If try the same code with FrameElement2Node, then I do not get the above results the results are as expected.

epsi1on commented 4 years ago

Describe the bug I am trying to migrate some code using the FrameElement2Node to the BarElement. Since FrameElement2Node is obsolete.

My code is analyzing a simple portal frame same as in the example on code project. The problem I am faceing, if when using BarElement.element.GetInternalForceAt(x).My, I am getting inconsistent results in comparison to the same procedure applied to the old FrameElement2Node..GetInternalForceAt(x).My.

The issue can be reproduced by looking at example 3 on code project. If value for My at the end of e0 should be the same as at the start of e1, however this is not the case. Hence I think this could be potential bug.

If try the same code with FrameElement2Node, then I do not get the above results the results are as expected.

Hi, Instead of BarElement.GetInternalForce you should use BarElement.GetExactInternalForce, then force at the end of e0 element will be same as start of e1 element. See this link: https://bfenet.readthedocs.io/en/latest/elements/finiteElements/Bar/internalforces.html

shazadInayat commented 4 years ago

Thanks epsi1on. using the BarElement.GetExactInternalForce, gave the desired results. However I did get an exception;

'Internal force is descrete at xi = -1, thus have two values in this location. try to find internal force a little bit after or before this point'

I overcame this by using -0.9999999999 as the perimeter (xi).

Loving your work. I would be happy to contribute however I do not know too much FEM, however I have over 20 years coding experience in C#. So if you need any help with pure coding, please do not hesitate to ask.

epsi1on commented 4 years ago

You did right thing about the discrete point, for example look at this:

image

Same is true with the shear force exactly under the applying point (x = l/2), so the internal shear have no value there. a little bit before this point shear is positive p/2 and a little after is negative p/2 and library should returns true value, However moment is not discrete at that point, and have unique value at x=l/2, but because of discrete in shear, the BarElement.GetExactInternalForce will throw this exception.

Loving your work. I would be happy to contribute however I do not know too much FEM, however I have over 20 years coding experience in C#. So if you need any help with pure coding, please do not hesitate to ask.

First version of C# is with visual studio 2003, so you should be on developer team of visual studio? :)