Exemple #1
0
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)
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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)
Exemple #6
0
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