How to distinguish primary and secondary beam in FEM formulation?

Assume that I am writing a new FEM software for structural analysis, it shouldn't really matter whether this is a frame or frame+shell element analysis tool.

I understand that primary and secondary beams have their own function, and are designed for different use.

Primary Beam: A horizontal beam connecting columns (simply supported or shear connected.) Function: It will transfer the load from secondary beam(if present) to the columns.

Secondary Beam: A horizontal beam connecting primary beams (simply supported or shear connected.) Function: It will transfer the load to the primary beam and not directly connected to the columns.

In FEM, everything is just frame element, and all the beams and columns are equal, so whether one beam should resist more loads ( ie primary beam) than the other is completely up to the outcome of FEM procedure. But as engineers, sometimes we just want this one beam to take more loads than the neighboring ones.

How can I modify my FEM engine to do what I want?

• What do you mean by primary and secondary beams? If you were talking about full FEM, including non-frame elements (in which case the term "structural frame analysis" isn't entirely correct, since that usually means only one-dimensional beam-like members), then I'd assume you mean the difference between the beams that take loads directly from the slabs and those that support those beams. But that doesn't really make sense in a frame analysis tool. – Wasabi May 18 '16 at 14:28
• @Wasabi, see updated question – Graviton May 19 '16 at 8:53

You have some options:

1. Remove/Ignore the secondary beams from your analysis. If they aren't there to take bear major loads, then remove them completely and perform your analysis on the primary beams in isolation. This could potentially be performed by reducing the Young's modulus of the secondary beams, to simulate artificially suppress their effect on displacements of the primary beams as a result of loading.

2. Perform nonlinear contact analysis Set gaps between the primary and secondary beams. Load the primary beams and set contact conditions between the two. The secondary beams will only start bearing load after the primary beams have deformed and make contact with the secondary beams.

2. Explanation

Using FE methods, very few models can be analysed using linear static modelling, they are simply too complex. A linear static models can be computed very fast and usually need only be calculated once. Why only once? - consider that a linear static models deformation will be linearly proportional to the force applied. If for example an applied load x leads to a deformation y, it's safe to assume that a load of 2x will deform the part by 2y etc.

Very few models can be accurately modelled in this way because in real life, there are many causes of nonlinearity.

Typically 3 causes of nonlinearity are considered: Material nonlinearity (look at the stress strain for rubber or steel - both nonlinear); geometric nonlinearity (deformations can alter the location and orientation of loads and internal strains) and contact nonlinearity. Contact nonlinearity is best explained with a simple diagram:

Thus by providing a physical gap between the primary and secondary beams and setting up contact conditions, your FEM software will necessarily consider a contact nonlinearity condition. This might not accurately describe your model, but applying this method could force the simulation to only load the secondary beams after the primary beams have deformed by a certain margin.

• For second option: Perform nonlinear contact analysis -- can you elaborate, or give some point reference? – Graviton May 19 '16 at 10:36
• Better explanation added. – Phil May 19 '16 at 10:50
• Remove/Ignore the secondary beams from your analysis.-- is this a good idea? Because the secondary beam will not be able to take any loading, which is not what I want after all. I still want it to take loading when it should, but also let the primary beams take the most loading if primary ones are nearby/available. – Graviton May 20 '16 at 4:53
• @Graviton No, if you do that then you can not catch design errors. But it greatly depends on what you want to know, even a imperfect local model can be good enough for many things – joojaa May 20 '16 at 15:59
• As above. It depends what information you need to know. If you want the secondary beams to take over after a certain point, you're going to need to go down the contact nonlinearity route. – Phil May 21 '16 at 7:29

Your description of what primary and secondary beams do is dramatically different to the definition given in the link you present (which is itself correct).

Primary Beam:
A horizontal beam connecting columns (simply supported or shear connected.)
Function: It will transfer the load from secondary beam(if present) to the columns.

Secondary Beam:
A horizontal beam connecting primary beams (simply supported or shear connected.)
Function: It will transfer the load to the primary beam and not directly connected to the columns.

That is the only difference. Secondary beams take in the loads from the slab and transfer them to the primary beams, which then transfer them to the columns.

So all you need to do in your FEA software is allow the user to define how these loads are applied. You don't need to create different categories of beam elements (primary vs. secondary).

You are calling your software a frame analysis tool. This implies that 2D elements like plates and shells aren't available, only 1D beam elements. This therefore means that the user will have to take some decisions as to how area loads which are applied to the slab (which you can't model, since you don't have 2D elements) are transferred.

• If your program is simple, the user will have to apply the linear distributed loads on each beam by hand. In this case, there's no problem: the user applies the relevant loads on the secondary beams which then transfer them to the primary beams.
• Your program may also include "area loads", where the user defines an area and a load and the program automatically decides how to distribute this area load to the beams, usually through tributary areas. So long as the user can define the beams that are to be considered for these area loads, that's also not a problem. You just define the area load and then tell the program to only consider the secondary beams (though, depending on the layout, letting some of the load go directly to the primary beams would actually be more correct).
• If your program is actually a full structural analysis tool with 2D elements (and is therefore more than just a frame analysis tool) as well to model the slab, that's still fine. If the user can tell the slab not to take the specific beams into consideration while meshing (such as your intended primary beams), they won't share any nodes and therefore won't have any direct load transfer. The slab will mesh joining itself only to the remaining beams, transferring loads to them, who will then transfer the loads to the primary beams.

Also, the image in your OP is a poor example of primary and secondary beams because, structurally, they are identical. The secondary ones are a bit shorter, but they share the same top-level with the primaries. This means that when the slab transfers loads, it makes no distinction between them. Look at the tributary areas for each slab, it's clear the vast majority of the loads will naturally go to the secondaries, with only a small triangle of load going to each of the primaries. Therefore, when you model them there should be no distinction between them: the loads should go where they naturally wish to go.

However, if you're modelling something like the roof below, then you'll need to control how the loads are distributed. After all, all the loads coming from the roof need to go through the purlins. None of the loads may go directly to the rafters.

• If the user can tell the slab not to take the primary beams into consideration while meshing, they won't share any nodes and therefore won't have any direct load transfer. -- doesn't' seem very right to me, because what if some primary beams will also need to take loads directly from slab? – Graviton May 20 '16 at 4:49
• Also, whether my tool is a frame-only tool or with 2D elements is not so important here, the important thing here is that how should the program distinguish between primary and secondary beams. Not too sure why you are emphasizing this distinction a lot – Graviton May 20 '16 at 4:49
• @Graviton: When I said that the slab won't mesh with the primary beams, I didn't mean that there will be any such category (primary v. secondary). In fact, the main point in my answer is that you shouldn't have to create such beam categories at all. What I meant is that the user should be able to tell slabs not to take certain beams (which are hand-picked) into consideration when meshing. So, if a beam should be isolated from the slab, you tell the slab to ignore it. If it should be considered, you let it be. – Wasabi May 20 '16 at 11:13