# Lateral-torsional buckling

Hi,

I’m trying to analyze a cantilever beam with a narrow rectangular cross-section subjected to lateral-torsional buckling. The beam is fixed at one end and the top edge of the opposite end has a rigid body constraint applied. The reference point for this constraint is located in the middle of this edge and concentrated force is applied to it:

This approach works fine in Abaqus but I can’t make it run successfully in CalculiX. I don’t get any specific errors, there are just on results.

Do you know what could be wrong here and how I should proceed with this simulation in CalculiX ?

Hello,

a local single load could be a problem sometimes.
maybe you change with self weight,

or you use the area instead one single point
*RIGID BODY

If you need some example with lateral torsional buckling, let me know.

wbr

beam-3D.fbd

PNT P001 -50 -50 0
SETA P001 p P001
SWEP P001 L001 tra 100
SETA L001 l L001
SWEP L001 A001 tra 0 100 0
SETA A001 s A001
COMP A001 d
SWEP A001 B001 tra 0 0 1000 20
#DIV all mult 10
ELTY all HE20
MESH all
SEND all abq
SEND A001 abq nam
prnt se
view elem

beam-3D.inp

*INCLUDE, INPUT=all.msh
*INCLUDE, INPUT=A001.nam

*MATERIAL, Name=steel
*ELASTIC
210000,0.3
*DENSITY
7.86E-9

*SOLID SECTION, Elset=Eall, Material=steel

*STEP

***STATIC
*BUCKLE
4

*BOUNDARY
NA001,1,3,0

Eall,P4,1

*NODE FILE, OUTPUT=3D
U,

*EL FILE
S,

*NODE PRINT,NSET=NA001,totals=only
RF

*END STEP

Thank you very much for your reply. The thing is that I want to model it in such a way that I can verify the results using analytical solution. And that solution assumes force acting only on the top edge of the beam. But maybe load applied to some narrow surface split from the top face of the beam will work in this case, I will definitely give it a try and let you know if it helped.

Regardless of the approach that I will use for this problem, I also wonder why the results can’t be obtained when load is applied via rigid body constraint only to the edge. Is that some kind of a bug in ccx ?

If i work with buckling modes in ccx,
i use ccx only in ST, not in MT.
all my examples are working with analytical solutions.
Somtimes the user is the bug.

wbr

It doesn’t run on a single cpu as well but it’s good to know that parallel processing may not be a good idea for linear buckling analyses. Can you share some more tips regarding this type of simulations in CalculiX ? For example, which types of elements, loads and constraints (rigid body, coupling) to use and which to avoid. Do you get good agreement with analytical values ? So far all linear buckling simulations that I performed in CalculiX (even the one with a simple column fixed at one end and subjected to axial compression) predicted critical loads with rather small accuracy when compared with analytical values. Mesh refinement didn’t help as well. Maybe you could share some additional examples of buckling analyses ?

I tried with load applied to small surface separated from the top face of the beam and the simulation was completed but the results were completely incorrect.

Sure, normally I would suspect my fault first but in this case settings are the same as in other software (Abaqus, Fusion 360) where the analysis works. That’s the only reason why I thought that it might be a bug in CalculiX.

P.S. In buckling simulations I sometimes get some strange local buckling instead of a global buckling mode for selected meshes. It’s probably caused by small defects in tetrahedral meshes generated by Netgen, right ?

I have done buckling modes with I-Profile, U-Profile and C-Profile.
All of them are working with lateral-, torsional and lateral torsional buckling.
They work with solid but also possible with shell elements.

But there is a problem, that LTB is working with solid elements
only
if you use *COUPLING with *DISTRIBUTING, see examples.

For solid elements with LTB:

*SOLID ELEMENTS
*Hexahedra (cube) (linear)
*ST
*COUPLING *DISTRIBUTING

I have posted these issue (problem) years ago, but there was no response.
I prefer to work with *rigid body by nonlinear calc. with predeformation and nonlinear material.

I-profile_solid.fbd

## I-profile with solid elements

valu h 448
valu b 400
valu tw 12
valu tf 24
valu tp 24
valu _length 11000
valu factor 0.5
valu -factor -0.5
valu bstern * b factor
valu -bstern * b -factor
valu hstern * h factor
valu -hstern * h -factor
valu twstern * tw factor
valu -twstern * tw -factor
valu d - hstern tf
valu tp2 / tp factor
valu lengthnetto - _length tp2
valu length1 - _length tp
valu aoeb 220
valu aoew 4
valu aoef 4
valu aoet 0.25

