def f(x): if str(x) in solution_dictionary: cost = solution_dictionary[str(x)] else: cost = BlennerhassettBridge(hanger_arrangement='Unpatterned', hanger_params=x, self_stress_state='Zero-displacement', curve_fitting='Polynomial', cable_loss=False).cost solution_dictionary[str(x)] = cost print(round(cost / 10 ** 6, 3)) return cost
import numpy as np from bridges.Blennerhassett import BlennerhassettBridge from plotting.plots import make_plots, crop_plots from plotting.tables import dc_overview_table, small_cost_overview_table, big_cost_overview_table curve = '' bridge_65 = BlennerhassettBridge(curve_fitting=curve, hanger_params=(np.radians(65), )) bridge_75_65 = BlennerhassettBridge(curve_fitting=curve, hanger_arrangement='Constant Change', hanger_params=(np.radians(75), np.radians(65))) bridge_85_65 = BlennerhassettBridge(curve_fitting=curve, hanger_arrangement='Constant Change', hanger_params=(np.radians(85), np.radians(65))) fig, ax = bridge_85_65.plot_elements() fig.savefig('arrangement_85_45.png') bridge_95_65 = BlennerhassettBridge(curve_fitting=curve, hanger_arrangement='Constant Change', hanger_params=(np.radians(95), np.radians(65))) bridge_105_65 = BlennerhassettBridge(curve_fitting=curve, hanger_arrangement='Constant Change', hanger_params=(np.radians(105), np.radians(65))) fig, ax = bridge_105_65.plot_elements() fig.savefig('arrangement_105_25.png') bridges_dict = {
from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge from plotting.plots import make_plots bridge_basic = BlennerhassettBridge(arch_optimisation=False) fig, ax = bridge_basic.plot_effects_on_structure('-1 DL', 'Moment') pyplot.show() # fig.savefig('dead_load.png')
import numpy as np from bridges.Blennerhassett import BlennerhassettBridge # bridge_parallel = BlennerhassettBridge(hanger_params=(np.radians(65),), # arch_optimisation=False) # fig, ax = bridge_parallel.plot_elements() # fig.savefig('figures/arrangements_parallel.png') # # bridge_constant_change = BlennerhassettBridge(hanger_arrangement='Constant Change', # hanger_params=(np.radians(95), np.radians(65)), # arch_optimisation=False) # fig, ax = bridge_constant_change.plot_elements() # fig.savefig('figures/arrangements_constant_change.png') # # # bridge_radial = BlennerhassettBridge(hanger_arrangement='Radial', # hanger_params=(np.radians(25),), # arch_optimisation=False) # fig, ax = bridge_radial.plot_elements() # fig.savefig('figures/arrangements_radial.png') bridge_vertical = BlennerhassettBridge(hanger_params=(np.radians(89.9), ), arch_optimisation=False, n_hangers=20) fig, ax = bridge_vertical.plot_elements() fig.savefig('figures/arrangements_vertical.png')
import numpy as np from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge from plotting.adjustments import adjust_plot from plotting.plots import arch_or_tie_plots from plotting.general import colors cable_loss = False arch_shape = 'Continuous optimisation' bridge_65 = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, hanger_params=(np.radians(65), )) bridge_65f = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, hanger_params=(np.radians(65), ), curve_fitting='Polynomial') # bridge_45 = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, # hanger_params=(np.radians(45),)) bridge_95_35 = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, hanger_arrangement='Constant Change', hanger_params=(np.radians(95), np.radians(65)))
import numpy as np from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge from plotting.adjustments import adjust_plot from plotting.plots import arch_or_tie_plots from plotting.general import colors cable_loss = False arch_shape = 'Continuous optimisation' bridge_85 = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, hanger_params=(np.radians(85),)) bridge_65 = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, hanger_params=(np.radians(65),)) bridge_45 = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, hanger_params=(np.radians(45),)) bridge_85_45 = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, hanger_arrangement='Constant Change', hanger_params=(np.radians(85),np.radians(65))) bridge_r35 = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, hanger_arrangement='Radial', hanger_params=(np.radians(35), )) bridge_r20 = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, hanger_arrangement='Radial', hanger_params=(np.radians(20), )) bridges_dict = {'85° Parallel arrangement': bridge_85, '65° Parallel arrangement': bridge_65,
import numpy as np from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge from plotting.adjustments import adjust_plot from plotting.plots import make_plots, arch_or_tie_plots from plotting.general import colors from plotting.tables import dc_overview_table # Import the base case f = open('../base case/bridge.pckl', 'rb') bridge_ref = pickle.load(f) f.close() cable_loss = False for n in [13, 26]: bridge_thrust = BlennerhassettBridge(n_hangers=n, n_floor_beams=n, cable_loss=cable_loss) print('Potential for permanent moment distribution optimisation (n=' + str(n) + ')') for cs in bridge_thrust.cost_cross_sections[0:3]: name = cs.dc_max_limit_state m_max = cs.effects[name]['Moment'][0] m_min = cs.effects[name]['Moment'][1] m_dif = abs(m_max+m_min)/2 dc_dif = 8/9 * m_dif / cs.moment_z_resistance print([m_max, m_min, m_dif, dc_dif]) bridge_polynomial = BlennerhassettBridge(curve_fitting='Polynomial-n', n_hangers=n, n_floor_beams=n, cable_loss=cable_loss) bridge_spline = BlennerhassettBridge(curve_fitting='Spline-n', n_hangers=n, n_floor_beams=n, cable_loss=cable_loss) bridge_continuous = BlennerhassettBridge(arch_shape='Continuous optimisation', arch_optimisation=False, n_hangers=n, n_floor_beams=n, cable_loss=cable_loss) bridges_dict = {'Thrust line arch': bridge_thrust}
import numpy as np from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge from plotting.loads import plot_loads from plotting.supports import plot_supports_new bridge_parallel = BlennerhassettBridge(knuckles=False, arch_optimisation=False) nodes = bridge_parallel.nodes hangers = bridge_parallel.network_arch.hangers fig_1, ax_1 = pyplot.subplots(1, 1, figsize=(4, 1.5), dpi=720) fig_2, ax_2 = pyplot.subplots(1, 1, figsize=(4, 1.5), dpi=720) model = { 'Nodes': { 'Location': [[0, 0], [267.8, 0]] }, 'Boundary Conditions': { 'Restricted Degrees': [[0, 1, 1, 0, 0], [1, 0, 1, 0, 0]] } } plot_supports_new(model, ax_1, factor=0.03) plot_supports_new(model, ax_2, factor=0.03) ax_1.set_aspect('equal', adjustable='box') ax_1.axis('off') bridge_parallel.network_arch.hangers.plot_elements(ax_1) pyplot.show()
import numpy as np from bridges.Blennerhassett import BlennerhassettBridge from plotting.plots import make_plots, crop_plots from plotting.tables import dc_overview_table, small_cost_overview_table, big_cost_overview_table bridge_parallel_105 = BlennerhassettBridge( hanger_arrangement='Constant Change', hanger_params=(np.radians(105), np.radians(65))) bridge_parallel_95 = BlennerhassettBridge(hanger_arrangement='Constant Change', hanger_params=(np.radians(95), np.radians(65))) bridge_parallel_85 = BlennerhassettBridge(hanger_arrangement='Constant Change', hanger_params=(np.radians(85), np.radians(65))) bridge_parallel_75 = BlennerhassettBridge(hanger_arrangement='Constant Change', hanger_params=(np.radians(75), np.radians(65))) bridge_parallel_65 = BlennerhassettBridge(hanger_arrangement='Constant Change', hanger_params=(np.radians(65), np.radians(65))) bridge_parallel_55 = BlennerhassettBridge(hanger_arrangement='Constant Change', hanger_params=(np.radians(55), np.radians(65))) bridges_dict = { '105° Arrangement': bridge_parallel_105, '95° Arrangement': bridge_parallel_95, '85° Arrangement': bridge_parallel_85, '75° Arrangement': bridge_parallel_75, '65° Arrangement': bridge_parallel_65,
from bridges.Blennerhassett import BlennerhassettBridge from plotting.plots import make_plots, arch_or_tie_plots, crop_plots from plotting.tables import dc_overview_table, small_cost_overview_table bridge_13 = BlennerhassettBridge(curve_fitting='Polynomial') bridge_20 = BlennerhassettBridge(n_hangers=20, curve_fitting='Polynomial') bridge_27 = BlennerhassettBridge(n_hangers=27, curve_fitting='Polynomial') adapted_params = (1.0646, False, 267.8 / (4 * 14)) bridge_26 = BlennerhassettBridge(hanger_params=adapted_params, n_hangers=26, curve_fitting='Polynomial') fig = bridge_26.plot_elements()[0] fig.savefig('structure_26.png') bridges_dict = { '13 Hangers per set': bridge_13, '20 Hangers per set': bridge_20, '26 Hangers per set': bridge_26, '27 Hangers per set': bridge_27 } load_groups = { 'permanent': 'Permanent', 'dead loading': 'DL', 'live loading': 'LL', 'tie fracture': 'Tie Fracture' } make_plots(bridges_dict, load_groups, marker='', all_labels=True,
import numpy as np from matplotlib import pyplot from plotting.general import colors from bridges.Blennerhassett import BlennerhassettBridge from plotting.adjustments import adjust_plot bridge_100 = BlennerhassettBridge(arch_optimisation=False, arch_shape='Polynomial 1.00') bridge_95 = BlennerhassettBridge(arch_optimisation=False, arch_shape='Polynomial 0.95') bridge_90 = BlennerhassettBridge(arch_optimisation=False, arch_shape='Polynomial 0.9') bridge_85 = BlennerhassettBridge(arch_optimisation=False, arch_shape='Polynomial 0.85') bridge_80 = BlennerhassettBridge(arch_optimisation=False, arch_shape='Polynomial 0.8') bridge_c = BlennerhassettBridge(arch_optimisation=False, arch_shape='Circular') bridges_dict = {'Parabolic arch': bridge_100, 'Polynomial arch (b=0.95)': bridge_95, 'Polynomial arch (b=0.90)': bridge_90, 'Polynomial arch (b=0.85)': bridge_85, 'Polynomial arch (b=0.80)': bridge_80, 'Circular arch': bridge_c} span = 267.8 rise = 53.5 fig, axs = pyplot.subplots(1, 2, figsize=(8, 2), dpi=240) for i, key in enumerate(bridges_dict): bridge = bridges_dict[key] nodes = bridge.network_arch.arch.nodes x = np.array([node.x for node in nodes]) y = np.array([node.y for node in nodes]) y_ref = [rise * (1 - ((x_i - span / 2) / (span / 2)) ** 2) for x_i in x]
cable_loss = False arch_shape = 'Continuous optimisation' span = 267.8 rise = 53.5 b_table = np.zeros((5, 7)) dif_table = np.zeros((5, 7)) for i, a_mid in enumerate([85, 75, 65, 55, 45]): for j, a_1 in enumerate([105, 95, 85, 75, 65, 55, 45]): if a_1 < a_mid or a_1 >= 2 * a_mid: continue bridge = BlennerhassettBridge(arch_optimisation=False, arch_shape=arch_shape, cable_loss=cable_loss, hanger_arrangement='Constant Change', hanger_params=(np.radians(a_1), np.radians(a_mid)), curve_fitting='Polynomial') b_table[i, j] = bridge.network_arch.arch.b dif_table[i, j] = bridge.network_arch.arch.d np.savetxt("b_values.csv", b_table, delimiter=', ', fmt='%2.3f', newline=' \\\\\n') np.savetxt("dif_values.csv", dif_table, delimiter=', ', fmt='%2.3f', newline=' \\\\\n')
import numpy as np from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge # Plot model for zero-displacement method from plotting.supports import plot_supports_new from structure_analysis import structure_analysis from structure_analysis.plotting import plot_loads_old, plot_internal_forces bridge = BlennerhassettBridge(n_hangers=13, knuckles=False, self_stress_state='Zero-displacement', arch_optimisation=False) nodes = bridge.nodes tie = bridge.network_arch.tie arch = bridge.network_arch.arch hangers = bridge.network_arch.hangers hanger = hangers.hanger_sets[1].hangers[5] hangers.hanger_sets = [] for node in nodes.nodes: if node.y > 0: node.y += 30 nodes.add_node(0, 30) nodes.add_node(267.8, 30) arch.nodes[0] = nodes.nodes[-2] arch.nodes[-1] = nodes.nodes[-1] model = bridge.network_arch.create_model()
import numpy as np from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge from plotting.general import colors from plotting.plots import make_plots, crop_plots from plotting.tables import small_cost_overview_table, dc_overview_table bridge_10 = BlennerhassettBridge(n_hangers=10, n_floor_beams=10) bridge_13 = BlennerhassettBridge(arch_shape='Polynomial 0.962', arch_optimisation=False) bridge_20 = BlennerhassettBridge(n_hangers=20, n_floor_beams=20, arch_shape='Polynomial 0.962', arch_optimisation=False) bridge_27 = BlennerhassettBridge(n_hangers=40, n_floor_beams=40, arch_shape='Polynomial 0.962', arch_optimisation=False) bridges_dict = { '10 Floor beams*': bridge_10, '13 Floor beams': bridge_13, '20 Floor beams': bridge_20, '27 Floor beams': bridge_27 } load_groups = { 'permanent': 'Permanent', 'live loading': 'LL', 'dead load range': '0.25 DC/-0.1 DC, 0.5 DW/-0.35 DW', 'strength-I': 'Strength-I'
import pickle import tracemalloc from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge from plotting.adjustments import adjust_overview_plots, adjust_effects_plots from plotting.general import colors # Monitor memory usage tracemalloc.start() # Calculate the base case folder = 'base case' bridge_ref = BlennerhassettBridge(arch_optimisation=False, self_stress_state='Overall-optimisation') # Plot permanent state and compare to design drawings fig = bridge_ref.plot_all_effects('Permanent', label='Base case', c=colors[0]) axs = fig.get_axes() axs[0].axhline(-44.5, c=colors[1], lw=1) axs[0].axhline(-38, c=colors[1], lw=1) axs[1].axhline(36, c=colors[1], lw=1) axs[1].axhline(34.5, c=colors[1], lw=1) axs[2].axhline(2.420/4.19, c=colors[1], lw=1) axs[2].axhline(1.600/4.19, c=colors[1], lw=1) axs[3].axhline(3.69, c=colors[1], lw=1) axs[3].axhline(-3.69, c=colors[1], lw=1) axs[4].axhline(2.7, c=colors[1], lw=1) axs[4].plot([0, 270], [-3.17, -3.17], label='Design drawings', c=colors[1], lw=1) adjust_overview_plots(fig) fig.savefig('permanent state.png')
from bridges.Blennerhassett import BlennerhassettBridge from plotting.plots import make_plots bridge_basic = BlennerhassettBridge(arch_optimisation=False, knuckles=False, exact_stiffness=False) bridge_stiffness = BlennerhassettBridge(arch_optimisation=False, knuckles=False, exact_stiffness=True) bridge_knuckle = BlennerhassettBridge(arch_optimisation=False, knuckles=True, exact_stiffness=False) bridges_dict = { 'Simplistic model': bridge_basic, 'Accurate stiffness': bridge_stiffness, 'Accurate Knuckles': bridge_knuckle } load_groups = {'dead_loading': 'DL'} folder = 'model comparison' make_plots(bridges_dict, load_groups, lw=0.7)
import numpy as np from bridges.Blennerhassett import BlennerhassettBridge from plotting.plots import make_plots, crop_plots from plotting.tables import dc_overview_table, small_cost_overview_table, big_cost_overview_table bridge_parallel_85 = BlennerhassettBridge(hanger_params=(np.radians(85), )) bridge_parallel_75 = BlennerhassettBridge(hanger_params=(np.radians(75), )) bridge_parallel_65 = BlennerhassettBridge(hanger_params=(np.radians(65), )) fig, ax = bridge_parallel_65.plot_elements() fig.savefig('arrangement_65.png') bridge_parallel_55 = BlennerhassettBridge(hanger_params=(np.radians(55), )) bridge_parallel_45 = BlennerhassettBridge(hanger_params=(np.radians(45), )) fig, ax = bridge_parallel_45.plot_elements() fig.savefig('arrangement_45.png') bridges_dict = { '85° Arrangement': bridge_parallel_85, '75° Arrangement': bridge_parallel_75, '65° Arrangement': bridge_parallel_65, '55° Arrangement': bridge_parallel_55, '45° Arrangement': bridge_parallel_45 } load_groups = { 'permanent': 'Permanent', 'live loading': 'LL', 'dead load': 'DL', 'cable loss': 'Cable_Loss', 'cable loss 4': 'Cable_Loss_4' }
from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge from plotting.adjustments import adjust_overview_plots from plotting.plots import make_plots bridge_optimized = BlennerhassettBridge() bridge_optimized.plot_elements() # bridge_optimized.internal_forces_table(all_uls=True) # bridge_optimized.dc_ratio_table() # bridge_optimized.cost_table() fig = bridge_optimized.plot_all_effects('LL', label='New', c='blue') adjust_overview_plots(fig) # fig = bridge_optimized.plot_all_effects('Cable_Replacement', label='New', c='blue') # fig = bridge_optimized.plot_all_effects('Cable_Replacement_1', fig=fig, label='Old', c='red') # adjust_overview_plots(fig) # # fig, axs = pyplot.subplots(2, 2, figsize=(8, 4), dpi=240) # axs = fig.get_axes() # bridge_optimized.network_arch.tie.plot_effects(axs[0], 'Tie Fracture', 'Web') # bridge_optimized.network_arch.tie.plot_effects(axs[1], 'Tie Fracture', 'Top') # bridge_optimized.network_arch.tie.plot_effects(axs[2], 'Tie Fracture', 'Bottom') # # pyplot.show() # # # bridges_dict = {'Final design': bridge_ref, 'Thrust line arch': bridge_optimized, # 'Continuous arch shape': bridge_continuous}
import numpy as np from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge from plotting.loads import plot_loads from plotting.save import save_plot from structure_analysis import verify_input from structure_elements.arch.parabolic_arch import ParabolicArch from structure_elements.cross_section import CrossSection hanger_params = (np.radians(63), ) bridge_parallel = BlennerhassettBridge(hanger_params=hanger_params, arch_optimisation=False) fig, ax = bridge_parallel.plot_elements() fig_2, ax_2 = bridge_parallel.plot_elements() fig_3, ax_3 = bridge_parallel.plot_elements() nodes = bridge_parallel.nodes n_tie = len(bridge_parallel.network_arch.tie) arch = ParabolicArch(nodes, 267.8, 53.5, n=30) cs = CrossSection("", 29.8, [1, 1], [1, 1, 1], {}) arch.define_cross_sections(nodes, [267.8 / 2], [cs, cs]) bridge_parallel.network_arch.arch = arch model = bridge_parallel.network_arch.create_model() loads_arch = bridge_parallel.network_arch.arch.self_weight(n_tie) loads_tie = bridge_parallel.network_arch.tie.self_weight() loads_dc = [{
import numpy as np from matplotlib import pyplot from matplotlib.markers import MarkerStyle from bridges.Blennerhassett import BlennerhassettBridge from plotting.save import save_plot hanger_params = (np.radians(63), ) bridge_parallel = BlennerhassettBridge(hanger_params=hanger_params) fig, ax = bridge_parallel.plot_elements() span = 267.8 + 50 rise = 53.5 + 17 n = 100 x_arch = list(np.linspace(0, span, 2 * n + 1)) x_arch = x_arch[9:-9] y_arch = [rise * (1 - ((x - span / 2) / (span / 2))**2) for x in x_arch] x_arch = [x - 25 for x in x_arch] ax.plot(x_arch, y_arch, color='black', linewidth=1) ax.plot([0, 267.8], [-20, -20], color='black', linewidth=1) cs_tie_x = [ 0, 6.2, 34.8, 92.13, 267.8 - 92.13, 267.8 - 34.8, 267.8 - 6.2, 267.8 ] cs_tie_y = [-20] * 8 ax.plot(cs_tie_x, cs_tie_y, "|", color='black') cs_arch_x = [0 - 11, 3.8 - 8, 28.8 - 5, 83.91] cs_arch_x += [267.8 - x for x in cs_arch_x[::-1]] rotations = [40, 37, 30, 20]
from matplotlib import pyplot from bridges.Blennerhassett import BlennerhassettBridge from plotting.adjustments import adjust_plot from plotting.general import colors bridge = BlennerhassettBridge(arch_optimisation=False, n_floor_beams=100) span = 267.8 F = 296 c = 1 #1/(40.5*100*2)*1000 x = [(i+1)/(101)*span for i in range(100)] f_2 = [] f_6 = [] f_10 = [] for i in range(100): d_2 = bridge.network_arch.hangers.effects['F'+str(i+1)]['Normal Force'][1] d_6 = bridge.network_arch.hangers.effects['F'+str(i+1)]['Normal Force'][5] d_10 = bridge.network_arch.hangers.effects['F'+str(i+1)]['Normal Force'][9] f_2.append(F*d_2*c) f_6.append(F*d_6*c) f_10.append(F*d_10*c) span = 267.8 rise = 53.5 fig, axs = pyplot.subplots(1, 2, figsize=(8, 2), dpi=240) axs[0].plot(x, f_2, label='2. Hanger', c=colors[0], lw=1) axs[0].plot(x, f_6, label='6. Hanger', c=colors[1], lw=1) axs[0].plot(x, f_10, label='10. Hanger', c=colors[2], lw=1)
import numpy as np from bridges.Blennerhassett import BlennerhassettBridge hanger_params = np.array( [102, 70, 107, 65, 91, 43, 128, 67, 99, 46, 60, 96, 47]) hanger_params = np.array( [113, 65, 123, 65, 123, 28, 105, 100, 93, 94, 80, 84, 47]) hanger_params = np.array( [96, 99, 52, 101, 117, 58, 46, 81, 122, 42, 91, 64, 40]) bridge = BlennerhassettBridge(hanger_arrangement='Unpatterned', hanger_params=hanger_params, self_stress_state='Zero-displacement', curve_fitting='Polynomial') fig, ax = bridge.plot_elements() fig.savefig('optimised design_3.png') bridge.dc_ratio_table()
from bridges.Blennerhassett import BlennerhassettBridge bridge_thrust = BlennerhassettBridge() bridge_thrust.cost_table()
import numpy as np from bridges.Blennerhassett import BlennerhassettBridge from plotting.plots import make_plots, crop_plots from plotting.tables import dc_overview_table, small_cost_overview_table params = (np.radians(25),) bridge_13_n = BlennerhassettBridge(arch_optimisation=True, curve_fitting='Spline') bridge_13 = BlennerhassettBridge(hanger_arrangement='Radial', hanger_params=params, arch_shape='Circular', arch_optimisation=True, curve_fitting='Spline') bridge_20 = BlennerhassettBridge(n_hangers=20, hanger_arrangement='Radial', hanger_params=params, arch_shape='Circular', arch_optimisation=True, curve_fitting='Spline') bridge_26 = BlennerhassettBridge(n_hangers=26, hanger_arrangement='Radial', hanger_params=params, arch_shape='Circular', arch_optimisation=True, curve_fitting='Spline') fig = bridge_26.plot_elements()[0] fig.savefig('structure_26_radial.png') bridges_dict = {'13 Parallel hangers': bridge_13_n, '13 Radial hangers': bridge_13, '20 Radial hangers': bridge_20, '26 Radial hangers': bridge_26} load_groups = {'permanent': 'Permanent'} make_plots(bridges_dict, load_groups, marker='') # crop_plots('permanent', (3, 1), [3, 4, 2], (2, 2), (1000, 500)) # crop_plots('live loading', (3, 1), [3, 4, 2], (2, 2), (1000, 500)) # crop_plots('dead load', (3, 1), [3, 4, 2], (2, 2), (1000, 500)) small_cost_overview_table('cost_comparison', bridges_dict) dc_overview_table('dc_comparison', bridges_dict)
import numpy as np from matplotlib import pyplot from plotting.loads import plot_loads from bridges.Blennerhassett import BlennerhassettBridge from plotting.save import save_plot bridge_parallel = BlennerhassettBridge(arch_optimisation=False) self = bridge_parallel.network_arch i_hanger = 3 ll_factor = 1.5 name = 'Cable_Replacement' q_d = 18.3 q_c = 900 hanger = self.hangers[i_hanger] span = self.tie.span n = self.tie.cross_girders_amount f_d = span * q_d / (n + 1) # Find worst load arrangement self.set_range('EL + 1.2 DC + 1.4 DW', 'Cable loss') load = '0' max_hanger_force = 0 max_hanger_force_i = 0 for i in range(len(self.tie.cross_girders_nodes)): hanger_force = hanger.effects_N['F' + str(i + 1)] if hanger_force > 0: load += ' + ' + str(f_d) + ' F' + str(i + 1) if hanger_force > max_hanger_force: