Structural analysis of glulam

I am an architect and work with Grasshopper and Karamba, but I need an advanced software to conduct structural analysis of glulam beams and columns. Can anyone tell me if this is possible in PrePoMax and explain how to do it, or share a relevant file?

I am currently working on a project involving theoptimization of glulam beams and columns, in grasshopper focusing on the anisotropic material properties and grain orientation within segmented lamellas. I need an advanced tool to further analyze the structural behavior of these components in greater detail. Specifically, I am looking to understand how PrePoMax handles timber materials, including grain orientation and joint behavior in beams and columns. If anyone has experience with this or could share a file with the material properties and setup for glulam structures, it would be incredibly helpful. Any advice on how to set this up in PrePoMax would be greatly appreciated!

As I said in a reply to your comment under my YouTube tutorial, PrePoMax currently doesn’t support ortho- and anisotropic materials but they can be defined via Keyword Editor. Orientations will also be needed. CalculiX offers composite shell section for use in laminate modeling too.

When it comes to material properties, you should check some research papers. For example: Modelling of Glulam beams pre-stressed by compressed wood - ScienceDirect

1 Like

glulam beam factory may have free design software for their timber.

Thank you for the response. Starting with just this information feels a bit challenging as I am not an engineer and am unfamiliar with engineering-focused workflows. I understand that I need to use CalculiX and program with keywords to achieve my goals, but the process—especially defining parameters and running simulations—is not entirely clear to me.

For now, I am trying to determine the workflow for exporting geometry from Grasshopper/Rhino, importing it into CalculiX, and the coding complexity involved in setting up material properties, orientations, and bond definitions for lamellas with joints.

Additionally, I’d like to know if there is a way to create communication between Grasshopper/Rhino and CalculiX—perhaps through scripting—to define geometries, orientations, and bonding surfaces directly, while generating separate parts and bonding definitions for PrePoMax. If you have any insights or examples to help clarify this, it would be greatly appreciated!

Well, you would have to start by getting familiar with PrePoMax - doing some simple analyses following tutorials. Then check the Keyword Editor (also covered in some tutorials). For it, you need to follow the CalculiX syntax described here (each keyword is explained there and example .inp files are referenced - they can be found here).

You can also find some examples specifically for orthotropic materials in this forum thread:

Automation with other software would be the last step as it’s the trickiest part and you need to know how to define a model manually first. But geometry needs to be provided for PrePoMax, usually as a STEP file (recommended format) unless you import a mesh prepared in other software. I use FreeCAD to prepare the geometries but any CAD software will work.

1 Like

glued laminated timber can have different orientation of layered anisotopic materials, it’s not yet available in PrePoMax also.

1 Like

Good afternoon,

The simulation of wood could be attempted using keywords, specifically the term “ENGINERING CONSTANTS”. This approach would allow you to define a Young’s modulus for each spatial direction, aligning one direction with the fiber axis and the other two with the radial directions of the wood.

As a simplification, it might be useful to assign one Young’s modulus parallel to the fiber and make the other two equal. The variable “ENGINERING CONSTANTS” necessarily involves defining the “ORIENTATION” constant, specifying the direction of each Young’s modulus according to the orientation of the piece you intend to analyze.
Similarly, multiple layers of material with different orientations can be included, allowing you to simulate sheet-like elements, such as cross-laminated timber (CLT) panels.

The attached file contains a mixed beam of cross-laminated timber and a CLT panel. The elasticity values are random and should be used with caution, as well as the overall model, since it is an initial unverified test. I still need to conduct many tests in this regard, comparing it with analytical models. Perhaps this can serve as a starting point for you from the development of the keywords :https://we.tl/t-EjVlvVRt0e

I hope this is helpful to you; Best regards.

1 Like

@Damn Thank you very much for the explanation and the file.

I’ve been watching videos and trying to simulate a simple glulam beam, but so far, I keep getting errors and I’m unable to run the simulation. When I opened your file, I went through each step and understood it, but when I tried to start from scratch, something went wrong again.

So, I decided to take your script, erase the solid part, and focus only on the shell part. I replaced the material values and also updated the section in the keywords, but I can’t delete the parts that I don’t need.