pnt D001 0 -twstern 0
pnt D002 d -twstern 0
pnt D003 d twstern 0
pnt D004 0 twstern 0
pnt D005 hstern -twstern 0
pnt D006 hstern twstern 0
pnt D007 d -bstern 0
pnt D008 hstern -bstern 0
pnt D009 hstern bstern 0
pnt D010 d bstern 0

line L001 D001 D002 aoew
line L002 D002 D003
line L003 D003 D004 aoew
line L004 D004 D001

line L005 D002 D005
line L006 D005 D006
line L007 D006 D003

line L008 D002 D007 aoef
line L009 D007 D008
line L010 D008 D005 aoef

line L011 D006 D009 aoef
line L012 D009 D010
line L013 D010 D003 aoef

gsur A001 + BLEND + L001 + L002 + L003 + L004
gsur A002 + BLEND + L005 + L006 + L007 - L002
gsur A003 + BLEND + L008 + L009 + L010 - L005
gsur A004 + BLEND + L011 + L012 + L013 - L007

seta ldiv2 L002 L004 L005 L006 L007 L009 L012
div ldiv2 mult aoet

seta ldivtw L001 L003 L014 L017
seta ldivtf L008 L010 L011 L013

seta sketch1 s all
swep sketch1 volume1 tra 0 0 _length aoeb

copy all beam mir x

merg p all
merg l all
merg s all

elty all HE8
mesh all

#### RIGID BODY

seta rigidbody_01 p D001
seta rigidbody_02 p D00D
copy rigidbody_01 refnode_01 tra 0 twstern
copy refnode_01 rotnode_01 tra
copy rigidbody_02 refnode_02 tra 0 -twstern
copy refnode_02 rotnode_02 tra
seta refrotnode se refnode_01 rotnode_01
seta refrotnode se refnode_02 rotnode_02
setr all se refrotnode

#### RIGID BODY

seta sbound_01 s A001 A002 A003 A004
seta sbound_01 s A00M A00N A00O A00P
comp sbound_01 down
comp sbound_01 down

seta sbound_02 s A005 A006 A007 A008
seta sbound_02 s A00Q A00R A00S A00T
comp sbound_02 down
comp sbound_02 down

send all abq
send refrotnode abq
send sbound_01 abq nam
send sbound_02 abq nam
send sbound_01 abq sur
send sbound_02 abq sur
send refnode_01 abq nam
send refnode_02 abq nam
send rotnode_01 abq nam
send rotnode_02 abq nam

prnt se
plot e all
view elem
plot n sbound_01 b
plus n sbound_02 y
plus na refnode1 m
plus na rotnode2 m

I-profile_cd.inp

**** proof of lateral buckling by nonlinear geometric calculation
**** example: TUHH STAHLBUA III BEULEN, TORSION, BIEGEDRILLKNICKEN p.33-37
**** Stahlbau III

Model: ltb_I-profile_cd

**** centric pressure:
**** lateral buckling: 4.385,0 ccx: 4.405,0
**** lateral buckling: 15.877,0 ccx: 15.186,0
**** torsional buckling: 10.427,0 ccx: 10.258,0
**** bending moment:
**** lateral torsional buckling: 1.502,0 ccx: 1.504,0

*INCLUDE, INPUT=all.msh
*INCLUDE, INPUT=refrotnode.msh
*INCLUDE, INPUT=sbound_01.nam
*INCLUDE, INPUT=sbound_02.nam
*INCLUDE, INPUT=sbound_01.sur
*INCLUDE, INPUT=sbound_02.sur
*INCLUDE, INPUT=refnode_01.nam
*INCLUDE, INPUT=refnode_02.nam
*INCLUDE, INPUT=rotnode_01.nam
*INCLUDE, INPUT=rotnode_02.nam

*COUPLING,REF NODE=11935,SURFACE=Ssbound_01,CONSTRAINT NAME=CN1
*DISTRIBUTING
1,1
2,2
3,3
4,4
5,5
6,6

*COUPLING,REF NODE=11937,SURFACE=Ssbound_02,CONSTRAINT NAME=CN2
*DISTRIBUTING
1,6

*MATERIAL, Name=steel

*ELASTIC
210000,0.3

*DENSITY
7.86E-9

*SOLID SECTION, Elset=Eall, Material=steel

*STEP

*BUCKLE
8

