$+PROG AQUA urs:4.1 $ $conc $NORM $MATE -PROG SOFIMSHA urs:5.1 $ Creation of pedestrian on rigid plate HEAD Pedestrian SYST type 3D GDIR NEGZ GDIV 2000 $__________________________________________________________________________________________ !*! User input $ Pedestrian: sto#ped_weight 70 $[kg] weight of a pedestrian sto#ped_spring 1E5 $[kN/m³] spring constant of pedestrian sto#ped2_spring E5 $[kN/m³] spring constant of other pedestrians sto#ped_damp 3000 $ 30 $[kNs/m³] damping of pedestrian sto#ped2_damp 3000 $ 30 $[kNs/m³] damping of other pedestrians sto#ped_height 1.8 $[m] height of truss element that represents pedestrian sto#ped_width 0.3 $[m] width of truss element that represents pedestrian; make sure the width of the cross section used for this truss element is equal to this value sto#ped_offset 0.5 $[m] distance between bridge and bottom side of truss element that represents pedestrian sto#node_ped_bot 10001 $ number of the node at the bottom of the truss element that represents pedestrian sto#node_ped_top 10002 $ number of the node at the top of the truss element that represents pedestrian $ Group ID's: sto#grp_pednodes 97 $ group ID of nodes of truss element that represents pedestrian sto#grp_pedspring 98 $ group ID of contact spring between truss element that represents pedestrian and bridge sto#grp_ped 99 $ group ID of truss element that represents pedestrian, and its stabilizing horizontal springs sto#grp_ped2nodes 90 $ group ID of nodes of truss elements that represenents other pedestrians sto#grp_ped2spring 91 $ group ID of contact springs between truss elements that represent other pedestrians and bridge sto#grp_ped2 92 $ group ID of truss elements that represent other pedestrians, and their stabilizing horizontal springs $ Load case ID's: sto#lc_wear 2 $ load case ID of wearing layer load sto#lc_foam 3 $ load case ID of foam load sto#lc_dl 7001 $ load case ID of load case that contains all dead loads sto#lc_dl_sw 1 $ load case ID of load case that contains all dead loads and selfweight sto#lc_imp 7002 $ load case ID of impulse load $ Materials: sto#wear_density 1500 $[kg/m³] density of the wearing layer sto#foam_density 50 $[kg/m³] density of the core foam material $__________________________________________________________________________________________ !*! Creation of pedestrian model grp #grp_pednodes node no #node_ped_bot x 0 y 0 z #ped_offset $ node at bottom side of truss element that represents pedestrian, just above the middle of the deck node no #node_ped_top x 0 y 0 z #ped_offset+#ped_height $ node at top side of truss element that represents pedestrian grp #grp_ped SPRI no 1 na #node_ped_bot DX 1 CP 1 $ CT 1 $ bottom horizontal stabilization in x-direction SPRI no 2 na #node_ped_bot DY 1 CP 1 $ bottom horizontal stabilization in y-direction SPRI no 3 na #node_ped_top DX 1 CP 1 $ CT 1 $ top horizontal stabilization in x-direction SPRI no 4 na #node_ped_top DY 1 CP 1 $ top horizontal stabilization in y-direction TRUS no 99 na #node_ped_bot ne #node_ped_top NCS 1 $ truss element that represents pedestrian grp #grp_pedspring SPRI no 5 na #node_ped_bot DZ -1 CP #ped_spring DP #ped_damp $ contact spring $____________________ !*! Creation of rigid plate node no 3300 x 0 y 0 z 0 node no 3301 x 0 y 1 z 0 node no 3302 x 1 y 1 z 0 node no 3303 x 1 y 0 z 0 node no 3304 x 0 y -1 z 0 node no 3305 x 1 y -1 z 0 $node no 3306 x 1 y 0 z 0 node no 3306 x -1 y 0 z 0 node no 3307 x -1 y 1 z 0 node no 3308 x -1 y -1 z 0 quad no 4400 n1 3300 n2 3301 n3 3302 n4 3303 t 5 m 1 n 1 mno 7 quad no 4400 n1 3300 n2 3303 n3 3305 n4 3304 t 5 m 1 n 1 mno 7 quad no 4400 n1 3300 n2 3301 n3 3307 n4 3306 t 5 m 1 n 1 mno 7 quad no 4400 n1 3300 n2 3306 n3 3308 n4 3304 t 5 m 1 n 1 mno 7 $__________________________________________________________________________________________ !*! Creation of supports node no 3300 fix pp node no 3301 fix pp node no 3302 fix pp node no 3303 fix pp node no 3304 fix pp node no 3305 fix pp node no 3306 fix pp node no 3307 fix pp node no 3308 fix pp END +PROG TEMPLATE urs:15.1 HEAD Input parameters and calculated quantities $__________________________________________________________________________________________ !*! User input $$$#0123456789ABCDEF $ use this line to check length of variable name (max 16 characters!) $ Dimensions: sto#span 16.2 $[m] sto#width 4.6 $[m] sto#sf_setting 1 $ variable to choose if there is a side flange and if it contains both a horizontal and a vertical plate or only a horizontal plate: 0 = no side flange, 1 = only horizontal plate, 2 = horizontal and vertical plate sto#width_sf 0.2 $[m] width of the horizontal part of the side flange; this variable won't be used if there is no side flange sto#height_sf 0.3 $[m] height of the vertical part of the side flange; this variable won't be used if there is no side flange or if the side flange doesn't contain a vertical plate sto#total_height 0.4 $[m] height from top side of upper flange to bottom side of lower flange sto#ctc 0.21 $[m] distance between web plates, center to center sto#angle 85 $[°] angle between horizontal plane and edge plates (equal to 90° if edges are not slanted) sto#wear_thickness 15 $[mm] thickness of the wearing layer $ Plate thicknesses: sto#thickness_web 5 $[mm] thickness of webs sto#thickness_uf 12 $[mm] thickness of upper flange sto#thickness_lf 14 $[mm] thickness of lwoer flange sto#thickness_sf 31 $[mm] thickness of side flanges sto#thickness_edge 22 $[mm] thickness of edges $ Materials: sto#wear_density 1500 $[kg/m³] density of the wearing layer sto#foam_density 50 $[kg/m³] density of the core foam material $ Pedestrian: sto#ped_weight 70 $[kg] weight of a pedestrian sto#ped_spring 1E5 $ [kN/m³] spring constant of pedestrian sto#ped2_spring 0.05 $1E5 $[kN/m³] spring constant of additional pedestrians sto#ped_damp 10 $[kNs/m³] damping of pedestrian sto#ped2_damp 10 $[kNs/m³] damping of additional pedestrians sto#main_ped 0 $ set this variable equal to 1 to generate the main pedestrian in the middle of the bridge sto#additional_peds 0 $ set this variable equal to 1 to generate additional pedestrians on the bridge $ Damping properties: sto#zeta 0.005 $ [-] material damping factor sto#modefordamping 6 $ mode in which it is assumed that the Rayleigh damping is equal to that of the first natural frequency (e.g. if this parameter is set to 5, the 5th natural frequency will be used to calculate the Rayleigh coefficients alpha and beta) sto#f1 2.38 $ [Hz] 1st natural frequency sto#f2 3.46 $ [Hz] 2nd natural frequency sto#f3 7.65 $ [Hz] 3rd natural frequency sto#f4 8.40 $ [Hz] 4th natural frequency sto#f5 9.21 $ [Hz] 5th natural frequency sto#f6 10.39 $ [Hz] 6th natural frequency sto#f7 12.82 $ [Hz] 7th natural frequency sto#f8 16.56 $ [Hz] 8th natural frequency sto#f9 17.91 $ [Hz] 9th natural frequency sto#f10 18.25 $ [Hz] 10th natural frequency $__________________________________________________________________________________________ !*! Developer input $ Material ID's: sto#mat_web 1 $ material ID of webs sto#mat_uf 2 $ material ID of upper flange sto#mat_lf 3 $ material ID of lower flange sto#mat_edge 4 $ material ID of edges sto#mat_sf 5 $ material ID of side flanges sto#mat_ped 6 $ material ID of truss element that represents pedestrian $ Plate ID's: sto#id_lf_l 5 $ plate ID of left outer side of lower flange sto#id_lf_r 6 $ plate ID of right outer side of lower flange sto#id_uf_l 3 $ plate ID of left outer side of upper flange sto#id_uf_r 4 $ plate ID of right outer side of upper flange sto#id_sfh_l 1 $ plate ID of horizontal part of left side flange sto#id_sfh_r 2 $ plate ID of horizontal part of right side flange sto#id_sfv_l 7 $ plate ID of vertical part of left side flange sto#id_sfv_r 8 $ plate ID of vertical part of right side flange $ Group ID's: sto#grp_lf 1 $ group ID of lower flange sto#grp_uf 2 $ group ID of upper flanges sto#grp_edge 3 $ group ID of edges sto#grp_sfh 4 $ group ID of horizontal parts of side flanges sto#grp_sfv 5 $ group ID of vertical parts of side flanges sto#grp_pednodes 97 $ group ID of nodes of truss element that represents pedestrian sto#grp_pedspring 98 $ group ID of contact spring between truss element that represents pedestrian and bridge sto#grp_ped 99 $ group ID of truss element that represents pedestrian, and its stabilizing horizontal springs sto#grp_ped2nodes 90 $ group ID of nodes of truss elements that represenents other pedestrians sto#grp_ped2spring 91 $ group ID of contact springs between truss elements that represent other pedestrians and bridge sto#grp_ped2 92 $ group ID of truss elements that represent other pedestrians, and their stabilizing horizontal springs $ Load case ID's: sto#lc_wear 2 $ load case ID of wearing layer load sto#lc_foam 3 $ load case ID of foam load sto#lc_dl 7001 $ load case ID of load case that contains all dead loads sto#lc_dl_sw 1 $ load case ID of load case that contains all dead loads and selfweight sto#lc_imp 7002 $ load case ID of impulse load sto#lc_dyna_first 8000 $ first load case of time step analysis $ Other: sto#pi 3.1415 sto#nr_of_nodes_cs 8 $ the number of nodes in a cross section (not including those of the webs) sto#nr_of_long_sect 20 $ number of longitudinal sections: the bridge is modeled in multiple parts or 'sections' in longitudinal direction so that the nodes between these sections can be used to place loads on sto#meshsize 1 $ this value determines how fine or coarse the mesh is sto#ped_height 1.8 $[m] height of truss element that represents pedestrian sto#ped_width 0.3 $[m] width of truss element that represents pedestrian; make sure the width of the cross section used for this truss element is equal to this value sto#ped_offset 0.5 $[m] distance between bridge and bottom side of truss element that represents pedestrian sto#node_ped_bot 10001 $ number of the node at the bottom of the truss element that represents pedestrian sto#node_ped_top 10002 $ number of the node at the top of the truss element that represents pedestrian $ Time step analysis: sto#dt 0.005 $ [s] duration of one time step sto#nr_of_ts 1200 $ number of time steps in the simulation $ Impulse load: sto#ts_of_imp_start 20 $ time step in which the impulse load starts sto#ts_buildup_imp 30 $ number of time steps over which the triangular impulse load increases linearly from 0 to its maximum value sto#ts_buildoff_imp 50 $ number of time steps over which the triangular impulse load decreases linearly from its maximum to 0 $__________________________________________________________________________________________ !*! Calculated values $ Calculation of dimensions sto#width_uf #width-2*#width_sf $[m] width of upper flange sto#width_lf #width_uf-2*#height/tan(#angle) $[m] width of lower flange sto#height #total_height-#thickness_uf/(2*1000)-#thickness_lf/(2*1000) $ [m] height of wire model (distance between center planes of flanges) sto#sectionlength #span/#nr_of_long_sect $ length of a longitudinal section $ Calculation of number of webs (in steps, because there is no simple round(...) function): sto#nr_of_webs_dbl #width_lf/#ctc $ non-rounded value (a.k.a. 'double') of number of webs sto#nr_of_webs_int div(#nr_of_webs_dbl,1) $ rounded-down value (a.k.a. 'integer') of number of webs sto#remainder mod(#nr_of_webs_dbl,1) if (#remainder < 0.5) sto#nr_of_webs #nr_of_webs_int $ actual number of webs else sto#nr_of_webs #nr_of_webs_int+1 $ actual number of webs endif $ Calculation of loads: sto#wear_load 9.81*#wear_density*#wear_thickness/(1000*1000) $[kN/m²] distributed load due to wearing layer sto#foam_height #total_height-(#thickness_uf/1000)-(#thickness_lf/1000) $[m] height of the foam core sto#foam_load 9.81*#foam_density*#foam_height/1000 $[kN/m²] distributed load due to foam core sto#ped_load 9.81*#ped_weight $[N] force due to a pedestrian $ Determination of node in the middle of the bridge: if mod(#nr_of_long_sect,2) == 0 $ determine if number of longitudinal sections is even sto#middle_long_sect (#nr_of_long_sect+2)*100 $ in case it is even sto#y_middle #sectionlength*#nr_of_long_sect/2 else sto#middle_long_sect (#nr_of_long_sect+1)*100 $ in case it is uneven sto#y_middle #sectionlength*(#nr_of_long_sect-1)/2 endif if mod(#nr_of_webs,2) == 0 $ determine if number of webs is even sto#middle_web #nr_of_nodes_cs+#nr_of_webs/2 $ in case it is even sto#x_middle #ctc/2 else sto#middle_web #nr_of_nodes_cs+(#nr_of_webs+1)/2 $ in case it is uneven sto#x_middle 0 endif sto#node_middle #middle_long_sect+#middle_web $ node in the middle of the bridge (both in transverse and longitudinal direction) sto#node_neighbor #node_middle+1 $ node right next to (in transverse direction) node in which the impulse load acts $ Pedestrian: sto#ped_vol #ped_width^2*#ped_height $[m³] volume of truss element that represents pedestrian sto#ped_density #ped_weight/#ped_vol $[kg/m³] density of truss element that represents pedestrian sto#ped_density2 9.81*#ped_density/1000 $[kN/m³] density of truss element that represents pedestrian; make sure the density of the material used for this truss element is equal to this value $ Damping properties: sto#w1 #f1*2*#pi $ [rad/s] 1st angular natural frequency sto#w2 #f2*2*#pi $ [rad/s] 2nd angular natural frequency sto#w3 #f3*2*#pi $ [rad/s] 3rd angular natural frequency sto#w4 #f4*2*#pi $ [rad/s] 4th angular natural frequency sto#w5 #f5*2*#pi $ [rad/s] 5th angular natural frequency sto#w6 #f6*2*#pi $ [rad/s] 6th angular natural frequency sto#w7 #f7*2*#pi $ [rad/s] 7th angular natural frequency sto#w8 #f8*2*#pi $ [rad/s] 8th angular natural frequency sto#w9 #f9*2*#pi $ [rad/s] 9th angular natural frequency sto#w10 #f10*2*#pi $ [rad/s] 10th angular natural frequency if #modefordamping == 2 sto#w_modefordamping #w2 elseif #modefordamping == 3 sto#w_modefordamping #w3 elseif #modefordamping == 4 sto#w_modefordamping #w4 elseif #modefordamping == 5 sto#w_modefordamping #w5 elseif #modefordamping == 6 sto#w_modefordamping #w6 elseif #modefordamping == 7 sto#w_modefordamping #w7 elseif #modefordamping == 8 sto#w_modefordamping #w8 elseif #modefordamping == 9 sto#w_modefordamping #w9 elseif #modefordamping == 10 sto#w_modefordamping #w10 endif sto#alpha 2*#zeta*#w1*#w_modefordamping*(#w_modefordamping-#w1)/(#w_modefordamping^2-#w1^2) $ [Hz] alpha Rayleigh coefficient: mass proportional damping sto#beta 2*#zeta*(#w_modefordamping-#w1)/(#w_modefordamping^2-#w1^2) $ [s] beta Rayleigh coefficient: stiffness proportional damping $ Time step analysis: sto#duration #nr_of_ts*#dt $ duration of the simulation sto#lc_dyna_last #lc_dyna_first+#nr_of_ts-1 $ last load case of time step analysis $ Impulse load: sto#start_time_imp #ts_of_imp_start*#dt $ time at which the triangular impulse load starts sto#time_of_imp_max #start_time_imp+#dt*#ts_buildup_imp $ time at which the triangular impulse load reaches its maximum sto#end_time_imp #time_of_imp_max+#dt*#ts_buildoff_imp $ time at which the triangular impulse load ends $ Other: Span = #(span,3.2) m Width = #(width,3.2) m Width side flange = #(width_sf,3.2) m Width upper flange = #(width_uf,3.2) m Height = #(height,3.2) m Center to centre distance = #(ctc,3.2) m Angle = #(angle,3.2) ° Width lower flange = #(width_lf,3.2) m Number of webs (not rounded) = #(nr_of_webs_dbl,3.2) Number of webs = #(nr_of_webs,3.2) END -PROG AQUA urs:5.3 HEAD Creation of materials UNIT 5 NORM 'EN' '1992-2004' COUN 0 CAT 'C' SNOW '1' UNIT 5 TIMB NO #mat_web TYPE GFK 'UP' EP 12000 G 4000 E90 11920 QH 0.300000 QH90 0.100000 GAM 25.20000 FM 144 FT0 144 FT90 143 FC0 144 FC90 143 FV 64 FVR 64 FM90 143 TITL "=Webs" SSLA EPS ULTI SIG 3[-] HMAT NO #mat_web TYPE FOUR NSP 0.100000 A 1 TIMB NO #mat_lf TYPE GFK 'UP' EP 30000 G 2440 E90 17667 QH 0.300000 QH90 0.100000 GAM 25.20000 FM 366 FT0 366 FT90 212 FC0 366 FC90 212 FV 39 FVR 39 FM90 212 TITL "=Lower flange" SSLA EPS ULTI SIG 3[-] HMAT NO #mat_lf TYPE FOUR NSP 0.100000 A 1 TIMB NO #mat_uf TYPE GFK 'UP' EP 27000 G 9670 E90 21167 QH 0.300000 QH90 0.100000 GAM 25.20000 FM 321 FT0 321 FT90 254 FC0 321 FC90 254 FV 155 FVR 155 FM90 254 TITL "=Upper flange" SSLA EPS ULTI SIG 3[-] HMAT NO #mat_uf TYPE FOUR NSP 0.100000 A 1 TIMB NO #mat_edge TYPE GFK 'UP' EP 24000 G 6000 E90 35000 QH 0.300000 QH90 0.100000 GAM 25.20000 FM 288 FT0 288 FT90 420 FC0 288 FC90 420 FV 96 FVR 96 FM90 420 TITL "=Edges" SSLA EPS ULTI SIG 3[-] HMAT NO #mat_edge TYPE FOUR NSP 0.100000 A 1 TIMB NO #mat_sf TYPE GFK 'UP' EP 25000 G 2438 E90 24583 QH 0.300000 QH90 0.100000 GAM 25.20000 FM 300 FT0 300 FT90 295 FC0 300 FC90 295 FV 39 FVR 39 FM90 295 TITL "=Side flanges" SSLA EPS ULTI SIG 3[-] HMAT NO #mat_sf TYPE FOUR NSP 0.100000 A 1 MATE NO #mat_ped GAM 4.2 TITL "Pedestrian" $ GAM should be 4.2 MATE NO 7 GAM 25 TITL "Infinitely stiff material" UNIT 5 SREC 1 H 300 B 300 MNO 6 MRF 0 REF C IT 0[o/o] AY 0[o/o] AZ 0[o/o] BCYZ '0' SPT 0 TITL "B/H = 300 / 300 mm" END +PROG SOFIMSHA urs:5.2 $ Creation of bridge model HEAD PuursTeddy3 SYST type 3D GDIR NEGZ GDIV 2000 $__________________________________________________________________________________________ !*! Creation of web plates loop#i0 #nr_of_webs*#nr_of_long_sect let#i1 #i0+1 let#j1 mod(#i1-1,#nr_of_long_sect)+1 $ rank of longitudinal section let#k1 (#i1-#j1)/#nr_of_long_sect+1 $ rank of web let#a1 (#j1*2-1)*100+#k1+#nr_of_nodes_cs let#b1 (#j1*2-0)*100+#k1+#nr_of_nodes_cs let#c1 (#j1*2+1)*100+#k1+#nr_of_nodes_cs let#d1 (#j1*2+2)*100+#k1+#nr_of_nodes_cs if #j1 == 1 node no #a1 x (#nr_of_webs-1)*#ctc/2-(#k1-1)*#ctc y 0 z 0 node no #b1 x (#nr_of_webs-1)*#ctc/2-(#k1-1)*#ctc y 0 z #height endif node no #c1 x (#nr_of_webs-1)*#ctc/2-(#k1-1)*#ctc y #j1*#sectionlength z 0 node no #d1 x (#nr_of_webs-1)*#ctc/2-(#k1-1)*#ctc y #j1*#sectionlength z #height quad no (#j1*1000)+#k1+#nr_of_nodes_cs n1 #a1 n2 #b1 n3 #d1 n4 #c1 t #thickness_web m #height/#meshsize n 1 mno #mat_web endloop $__________________________________________________________________________________________ !*! Creation of lower flange $ Creation of outer sides of lower flange: node no 100+#id_lf_l x #width_lf/2 y 0 z 0 node no 100+#id_lf_r x -#width_lf/2 y 0 z 0 $fix PX loop#i0 #nr_of_long_sect let#i1 #i0+1 node no (#i1*2+1)*100+#id_lf_l x #width_lf/2 y #i1*#sectionlength z 0 node no (#i1*2+1)*100+#id_lf_r x -#width_lf/2 y #i1*#sectionlength z 0 grp #grp_lf titl 'Lower flange' quad no (#i1*1000)+#id_lf_l n1 (#i1*2-1)*100+#id_lf_l n2 (#i1*2-1)*100+1+#nr_of_nodes_cs n3 (#i1*2+1)*100+1+#nr_of_nodes_cs n4 (#i1*2+1)*100+#id_lf_l t #thickness_lf m 1 n 1 mno #mat_lf quad no (#i1*1000)+#id_lf_r n1 (#i1*2-1)*100+#id_lf_r n2 (#i1*2-1)*100+#nr_of_nodes_cs+#nr_of_webs n3 (#i1*2+1)*100+#nr_of_nodes_cs+#nr_of_webs n4 (#i1*2+1)*100+#id_lf_r t #thickness_lf m 1 n 1 mno #mat_lf endloop $ Creation of parts of lower flanges between webs: loop#i0 (#nr_of_webs-1)*#nr_of_long_sect let#i1 #i0+1 let#j1 mod(#i1-1,#nr_of_long_sect)+1 $ rank of longitudinal section let#k1 (#i1-#j1)/#nr_of_long_sect+1 $ rank of web let#a1 (#j1*2-1)*100+#k1+#nr_of_nodes_cs let#b1 (#j1*2-1)*100+#k1+1+#nr_of_nodes_cs let#c1 (#j1*2+1)*100+#k1+1+#nr_of_nodes_cs let#d1 (#j1*2+1)*100+#k1+#nr_of_nodes_cs quad no (#j1*10000)+#k1+#nr_of_nodes_cs n1 #a1 n2 #b1 n3 #c1 n4 #d1 t #thickness_lf m 1 n 1 mno #mat_lf endloop $__________________________________________________________________________________________ !*! Creation of upper flange $ Creation of outer sides of upper flange: node no 100+#id_uf_l x #width_uf/2 y 0 z #height node no 100+#id_uf_r x -#width_uf/2 y 0 z #height loop#i0 #nr_of_long_sect let#i1 #i0+1 node no (#i1*2+1)*100+#id_uf_l x #width_uf/2 y #i1*#sectionlength z #height node no (#i1*2+1)*100+#id_uf_r x -#width_uf/2 y #i1*#sectionlength z #height grp #grp_uf titl 'Upper flange' quad no (#i1*1000)+#id_uf_l n1 (#i1*2-1)*100+#id_uf_l n2 (#i1*2-0)*100+1+#nr_of_nodes_cs n3 (#i1*2+2)*100+1+#nr_of_nodes_cs n4 (#i1*2+1)*100+#id_uf_l t #thickness_uf m 1 n 1 mno #mat_uf quad no (#i1*1000)+#id_uf_r n1 (#i1*2-1)*100+#id_uf_r n2 (#i1*2-0)*100+#nr_of_nodes_cs+#nr_of_webs n3 (#i1*2+2)*100+#nr_of_nodes_cs+#nr_of_webs n4 (#i1*2+1)*100+#id_uf_r t #thickness_uf m 1 n 1 mno #mat_uf endloop $ Creation of parts of upper flanges between webs: loop#i0 (#nr_of_webs-1)*#nr_of_long_sect let#i1 #i0+1 let#j1 mod(#i1-1,#nr_of_long_sect)+1 $ rank of longitudinal section let#k1 (#i1-#j1)/#nr_of_long_sect+1 $ rank of web let#a1 (#j1*2-0)*100+#k1+#nr_of_nodes_cs let#b1 (#j1*2-0)*100+#k1+1+#nr_of_nodes_cs let#c1 (#j1*2+2)*100+#k1+1+#nr_of_nodes_cs let#d1 (#j1*2+2)*100+#k1+#nr_of_nodes_cs quad no (#j1*100000)+#k1+#nr_of_nodes_cs n1 #a1 n2 #b1 n3 #c1 n4 #d1 t #thickness_uf m 1 n 1 mno #mat_uf endloop $__________________________________________________________________________________________ !*! Creation of edges grp #grp_edge titl 'Edges' loop#i0 #nr_of_long_sect let#i1 #i0+1 let#a1 (#i1*2-1)*100+#id_uf_l let#b1 (#i1*2-1)*100+#id_lf_l let#c1 (#i1*2+1)*100+#id_lf_l let#d1 (#i1*2+1)*100+#id_uf_l quad no (#i1*1000)+35 n1 #a1 n2 #b1 n3 #c1 n4 #d1 t #thickness_edge m #height/#meshsize n 1 mno #mat_edge let#e1 (#i1*2-1)*100+#id_uf_r let#f1 (#i1*2-1)*100+#id_lf_r let#g1 (#i1*2+1)*100+#id_lf_r let#h1 (#i1*2+1)*100+#id_uf_r quad no (#i1*1000)+46 n1 #e1 n2 #f1 n3 #g1 n4 #h1 t #thickness_edge m #height/#meshsize n 1 mno #mat_edge endloop $__________________________________________________________________________________________ !*! Creation of horizontal part of side flanges grp #grp_sfh titl 'Horizontal side flanges' if #sf_setting > 0 node no 100+#id_sfh_l x #width/2 y 0 z #height node no 100+#id_sfh_r x -#width/2 y 0 z #height loop#i0 #nr_of_long_sect let#i1 #i0+1 let#a1 (#i1*2-1)*100+#id_sfh_l let#b1 (#i1*2-1)*100+#id_uf_l let#c1 (#i1*2+1)*100+#id_uf_l let#d1 (#i1*2+1)*100+#id_sfh_l node no #d1 x #width/2 y #i1*#sectionlength z #height quad no (#i1*1000)+#id_sfh_l n1 #a1 n2 #b1 n3 #c1 n4 #d1 t #thickness_sf m #width_sf/#meshsize n 1 mno #mat_sf let#e1 (#i1*2-1)*100+#id_sfh_r let#f1 (#i1*2-1)*100+#id_uf_r let#g1 (#i1*2+1)*100+#id_uf_r let#h1 (#i1*2+1)*100+#id_sfh_r node no #h1 x -#width/2 y #i1*#sectionlength z #height quad no (#i1*1000)+#id_sfh_r n1 #e1 n2 #f1 n3 #g1 n4 #h1 t #thickness_sf m #width_sf/#meshsize n 1 mno #mat_sf endloop endif $__________________________________________________________________________________________ !*! Creation of vertical part of side flanges grp #grp_sfv titl 'Vertical side flanges' if #sf_setting == 2 node no 100+#id_sfv_l x #width/2 y 0 z #height-#height_sf node no 100+#id_sfv_r x -#width/2 y 0 z #height-#height_sf loop#i0 #nr_of_long_sect let#i1 #i0+1 let#a1 (#i1*2-1)*100+#id_sfv_l let#b1 (#i1*2-1)*100+#id_sfh_l let#c1 (#i1*2+1)*100+#id_sfh_l let#d1 (#i1*2+1)*100+#id_sfv_l node no #d1 x #width/2 y #i1*#sectionlength z #height-#height_sf quad no (#i1*1000)+#id_sfv_l n1 #a1 n2 #b1 n3 #c1 n4 #d1 t #thickness_sf m #width_sf/#meshsize n 1 mno #mat_sf let#e1 (#i1*2-1)*100+#id_sfv_r let#f1 (#i1*2-1)*100+#id_sfh_r let#g1 (#i1*2+1)*100+#id_sfh_r let#h1 (#i1*2+1)*100+#id_sfv_r node no #h1 x -#width/2 y #i1*#sectionlength z #height-#height_sf quad no (#i1*1000)+#id_sfv_r n1 #e1 n2 #f1 n3 #g1 n4 #h1 t #thickness_sf m #width_sf/#meshsize n 1 mno #mat_sf endloop endif $__________________________________________________________________________________________ !*! Creation of supports node fitl 100+#id_lf_l 100+#id_lf_r fix xp $should be 'xp' to block movement in Y (longitudinal direction) and Z (vertical direction) along the entire edge node fitl (#nr_of_long_sect*2+1)*100+#id_lf_l (#nr_of_long_sect*2+1)*100+#id_lf_r fix pz $should be 'pz' to block movement in Z (vertical direction) along the entire edge node no 100+#id_lf_r fix px $ fix a single node on the side of the bridge where the coordinate system origin is located node no (#nr_of_long_sect*2+1)*100+#id_lf_r fix px $ fix a single node on the opposite side of the bridge $__________________________________________________________________________________________ !*! Creation of pedestrian model if #main_ped == 1 grp #grp_pednodes node no #node_ped_bot x #x_middle y #y_middle z #height+#ped_offset $ node at bottom side of truss element that represents pedestrian, just above the middle of the deck node no #node_ped_top x #x_middle y #y_middle z #height+#ped_offset+#ped_height $ node at top side of truss element that represents pedestrian grp #grp_ped SPRI no 1 na #node_ped_bot DX 1 CP 1 $ CT 1 $ horizontally stabilizing spring in x direction for bottom node SPRI no 2 na #node_ped_bot DY 1 CP 1 $ horizontally stabilizing spring in y direction for bottom node SPRI no 3 na #node_ped_top DX 1 CP 1 $ CT 1 $ horizontally stabilizing spring in x direction for top node SPRI no 4 na #node_ped_top DY 1 CP 1 $ horizontally stabilizing spring in y direction for top node TRUS no 99 na #node_ped_bot ne #node_ped_top NCS 1 $ truss element that represents pedestrian grp #grp_pedspring $SPRI no 5 na #node_ped_bot DZ -1 CP #ped_spring DP #ped_damp $ contact spring, works in ASE analysis SPRI no 5 na #node_ped_bot ne #node_middle DZ -1 CP #ped_spring DP #ped_damp $ contact spring, works in DYNA analysis $alle dollartekens wegdoen vanaf "creation of pedestrian model" tot hier $Test to check the effect of a (very heavy/tall) truss element: $node 10002 x #x_middle y 4*#sectionlength z #height+#ped_height*100 $ node just above the middle of the deck $TRUS no 99 na 1018 ne 10002 NCS 1 $ truss element that represents pedestrian endif $__________________________________________________________________________________________ !*! Creation of additional pedestrians at other locations if #additional_peds == 1 grp #grp_ped2nodes loop#i0 #nr_of_long_sect+1 let#ped_pos_x 1 let#ped_pos_y #i0 node no 5000+#i0 x #x_middle+#ped_pos_x*#ctc y #ped_pos_y*#sectionlength z #height+#ped_offset $ bottom node of pedestrian truss node no 5100+#i0 x #x_middle+#ped_pos_x*#ctc y #ped_pos_y*#sectionlength z #height+#ped_offset+#ped_height $ top node of pedestrian truss endloop grp #grp_ped2 $ generation of pedestrian trusses and their horizontally stabilizing springs loop#i0 #nr_of_long_sect+1 SPRI no (#i0+1)*10+1 na 5000+#i0 dx 1 cp 1 $ horizontally stabilizing spring in x direction for bottom node SPRI no (#i0+1)*10+2 na 5000+#i0 dy 1 cp 1 $ horizontally stabilizing spring in y direction for bottom node SPRI no (#i0+1)*10+3 na 5100+#i0 dx 1 cp 1 $ horizontally stabilizing spring in x direction for top node SPRI no (#i0+1)*10+4 na 5100+#i0 dy 1 cp 1 $ horizontally stabilizing spring in y direction for top node TRUS no 100+#i0 na 5000+#i0 ne 5100+#i0 ncs 1 $ truss element that represents pedestrian endloop grp #grp_ped2spring loop#i0 #nr_of_long_sect+1 $ SPRI no (#i0+1)*10+5 na 5000+#i0 DZ -1 CP #ped2_spring DP #ped2_damp $ contact spring, works in ASE analysis SPRI no (#i0+1)*10+5 na 5000+#i0 ne 219+200*#i0 DZ -1 CP #ped2_spring DP #ped2_damp $ contact spring, works in DYNA analysis endloop endif END $+PROG ASE urs:4 $HEAD moving spring $MOVS grp #grp_pedspring TYPE QGRP from #grp_uf L0 #ped_offset $ the MOVS command allows connecting the spring in the node at the bottom of the truss element to the QUAD elements of the upper flange, which are part of group 2 $MOVS grp #grp_ped2spring TYPE QGRP from #grp_uf L0 #ped_offset $END -PROG SOFILOAD urs:6.1 $ Loads on single pedestrian on rigid plate HEAD Text Interface for Loads $__________________________________________________________________________________________ !*! Calculated values Wearing layer load = #(wear_load,3.2) kN/m² Foam core load = #(foam_load,3.2) kN/m² Node in which dirac load acts = node #(node_middle,3.0) $__________________________________________________________________________________________ !*! Actions ACT G gamu 1 gamf 1 $ dead load ACT Q $ variable load $__________________________________________________________________________________________ !*! Loadcases LC #lc_imp type Q TITL 'live load: impulse' node #node_ped_top TYPE PG P1 70 $ impulse load of 70 N END +PROG SOFILOAD urs:6.2 $ Loads on the bridge HEAD Text Interface for Loads $__________________________________________________________________________________________ !*! Calculated values Wearing layer load = #(wear_load,3.2) kN/m² Foam core load = #(foam_load,3.2) kN/m² Node in which dirac load acts = node #(node_middle,3.0) $__________________________________________________________________________________________ !*! Actions ACT G gamu 1 gamf 1 $ dead load ACT Q $ variable load $__________________________________________________________________________________________ !*! Loadcases $ If the load type is 'PG', the load acts in the direction of gravity. LC #lc_wear type G TITL 'dead load: wearing layer' $gamu 1 gamf 1 quad grp #grp_uf type PG P #wear_load $ dead load from wearing layer on upper flange $gekopieerd uit step_bridge_nonl_lifting_support: $lc 2 type none $ quad grp 0 type pg 3.0 $ Belag 3 kN/m2 LC #lc_foam type G TITL 'dead load: foam' gamu 1 gamf 1 quad grp #grp_lf type PG P #foam_load $ dead load from foam core on lower flange LC #lc_imp type Q TITL 'live load: impulse' if #main_ped == 1 node #node_ped_top TYPE PG P1 70 $ impulse load of 70 N applied to the top node of the pedestrian truss else node #node_middle TYPE PG P1 70 $ impulse load of 70 N applied to the middle of the bridge endif FUNC T 0,#start_time_imp,#time_of_imp_max,#end_time_imp,#duration F 0,0,1,0,0 $ FUNC T 0,0.2,0.4,0.5,1.2 F 0,0,1,0,0 $LC 4 Q TITL 'variable load' $ node 202 type PG 75 END $+PROG ASE urs:4 $HEAD moving spring $MOVS 99003 TYPE QGRP from 1 L0 -#ped_offset $ #dz see SOFIMSHA $END $ version 2016 : MOVS 99003 TYPE 3 1001 1199 1 L0 #dz[m] +PROG ASE urs:9 $ Linear Analysis HEAD Calculation of forces and moments PAGE UNII 0 CTRL OPT WARP VAL 0 LC ALL END +PROG ASE URS:5 HEAD Loadcases in ASE ECHO DISP,REAC,FORC,NOST,BEDD NO $ Create load case which contains the selfweight and the two dead loads: wearing layer and foam LC #lc_dl_sw FACD 1 TITL 'Primary LC: dead weight + SW' $ FACD 1 sets factor of structural dead weight (= selfweight) to 1, because this is 0 by default LCC #lc_wear $ add wearing layer load, as defined in sofiload, to this load case LCC #lc_foam $ add foam load, as defined in sofiload, to this load case $As a result, this load case contains the selfweight (because of 'FACD 1'), the wearing layer load and the foam load $ Create load case which contains the two dead loads: wearing layer and foam LC #lc_dl FACD 0 TITL 'Only additional masses' $ this time FACD is set to 0, so selfweight is not taken into account LCC #lc_wear LCC #lc_foam $ Create load case which contains the dirac impulse load LC #lc_imp $ this load case is already defined in Sofiload, but has to be defined again in ASE in order to use it for the impulse load (in one of the next ASE programs) END +PROG ASE URS:6 HEAD Eigenfrequencies [without damping] MASS LC #lc_dl PRZ 100 EIGE NEIG 15 LC #lc_dl_sw $ LC 5001 $ NEIG determines the number of eigenfrequencies that will be calculated END END -PROG ASE urs:10 HEAD Triangular impulse load $$$#0123456789ABCDEF $ use this line to check length of variable name (max 16 characters!) let#dt 0.01 $ [s] duration of one time step let#nr_of_ts 10 $ number of time steps in the simulation let#duration #nr_of_ts*#dt $ duration of the simulation let#ts_of_imp_start 2 $ time step in which the impulse load starts let#ts_buildup_imp 3 $ number of time steps over which the triangular impulse load increases linearly from 0 to its maximum value let#ts_buildoff_imp 5 $ number of time steps over which the triangular impulse load decreases linearly from its maximum to 0 let#start_time_imp #ts_of_imp_start*#dt $ time at which the triangular impulse load starts let#time_of_imp_max #start_time_imp+#dt*#ts_buildup_imp $ time at which the triangular impulse load reaches its maximum let#end_time_imp #time_of_imp_max+#dt*#ts_buildoff_imp $ time at which the triangular impulse load ends let#plf #lc_dl_sw $ this variable indicates which load case is considered in the first time step of the time step analysis (it is used in the SYST command later on as the PLC or primary load case); afterwards it is increased by 1 in each time step, thus works as a running load case ID Time step of impulse start = #(ts_of_imp_start,8.0) Number of time steps in impulse buildup = #(ts_buildup_imp,8.0) Number of time steps in impulse buildoff = #(ts_buildoff_imp,8.0) Time of impulse start = #(start_time_imp,8.2) Time of impulse max = #(time_of_imp_max,8.2) Time of impulse end = #(end_time_imp,8.2) loop#i0 #nr_of_ts $$$#0123456789ABCDEF $ use this line to check length of variable name (max 16 characters!) let#time_begin #i0*#dt $ [s], time at the beginning of the current time step let#time_end #time_begin+#dt $ [s], time at the end of the current time step let#time (#time_begin+#time_end)/2 $ [s], time in the middle of the current time step let#factor 0.000001 $ this is the factor that will be multiplied by the actual load, but it may not be 0 $ Dirac load, where the load is only non-zero in a single time step: $if (#time > #start_time_imp)&(#time < #start_time_imp+#dt) ; let#factor 1.0 ; endif $ Impulse load with triangular time variation: if (#time >= #start_time_imp)&(#time < #time_of_imp_max) let#factor (#time-#start_time_imp)/(#time_of_imp_max-#start_time_imp) elseif (#time >= #time_of_imp_max)&(#time < #end_time_imp) let#factor (#end_time_imp-#time)/(#end_time_imp-#time_of_imp_max) endif Time = #(time_begin,8.2)s, load factor = #(factor,8.6) $ STEP n 1 DT #dt ALF 0.4 DEL 0.55 THE 1.0 LCSM 9900 $ the step command makes sure that a time step analysis will be performed, the number of time steps (next to "n") is set to 1 because in this case, we use a loop for the different time steps, it is also possible to use a time step analysis without a loop, but by setting the number of time steps equal to a higher number (e.g. STEP N 50 for 50 time steps) $ STEP n 1 DT #dt ALF 20 5.5 1.0 LCSM 9900 $ the step command makes sure that a time step analysis will be performed, the number of time steps (next to "n") is set to 1 because in this case, we use a loop for the different time steps, it is also possible to use a time step analysis without a loop, but by setting the number of time steps equal to a higher number (e.g. STEP N 50 for 50 time steps) STEP n 1 DT #dt BET 0.25 DEL 0.5 THE 1 LCSM 9900 $ the step command makes sure that a time step analysis will be performed, the number of time steps (next to "n") is set to 1 because in this case, we use a loop for the different time steps, it is also possible to use a time step analysis without a loop, but by setting the number of time steps equal to a higher number (e.g. STEP N 50 for 50 time steps) SYST prob nonl PLC #plf $nonlinear analysis, and primary load case is set to be the load case that is considered in this time step of the loop let#plf #plf+1 $ add 1 to the running load case ID MASS LC #lc_dl PRZ 100 $ "g_2 mass - is applied as dynamic mass and also as static load" $ "via dead load factor LC...FACD! No more LCC 7001 necessary !" $ "(only on LC-FACD - not on GRP...FACD )" $ "The structural mass is automatic applied as mass with LC-FACD" LC #plf FACD 1.0 $ definition of a new load case, corresponding to the current time step LCC no #lc_imp fact #factor $ the load case of the current time step contains the impulse load multiplied by the factor value corresponding to the current time step END endloop END +PROG DYNA urs:25.1 HEAD Dynamic time step analysis of response to triangular impulse load CTRL RLC #lc_dyna_first $ RLC: "Result load case for Histories" [source: manual] CTRL STYP MAX $ STYP: "Superposition of results of spectra and stationary response" [source: manual] $ STYP MAX: "The functions are evaluated separately followed by a max/min selection" [source: manual] GRP NO - VAL FULL RADA #alpha RADB #beta $ calculation with Rayleigh damping, determined from predefined damping factor and two natural frequencies CTRL MCON 2 $ MCON: "Formulation of the mass matrix" $ MCON 2: "Consistent mass matrix for system, consistent translatoric element matrices" STEP DT #dt N #nr_of_ts BET 0.25 DEL 0.5 THE 1 $ BET, DEL and THE are parameters related to the integration method, they should be set to 0.25, 0.5 and 1 respectively in order to avoid numerical damping LC #lc_imp MASS LC #lc_dl $CONT NR 101 V 140/3.6 $ Movement of load end -PROG ASE URS:28 HEAD Time plots of node in the middle of the bridge (first attempt) PLOT LC 1 NNO #node_middle DIRE UZ TYPE TIME PLOT LC 1 NNO #node_middle DIRE AZ TYPE TIME PLOT LC 1 NNO #node_neighbor DIRE UZ TYPE TIME PLOT LC 1 NNO #node_neighbor DIRE AZ TYPE TIME $PLOT 1001 NO 2102 DIRE N END +PROG ASE urs:26.1 HEAD Time plots of node in the middle of the bridge $PLOT LC #lc_dyna_first TO #lc_dyna_last NNO #node_neighbor DIRE AZ TYPE TIME $ Plot of the vertical acceleration (z-direction) of the node just next to the impacted node as a function of time $PLOT LC #lc_dyna_first NNO #node_neighbor DIRE AZ TYPE TIME $ Plot of the vertical acceleration (z-direction) of the node just next to the impacted node as a function of time $PLOT LC #lc_dyna_first TO #lc_dyna_last NNO #node_middle DIRE AZ TYPE TIME $ Plot of the vertical acceleration (z-direction) of the node just next to the impacted node as a function of time $PLOT LC #lc_dyna_first NNO #node_middle DIRE AZ TYPE TIME $ Plot of the vertical acceleration (z-direction) of the node just next to the impacted node as a function of time PLOT LC 1 NNO #node_middle DIRE AZ TYPE TIME $ Plot of the vertical acceleration (z-direction) of the node just next to the impacted node as a function of time END -PROG WING urs:9.1 $ Graphical Output HEAD Graphical Output PAGE UNII 0 CTRL EMPT YES $ create empty pages if results not available CTRL WARN (800 802 1) $ no warnings if no values found CTRL WARN (804 808 1) $ no warnings if no values found CTRL WARN 873 $ no warning for 2D visibility #define SCHR=0.2 SCHH H6 0.2 #define FILL=- #define FILLI=- #define FILLC=- #define SCHRI=- #define SCHRC=- VIEW EGXY $ view in global Z direction MOVE UNIT PRWC X 0 Y 33 DTYP QSEC ; DRAW UNIT PRWC X 100 Y 33 DTYP QSEC $ cut in global X direction MOVE UNIT PRWC X 0 Y 66 DTYP QSEC ; DRAW UNIT PRWC X 100 Y 66 DTYP QSEC $ cut in global X direction MOVE UNIT PRWC X 33 Y 0 DTYP QSEC ; DRAW UNIT PRWC X 33 Y 100 DTYP QSEC $ cut in global Y direction MOVE UNIT PRWC X 66 Y 0 DTYP QSEC ; DRAW UNIT PRWC X 66 Y 100 DTYP QSEC $ cut in global Y direction SIZ2 SPLI PICT SIZE -URS SC 0 SPLI 2x1 MARG NO FORM STAN VIEW EG3 LC 2 DESI 2 LOAD TYPE ALL NODE TYPE SV SCHH YES NODE TYPE UZ FILL $(FILLI) SCHH $(SCHRI) REPR DISO DEFO TYPE FULL FAC DEFA LC CURR; STRU NUME 0 0; DEFO NO QUAD TYPE HM SCHH NO REPR DVEC END