Ill paste here part of the coding, as you may see there are parts of code that I don’t need but I cant erase.
.fctbNone{ color:#000000; } .fctbStyle1{ color:#0000ff; } .fctbStyle0Style1{ background-color:#e6ffe6;color:#008000; } *Material, Name=ECCLT *Material, Name=ECMATERIALEUCALIPTO *ELASTIC, TYPE=ENGINEERING CONSTANTS 12000000, 1200000, 1200000, 0.35, 0.35, 0.35, 700000, 700000, 300000 *DEPVAR 10 *Orientation, Name=orientationLongitudinal, System=RECTANGULAR 1., 0., 0., 0., 1., 0. *Orientation, Name=orientationTangential, System=RECTANGULAR 0., 1., 0., 0., 0., 1. *SHELL SECTION, COMPOSITE, Elset=glulamBeam 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal ** ** Sections ++++++++++++++++++++++++++++++++++++++++++++++++ ** *Shell section, Elset=Internal_Selection-1_CLT, Material=ECCLT, Offset=0 140 *SHELL SECTION, COMPOSITE, Elset=Internal_Selection-1_CLT 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal 30, , GLULAM, orientationLongitudinal
Could you provide guidance on how to remove those unnecessary parts or correct what might be causing the issue?

What are the error messages ? They usually point to specific issues with the keyword syntax.

to study beyond elastic limit i.e plasticity, orthotropic type need to be used.

From the material creation window, you only need to enter the name. The rest of the parameters, once the name appears in the material tree, are added in the keyword editor. Sometimes it takes several attempts, as it is easy to input a parameter incorrectly. I keep a text file with the correct syntax [I’m attaching mine in Spanish].

I am also attaching the file with the laminated beam model, without CLT. I insist that the values for the modulus of elasticity and shear modulus are random and need to be verified, but the file converges on my end and could be useful as a starting point. I hope this helps.

Files

Unless I am mistaken, “ENGINEERING CONSTANTS” allows the inclusion of the “PLASTIC” parameter, although I haven’t had time to analyze its behavior.

Hi @Damn , thank you for your help!

I’ve been following tutorials like the one from this video to simulate a glulam beam in PrePoMax using keywords, but I keep encountering errors. The most common issue is with missing sections, and I’ve attached an image of the error and the prepomax file.

I opened the first file you send me of the combined beam and tried to replicate but it didn;t worked, today I opened the second one but its a solid beam and I need detail and to model each lamella with it’s orientation. Here’s what I’m trying to achieve:

  • I want to model a glulam beam with inner segmented lamellas that have different orientations.
  • To start simple, I’ve been importing a single surface and trying to replicate what was done in the tutorial, adjusting the keywords to match proper glulam timber properties.
  • However, no matter how I modify the keywords, the thickness isn’t being recognized, and I get this error: 200 finite elements are missing section assignement.

My plan in the future is to:

  1. Import different surfaces, each representing a lamella of the glulam.
  2. Assign each lamella a different orientation using keywords for anisotropic behavior.

But for now, I need to make it work with just one surface and basic properties. Could you help me identify what I might be missing or what’s causing the section error?

Thank you in advance for any advice!

Best regards,


Glulam with grain orientation.pmx (30.9 KB)

good news if allowed, previously i’m not succeeded except type ortho, another user material of aniso_plas using type ortho as input also.

1 Like

I would recomend you to try the R0031(1): Laminated strip under three-point bending benchmark.

It provides reference solutions so you can check your result.

1 Like

You can ignore this “x finite elements are missing a section assignment” warning if you have proper section definitions done with Keyword Editor. Just click OK and it will run. Unless there are other issues and you have some with the syntax.

Corrected model:
Glulam with grain orientation corr.pmx (2.5 MB)

1 Like

Hi,

I have set up the well known standard benchmark R0031_1 Laminated strip under three-point bending using Prepomax.
Frd has been read without issue. Excellent agreement. Hopefully we have orientations/shells/composites implemented soon.

I have found it would be useful a Line load tool. I had to impose the load node per node unless there is another trick I’m missing.

There is a minor bug .
The explode view works in the results windows allowing to open the different lamina to be able to look inside. That’s amazing. Congratulations. The only think is that when the laminas are separated, they change their order which can puzzle when reading the results.


Good morning,

The file had an unassigned section, and I added a reference point to apply concentrated loads; however, for modeling this type of element, it is better to use distributed loads.

When entering the elasticity moduli in the keyword editor, a strict order must be followed: the material name must be created from the material editor, and the rest of the constants must be entered from the keyword editor; otherwise, you cannot assign a section. The last shear modulus and temperature must be placed on a second line; otherwise, Calculix won’t read it and will generate an error.

For the orientation constants, all three coordinates must be defined, even if only two dominate, and it is necessary to create the section with the same name specified in the keyword editor.

As I mentioned, it is normal and very easy to make a mistake and have the solver return an error. It is essential to be strict and methodical with the syntax. I am attaching the file and a text document with the correct syntax, at least the one that works for me

I hope this helps you
Glulam with grain orientation.pmx (1.8 MB)

It is a very interesting basis for comparing the behavior of material models. A great contribution, thank you very much!!

It is not a bug; it is only how the default exploded view method works. The exploded view can be adjusted by right-clicking on the Exploded view icon. Then, you can select the Exploded view method: Center point, which could better suit your needs.

Currently, there is no other way. A thin surface can be created to apply surface traction load, but it would interfere with the meshing.