*BOUNDARY
Nrefnode_01,1,3,0
Nrefnode_01,6,6,0
Nrefnode_02,1,2,0
Nrefnode_02,6,6,0

****BUCKLING

****CENTRIC PRESSURE
**Nrefnode_02,3,-1000
****CENTRIC PRESSURE

****BENDING MOMENT
Nrefnode_01,5, 1000000
Nrefnode_02,5,-1000000
****BENDING MOMENT

*NODE PRINT,NSET=Nsbound_01,totals=only
RF

*NODE PRINT,NSET=Nsbound_02,totals=only
RF

*NODE PRINT,NSET=Nrefnode_01,totals=only
RF

*NODE PRINT,NSET=Nrefnode_02,totals=only
RF

*NODE PRINT,NSET=Nrotnode_01,totals=only
RF

*NODE PRINT,NSET=Nrotnode_02,totals=only
RF

*NODE FILE
U

*EL FILE
S

*END STEP

I-profile_rb.inp

**** proof of lateral buckling by nonlinear geometric calculation
**** example: TUHH STAHLBUA III BEULEN, TORSION, BIEGEDRILLKNICKEN p.33-37
**** Stahlbau III

Model: ltb_I-profile_rb

**** centric pressure:
**** lateral buckling: 4.385,0 ccx: 4.381,0
**** lateral buckling: 15.877,0 ccx: 15.224,0
**** torsional buckling: 10.427,0 ccx: -,-
**** bending moment:
**** lateral torsional buckling: 1.502,0 ccx: 2.479,0

*INCLUDE, INPUT=all.msh
*INCLUDE, INPUT=refrotnode.msh
*INCLUDE, INPUT=sbound_01.nam
*INCLUDE, INPUT=sbound_02.nam
*INCLUDE, INPUT=refnode_01.nam
*INCLUDE, INPUT=refnode_02.nam
*INCLUDE, INPUT=rotnode_01.nam
*INCLUDE, INPUT=rotnode_02.nam

*RIGID BODY,NSET=Nsbound_01,REF NODE=11935,ROT NODE=11936
*RIGID BODY,NSET=Nsbound_02,REF NODE=11937,ROT NODE=11938

*MATERIAL, Name=steel

*ELASTIC
210000,0.3

*DENSITY
7.86E-9

*SOLID SECTION, Elset=Eall, Material=steel

*STEP

*BUCKLE
6

*BOUNDARY
Nrefnode_01,1,3,0
Nrotnode_01,3,3,0
Nrefnode_02,1,2,0
Nrotnode_02,3,3,0

****BUCKLING

****CENTRIC PRESSURE
**Nrefnode_02,3,-1000
****CENTRIC PRESSURE

****BENDING MOMENT
Nrotnode_01,2, 1000000
Nrotnode_02,2,-1000000
****BENDING MOMENT

*NODE PRINT,NSET=Nsbound_01,totals=only
RF

*NODE PRINT,NSET=Nsbound_02,totals=only
RF

*NODE PRINT,NSET=Nrefnode_01,totals=only
RF

*NODE PRINT,NSET=Nrefnode_02,totals=only
RF

*NODE PRINT,NSET=Nrotnode_01,totals=only
RF

*NODE PRINT,NSET=Nrotnode_02,totals=only
RF

*NODE FILE
U

*EL FILE
S

*END STEP

I-profile_ck.inp

**** proof of lateral buckling by nonlinear geometric calculation
**** example: TUHH STAHLBUA III BEULEN, TORSION, BIEGEDRILLKNICKEN p.33-37
**** Stahlbau III

Model: ltb_I-profile_ck

**** centric pressure:
**** lateral buckling: 4.385,0 ccx: 4.381,0
**** lateral buckling: 15.877,0 ccx: 15.224,0
**** torsional buckling: 10.427,0 ccx: -,-
**** bending moment:
**** lateral torsional buckling: 1.502,0 ccx: 2.479,0

*INCLUDE, INPUT=all.msh
*INCLUDE, INPUT=refrotnode.msh
*INCLUDE, INPUT=sbound_01.nam
*INCLUDE, INPUT=sbound_02.nam
*INCLUDE, INPUT=sbound_01.sur
*INCLUDE, INPUT=sbound_02.sur
*INCLUDE, INPUT=refnode_01.nam
*INCLUDE, INPUT=refnode_02.nam
*INCLUDE, INPUT=rotnode_01.nam
*INCLUDE, INPUT=rotnode_02.nam

