Apply Temperature Load to the Sides of a 2D Concrete Wall

Hi,

I’ve modeled a 2D concrete wall in SOFiSTiK with the following dimensions:

  • Width: 5 m
  • Height: 20 m
  • Thickness: 0.2 m
  • Boundary condition: Fixed at the bottom

I want to apply a uniform temperature load along the height of the wall:

  • Left side: 30 °C
  • Right side: 15 °C

Unfortunately, I haven’t been able to model this correctly. I even tried applying a non-linear temperature load using this tutorial:
:link: Non-Linear Temperature in Quad Elements - SOFiSTiK FOR YOU

However, I encountered some errors when using that approach, and I’m not sure if it’s applicable to my case.

Could you please let me know:

  1. Is it possible to apply different surface temperatures on the left and right sides of a 2D QUAD wall?
  2. If yes, what is the correct method to do this in SOFiSTiK?

Thanks in advance for your help!

(Screenshot attached below)

Hi,
If I understood correctly, you want to model a uniform temperature variation with a value of 30 °C on the left and 15 °C on the right, both values being constant over the full height of the wall.

The solution is to introduce the load using the AREA record as follows:

 AREA REF QGRP ...... TYPE DTXY  $
    P1  30     x1 ......   Y1 ......  Z1  ......     $
    P2  30     x2 ......   Y2 ......  Z2  ......     $
    P3  15     x3 ......   Y3 ......  Z3  ......     $
    P4  15     x4 ......   Y4 ......  Z4  ......       

You can also use a prescribed strain in only one direction, either Ex (x) or Ey (y), by using the thermal expansion coefficient α, which is around 10⁻⁵ for concrete.

As for the link you mentioned — “Non-Linear Temperature in Quad Elements - SOFiSTiK FOR YOU” — it is used to apply a non-uniform temperature variation through the thickness of the element (in the z-direction). The temperature profile includes both a uniform part and a thermal gradient.

Good luck. :slight_smile:
If you have any further questions, feel free to ask.
Abderrahman OMRI

Dear Mr. Omri,

Thank you very much for your time and response.

As shown in the attached figure, I have set up my model accordingly and used the following code. However, I encountered an error during execution. I am unsure where the mistake might be and would appreciate your guidance in this regard.

Thank you in advance for your help.

Best regards,
Sanaz

My code:
+PROG SOFILOAD URS:4

HEAD
UNIT 0
ECHO LOAD EXTR
LC 101 TYPE ‘none’ TITL ‘Linear temperature’

AREA REF 1 QGRP 10 TYPE DTXY $
P1 30 x1 0.00 Y1 00.00 Z1 0.50 $
P2 30 x2 0.00 Y2 20.00 Z2 0.50 $
P3 15 x3 5.00 Y3 00.00 Z3 0.50 $
P4 15 x4 5.00 Y4 20.00 Z4 0.50

end
My error:
*** Start: Program Calculation - Version 2023-12.0.1017
*** Start: Program sofiload : LC 101 TYPE ‘none’ TITL ‘Linear temperature’

SOFiSTiK 2023-12.0.1017 SOFILOAD - LOAD GENERATOR
Output on file Wall_2.plb
Project data base Wall_2.cdb - 216. access
Project: Wall_2
+++++ error no. 12111 ; input line: 10
Improper literal " 1" at position 1 legal are:
TIME NEEDED 1, TOTAL 1
DATE 2025-06-05, 10:14:51
-setting that I gave:

Can you please use this code :

AREA  QGRP 1 TYPE DTXY $$
P1 30 x1 0.00 Y1 00.00 Z1 0.50 $$
P2 30 x2 0.00 Y2 20.00 Z2 0.50 $$
P3 15 x3 5.00 Y3 20.00 Z3 0.50 $$
P4 15 x4 5.00 Y4 00.00 Z4 0.50

Abderrahman OMRI

Dear Mr. Omri,
Thank you so much :yum: for your help. the code works well. My main purpose is to read 100 temperature loads from an excel sheet ( (new.xlsx, sheet T1)) and analyze structure for each case. The goal is to loop through each row of the Excel file , create a new load case for each pair of temperature values (left and right) and analyze the structure for each of them. I wrote this code and used the script that you uploaded here. but I encountered some errors.
Here is a part of my excel sheet:

here is my code:
+PROG SOFILOAD URS:4
HEAD
UNIT 0
ECHO LOAD EXTR

LET#XLS.NAME “new.xlsx”
LET#XLS.SHEET “T1”
LET#XLS.IER 0
LOOP#i
LET#temp_l XLS.READ(#i+1,1)
LET#temp_r XLS.READ(#i+1,2)
PRT#temp_l
PRT#temp_r

LC 100+#i TYPE ‘none’ TITL “Linear temperature #row
AREA QGRP 1 TYPE DTXY $$
P1 #temp_l x1 0.00 Y1 00.00 Z1 0.00 $$
P2 #temp_l x2 0.00 Y2 20.00 Z2 0.00 $$
P3 #temp_r x3 5.00 Y3 20.00 Z3 0.00 $$
P4 #temp_r x4 5.00 Y4 00.00 Z4 0.00

ENDLOOP #XLS.IER<3 $ loop until empty cell is reached
END
all four errors are:
+++++ error no. 10141 in program SOF_VAR
Variable TEMP_L undefined or with improper Index 0
+++++ error no. 10141 in program SOF_VAR
Variable TEMP_L undefined or with improper Index 0
+++++ error no. 10141 in program SOF_VAR
Variable TEMP_R undefined or with improper Index 0
+++++ error no. 10141 in program SOF_VAR
Variable TEMP_R undefined or with improper Index 0
TIME NEEDED 1, TOTAL 1
Thank you again for your support :pray:

Hi,

You need to specify the file path and its name, for example:

LET#XLS.NAME “C:\Users\new.xlsx”

For the loop, try specifying the number of repetitions at the beginning to avoid issues. For example:

LOOP#i 100
  LET#temp_l XLS.READ(#i+1,1)
  LET#temp_r XLS.READ(#i+1,2)
  LC 100+#i TYPE ‘none’ TITL “Linear temperature #row”
  AREA QGRP 1 TYPE DTXY $
    P1 #temp_l x1 0.00 Y1 00.00 Z1 0.00 $
    P2 #temp_l x2 0.00 Y2 20.00 Z2 0.00 $
    P3 #temp_r x3 5.00 Y3 20.00 Z3 0.00 $
    P4 #temp_r x4 5.00 Y4 00.00 Z4 0.00
ENDLOOP

Good luck,

Abderrahman OMRI.