Пример #1
0
def test_meyerhof_and_hanna_capacity_strong_clay_over_weak_sand():
    # STRONG CLAY OVER WEAK SAND
    length = 1000000000.0  # actually a strip in
    width = 1.0
    depth = 0.0
    fd = geofound.create_foundation(length=length, width=width, depth=depth)

    phi_0 = 0.0
    cohesion_0 = 85.0
    unit_dry_weight_0 = 16.5
    sl_0 = geofound.create_soil(phi=phi_0,
                                cohesion=cohesion_0,
                                unit_dry_weight=unit_dry_weight_0)

    phi_1 = 17.0
    cohesion_1 = 0.0
    unit_dry_weight_1 = 17.0
    sl_1 = geofound.create_soil(phi=phi_1,
                                cohesion=cohesion_1,
                                unit_dry_weight=unit_dry_weight_1)
    h0 = 1  # m, height of the crust layer

    geofound.capacity_meyerhof_and_hanna_1978(sl_0, sl_1, h0, fd, verbose=0)
    assert np.isclose(fd.q_ult, 187.87,
                      rtol=0.001), fd.q_ult  # no independent validation
Пример #2
0
def test_meyerhof_and_hanna_capacity_strong_sand_over_weak_clay():
    # STRONG SAND OVER WEAK CLAY
    length = 1000000.0  # actually a strip in
    width = 1.0
    depth = 0.0
    fd = geofound.create_foundation(length=length, width=width, depth=depth)

    phi_0 = 34.0
    cohesion_0 = 0.0
    unit_dry_weight_0 = 17.0
    sl_0 = geofound.create_soil(phi=phi_0,
                                cohesion=cohesion_0,
                                unit_dry_weight=unit_dry_weight_0)

    phi_1 = 0.0
    cohesion_1 = 30.0
    unit_dry_weight_1 = 17.0
    sl_1 = geofound.create_soil(phi=phi_1,
                                cohesion=cohesion_1,
                                unit_dry_weight=unit_dry_weight_1)
    h0 = 1.5  # m, height of the crust layer

    geofound.capacity_meyerhof_and_hanna_1978(sl_0, sl_1, h0, fd, verbose=0)

    assert np.isclose(fd.q_ult, 264.74, rtol=0.001), fd.q_ult
Пример #3
0
def test_meyerhof_and_hanna_capacity_sand_over_sand_gwl():
    # STRONG SAND OVER WEAK SAND
    length = 1000000.0  # actually a strip in
    width = 4.0
    depth = 1.5
    fd = geofound.create_foundation(length=length, width=width, depth=depth)

    phi_0 = 34.0
    cohesion_0 = 0.0
    unit_dry_weight_0 = 18000
    sl_0 = geofound.create_soil(phi=phi_0, cohesion=cohesion_0, unit_dry_weight=unit_dry_weight_0)
    sl_0.unit_sat_weight = 20000

    phi_1 = 34.0
    cohesion_1 = 0.0
    unit_dry_weight_1 = 18000
    sl_1 = geofound.create_soil(phi=phi_1, cohesion=cohesion_1, unit_dry_weight=unit_dry_weight_1)
    sl_1.unit_sat_weight = 20000
    h0 = 3.0  # m, height of the crust layer

    # Case 1: GWL at surface
    gwl = 0.0
    q_ult_meyerhof = geofound.capacity_meyerhof_1963(sl_0, fd, gwl=gwl)
    geofound.capacity_meyerhof_and_hanna_1978(sl_0, sl_1, h0, fd, gwl=gwl, verbose=0)
    correction = 1.07
    corrected_2layer = fd.q_ult * correction
    assert np.isclose(corrected_2layer, q_ult_meyerhof, rtol=0.01), (corrected_2layer, q_ult_meyerhof / 1000)

    # Case 2: GWL at between foundation depth and surface
    gwl = 0.5
    q_ult_meyerhof = geofound.capacity_meyerhof_1963(sl_0, fd, gwl=gwl)
    geofound.capacity_meyerhof_and_hanna_1978(sl_0, sl_1, h0, fd, gwl=gwl, verbose=0)
    correction = 1.07
    corrected_2layer = fd.q_ult * correction
    assert np.isclose(corrected_2layer, q_ult_meyerhof, rtol=0.01), (corrected_2layer, q_ult_meyerhof / 1000)

    # Case 3: GWL at between foundation depth and foundation depth plus width, and GWL < layer 1 depth
    gwl = 1.8
    q_ult_meyerhof = geofound.capacity_meyerhof_1963(sl_0, fd, gwl=gwl)
    geofound.capacity_meyerhof_and_hanna_1978(sl_0, sl_1, h0, fd, gwl=gwl, verbose=0)
    correction = 1.07
    corrected_2layer = fd.q_ult * correction
    assert np.isclose(corrected_2layer, q_ult_meyerhof, rtol=0.01), (corrected_2layer, q_ult_meyerhof / 1000)

    # Case 4: GWL at between foundation depth and foundation depth plus width, and GWL > layer 1 depth
    gwl = 4.8
    q_ult_meyerhof = geofound.capacity_meyerhof_1963(sl_0, fd, gwl=gwl)
    geofound.capacity_meyerhof_and_hanna_1978(sl_0, sl_1, h0, fd, gwl=gwl, verbose=0)
    correction = 1.03
    corrected_2layer = fd.q_ult * correction
    assert np.isclose(corrected_2layer, q_ult_meyerhof, rtol=0.01), (corrected_2layer, q_ult_meyerhof / 1000)

    # Case 5: GWL beyond foundation depth plus width
    gwl = 20.
    q_ult_meyerhof = geofound.capacity_meyerhof_1963(sl_0, fd, gwl=gwl)
    geofound.capacity_meyerhof_and_hanna_1978(sl_0, sl_1, h0, fd, gwl=gwl, verbose=0)
    correction = 1.07
    corrected_2layer = fd.q_ult * correction
    assert np.isclose(corrected_2layer, q_ult_meyerhof, rtol=0.01), (corrected_2layer, q_ult_meyerhof/1000)
Пример #4
0
def test_karamitros():

    # Load ground motion
    fpath = TEST_DATA_DIR + "input_acc.his"
    acc_file = np.loadtxt(fpath, skiprows=4)
    acc = acc_file[:, 1]

    # define the soils and soil profile
    sl_0 = sm.Soil()
    sl_0.phi = 0
    sl_0.cohesion = 50000
    sl_0.unit_dry_weight = 19600
    sl_0.unit_sat_weight = 21000

    sl_1 = sm.Soil()
    sl_1.phi = 33.
    sl_1.cohesion = 0
    sl_1.unit_dry_weight = 19700
    sl_1.unit_sat_weight = 21000

    soil_profile = sm.SoilProfile()
    soil_profile.add_layer(0, sl_0)
    soil_profile.add_layer(4.0, sl_1)
    soil_profile.gwl = 2.

    # Define a foundation
    length = 1000000.
    fd = sm.Foundation()
    fd.length = length
    fd.width = 10.0
    fd.depth = 0.0

    q = 80000  # applied load

    z_c = lqs.cal_z_c(fd, z_liq=4, h0=2)
    vertical_effective_stress = soil_profile.get_v_eff_stress_at_depth(z_c)
    phi_deg = lqs.calc_degraded_phi(sl_1.phi, vertical_effective_stress, q=q)
    assert np.isclose(phi_deg, 9.9275389), phi_deg  # Not validated
    sl_1.phi = phi_deg
    q_ult = gf.capacity_meyerhof_and_hanna_1978(sl_0,
                                                sl_1,
                                                h0=2,
                                                fd=fd,
                                                verbose=0)
    assert np.isclose(q_ult, 107350.07398), q_ult  # Not validated
    dt = 0.005

    sett_dyn = lqs.karamitros_settlement(fd,
                                         z_liq=4,
                                         q=80000,
                                         q_ult=q_ult,
                                         acc=acc,
                                         dt=dt)
    assert np.isclose(
        sett_dyn, 0.03242937,
        rtol=0.001), sett_dyn  # 0.03242937 Not validated, liquepy 0.1.11