*COUPLING,REF NODE=11935,SURFACE=Ssbound_01,CONSTRAINT NAME=CN1
*KINEMATIC
1,3
1,3

*COUPLING,REF NODE=11937,SURFACE=Ssbound_02,CONSTRAINT NAME=CN2
*KINEMATIC
1,3
1,3

*MATERIAL, Name=steel

*ELASTIC
210000,0.3

*DENSITY
7.86E-9

*SOLID SECTION, Elset=Eall, Material=steel

*STEP

*BUCKLE
8

*BOUNDARY
Nrefnode_01,1,3,0
Nrefnode_01,6,6,0
Nrefnode_02,1,2,0
Nrefnode_02,6,6,0

****BUCKLING

****CENTRIC PRESSURE
**Nrefnode_02,3,-1000
****CENTRIC PRESSURE

****BENDING MOMENT
Nrefnode_01,5, 1000000
Nrefnode_02,5,-1000000
****BENDING MOMENT

*NODE PRINT,NSET=Nsbound_01,totals=only
RF

*NODE PRINT,NSET=Nsbound_02,totals=only
RF

*NODE PRINT,NSET=Nrefnode_01,totals=only
RF

*NODE PRINT,NSET=Nrefnode_02,totals=only
RF

*NODE PRINT,NSET=Nrotnode_01,totals=only
RF

*NODE PRINT,NSET=Nrotnode_02,totals=only
RF

*NODE FILE
U

*EL FILE
S

*END STEP

Thank you very much, I finally managed to obtain good results for my LTB model using this approach with narrow surface separated from the top of the beam. And I used rigid body constraint to apply load so apparently it can help in some cases. The preprocessor that I use doesn’t have coupling constraints and I would have to define them manually. But it’s good to know that they work well in LBA.

However, there’s still that issue with some local buckling showing up instead of global buckling modes. It happens when I prepare and run the analysis with identical settings (including meshing parameters) a few times. I suspect that this is caused by the fact that the tetrahedral mesh from Netgen is not identical each time and there are some small differences in nodal coordinates that form something like imperfections. Have you encountered this issue in your studies ? Or do you not use this kind of mesh ?

If i have a structure like beam with solid ( or shell)
it is always better to use hexahedra elements,
because with tetrahedron the beam could get to “stiffness”.
you have to realy take care, if you use tetrahedron with beam properties.
Try one beam with hex and one with tehtr, and the deflection is different.
these has maybe also influence of your buckling modes.
I have also tried to put in middle nodes with the mesh of netgen,
to change from linear to higher order elements, but it had no influence.
i like to work with ccx(, or salome or gmesh) to build your fem mesh.
you can change quick elements and geometry and so on.
at beginning it is wasting time, but with every example you can paste & copy.

feel free to ask, but give back your knowledge to the community.

wbr

Thanks again. I really appreciate your support. And the examples that you share here will definitely help me gain experience with LBA in ccx.

The fact that tetrahedral elements overstiffen the model is one thing but I’m really surprised that their generation (at least with Netgen) can be inaccurate enough to cause such problems in buckling analyses. It happens so often that for some scenarios I get meaningless results more times than the correct ones.

Regarding local buckling modes, some buggy version of CCX are around that cause that or what can look like that. To make sure:

• As Dichtstoff said, don’t use the multithreaded SPOOLES solver for buckling. It causes random errors in mode shapes and buckling factors.
• Check that it can find modes below a buckling factor of 1. They’re excluded in some versions.

Otherwise, if the modes are jumping around that much with re-meshing, it might be too mesh sensitive and in need of refinement. Or the local modes might be too close to the global modes so they switch places sometimes, which is not really wrong.

Tetrahedron elements have a bad reputation but they’re not qualitatively wrong, just less efficient so they require a finer mesh for similar accuracy. They are overstiff in bending but as you refine the mesh, bending of individual elements becomes less significant and the error should approach zero.

Here’s a mesh convergence study for lateral torsional buckling with 4 different elements shapes. Tet meshes generated with Netgen. You can see that 4-node tet is utterly useless but does seem to converge to the correct value. Just use 10-node tets instead.

1 Like

The support has also an influence of the buckling modes!?
how you see with the example?
Only with *COUPLING *DISTRIBUTION you get exact results
with *RIGID BODY and *COUPLING *DISTRIBUTION seems to stiffness!?

how you get 10-node Tetrahedron elements with netgen?
i always tried, but don’t get it!
thnx