示例#1
0
def initialise_frame_building_test_data():
    """
    Sample data for the FrameBuilding object

    :param fb:
    :return:
    """
    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
    return fb
示例#2
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)
示例#3
0
def test_model_inputs():
    p_models = [
        dm.Hazard(),
        dm.FrameBuilding(1, 1),
        dm.WallBuilding(1),
        dm.Soil(),
        dm.ReinforcedConcrete()
    ]
    for model in p_models:
        for parameter in model.required_inputs:
            assert hasattr(model, parameter), parameter
示例#4
0
def initialise_wall_building_test_data():
    """
    Sample data for the WallBuilding object

    :return: WallBuilding
    """
    number_of_storeys = 6
    wb = em.WallBuilding(number_of_storeys)
    wb.material = em.ReinforcedConcrete()

    interstorey_height = 3.4  # m
    masses = 40.0e3  # kg

    wb.interstorey_heights = interstorey_height * np.ones(number_of_storeys)
    wb.floor_length = 18.0  # m
    wb.floor_width = 16.0  # m
    wb.storey_masses = masses * np.ones(number_of_storeys)  # kg

    wb.n_walls = 4
    wb.wall_depth = 2.0
    return wb
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)
示例#6
0
def test_dbd_sfsi_frame_via_millen_et_al_2018():
    n_storeys = 5
    n_bays = 1
    fb = dm.FrameBuilding(n_storeys, n_bays)
    fb.n_seismic_frames = 2
    fb.n_gravity_frames = 0
    fb.material = dm.ReinforcedConcrete()
    fb.bay_lengths = [5.]
    fb.floor_width = 5.
    fb.floor_length = 5.
    fb.storey_masses = 700 * fb.floor_area * np.ones(n_storeys)
    fb.interstorey_heights = 3.4 * np.ones(n_storeys)

    fb.tie_depth = 0.8 * np.ones(fb.n_bays)  # m
    fb.tie_width = 0.8 * np.ones(fb.n_bays)  # m
    fb.foundation_rotation = 1e-3
    fb.discrete_rotation_ratio = 1.0
    fb.AxialLoadRatio = 26  # Should calculate this
    fb.Base_moment_contribution = 0.6
    fb.beam_group_size = 1
    fb.set_beam_prop('depth', 0.4, repeat='all')

    # Foundation
    fd = dm.PadFoundation()
    fd.height = 0  # m
    fd.length = 5
    fd.width = 5.
    fd.depth = 0.8
    fd.n_pads_l = 2
    fd.n_pads_w = 2

    fd.pad.width = 1.4  # m
    fd.pad.length = 1.4  # m
    fd.pad.depth = 0.5  # m
    fd.pad.height = 0
    fd.set_pad_pos_in_length_dir_as_equally_spaced()
    fd.set_pad_pos_in_width_dir_as_equally_spaced()

    fd.mass = 0
    fd2 = fd.deepcopy()

    # Soil properties

    hz = dm.Hazard()
    hz.z_factor = 0.3
    hz.r_factor = 1.0
    hz.n_factor = 1.0
    hz.corner_acc_factor = 2.
    hz.corner_period = 1

    sl = dm.Soil()
    sl.g_mod = 120e6  # Pa
    sl.poissons_ratio = 0.3  # Poisson's ratio of the soil
    sl.e_curr = 0.6  # %
    sl.phi = 35.
    sl.cohesion = 0
    sl.specific_gravity = 2.65

    design_drift = 0.02

    frame_ddbd = dbd.design_rc_frame_w_sfsi_via_millen_et_al_2018(
        fb, hz, sl, fd, design_drift=design_drift, verbose=2)
    assert np.isclose(frame_ddbd.delta_d, 0.08488596), frame_ddbd.delta_d
    assert np.isclose(frame_ddbd.theta_f, 0.0050136357), frame_ddbd.theta_f