def test_ddbd_frame_fixed_large(): n_storeys = 5 n_bays = 1 fb = dm.FrameBuilding(n_storeys, n_bays) fb.material = dm.ReinforcedConcrete() hz = dm.Hazard() fb.interstorey_heights = 3.6 * np.ones(n_storeys) fb.bay_lengths = 6.0 * np.ones(n_bays) fb.set_beam_prop("depth", .6 * np.ones(n_bays)) # m #varies vertically hz.z_factor = 0.3 hz.r_factor = 1.0 hz.n_factor = 1.0 design_drift = 0.02 fb.n_seismic_frames = 1 fb.n_gravity_frames = 0 fb.floor_length = sum(fb.bay_lengths) fb.floor_width = 14.0 # m fb.storey_masses = np.array([488.0, 488.0, 488.0, 488.0, 411.0]) * 1e3 frame_ddbd = dbd.design_rc_frame(fb, hz, design_drift=design_drift)
def test_ddbd_frame_fixed_small(): hz = dm.Hazard() ml.load_hazard_test_data(hz) fb = ml.initialise_frame_building_test_data() frame_dbd = dbd.design_rc_frame(fb, hz) otm_max_approx = np.sum(frame_dbd.storey_forces * frame_dbd.heights) assert isclose(frame_dbd.delta_d, 0.2400, rel_tol=0.001), frame_dbd.delta_d assert isclose(frame_dbd.mass_eff, 67841.581, rel_tol=0.001), frame_dbd.mass_eff assert isclose(frame_dbd.height_eff, 14.34915, rel_tol=0.001), frame_dbd.height_eff assert isclose(frame_dbd.mu, 1.689, rel_tol=0.001), frame_dbd.mu assert isclose(frame_dbd.theta_y, 0.0099, rel_tol=0.001), frame_dbd.theta_y assert isclose(frame_dbd.xi, 0.123399, rel_tol=0.001), frame_dbd.xi assert isclose(frame_dbd.eta, 0.69867, rel_tol=0.001), frame_dbd.eta assert isclose(frame_dbd.t_eff, 2.09646, rel_tol=0.001), frame_dbd.t_eff af = dba.assess_rc_frame(frame_dbd, hz, theta_max=frame_dbd.design_drift, otm_max=otm_max_approx) assert isclose(af.delta_d, 0.2400, rel_tol=0.001), af.delta_d assert isclose(af.mass_eff, 67841.581, rel_tol=0.001), af.mass_eff assert isclose(af.height_eff, 14.34915, rel_tol=0.001), af.height_eff assert isclose(af.mu, 1.6509, rel_tol=0.001), af.mu assert isclose(af.theta_y, 0.0099, rel_tol=0.001), af.theta_y assert isclose(af.xi, 0.1201, rel_tol=0.001), af.xi assert isclose(af.eta, 0.70683, rel_tol=0.001), af.eta assert isclose(af.t_eff, 2.025, rel_tol=0.001), af.t_eff
def test_ddbd_frame_fixed_small(): hz = dm.Hazard() ml.load_hazard_test_data(hz) fb = ml.initialise_frame_building_test_data() frame_ddbd = dbd.design_rc_frame(fb, hz) assert isclose(frame_ddbd.delta_d, 0.2400, rel_tol=0.001), frame_ddbd.delta_d assert isclose(frame_ddbd.mass_eff, 67841.581, rel_tol=0.001), frame_ddbd.mass_eff assert isclose(frame_ddbd.height_eff, 14.34915, rel_tol=0.001), frame_ddbd.height_eff assert isclose(frame_ddbd.mu, 1.689, rel_tol=0.001), frame_ddbd.mu assert isclose(frame_ddbd.theta_y, 0.0099, rel_tol=0.001), frame_ddbd.theta_y assert isclose(frame_ddbd.xi, 0.123399, rel_tol=0.001), frame_ddbd.xi assert isclose(frame_ddbd.eta, 0.69867, rel_tol=0.001), frame_ddbd.eta assert isclose(frame_ddbd.t_eff, 2.09646, rel_tol=0.001), frame_ddbd.t_eff
def test_ddbd_frame_consistent(): """ Test the DBD of a fixed base frame is the same as the SFSI frame when the soil is very stiff. :return: """ fb = ml.initialise_frame_building_test_data() hz = dm.Hazard() sl = dm.Soil() fd = dm.RaftFoundation() ml.load_hazard_test_data(hz) ml.load_soil_test_data(sl) ml.load_raft_foundation_test_data(fd) frame_ddbd = dbd.design_rc_frame(fb, hz) sl.override("g_mod", 1.0e10) # make soil very stiff fd.height = 2.0 # add some height to the foundation otm_max_approx = np.sum(frame_ddbd.storey_forces * frame_ddbd.heights) af_sfsi = dba.assess_rc_frame_w_sfsi_via_millen_et_al_2020( fb, hz, sl, fd, theta_max=frame_ddbd.design_drift, otm_max=otm_max_approx) assert isclose(af_sfsi.theta_f, 0.0, abs_tol=1e-5) assert isclose(frame_ddbd.delta_d, af_sfsi.delta_ss, rel_tol=0.05), (frame_ddbd.delta_d, af_sfsi.delta_ss) assert isclose(frame_ddbd.mass_eff, af_sfsi.mass_eff, rel_tol=0.05), af_sfsi.mass_eff assert isclose(frame_ddbd.height_eff, af_sfsi.height_eff - fd.height, rel_tol=0.05), af_sfsi.height_eff assert isclose(frame_ddbd.mu, af_sfsi.mu, rel_tol=0.05), af_sfsi.mu assert isclose(frame_ddbd.theta_y, af_sfsi.theta_y, rel_tol=0.05), af_sfsi.theta_y assert isclose(frame_ddbd.xi, af_sfsi.xi, rel_tol=0.03), af_sfsi.xi assert isclose(frame_ddbd.eta, af_sfsi.eta, rel_tol=0.03), af_sfsi.eta assert isclose(frame_ddbd.t_eff, af_sfsi.t_eff, rel_tol=0.05), (af_sfsi.t_eff, frame_ddbd.t_eff)
def create(): hz = em.Hazard() hz.z_factor = 0.3 # Hazard factor hz.r_factor = 1.0 # Return period factor hz.n_factor = 1.0 # Near-fault factor hz.magnitude = 7.5 # Magnitude of earthquake hz.corner_period = 4.0 # s hz.corner_acc_factor = 0.55 number_of_storeys = 6 number_of_bays = 3 fb = em.FrameBuilding(n_storeys=number_of_storeys, n_bays=number_of_bays) fb.material = em.ReinforcedConcrete() interstorey_height = 3.4 # m masses = 40.0e3 # kg fb.interstorey_heights = interstorey_height * np.ones(number_of_storeys) fb.floor_length = 18.0 # m fb.floor_width = 16.0 # m fb.storey_masses = masses * np.ones(number_of_storeys) # kg fb.bay_lengths = [6., 6.0, 6.0] fb.set_beam_prop("depth", [.5, .5, .5]) fb.n_seismic_frames = 3 fb.n_gravity_frames = 0 fb.horz2vert_mass = 1 df = dbd.design_rc_frame(fb, hz, 0.02) ps = eqdes.moment_equilibrium.assess(df, df.storey_forces) moment_beams_cl = ps[0] moment_column_bases = ps[1] axial_seismic = ps[2] print(moment_beams_cl) eqdes.moment_equilibrium.set_beam_face_moments_from_centreline_demands( df, moment_beams_cl) eqdes.moment_equilibrium.set_column_base_moments_from_demands( df, moment_column_bases) otm_max = eqdes.moment_equilibrium.calc_otm_capacity(df) approx_otm = np.sum(df.storey_forces * df.heights) print(otm_max, approx_otm)
def test_ddbd_frame_consistent(): """ Test the DBD of a fixed base frame is the same as the SFSI frame when the soil is very stiff. :return: """ fb = ml.initialise_frame_building_test_data() hz = dm.Hazard() sl = dm.Soil() fd = dm.RaftFoundation() ml.load_hazard_test_data(hz) ml.load_soil_test_data(sl) ml.load_raft_foundation_test_data(fd) frame_ddbd = dbd.design_rc_frame(fb, hz) sl.override("g_mod", 1.0e10) # make soil very stiff fd.height = 2.0 # add some height to the foundation frame_sfsi_dbd = dbd.design_rc_frame_w_sfsi_via_millen_et_al_2018( fb, hz, sl, fd, found_rot=1e-6) assert isclose(frame_sfsi_dbd.theta_f, 0.0, abs_tol=1e-5) assert isclose(frame_ddbd.delta_d, frame_sfsi_dbd.delta_d, rel_tol=0.01), frame_sfsi_dbd.delta_d assert isclose(frame_ddbd.mass_eff, frame_sfsi_dbd.mass_eff, rel_tol=0.001), frame_sfsi_dbd.mass_eff assert isclose(frame_ddbd.height_eff, frame_sfsi_dbd.height_eff - fd.height, rel_tol=0.001), frame_sfsi_dbd.height_eff assert isclose(frame_ddbd.mu, frame_sfsi_dbd.mu, rel_tol=0.001), frame_sfsi_dbd.mu assert isclose(frame_ddbd.theta_y, frame_sfsi_dbd.theta_y, rel_tol=0.001), frame_sfsi_dbd.theta_y assert isclose(frame_ddbd.xi, frame_sfsi_dbd.xi, rel_tol=0.001), frame_sfsi_dbd.xi assert isclose(frame_ddbd.eta, frame_sfsi_dbd.eta, rel_tol=0.001), frame_sfsi_dbd.eta assert isclose(frame_ddbd.t_eff, frame_sfsi_dbd.t_eff, rel_tol=0.001), frame_sfsi_dbd.t_eff