algorithmic modeling for Rhino

I am trying to understand the behaviour of the lateral torsional buckling calculations for beam elements in Karamba (1.3.2 build 190811)

In terms of effective length I am expecting that the lateral torsional buckling to be solely governed by BklLenLT and the calculated Mcr (as output from the Details of the Utilization component) to be the same as that calculated to NCCI: Elastic critical moment for lateral torsional buckling SN003b-EN-EU.

What I am seeing is BklLenLT is having some influence on Mcr  but I am also seeing BklLenZ having a large influence on the Mcr calculated.

When BklLenZ and BklLenLT at set to the same values, the calculated Mcr is not quite what I am expecting, but that could be due to different C1 and C2 values.

Is any one able to shed some light on what is being done in these calculations?

Views: 96

Replies to This Discussion

Hello Nick,

the influence of BklLenZ on Mcr is due to the formula in section 6.7.1 (8) in ÖNorm B 1993-1-1 which is the country specific part of EC3 for Austria.
The C++-code of Karamba3D which calculates the EC3-values can be found in the second post of the discussion 'Bending Moment Utilization' (see

The master's thesis of Jukka Mäenpää (see also deals with Karamba3d's design algorithm for steel members.



Thanks for posting this Clemens,

I have found where my issue is coming from. The C++ calculation for M_cr doesn't follow what I was expecting based on the named inputs. My assumption was:

  • bklLen_Y = buckling length considered about the major axis strut buckling
  • bklLen_Z = buckling length considered about the minor axis strut buckling
  • bklLen_LT = buckling length considered in lateral torsional buckling

What looks to be the case is:

  • bklLen_y = buckling length considered about the major axis
  • bklLen_z = buckling length considered about the minor axis and lateral torsional buckling
  • bklyLen_LT = buckling length considered for warping in lateral torsional buckling

I don't think there is anything intrinsically wrong with the use of bklLen_Z in this way, or the definition of the value used in bklLen_LT, but the name of bklLen_LT suggested something different to me.

Background below:

M_cr is calculated by a closed form analytical solution to the lateral torsional buckling problem, i.e. it is not a code dependent expression so easy to compare between the code and other documents:

The first term in the square root term in the C++ is:


Which is the square of the ratio of minor axis buckling and lateral torsion buckling effective lengths inputs, multiplied by the ratio of the warping and minor axis bending constants of the section.

In SN003b-EN-EU ( expression (1) the corresponding term is


(In fact SN003b calls Cw 'Iw' but I have substituted above to aid the comparison).


  • k = effective length factor to end rotation on plan. Which is analogous to the minor axis effective length in strut buckling.
  • k_w = effective length to end warping. Usually taken as 1.

So Karamba takes the input value of Bkl_LenLT to be the effective length specifically for warping of the section, as:

SQR(lk_z/lk_LT) = SQR([k*L]/[k_w*L]) = SQR(k/k_w)

(I originally thought it was the effective length for end rotation on plan.)

Apart from naming/understanding of how the inputs are used, I could only see a problem with this approach if there were a situation where the minor axis strut buckling effective length was not equal to the effective length for lateral torsional buckling. I could think of the following situations:

  1. The lateral restraint force is related to compression in the section. A (rare?) situation could be where the lateral restraint system has sufficient strength to provide lateral restraint against lateral torsional buckling, but not the higher restraint force of strut buckling about the minor axis. This feels like quite a contrived situation and I can't think of a practical example.
  2. Where lateral strut buckling restraint is provided to the beam by connection to the web, which is less effective at restraining the top flange against lateral torsional buckling. In this situation you may want/need to define separate a minor axis strut buckling and lateral torsional buckling effective lengths. Where the lateral torsional buckling effective length is the lk_z value in the calculation. This isn't currently possible.

Neither of the two situations apply to what I am currently looking at, so now I understand how bklLen_LT is used I can work around that!

Hello Nick,

thank you very much for sharing this information and the link!
I will update the manual in this respect.







  • Add Photos
  • View All

© 2020   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service