Skip to content

Instantly share code, notes, and snippets.

@jsb2505
Last active September 28, 2023 10:31
Show Gist options
  • Save jsb2505/2d3d0cdfa1afc4f785c27b738c38522b to your computer and use it in GitHub Desktop.
Save jsb2505/2d3d0cdfa1afc4f785c27b738c38522b to your computer and use it in GitHub Desktop.
A module of steel functions for excel AFE
UB_Table = {
//{"type","name",mass,height,breadth,web_thickness,flange_thickness,root radius}
"UB", "127 x 76 x 13", 13, 127, 76, 4, 7.6, 7.6;
"UB", "152 x 89 x 16", 16, 152.4, 88.7, 4.5, 7.7, 7.6;
"UB", "178 x 102 x 19", 19, 177.8, 101.2, 4.8, 7.9, 7.6;
"UB", "203 x 102 x 23", 23.1, 203.2, 101.8, 5.4, 9.3, 7.6;
"UB", "203 x 133 x 25", 25.1, 203.2, 133.2, 5.7, 7.8, 7.6;
"UB", "203 x 133 x 30", 30, 206.8, 133.9, 6.4, 9.6, 7.6;
"UB", "254 x 102 x 22", 22, 254, 101.6, 5.7, 6.8, 7.6;
"UB", "254 x 102 x 25", 25.2, 257.2, 101.9, 6, 8.4, 7.6;
"UB", "254 x 102 x 28", 28.3, 260.4, 102.2, 6.3, 10, 7.6;
"UB", "254 x 146 x 31", 31.1, 251.4, 146.1, 6, 8.6, 7.6;
"UB", "254 x 146 x 37", 37, 256, 146.4, 6.3, 10.9, 7.6;
"UB", "254 x 146 x 43", 43, 259.6, 147.3, 7.2, 12.7, 7.6;
"UB", "305 x 102 x 25", 24.8, 305.1, 101.6, 5.8, 7, 7.6;
"UB", "305 x 102 x 28", 28.2, 308.7, 101.8, 6, 8.8, 7.6;
"UB", "305 x 102 x 33", 32.8, 312.7, 102.4, 6.6, 10.8, 7.6;
"UB", "305 x 127 x 37", 37, 304.4, 123.4, 7.1, 10.7, 8.9;
"UB", "305 x 127 x 42", 41.9, 307.2, 124.3, 8, 12.1, 8.9;
"UB", "305 x 127 x 48", 48.1, 311, 125.3, 9, 14, 8.9;
"UB", "305 x 165 x 40", 40.3, 303.4, 165, 6, 10.2, 8.9;
"UB", "305 x 165 x 46", 46.1, 306.6, 165.7, 6.7, 11.8, 8.9;
"UB", "305 x 165 x 54", 54, 310.4, 166.9, 7.9, 13.7, 8.9;
"UB", "356 x 127 x 33", 33.1, 349, 125.4, 6, 8.5, 10.2;
"UB", "356 x 127 x 39", 39.1, 353.4, 126, 6.6, 10.7, 10.2;
"UB", "356 x 171 x 45", 45, 351.4, 171.1, 7, 9.7, 10.2;
"UB", "356 x 171 x 51", 51, 355, 171.5, 7.4, 11.5, 10.2;
"UB", "356 x 171 x 57", 57, 358, 172.2, 8.1, 13, 10.2;
"UB", "356 x 171 x 67", 67.1, 363.4, 173.2, 9.1, 15.7, 10.2;
"UB", "406 x 140 x 39", 39, 398, 141.8, 6.4, 8.6, 10.2;
"UB", "406 x 140 x 46", 46, 403.2, 142.2, 6.8, 11.2, 10.2;
"UB", "406 x 178 x 54", 54.1, 402.6, 177.7, 7.7, 10.9, 10.2;
"UB", "406 x 178 x 60", 60.1, 406.4, 177.9, 7.9, 12.8, 10.2;
"UB", "406 x 178 x 67", 67.1, 409.4, 178.8, 8.8, 14.3, 10.2;
"UB", "406 x 178 x 74", 74.2, 412.8, 179.5, 9.5, 16, 10.2;
"UB", "457 x 152 x 52", 52.3, 449.8, 152.4, 7.6, 10.9, 10.2;
"UB", "457 x 152 x 60", 59.8, 454.6, 152.9, 8.1, 13.3, 10.2;
"UB", "457 x 152 x 67", 67.2, 458, 153.8, 9, 15, 10.2;
"UB", "457 x 152 x 74", 74.2, 462, 154.4, 9.6, 17, 10.2;
"UB", "457 x 152 x 82", 82.1, 465.8, 155.3, 10.5, 18.9, 10.2;
"UB", "457 x 191 x 67", 67.1, 453.4, 189.9, 8.5, 12.7, 10.2;
"UB", "457 x 191 x 74", 74.3, 457, 190.4, 9, 14.5, 10.2;
"UB", "457 x 191 x 82", 82, 460, 191.3, 9.9, 16, 10.2;
"UB", "457 x 191 x 89", 89.3, 463.4, 191.9, 10.5, 17.7, 10.2;
"UB", "457 x 191 x 98", 98.3, 467.2, 192.8, 11.4, 19.6, 10.2;
"UB", "533 x 210 x 82", 82.2, 528.3, 208.8, 9.6, 13.2, 12.7;
"UB", "533 x 210 x 92", 92.1, 533.1, 209.3, 10.1, 15.6, 12.7;
"UB", "533 x 210 x 101", 101, 536.7, 210, 10.8, 17.4, 12.7;
"UB", "533 x 210 x 109", 109, 539.5, 210.8, 11.6, 18.8, 12.7;
"UB", "533 x 210 x 122", 122, 544.5, 211.9, 12.7, 21.3, 12.7;
"UB", "610 x 229 x 101", 101.2, 602.6, 227.6, 10.5, 14.8, 12.7;
"UB", "610 x 229 x 113", 113, 607.6, 228.2, 11.1, 17.3, 12.7;
"UB", "610 x 229 x 125", 125.1, 612.2, 229, 11.9, 19.6, 12.7;
"UB", "610 x 229 x 140", 139.9, 617.2, 230.2, 13.1, 22.1, 12.7;
"UB", "610 x 305 x 149", 149.2, 612.4, 304.8, 11.8, 19.7, 16.5;
"UB", "610 x 305 x 179", 179, 620.2, 307.1, 14.1, 23.6, 16.5;
"UB", "610 x 305 x 238", 238.1, 635.8, 311.4, 18.4, 31.4, 16.5;
"UB", "686 x 254 x 125", 125.2, 677.9, 253, 11.7, 16.2, 15.2;
"UB", "686 x 254 x 140", 140.1, 683.5, 253.7, 12.4, 19, 15.2;
"UB", "686 x 254 x 152", 152.4, 687.5, 254.5, 13.2, 21, 15.2;
"UB", "686 x 254 x 170", 170.2, 692.9, 255.8, 14.5, 23.7, 15.2;
"UB", "762 x 267 x 134", 133.9, 750, 264.4, 12, 15.5, 16.5;
"UB", "762 x 267 x 147", 146.9, 754, 265.2, 12.8, 17.5, 16.5;
"UB", "762 x 267 x 173", 173, 762.2, 266.7, 14.3, 21.6, 16.5;
"UB", "762 x 267 x 197", 196.8, 769.8, 268, 15.6, 25.4, 16.5;
"UB", "838 x 292 x 176", 175.9, 834.9, 291.7, 14, 18.8, 17.8;
"UB", "838 x 292 x 194", 193.8, 840.7, 292.4, 14.7, 21.7, 17.8;
"UB", "838 x 292 x 226", 226.5, 850.9, 293.8, 16.1, 26.8, 17.8;
"UB", "914 x 305 x 201", 200.9, 903, 303.3, 15.1, 20.2, 19.1;
"UB", "914 x 305 x 224", 224.2, 910.4, 304.1, 15.9, 23.9, 19.1;
"UB", "914 x 305 x 238", 238, 915, 305, 16.5, 25.9, 19;
"UB", "914 x 305 x 253", 253.4, 918.4, 305.5, 17.3, 27.9, 19.1;
"UB", "914 x 305 x 271", 271, 923, 307, 18.4, 30, 19;
"UB", "914 x 305 x 289", 289.1, 926.6, 307.7, 19.5, 32, 19.1;
"UB", "914 x 305 x 313", 313, 932, 309, 21.1, 34.5, 19;
"UB", "914 x 305 x 345", 345, 943, 308, 22.1, 39.9, 19;
"UB", "914 x 305 x 381", 381, 951, 310, 24.4, 43.9, 19;
"UB", "914 x 305 x 425", 425, 961, 313, 26.9, 49, 19;
"UB", "914 x 305 x 474", 474, 971, 316, 30, 54.1, 19;
"UB", "914 x 305 x 521", 521, 981, 319, 33, 58.9, 19;
"UB", "914 x 305 x 576", 576, 993, 322, 36.1, 65, 19;
"UB", "914 x 419 x 343", 343.3, 911.8, 418.5, 19.4, 32, 24.1;
"UB", "914 x 419 x 388", 388, 921, 420.5, 21.4, 36.6, 24.1;
"UB", "1016 x 305 x 222", 222, 970.3, 300, 16, 21.1, 30;
"UB", "1016 x 305 x 249", 248.7, 980.1, 300, 16.5, 26, 30;
"UB", "1016 x 305 x 272", 272.3, 990.1, 300, 16.5, 31, 30;
"UB", "1016 x 305 x 314", 314.3, 999.9, 300, 19.1, 35.9, 30;
"UB", "1016 x 305 x 350", 350, 1008, 302, 21.1, 40, 30;
"UB", "1016 x 305 x 393", 392.7, 1015.9, 303, 24.4, 43.9, 30;
"UB", "1016 x 305 x 415", 415, 1020, 304, 26, 46, 30;
"UB", "1016 x 305 x 438", 438, 1026, 305, 26.9, 49, 30;
"UB", "1016 x 305 x 494", 494, 1036, 309, 31, 54, 30;
"UB", "1016 x 305 x 584", 584, 1056, 314, 36, 64, 30
};
UKB_Table = {
//{"type","name",mass,height,breadth,web_thickness,flange_thickness,root radius}
"UKB", "127 x 76 x 13", 13, 127, 76, 4, 7.6, 7.6;
"UKB", "152 x 89 x 16", 16, 152.4, 88.7, 4.5, 7.7, 7.6;
"UKB", "178 x 102 x 19", 19, 177.8, 101.2, 4.8, 7.9, 7.6;
"UKB", "203 x 102 x 23", 23.1, 203.2, 101.8, 5.4, 9.3, 7.6;
"UKB", "203 x 133 x 25", 25.1, 203.2, 133.2, 5.7, 7.8, 7.6;
"UKB", "203 x 133 x 30", 30, 206.8, 133.9, 6.4, 9.6, 7.6;
"UKB", "254 x 102 x 22", 22, 254, 101.6, 5.7, 6.8, 7.6;
"UKB", "254 x 102 x 25", 25.2, 257.2, 101.9, 6, 8.4, 7.6;
"UKB", "254 x 102 x 28", 28.3, 260.4, 102.2, 6.3, 10, 7.6;
"UKB", "254 x 146 x 31", 31.1, 251.4, 146.1, 6, 8.6, 7.6;
"UKB", "254 x 146 x 37", 37, 256, 146.4, 6.3, 10.9, 7.6;
"UKB", "254 x 146 x 43", 43, 259.6, 147.3, 7.2, 12.7, 7.6;
"UKB", "305 x 102 x 25", 24.8, 305.1, 101.6, 5.8, 7, 7.6;
"UKB", "305 x 102 x 28", 28.2, 308.7, 101.8, 6, 8.8, 7.6;
"UKB", "305 x 102 x 33", 32.8, 312.7, 102.4, 6.6, 10.8, 7.6;
"UKB", "305 x 127 x 37", 37, 304.4, 123.4, 7.1, 10.7, 8.9;
"UKB", "305 x 127 x 42", 41.9, 307.2, 124.3, 8, 12.1, 8.9;
"UKB", "305 x 127 x 48", 48.1, 311, 125.3, 9, 14, 8.9;
"UKB", "305 x 165 x 40", 40.3, 303.4, 165, 6, 10.2, 8.9;
"UKB", "305 x 165 x 46", 46.1, 306.6, 165.7, 6.7, 11.8, 8.9;
"UKB", "305 x 165 x 54", 54, 310.4, 166.9, 7.9, 13.7, 8.9;
"UKB", "356 x 127 x 33", 33.1, 349, 125.4, 6, 8.5, 10.2;
"UKB", "356 x 127 x 39", 39.1, 353.4, 126, 6.6, 10.7, 10.2;
"UKB", "356 x 171 x 45", 45, 351.4, 171.1, 7, 9.7, 10.2;
"UKB", "356 x 171 x 51", 51, 355, 171.5, 7.4, 11.5, 10.2;
"UKB", "356 x 171 x 57", 57, 358, 172.2, 8.1, 13, 10.2;
"UKB", "356 x 171 x 67", 67.1, 363.4, 173.2, 9.1, 15.7, 10.2;
"UKB", "406 x 140 x 39", 39, 398, 141.8, 6.4, 8.6, 10.2;
"UKB", "406 x 140 x 46", 46, 403.2, 142.2, 6.8, 11.2, 10.2;
"UKB", "406 x 140 x 53", 53.3, 406.6, 143.3, 7.9, 12.9, 10.2;
"UKB", "406 x 178 x 54", 54.1, 402.6, 177.7, 7.7, 10.9, 10.2;
"UKB", "406 x 178 x 60", 60.1, 406.4, 177.9, 7.9, 12.8, 10.2;
"UKB", "406 x 178 x 67", 67.1, 409.4, 178.8, 8.8, 14.3, 10.2;
"UKB", "406 x 178 x 74", 74.2, 412.8, 179.5, 9.5, 16, 10.2;
"UKB", "406 x 178 x 85", 85.3, 417.2, 181.9, 10.9, 18.2, 10.2;
"UKB", "457 x 152 x 52", 52.3, 449.8, 152.4, 7.6, 10.9, 10.2;
"UKB", "457 x 152 x 60", 59.8, 454.6, 152.9, 8.1, 13.3, 10.2;
"UKB", "457 x 152 x 67", 67.2, 458, 153.8, 9, 15, 10.2;
"UKB", "457 x 152 x 74", 74.2, 462, 154.4, 9.6, 17, 10.2;
"UKB", "457 x 152 x 82", 82.1, 465.8, 155.3, 10.5, 18.9, 10.2;
"UKB", "457 x 191 x 67", 67.1, 453.4, 189.9, 8.5, 12.7, 10.2;
"UKB", "457 x 191 x 74", 74.3, 457, 190.4, 9, 14.5, 10.2;
"UKB", "457 x 191 x 82", 82, 460, 191.3, 9.9, 16, 10.2;
"UKB", "457 x 191 x 89", 89.3, 463.4, 191.9, 10.5, 17.7, 10.2;
"UKB", "457 x 191 x 98", 98.3, 467.2, 192.8, 11.4, 19.6, 10.2;
"UKB", "457 x 191 x 106", 105.8, 469.2, 194, 12.6, 20.6, 10.2;
"UKB", "457 x 191 x 133", 133.3, 480.6, 196.7, 15.3, 26.3, 10.2;
"UKB", "457 x 191 x 161", 161.4, 492, 199.4, 18, 32, 10.2;
"UKB", "533 x 165 x 66", 65.7, 524.7, 165.1, 8.9, 11.4, 12.7;
"UKB", "533 x 165 x 74", 74.7, 529.1, 165.9, 9.7, 13.6, 12.7;
"UKB", "533 x 165 x 85", 84.8, 534.9, 166.5, 10.3, 16.5, 12.7;
"UKB", "533 x 210 x 82", 82.2, 528.3, 208.8, 9.6, 13.2, 12.7;
"UKB", "533 x 210 x 92", 92.1, 533.1, 209.3, 10.1, 15.6, 12.7;
"UKB", "533 x 210 x 101", 101, 536.7, 210, 10.8, 17.4, 12.7;
"UKB", "533 x 210 x 109", 109, 539.5, 210.8, 11.6, 18.8, 12.7;
"UKB", "533 x 210 x 122", 122, 544.5, 211.9, 12.7, 21.3, 12.7;
"UKB", "533 x 210 x 138", 138.3, 549.1, 213.9, 14.7, 23.6, 12.7;
"UKB", "533 x 312 x 150", 150.6, 542.5, 312, 12.7, 20.3, 12.7;
"UKB", "533 x 312 x 182", 181.5, 550.7, 314.5, 15.2, 24.4, 12.7;
"UKB", "533 x 312 x 219", 218.8, 560.3, 317.4, 18.3, 29.2, 12.7;
"UKB", "533 x 312 x 272", 273.3, 577.1, 320.2, 21.1, 37.6, 12.7;
"UKB", "610 x 178 x 82", 81.8, 598.6, 177.9, 10, 12.8, 12.7;
"UKB", "610 x 178 x 92", 92.2, 603, 178.8, 10.9, 15, 12.7;
"UKB", "610 x 178 x 100", 100.3, 607.4, 179.2, 11.3, 17.2, 12.7;
"UKB", "610 x 229 x 101", 101.2, 602.6, 227.6, 10.5, 14.8, 12.7;
"UKB", "610 x 229 x 113", 113, 607.6, 228.2, 11.1, 17.3, 12.7;
"UKB", "610 x 229 x 125", 125.1, 612.2, 229, 11.9, 19.6, 12.7;
"UKB", "610 x 229 x 140", 139.9, 617.2, 230.2, 13.1, 22.1, 12.7;
"UKB", "610 x 305 x 149", 149.2, 612.4, 304.8, 11.8, 19.7, 16.5;
"UKB", "610 x 305 x 179", 179, 620.2, 307.1, 14.1, 23.6, 16.5;
"UKB", "610 x 305 x 238", 238.1, 635.8, 311.4, 18.4, 31.4, 16.5;
"UKB", "686 x 254 x 125", 125.2, 677.9, 253, 11.7, 16.2, 15.2;
"UKB", "686 x 254 x 140", 140.1, 683.5, 253.7, 12.4, 19, 15.2;
"UKB", "686 x 254 x 152", 152.4, 687.5, 254.5, 13.2, 21, 15.2;
"UKB", "686 x 254 x 170", 170.2, 692.9, 255.8, 14.5, 23.7, 15.2;
"UKB", "762 x 267 x 134", 133.9, 750, 264.4, 12, 15.5, 16.5;
"UKB", "762 x 267 x 147", 146.9, 754, 265.2, 12.8, 17.5, 16.5;
"UKB", "762 x 267 x 173", 173, 762.2, 266.7, 14.3, 21.6, 16.5;
"UKB", "762 x 267 x 197", 196.8, 769.8, 268, 15.6, 25.4, 16.5;
"UKB", "838 x 292 x 176", 175.9, 834.9, 291.7, 14, 18.8, 17.8;
"UKB", "838 x 292 x 194", 193.8, 840.7, 292.4, 14.7, 21.7, 17.8;
"UKB", "838 x 292 x 226", 226.5, 850.9, 293.8, 16.1, 26.8, 17.8;
"UKB", "914 x 305 x 201", 200.9, 903, 303.3, 15.1, 20.2, 19.1;
"UKB", "914 x 305 x 224", 224.2, 910.4, 304.1, 15.9, 23.9, 19.1;
"UKB", "914 x 305 x 238", 238, 915, 305, 16.5, 25.9, 19;
"UKB", "914 x 305 x 253", 253.4, 918.4, 305.5, 17.3, 27.9, 19.1;
"UKB", "914 x 305 x 271", 271, 923, 307, 18.4, 30, 19;
"UKB", "914 x 305 x 289", 289.1, 926.6, 307.7, 19.5, 32, 19.1;
"UKB", "914 x 305 x 313", 313, 932, 309, 21.1, 34.5, 19;
"UKB", "914 x 305 x 345", 345, 943, 308, 22.1, 39.9, 19;
"UKB", "914 x 305 x 381", 381, 951, 310, 24.4, 43.9, 19;
"UKB", "914 x 305 x 425", 425, 961, 313, 26.9, 49, 19;
"UKB", "914 x 305 x 474", 474, 971, 316, 30, 54.1, 19;
"UKB", "914 x 305 x 521", 521, 981, 319, 33, 58.9, 19;
"UKB", "914 x 305 x 576", 576, 993, 322, 36.1, 65, 19;
"UKB", "914 x 419 x 343", 343.3, 911.8, 418.5, 19.4, 32, 24.1;
"UKB", "914 x 419 x 388", 388, 921, 420.5, 21.4, 36.6, 24.1;
"UKB", "1016 x 305 x 222", 222, 970.3, 300, 16, 21.1, 30;
"UKB", "1016 x 305 x 249", 248.7, 980.1, 300, 16.5, 26, 30;
"UKB", "1016 x 305 x 272", 272.3, 990.1, 300, 16.5, 31, 30;
"UKB", "1016 x 305 x 314", 314.3, 999.9, 300, 19.1, 35.9, 30;
"UKB", "1016 x 305 x 350", 350, 1008, 302, 21.1, 40, 30;
"UKB", "1016 x 305 x 393", 392.7, 1015.9, 303, 24.4, 43.9, 30;
"UKB", "1016 x 305 x 415", 415, 1020, 304, 26, 46, 30;
"UKB", "1016 x 305 x 438", 438, 1026, 305, 26.9, 49, 30;
"UKB", "1016 x 305 x 494", 494, 1036, 309, 31, 54, 30;
"UKB", "1016 x 305 x 584", 584, 1056, 314, 36, 64, 30
};
UC_Table = {
//{"type","name",mass,height,breadth,web_thickness,flange_thickness,root radius}
"UC", "152 x 152 x 23", 23, 152.4, 152.2, 5.8, 6.8, 7.6;
"UC", "152 x 152 x 30", 30, 157.6, 152.9, 6.5, 9.4, 7.6;
"UC", "152 x 152 x 37", 37, 161.8, 154.4, 8, 11.5, 7.6;
"UC", "203 x 203 x 46", 46.1, 203.2, 203.6, 7.2, 11, 10.2;
"UC", "203 x 203 x 52", 52, 206.2, 204.3, 7.9, 12.5, 10.2;
"UC", "203 x 203 x 60", 60, 209.6, 205.8, 9.4, 14.2, 10.2;
"UC", "203 x 203 x 71", 71, 215.8, 206.4, 10, 17.3, 10.2;
"UC", "203 x 203 x 86", 86.1, 222.2, 209.1, 12.7, 20.5, 10.2;
"UC", "254 x 254 x 73", 73.1, 254.1, 254.6, 8.6, 14.2, 12.7;
"UC", "254 x 254 x 89", 88.9, 260.3, 256.3, 10.3, 17.3, 12.7;
"UC", "254 x 254 x 107", 107.1, 266.7, 258.8, 12.8, 20.5, 12.7;
"UC", "254 x 254 x 132", 132, 276.3, 261.3, 15.3, 25.3, 12.7;
"UC", "254 x 254 x 167", 167.1, 289.1, 265.2, 19.2, 31.7, 12.7;
"UC", "305 x 305 x 97", 96.9, 307.9, 305.3, 9.9, 15.4, 15.2;
"UC", "305 x 305 x 118", 117.9, 314.5, 307.4, 12, 18.7, 15.2;
"UC", "305 x 305 x 137", 136.9, 320.5, 309.2, 13.8, 21.7, 15.2;
"UC", "305 x 305 x 158", 158.1, 327.1, 311.2, 15.8, 25, 15.2;
"UC", "305 x 305 x 198", 198.1, 339.9, 314.5, 19.1, 31.4, 15.2;
"UC", "305 x 305 x 240", 240, 352.5, 318.4, 23, 37.7, 15.2;
"UC", "305 x 305 x 283", 282.9, 365.3, 322.2, 26.8, 44.1, 15.2;
"UC", "356 x 368 x 129", 129, 355.6, 368.6, 10.4, 17.5, 15.2;
"UC", "356 x 368 x 153", 152.9, 362, 370.5, 12.3, 20.7, 15.2;
"UC", "356 x 368 x 177", 177, 368.2, 372.6, 14.4, 23.8, 15.2;
"UC", "356 x 368 x 202", 201.9, 374.6, 374.7, 16.5, 27, 15.2;
"UC", "356 x 406 x 235", 235.1, 381, 394.8, 18.4, 30.2, 15.2;
"UC", "356 x 406 x 287", 287.1, 393.6, 399, 22.6, 36.5, 15.2;
"UC", "356 x 406 x 340", 339.9, 406.4, 403, 26.6, 42.9, 15.2;
"UC", "356 x 406 x 393", 393, 419, 407, 30.6, 49.2, 15.2;
"UC", "356 x 406 x 467", 467, 436.6, 412.2, 35.8, 58, 15.2;
"UC", "356 x 406 x 509", 509, 446, 416, 39.1, 62.7, 15;
"UC", "356 x 406 x 551", 551, 455.6, 418.5, 42.1, 67.5, 15.2;
"UC", "356 x 406 x 592", 633.9, 474.6, 424, 47.6, 77, 15.2;
"UC", "356 x 406 x 634", 633.9, 474.6, 424, 47.6, 77, 15.2;
"UC", "356 x 406 x 677", 677, 483, 428, 51.2, 81.5, 15;
"UC", "356 x 406 x 744", 744, 498, 432, 55.6, 88.9, 15;
"UC", "356 x 406 x 818", 818, 514, 437, 60.5, 97, 15;
"UC", "356 x 406 x 900", 900, 531, 442, 65.9, 106, 15;
"UC", "356 x 406 x 990", 990, 550, 448, 71.9, 115, 15;
"UC", "356 x 406 x 1086", 1086, 569, 454, 78, 125, 15;
"UC", "356 x 406 x 1202", 1202, 580, 471, 95, 130, 15.4;
"UC", "356 x 406 x 1299", 1299, 600, 476, 100, 140, 15.4
};
UKC_Table = {
//{"type","name",mass,height,breadth,web_thickness,flange_thickness,root radius}
"UKC", "152 x 152 x 23", 23, 152.4, 152.2, 5.8, 6.8, 7.6;
"UKC", "152 x 152 x 30", 30, 157.6, 152.9, 6.5, 9.4, 7.6;
"UKC", "152 x 152 x 37", 37, 161.8, 154.4, 8, 11.5, 7.6;
"UKC", "152 x 152 x 44", 44, 166, 155.9, 9.5, 13.6, 7.6;
"UKC", "152 x 152 x 51", 51.2, 170.2, 157.4, 11, 15.7, 7.6;
"UKC", "203 x 203 x 46", 46.1, 203.2, 203.6, 7.2, 11, 10.2;
"UKC", "203 x 203 x 52", 52, 206.2, 204.3, 7.9, 12.5, 10.2;
"UKC", "203 x 203 x 60", 60, 209.6, 205.8, 9.4, 14.2, 10.2;
"UKC", "203 x 203 x 71", 71, 215.8, 206.4, 10, 17.3, 10.2;
"UKC", "203 x 203 x 86", 86.1, 222.2, 209.1, 12.7, 20.5, 10.2;
"UKC", "203 x 203 x 100", 99.6, 228.6, 210.3, 14.5, 23.7, 10.2;
"UKC", "203 x 203 x 113", 113.5, 235, 212.1, 16.3, 26.9, 10.2;
"UKC", "203 x 203 x 127", 127.5, 241.4, 213.9, 18.1, 30.1, 10.2;
"UKC", "254 x 254 x 73", 73.1, 254.1, 254.6, 8.6, 14.2, 12.7;
"UKC", "254 x 254 x 89", 88.9, 260.3, 256.3, 10.3, 17.3, 12.7;
"UKC", "254 x 254 x 107", 107.1, 266.7, 258.8, 12.8, 20.5, 12.7;
"UKC", "254 x 254 x 132", 132, 276.3, 261.3, 15.3, 25.3, 12.7;
"UKC", "254 x 254 x 167", 167.1, 289.1, 265.2, 19.2, 31.7, 12.7;
"UKC", "305 x 305 x 97", 96.9, 307.9, 305.3, 9.9, 15.4, 15.2;
"UKC", "305 x 305 x 118", 117.9, 314.5, 307.4, 12, 18.7, 15.2;
"UKC", "305 x 305 x 137", 136.9, 320.5, 309.2, 13.8, 21.7, 15.2;
"UKC", "305 x 305 x 158", 158.1, 327.1, 311.2, 15.8, 25, 15.2;
"UKC", "305 x 305 x 198", 198.1, 339.9, 314.5, 19.1, 31.4, 15.2;
"UKC", "305 x 305 x 240", 240, 352.5, 318.4, 23, 37.7, 15.2;
"UKC", "305 x 305 x 283", 282.9, 365.3, 322.2, 26.8, 44.1, 15.2;
"UKC", "356 x 368 x 129", 129, 355.6, 368.6, 10.4, 17.5, 15.2;
"UKC", "356 x 368 x 153", 152.9, 362, 370.5, 12.3, 20.7, 15.2;
"UKC", "356 x 368 x 177", 177, 368.2, 372.6, 14.4, 23.8, 15.2;
"UKC", "356 x 368 x 202", 201.9, 374.6, 374.7, 16.5, 27, 15.2;
"UKC", "356 x 406 x 235", 235.1, 381, 394.8, 18.4, 30.2, 15.2;
"UKC", "356 x 406 x 287", 287.1, 393.6, 399, 22.6, 36.5, 15.2;
"UKC", "356 x 406 x 340", 339.9, 406.4, 403, 26.6, 42.9, 15.2;
"UKC", "356 x 406 x 393", 393, 419, 407, 30.6, 49.2, 15.2;
"UKC", "356 x 406 x 467", 467, 436.6, 412.2, 35.8, 58, 15.2;
"UKC", "356 x 406 x 509", 509, 446, 416, 39.1, 62.7, 15;
"UKC", "356 x 406 x 551", 551, 455.6, 418.5, 42.1, 67.5, 15.2;
"UKC", "356 x 406 x 592", 633.9, 474.6, 424, 47.6, 77, 15.2;
"UKC", "356 x 406 x 634", 633.9, 474.6, 424, 47.6, 77, 15.2;
"UKC", "356 x 406 x 677", 677, 483, 428, 51.2, 81.5, 15;
"UKC", "356 x 406 x 744", 744, 498, 432, 55.6, 88.9, 15;
"UKC", "356 x 406 x 818", 818, 514, 437, 60.5, 97, 15;
"UKC", "356 x 406 x 900", 900, 531, 442, 65.9, 106, 15;
"UKC", "356 x 406 x 990", 990, 550, 448, 71.9, 115, 15;
"UKC", "356 x 406 x 1086", 1086, 569, 454, 78, 125, 15;
"UKC", "356 x 406 x 1202", 1202, 580, 471, 95, 130, 15.4;
"UKC", "356 x 406 x 1299", 1299, 600, 476, 100, 140, 15.4
};
/** Work in progress */
Get_Section_Table = LAMBDA(section_type,
IFS(
section_type = "UB",
UB_Table,
section_type = "UC",
UC_Table,
section_type = "UKB",
Sort_Table(VSTACK(UB_Table, UKB_Table), "Smallest section height"),
section_type = "UKC",
Sort_Table(VSTACK(UC_Table, UKC_Table), "Smallest section height")
)
);
Get_Section_Geometry_Parameters = LAMBDA(section_type, section_name,
LET(
mass, Get_Property_Value(section_type, section_name, "mass"),
height, Get_Property_Value(section_type, section_name, "height"),
breadth, Get_Property_Value(section_type, section_name, "breadth"),
web_thickness, Get_Property_Value(section_type, section_name, "web_thickness"),
flange_thickness, Get_Property_Value(section_type, section_name, "flange_thickness"),
root_radius, Get_Property_Value(section_type, section_name, "root_radius"),
VSTACK(mass, height, breadth, web_thickness, flange_thickness, root_radius)
)
);
Get_Property_Value = LAMBDA(section_type, section_name, property,
LET(
section_type_index, XMATCH(section_type, Section_Types),
section_table, CHOOSE(section_type_index, UB_Table, UKB_Table, UC_Table, UKC_Table),
name_property_index, Get_Property_Index("name"),
property_index, Get_Property_Index(property),
section_names, CHOOSECOLS(section_table, name_property_index),
section_name_index, XMATCH(section_name, section_names),
INDEX(section_table, section_name_index, property_index)
)
);
Get_Property_Index = LAMBDA(property, XMATCH(property, Section_Properties));
Section_Types = {"UB", "UKB", "UC", "UKC"};
Section_Properties = {
"type",
"name",
"mass",
"height",
"breadth",
"web_thickness",
"flange_thickness",
"root_radius"
};
/**
Partial safety factor for buildings Clause 6.1(1) NA 2.15 BS EN 1993-1-1:2005
*/
γ_M0 = 1;
/**
Partial safety factor for buildings Clause 6.1(1) NA 2.15 BS EN 1993-1-1:2005
*/
γ_M1 = 1;
/**
Partial safety factor for buildings Clause 6.1(1) NA 2.15 BS EN 1993-1-1:2005
*/
γ_M2 = 1.1;
Get_Section_Selfweight = LAMBDA(section_type, section_name,
LET(m, Get_Property_Value(section_type, section_name, "mass"), m * 9.81 / 1000)
);
Get_Second_Moment_Of_Area = LAMBDA(section_type, section_name, [is_minor_axis],
LET(
is_minor_axis, IF(ISOMITTED(is_minor_axis), FALSE, is_minor_axis),
h, Get_Property_Value(section_type, section_name, "height"),
b, Get_Property_Value(section_type, section_name, "breadth"),
t_w, Get_Property_Value(section_type, section_name, "web_thickness"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
r, Get_Property_Value(section_type, section_name, "root_radius"),
IF(
is_minor_axis, // conditional boolean
// MINOR AXIS
LET(
// Using parallel axis theorem and subtraction of symmetrical rectangles
// General I-beam without root radius
I_rec_outer, h * b ^ 3 / 12,
I_rec_inner, (h - 2 * t_f) * b ^ 3 / 12,
I_rec_web, (h - 2 * t_f) * t_w ^ 3 / 12,
// Root radius SMOA by substraction of semicircle from enclosing rectangle
// Distance to underside of root from neutral axis
y_bar_root_btm, t_w / 2,
// Distance from neutral axis of section to centroid of semicircle formed by roots
y_bar_root_semicircle, r * (1 - (4 / (3 * PI()))) + y_bar_root_btm,
// SMOA of semicircle enclosed by root radii
I_root_semicircle, ((PI() / 8) - (8 / (9 * PI()))) * r ^ 4,
A_root_semicircle, (PI() * r ^ 2) / 2,
I_root_semicircle_y, I_root_semicircle +
A_root_semicircle * y_bar_root_semicircle ^ 2,
// Distance from centroidal axis of section to centroid of rectangle enclosing roots
y_bar_root_rec, (r / 2) + y_bar_root_btm,
// SMOA of roots area between enclosing rectangle around roots and semi-circle void
I_root_rec, (2 * r) * r ^ 3 / 12,
A_root_rec, 2 * r ^ 2,
I_root_rec_y, I_root_rec + A_root_rec * y_bar_root_rec ^ 2,
// SMOA of root material (doubled as symmetrical about central centroid)
I_root_y, 2 * (I_root_rec_y - I_root_semicircle_y),
// Total SMOA of I-Beam + root radii
I_total, I_rec_outer - I_rec_inner + I_rec_web + I_root_y,
I_total
),
// MAJOR AXIS
LET(
// Using parallel axis theorem and subtraction of symmetrical rectangles
// General I-beam without root radius
I_rec_outer, b * h ^ 3 / 12,
I_rec_inner, (b - t_w) * (h - 2 * t_f) ^ 3 / 12,
// Root radius SMOA by substraction of semicircle from enclosing rectangle
// Distance to underside of root from neutral axis
y_bar_root_btm, (h - t_f - r) / 2,
// Distance from neutral axis of section to centroid of semicircle formed by roots
y_bar_root_semicircle, ((4 * r) / (3 * PI())) + y_bar_root_btm,
// SMOA of semicircle enclosed by root radii
I_root_semicircle, ((PI() / 8) - (8 / (9 * PI()))) * r ^ 4,
A_root_semicircle, (PI() * r ^ 2) / 2,
I_root_semicircle_y, I_root_semicircle +
A_root_semicircle * y_bar_root_semicircle ^ 2,
// Distance from centroidal axis of section to centroid of rectangle enclosing roots
y_bar_root_rec, (r / 2) + y_bar_root_btm,
// SMOA of roots area between enclosing rectangle around roots and semi-circle void
I_root_rec, (2 * r) * r ^ 3 / 12,
A_root_rec, 2 * r ^ 2,
I_root_rec_y, I_root_rec + A_root_rec * y_bar_root_rec ^ 2,
// SMOA of root material (doubled as symmetrical about central centroid)
I_root_y, 2 * (I_root_rec_y - I_root_semicircle_y),
// Total SMOA of I-Beam + root radii
I_total, I_rec_outer - I_rec_inner + I_root_y,
I_total
)
)
)
);
Get_Elastic_Section_Modulus = LAMBDA(section_type, section_name, [is_minor_axis],
LET(
is_minor_axis, IF(ISOMITTED(is_minor_axis), FALSE, is_minor_axis),
h, Get_Property_Value(section_type, section_name, "height"),
b, Get_Property_Value(section_type, section_name, "breadth"),
I, Get_Second_Moment_Of_Area(section_type, section_name, is_minor_axis),
IF(is_minor_axis, 2 * I / b, 2 * I / h)
)
);
Get_Plastic_Section_Modulus = LAMBDA(section_type, section_name, [is_minor_axis],
LET(
is_minor_axis, IF(ISOMITTED(is_minor_axis), FALSE, is_minor_axis),
h, Get_Property_Value(section_type, section_name, "height"),
b, Get_Property_Value(section_type, section_name, "breadth"),
t_w, Get_Property_Value(section_type, section_name, "web_thickness"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
r, Get_Property_Value(section_type, section_name, "root_radius"),
IF(
is_minor_axis,
// MINOR AXIS
LET(
// Using parallel axis theorem to get areas of segments and their respective centroids
// Area of left hand side of both flanges
A_flanges_left, t_f * b,
// Centroid of left hand side flanges from plastic neutral axis
y_bar_flange_left, b / 4,
// Area of left hand side of web
A_web_left, t_w * (h - 2 * t_f) / 2,
// Centroid of top half of web from plastic neutral axis
y_bar_web_left, t_w / 4,
// Area of left roots void semicircle
A_roots_left_semicircle, PI() * r ^ 2 / 2,
// Centroid of left roots semicircle void from plastic neautral axis
y_bar_root_btm, t_w / 2,
y_bar_root_semicircle, r * (1 - (4 / (3 * PI()))) + y_bar_root_btm,
// Area of left roots enclosing rectangle
A_roots_left_rec, 2 * r ^ 2,
// Centroid of left roots enclosing rectangle from plastic neautral axis
y_bar_root_rec, r / 2 + y_bar_root_btm,
//Plastic section modulus of entire section
2 *
SUM(
A_flanges_left * y_bar_flange_left,
A_web_left * y_bar_web_left,
A_roots_left_rec * y_bar_root_rec,
-A_roots_left_semicircle * y_bar_root_semicircle
)
),
// MAJOR AXIS
LET(
// Using parallel axis theorem to get areas of segments and their respective centroids
// Area of top flange
A_flange, b * t_f,
// Centroid of top flange from plastic neutral axis
y_bar_flange, (h - t_f) / 2,
// Area of top half of web
A_web_top, t_w * (h - 2 * t_f) / 2,
// Centroid of top half of web from plastic neutral axis
y_bar_web_top, (h / 2 - t_f) / 2,
// Area of top roots void semicircle
A_roots_top_semicircle, PI() * r ^ 2 / 2,
// Centroid of top roots from plastic neautral axis
y_bar_root_btm, (h - t_f - r) / 2,
y_bar_root_semicircle, ((4 * r) / (3 * PI())) + y_bar_root_btm,
// Area of left roots enclosing rectangle
A_roots_top_rec, 2 * r ^ 2,
// Centroid of left roots enclosing rectangle from plastic neautral axis
y_bar_root_rec, r / 2 + y_bar_root_btm,
//Plastic section modulus of entire section
2 *
SUM(
A_flange * y_bar_flange,
A_web_top * y_bar_web_top,
A_roots_top_rec * y_bar_root_rec,
-A_roots_top_semicircle * y_bar_root_semicircle
)
)
)
)
);
Get_Effective_Section_Modulus = LAMBDA(section_type, section_name, [is_minor_axis],
NA()
// To Finish for class 4 sections
);
Get_Radius_Of_Gyration = LAMBDA(section_type, section_name, [is_minor_axis],
LET(
is_minor_axis, IF(ISOMITTED(is_minor_axis), FALSE, is_minor_axis),
A, Get_Section_Area(section_type, section_name),
I, Get_Second_Moment_Of_Area(section_type, section_name, is_minor_axis),
SQRT(I / A)
)
);
Get_Warping_Constant = LAMBDA(section_type, section_name,
LET(
h, Get_Property_Value(section_type, section_name, "height"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
I_zz, Get_Second_Moment_Of_Area(section_type, section_name, TRUE),
h_s, h - t_f,
(I_zz * h_s ^ 2) / 4
)
);
Get_Torsional_Constant = LAMBDA(section_type, section_name,
LET(
h, Get_Property_Value(section_type, section_name, "height"),
b, Get_Property_Value(section_type, section_name, "breadth"),
t_w, Get_Property_Value(section_type, section_name, "web_thickness"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
r, Get_Property_Value(section_type, section_name, "root_radius"),
α_1, -0.042 + 0.2204 * (t_w / t_f) + 0.1355 * (r / t_f) - 0.0865 * (r * t_w / t_f ^ 2) -
0.0725 * (t_w ^ 2 / t_f ^ 2),
D_1, ((t_f + r) ^ 2 + (r + 0.25 * t_w) * t_w) / (2 * r + t_f),
(2 / 3) * b * t_f ^ 3 + (1 / 3) * (h - 2 * t_f) * t_w ^ 3 + 2 * α_1 * D_1 ^ 4 -
0.42 * t_f ^ 4
)
);
Get_Epsilon = LAMBDA(yield_strength, LET(f_y, yield_strength, SQRT(235 / f_y)));
Youngs_Modulus = 210000;
Poissons_Ratio = 0.3;
Get_Shear_Modulus = LAMBDA(youngs_modulus, poissons_ratio,
LET(E, youngs_modulus, ν, poissons_ratio, E / (2 * (1 + ν)))
);
Get_Flange_Buckling_Ratio = LAMBDA(section_type, section_name, steel_grade,
LET(
h, Get_Property_Value(section_type, section_name, "height"),
b, Get_Property_Value(section_type, section_name, "breadth"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
r, Get_Property_Value(section_type, section_name, "root_radius"),
f_y, Get_Yield_Strength(section_type, section_name, steel_grade),
ε, Get_Epsilon(f_y),
d, h - 2 * (t_f + r),
E, Youngs_Modulus,
section_class, Get_Section_Class(section_type, section_name, steel_grade),
CHOOSE(section_class, 0.3, 0.4, 0.55, 0.55) * (E / f_y) * SQRT((d * t_f) / (b * t_f))
)
);
Get_Web_Slenderness_Ratio = LAMBDA(section_type, section_name, steel_grade,
LET(
h, Get_Property_Value(section_type, section_name, "height"),
t_w, Get_Property_Value(section_type, section_name, "web_thickness"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
r, Get_Property_Value(section_type, section_name, "root_radius"),
f_y, Get_Yield_Strength(section_type, section_name, steel_grade),
ε, Get_Epsilon(f_y),
c_w, h - 2 * (t_f + r),
c_w / t_w / ε
)
);
Get_Outstand_Flange_Ratio = LAMBDA(section_type, section_name, steel_grade,
LET(
b, Get_Property_Value(section_type, section_name, "breadth"),
t_w, Get_Property_Value(section_type, section_name, "web_thickness"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
r, Get_Property_Value(section_type, section_name, "root_radius"),
f_y, Get_Yield_Strength(section_type, section_name, steel_grade),
ε, Get_Epsilon(f_y),
c_f, (b - t_w - 2 * r) / 2,
c_f / t_f / ε
)
);
Get_Section_Class = LAMBDA(section_type, section_name, steel_grade,
LET(
internal_parts, Get_Web_Slenderness_Ratio(section_type, section_name, steel_grade),
outstand_flanges, Get_Outstand_Flange_Ratio(section_type, section_name, steel_grade),
MAX(
IFS(
internal_parts <= 72,
1,
internal_parts <= 83,
2,
internal_parts <= 124,
3,
internal_parts > 124,
4
),
IFS(
outstand_flanges <= 9,
1,
outstand_flanges <= 10,
2,
outstand_flanges <= 14,
3,
outstand_flanges > 14,
4
)
)
)
);
Get_Ultimate_Strength = LAMBDA(section_type, section_name, steel_grade,
LET(
t_w, Get_Property_Value(section_type, section_name, "web_thickness"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
t_max, Get_Max_Thickness(t_w, t_f),
t_nom, Get_Nominal_Thickness(t_max),
IF(
steel_grade = "S275",
IFS(t_nom <= 100, 410, t_nom <= 150, 400),
IF(steel_grade = "S355", IFS(t_nom <= 100, 470, t_nom <= 150, 450))
)
)
);
Get_Yield_Strength = LAMBDA(section_type, section_name, steel_grade,
LET(
t_w, Get_Property_Value(section_type, section_name, "web_thickness"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
t_max, Get_Max_Thickness(t_w, t_f),
t_nom, Get_Nominal_Thickness(t_max),
IF(
steel_grade = "S275",
IFS(
t_nom = 16,
275,
t_nom = 40,
265,
t_nom = 63,
255,
t_nom = 80,
245,
t_nom = 100,
235,
t_nom = 150,
225
),
IF(
steel_grade = "S355",
IFS(
t_nom = 16,
355,
t_nom = 40,
345,
t_nom = 63,
335,
t_nom = 80,
325,
t_nom = 100,
315,
t_nom = 150,
295
)
)
)
)
);
Get_Nominal_Thickness = LAMBDA(max_thickness,
LET(
t_max, max_thickness,
IFS(
t_max <= 16,
16,
t_max <= 40,
40,
t_max <= 63,
63,
t_max <= 80,
80,
t_max <= 100,
100,
t_max <= 150,
150
)
)
);
Get_Shear_Area = LAMBDA(section_type, section_name,
LET(
h, Get_Property_Value(section_type, section_name, "height"),
b, Get_Property_Value(section_type, section_name, "breadth"),
t_w, Get_Property_Value(section_type, section_name, "web_thickness"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
r, Get_Property_Value(section_type, section_name, "root_radius"),
a, Get_Section_Area(section_type, section_name),
η, 1, // Cl NA 2.4 BS EN 1993-1-1:2005
h_w, h - 2 * t_f,
MAX(a - (2 * t_f * b) + t_f * (t_w + 2 * r), η * h_w * t_w)
)
);
Get_Section_Area = LAMBDA(section_type, section_name,
LET(
h, Get_Property_Value(section_type, section_name, "height"),
b, Get_Property_Value(section_type, section_name, "breadth"),
t_w, Get_Property_Value(section_type, section_name, "web_thickness"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
r, Get_Property_Value(section_type, section_name, "root_radius"),
(2 * b * t_f) + t_w * (h - 2 * t_f) + r ^ 2 * (4 - PI())
)
);
Get_Max_Thickness = LAMBDA(thickness_1, thickness_2,
LET(t_1, thickness_1, t_2, thickness_2, MAX(t_1, t_2))
);
Get_Elastic_Bending_Resistance = LAMBDA(section_type, section_name, steel_grade, shear_force_kN,
LET(
W_el_y, Get_Elastic_Section_Modulus(section_type, section_name),
Get_Bending_Resistance(section_type, section_name, steel_grade, shear_force_kN, W_el_y)
)
);
Get_Plastic_Bending_Resistance = LAMBDA(section_type, section_name, steel_grade, shear_force_kN,
LET(
W_pl_y, Get_Plastic_Section_Modulus(section_type, section_name),
Get_Bending_Resistance(section_type, section_name, steel_grade, shear_force_kN, W_pl_y)
)
);
Get_Effective_Bending_Resistance = LAMBDA(section_type, section_name, steel_grade, shear_force_kN,
LET(
W_eff_y, Get_Effective_Section_Modulus(section_type, section_name),
Get_Bending_Resistance(section_type, section_name, steel_grade, shear_force_kN, W_eff_y)
)
);
Get_Bending_Resistance = LAMBDA(
section_type,
section_name,
steel_grade,
shear_force_kN,
section_modulus,
//***Check if this is still valid when effective section modulus passed***
LET(
h, Get_Property_Value(section_type, section_name, "height"),
t_w, Get_Property_Value(section_type, section_name, "web_thickness"),
t_f, Get_Property_Value(section_type, section_name, "flange_thickness"),
f_y, Get_Yield_Strength(section_type, section_name, steel_grade),
V_Ed, shear_force_kN,
V_pl_Rd, Get_Shear_Resistance(section_type, section_name, steel_grade),
ρ, Get_Yield_Strength_Reduction_Factor(
section_type,
section_name,
steel_grade,
shear_force_kN
),
W_y, section_modulus,
h_w, h - 2 * t_f,
A_w, h_w * t_w,
f_y * (W_y - (ρ * A_w ^ 2) / (4 * t_w)) / 10 ^ 6 / γ_M0
)
);
/**
For areas of high shear the yield strength of the shear area is reduced.
*/
Get_Yield_Strength_Reduction_Factor = LAMBDA(
section_type,
section_name,
steel_grade,
shear_force_kN,
LET(
V_Ed, shear_force_kN,
V_pl_Rd, Get_Shear_Resistance(section_type, section_name, steel_grade),
IF(V_Ed < V_pl_Rd / 2, 0, ((2 * V_Ed / V_pl_Rd) - 1) ^ 2)
)
);
Get_Shear_Resistance = LAMBDA(section_type, section_name, steel_grade,
LET(
f_y, Get_Yield_Strength(section_type, section_name, steel_grade),
a_v, Get_Shear_Area(section_type, section_name),
a_v * f_y / SQRT(3) / 10 ^ 3 / γ_M0
)
);
Get_Deflection = LAMBDA(section_type, section_name, length_mm, UDL,
LET(
L, length_mm,
E, Youngs_Modulus,
I_yy, Get_Second_Moment_Of_Area(section_type, section_name),
(5 * UDL * L ^ 4) / (384 * E * I_yy)
)
);
/**
For Rolled doubly symmetric I & H sections.
Defined in EC3 UKNA Table NA.1
*/
Get_Buckling_Curve = LAMBDA(section_type, section_name,
LET(
h, Get_Property_Value(section_type, section_name, "height"),
b, Get_Property_Value(section_type, section_name, "breadth"),
h_b_ratio, h / b,
IFS(h_b_ratio <= 2, "b", h_b_ratio <= 3.1, "c", h_b_ratio > 3.1, "d")
)
);
/**
Required for LTB design buckling moment resistance.
*/
Get_α_LT = LAMBDA(section_type, section_name,
LET(
buckling_curve, Get_Buckling_Curve(section_type, section_name),
IFS(buckling_curve = "b", 0.34, buckling_curve = "c", 0.49, buckling_curve = "d", 0.76)
)
);
/**
Required for LTB design buckling moment resistance.
*/
Get_ƛ_LT = LAMBDA(section_type, section_name, steel_grade, elastic_critical_bending_moment_kNm,
LET(
M_cr, elastic_critical_bending_moment_kNm * 10 ^ 6,
class, Get_Section_Class(section_type, section_name, steel_grade),
W_y, IFS(
class <= 2,
Get_Plastic_Section_Modulus(section_type, section_name),
class > 2,
Get_Elastic_Section_Modulus(section_type, section_name)
),
f_y, Get_Yield_Strength(section_type, section_name, steel_grade),
SQRT(W_y * f_y / M_cr)
)
);
/**
Required for LTB design buckling moment resistance.
Defined in EC3 NA.2.17(a)
*/
β = 0.75;
/**
Required for LTB design buckling moment resistance.
Defined in EC3 NA.2.17(a)
*/
ƛ_LT0 = 0.4;
/**
Required for LTB design buckling moment resistance
*/
Get_Φ_LT = LAMBDA(section_type, section_name, slenderness_factor_ƛ_LT,
LET(
α_LT, Get_α_LT(section_type, section_name),
ƛ_LT, slenderness_factor_ƛ_LT,
(1 + α_LT * (ƛ_LT - ƛ_LT0) + β * ƛ_LT ^ 2) / 2
)
);
/**
Required for LTB design buckling moment resistance
*/
Get_χ_LT = LAMBDA(section_type, section_name, slenderness_factor_ƛ_LT, slenderness_factor_Φ_LT,
LET(
α_LT, Get_α_LT(section_type, section_name),
ƛ_LT, slenderness_factor_ƛ_LT,
Φ_LT, slenderness_factor_Φ_LT,
MIN(1 / (Φ_LT + SQRT(Φ_LT ^ 2 - β * ƛ_LT ^ 2)), 1, 1 / ƛ_LT ^ 2)
)
);
/**
Required for LTB design buckling moment resistance
*/
Get_Modifaction_Factor_f = LAMBDA(slenderness_factor_ƛ_LT, slenderness_correction_factor_k_c,
LET(
ƛ_LT, slenderness_factor_ƛ_LT,
k_c, slenderness_correction_factor_k_c,
MIN(1 - 0.5 * (1 - k_c) * (1 - 2 * (ƛ_LT - 0.8) ^ 2), 1)
)
);
Get_χ_LT_mod = LAMBDA(slenderness_factor_χ_LT, Modifaction_Factor_f, slenderness_factor_ƛ_LT,
LET(
χ_LT, slenderness_factor_χ_LT,
ƛ_LT, slenderness_factor_ƛ_LT,
f, Modifaction_Factor_f,
MIN(χ_LT / f, 1, 1 / ƛ_LT ^ 2)
)
);
Get_LTB_Bucking_Resistance = LAMBDA(
section_type,
section_name,
steel_grade,
LTB_reduction_factor_χ_LT_mod,
LET(
χ_LT_mod, LTB_reduction_factor_χ_LT_mod,
f_y, Get_Yield_Strength(section_type, section_name, steel_grade),
class, Get_Section_Class(section_type, section_name, steel_grade),
W_y, IFS(
class <= 2,
Get_Plastic_Section_Modulus(section_type, section_name),
class = 3,
Get_Elastic_Section_Modulus(section_type, section_name),
class = 4,
Get_Effective_Section_Modulus(section_type, section_name)
),
χ_LT_mod * W_y * f_y / 10 ^ 6 / γ_M1
)
);
Get_M_cr = LAMBDA(
section_type,
section_name,
steel_grade,
length_mm,
k,
C_1,
C_2,
z_g,
[k_w],
[M_cr_manual_kNm],
LET(
f_y, Get_Yield_Strength(section_type, section_name, steel_grade),
I_yy, Get_Second_Moment_Of_Area(section_type, section_name),
I_zz, Get_Second_Moment_Of_Area(section_type, section_name, TRUE),
I_w, Get_Warping_Constant(section_type, section_name),
I_t, Get_Torsional_Constant(section_type, section_name),
L, length_mm,
g, SQRT(1 - I_zz / I_yy),
E_s, Youngs_Modulus,
ν, Poissons_Ratio,
G_s, Get_Shear_Modulus(E_s, ν),
k_w, IF(ISOMITTED(k_w), 1, k_w),
M_cr, (
((C_1 * PI() ^ 2 * E_s * I_zz) / ((k * L) ^ 2 * g)) *
(
SQRT(
(k / k_w) ^ 2 * (I_w / I_zz) +
((k * L) ^ 2 * G_s * I_t) / (PI() ^ 2 * E_s * I_zz) + (C_2 * z_g) ^ 2
) - (C_2 * z_g)
)
) / 10 ^ 6,
IF(OR(ISOMITTED(M_cr_manual_kNm), M_cr_manual_kNm = 0), M_cr, M_cr_manual_kNm)
)
);
/**
Correction factor for moment distribution between lateral restraints.
EC3 Table 6.6
*/
Get_k_c = LAMBDA(coefficient_of_restraint_C_1,
LET(C_1, coefficient_of_restraint_C_1, 1 / SQRT(C_1))
);
Get_z_g = LAMBDA(section_type, section_name, load_type,
LET(
h, Get_Property_Value(section_type, section_name, "height"),
IFS(
load_type = "Destabilising",
h / 2,
load_type = "Shear Centre",
0,
load_type = "Stabilising",
-h / 2
)
)
);
Get_Auto_Designed_Section = LAMBDA(
steel_grade,
length_mm,
permanent_UDL,
imposed_UDL,
deflection_limit_span_imposed,
deflection_limit_span_total,
deflection_limit_abs_total,
design_priority,
lookup_section_table_1,
lookup_section_table_2,
max_height,
min_height,
max_breadth,
min_breadth,
restrained_bool,
effective_length_factor_k,
effective_length_factor_warping_k_w,
load_type,
[section_index],
LET(
// General assigning
L, length_mm,
g_k, permanent_UDL,
q_k, imposed_UDL,
k, effective_length_factor_k,
k_w, effective_length_factor_warping_k_w,
δ_lim_span_qk, deflection_limit_span_imposed,
δ_lim_span_SLS, deflection_limit_span_total,
δ_lim_abs_SLS, IF(
ISBLANK(deflection_limit_abs_total),
δ_lim_span_SLS,
deflection_limit_abs_total
),
max_h, IF(OR(ISBLANK(max_height), max_height = 0), 9999, max_height),
max_b, IF(OR(ISBLANK(max_breadth), max_breadth = 0), 9999, max_breadth),
min_h, IF(ISBLANK(min_height), 0, min_height),
min_b, IF(ISBLANK(min_breadth), 0, min_breadth),
section_index, IF(ISOMITTED(section_index), 1, section_index),
section_table_1, IFS(
lookup_section_table_1 = "UB",
UB_Table,
lookup_section_table_1 = "UKB",
UKB_Table,
lookup_section_table_1 = "UC",
UC_Table,
lookup_section_table_1 = "UKC",
UKC_Table
),
section_table_2, IFS(
lookup_section_table_2 = "UB",
UB_Table,
lookup_section_table_2 = "UKB",
UKB_Table,
lookup_section_table_2 = "UC",
UC_Table,
lookup_section_table_2 = "UKC",
UKC_Table
),
// Combine section lookup tables & remove duplicates
section_table_unsorted, UNIQUE(VSTACK(section_table_1, section_table_2)),
// Filtering table to minimum & maximum size limit constraints
section_table_filtered, Filter_Table(section_table_unsorted, max_h, min_h, max_b, min_b),
// Sorting table to design priority order
section_table_sorted, Sort_Table(section_table_filtered, design_priority),
// Get section from sorted and filtered section table
name_property_index, Get_Property_Index("name"),
type_property_index, Get_Property_Index("type"),
section_name, INDEX(section_table_sorted, section_index, name_property_index),
section_type, INDEX(section_table_sorted, section_index, type_property_index),
g_swt, Get_Section_Selfweight(section_type, section_name),
w_SLS, SUM(g_k, g_swt, q_k),
// DESIGN CHECKS
// Section Class
class, Get_Section_Class(section_type, section_name, steel_grade),
web_slenderness_ratio, Get_Web_Slenderness_Ratio(section_type, section_name, steel_grade),
flange_buckling_ratio, Get_Flange_Buckling_Ratio(section_type, section_name, steel_grade),
flange_buckling_UR, web_slenderness_ratio / flange_buckling_ratio,
// Shear
V_Ed, Loading.Get_Shear_Force(g_k + g_swt, q_k, L),
V_pl_Rd, Get_Shear_Resistance(section_type, section_name, steel_grade),
V_UR, V_Ed / V_pl_Rd,
// Moment
M_Ed, Loading.Get_Bending_Moment(g_k + g_swt, q_k, L),
M_y_Rd, IFS(
class <= 2,
Get_Plastic_Bending_Resistance(section_type, section_name, steel_grade, V_Ed),
class = 3,
Get_Elastic_Bending_Resistance(section_type, section_name, steel_grade, V_Ed),
class = 4,
Get_Effective_Bending_Resistance(section_type, section_name, steel_grade, V_Ed)
),
M_UR, M_Ed / M_y_Rd,
// Deflection
// Imposed only
δ_qk, Get_Deflection(section_type, section_name, L, q_k),
δ_lim_qk, L / δ_lim_span_qk,
δ_qk_UR, δ_qk / δ_lim_qk,
// Total
δ_SLS, Get_Deflection(section_type, section_name, L, w_SLS),
δ_lim_SLS, L / δ_lim_span_SLS,
δ_SLS_UR, δ_SLS / MIN(δ_lim_SLS, δ_lim_abs_SLS),
// LTB
// For coefficient of restraint factors see NCCI: SN003b-EN-EU
C_1, 1.127, // Assumes simply-supported with UDL
C_2, 0.454, // Assumes simply-supported with UDL
k_c, Get_k_c(C_1),
z_g, Get_z_g(section_type, section_name, load_type),
M_cr, Get_M_cr(section_type, section_name, steel_grade, L, k, C_1, C_2, z_g, k_w),
ƛ_LT, Get_ƛ_LT(section_type, section_name, steel_grade, M_cr),
Φ_LT, Get_Φ_LT(section_type, section_name, ƛ_LT),
χ_LT, Get_χ_LT(section_type, section_name, ƛ_LT, Φ_LT),
f, Get_Modifaction_Factor_f(ƛ_LT, k_c),
χ_LT_mod, Get_χ_LT_mod(χ_LT, f, ƛ_LT),
M_b_Rd, Get_LTB_Bucking_Resistance(section_type, section_name, steel_grade, χ_LT_mod),
LTB_UR, IF(
OR(restrained_bool, ƛ_LT <= ƛ_LT0, M_Ed / M_cr <= ƛ_LT0 ^ 2),
"Not Req'd",
M_Ed / M_b_Rd
),
// Results
results, VSTACK(section_type, section_name, V_UR, M_UR, δ_qk_UR, δ_SLS_UR, LTB_UR),
// Auto Design Recursive Loop
sections_length, ROWS(section_table_sorted),
IF(
OR(AND(V_UR < 1, M_UR < 1, δ_qk_UR < 1, δ_SLS_UR < 1), section_index = sections_length),
IF(
OR(restrained_bool, LTB_UR = "Not Req'd"),
results,
IF(
LTB_UR < 1,
results,
Get_Auto_Designed_Section(
steel_grade,
length_mm,
permanent_UDL,
imposed_UDL,
deflection_limit_span_imposed,
deflection_limit_span_total,
deflection_limit_abs_total,
design_priority,
lookup_section_table_1,
lookup_section_table_2,
max_h,
min_h,
max_b,
min_b,
restrained_bool,
k,
k_w,
load_type,
section_index + 1
)
)
),
Get_Auto_Designed_Section(
steel_grade,
length_mm,
permanent_UDL,
imposed_UDL,
deflection_limit_span_imposed,
deflection_limit_span_total,
deflection_limit_abs_total,
design_priority,
lookup_section_table_1,
lookup_section_table_2,
max_h,
min_h,
max_b,
min_b,
restrained_bool,
k,
k_w,
load_type,
section_index + 1
)
)
)
);
Sort_Table = LAMBDA(table, design_priority,
LET(
sort_index, IFS(
design_priority = "Lowest mass",
Get_Property_Index("mass"),
design_priority = "Smallest section height",
Get_Property_Index("height")
),
SORT(table, sort_index)
)
);
Filter_Table = LAMBDA(table, max_height, min_height, max_breadth, min_breadth,
LET(
height_property_index, Get_Property_Index("height"),
breadth_property_index, Get_Property_Index("breadth"),
sort_array_heights, CHOOSECOLS(table, height_property_index),
sort_array_breadths, CHOOSECOLS(table, breadth_property_index),
FILTER(
table,
(sort_array_heights <= max_height) * (sort_array_heights >= min_height) *
(sort_array_breadths <= max_breadth) * (sort_array_breadths >= min_breadth)
)
)
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment