This project has moved. For the latest updates, please go here.

Internal Forces and Reactions

Oct 24, 2014 at 4:57 PM
Hi Ehsan,

elm.GetInternalForceAt(0).Fz
elm.StartNode.GetSupportReaction().Fz

These statements should give the same results for a column assuming column start node is the reaction. However, elm.GetInternalForceAt(0).Fz gives 0 and elm.GetInternalForceAt(0).Fx gives the same result numerically as elm.StartNode.GetSupportReaction().Fz.

The internal forces are usually given in local coordinate system(U1= Axial, U2 and U3 are defined x and y axis on section surface.

Can you explain please.
Coordinator
Oct 24, 2014 at 5:00 PM
Edited Oct 24, 2014 at 5:01 PM
hello,
Can you please expose rest of your code (and model)? it maybe is a bug but i am not sure.

Thanks
Oct 24, 2014 at 5:32 PM
You can simply create a model with 4 columns and four connecting beams and apply a load of say 1000 N
var eqL = new NodalLoad(new Force(0, 0, -1*load, 0, 0, 0));
                        elm.EndNode.Loads.Add(eqL);
and then solve model. The getsupportreaction is correct while elm.GetInternalForceAt(0).Fz is 0.

My code is kind of complex to paste here.
Coordinator
Oct 24, 2014 at 7:06 PM
Thanks for information,
For showing the model you are working on (not this time, but any other time you want to show your model), the best way is to save model into a file (with Model.Save method) and simply send the file.
have to note that GetInternalForceAt(douuble l) will get the internal force in local coordination system of element (see, for example this for more information). I think most usages of internal forces of frame element should be internal force in local coordination system (for example when a designing a beam we just consider the moment in its local z direction) but if you need it in global coordination system, then should use FrameElement2Node.TransformLocalToGlobal to transform the local force to global. for example like this:

Open BriefFiniteElementNet.Extensions.cs and add these two methods:
        /// <summary>
        /// Transforms the force in local coordination system into the global coordination system.
        /// </summary>
        /// <param name="elm">The elm.</param>
        /// <param name="force">The force.</param>
        /// <returns>transformed force</returns>
        public static Force TransformLocalToGlobal(this FrameElement2Node elm,Force force)
        {
            var f = elm.TransformLocalToGlobal(force.Forces);
            var m = elm.TransformLocalToGlobal(force.Moments);

            return new Force(f,m);
        }


        /// <summary>
        /// Transforms the force in global coordination system into the local coordination system.
        /// </summary>
        /// <param name="elm">The elm.</param>
        /// <param name="force">The force.</param>
        /// <returns>transformed force</returns>
        public static Force TransformGlobalToLocal(this FrameElement2Node elm, Force force)
        {
            var f = elm.TransformGlobalToLocal(force.Forces);
            var m = elm.TransformGlobalToLocal(force.Moments);

            return new Force(f, m);
        }
And them you can simply use FrameElement2Node.TransformGlobalToLocal() or FrameElement2Node.TransformLocalToGlobal() for converting between two coordination system.
Oct 24, 2014 at 8:13 PM
Perfect! It works now. Thanks.