Beispiel #1
0
def calc_vert_strip_via_gazetas_1991(sl,
                                     fd,
                                     ip_axis='width',
                                     a0=0.0,
                                     f_contact=1.0,
                                     h_rigid=None,
                                     **kwargs):
    """
    Vertical stiffness per metre of a footing with infinite out-of-plane length

    Parameters
    ----------
    sl: Soil Object
    fd: Foundation object
    a0: float
        Dynamic factor
    f_contact: float
        Effective sidewall contact scaling factor
    f_contact
    h_rigid
    kwargs

    Returns
    -------

    """
    l_ip = getattr(fd, ip_axis)
    b = l_ip / 2
    v = sl.poissons_ratio
    k_strip = 0.73 * sl.g_mod / (1 - v)
    if a0:
        lob = 1000
        if sl.poissons_ratio <= 0.4:
            f_dyn_surf = tdc.get_kz_gazetas_v_lte_0p4(a0, lob)
        else:
            f_dyn_surf = tdc.get_kz_gazetas_v_gt_0p4(a0, lob)
    else:
        f_dyn_surf = 1.
    if fd.depth is not None and fd.depth != 0.0:
        if fd.depth < 0.0:
            raise ValueError(
                f'foundation depth must be zero or greater, not {fd.depth}')
        if f_contact == 0.0:
            dw = 0.0
        else:
            dw = min([fd.height, fd.depth]) * f_contact
        a_w = 2 * dw * fd.width
        n_emb = (1 + fd.depth / (21 * b)) * (1 + 0.2 * (a_w /
                                                        (2 * b))**(2. / 3))
        if v <= 0.4:
            f_dyn_full_emb = 1 - 0.09 * (fd.depth / b)**(3. / 4) * a0**2
            f_dyn_trench = 1 + 0.09 * (fd.depth / b)**(3. / 4) * a0**2
        else:
            f_dyn_full_emb = 1 - 0.35 * (fd.depth / b)**0.5 * a0**3.5
            f_dyn_trench = f_dyn_surf  # Assume the same as the surface - this is currently not provided
            f_dyn_surf = 1.
        # interpolate between
        f_dyn_emb = f_dyn_trench + (f_dyn_full_emb - f_dyn_trench) * (dw /
                                                                      fd.depth)
    else:
        n_emb = 1
        f_dyn_emb = 1.0
    if h_rigid:
        n_rigid = 1 + 3.5 * b / h_rigid
    else:
        n_rigid = 1
    return k_strip * n_emb * f_dyn_surf * f_dyn_emb * n_rigid
Beispiel #2
0
def calc_vert_via_gazetas_1991(sl, fd, a0=None, f_contact=1.0):
    """
    Vertical stiffness of foundation

    Parameters
    ----------
    sl: Soil Object
    fd: Foundation object
    a0: float
        Dynamic factor
    f_contact: float
        Effective sidewall contact scaling factor

    Returns
    -------

    """
    v = sl.poissons_ratio
    l = fd.length * 0.5
    b = fd.width * 0.5
    k_v_0 = 2 * sl.g_mod * l / (1 - v) * (0.73 + 1.54 * (b / l)**0.75)

    if a0:
        if sl.poissons_ratio <= 0.4:
            f_dyn_surf = tdc.get_kz_gazetas_v_lte_0p4(a0, l / b)
        else:
            f_dyn_surf = tdc.get_kz_gazetas_v_gt_0p4(a0, l / b)
    else:
        f_dyn_surf = 1.
    if fd.depth is not None and fd.depth != 0.0:
        if fd.depth < 0.0:
            raise ValueError(
                f'foundation depth must be zero or greater, not {fd.depth}')
        if f_contact == 0.0:
            dw = 0.0
        else:
            dw = min([fd.height, fd.depth]) * f_contact
        a_w = 2 * dw * (fd.width + fd.length)
        chi = b / l
        n_emb = (1 + fd.depth / (21 * b) *
                 (1 + 1.3 * chi)) * (1 + 0.2 * (a_w / (4 * b * l))**(2. / 3))
        if a0:
            h = min([fd.height, fd.depth])
            if v <= 0.4:
                f_dyn_full_emb = 1 - 0.09 * (fd.depth / b)**(3. / 4) * a0**2
                f_dyn_trench = 1 + 0.09 * (fd.depth / b)**(3. / 4) * a0**2
            else:

                if l / b < 2.5:
                    f_dyn_full_emb = 1 - 0.09 * (fd.depth / b)**(3. /
                                                                 4) * a0**2
                else:
                    f_dyn_full_emb = 1 - 0.35 * (fd.depth / b)**0.5 * a0**3.5
                f_dyn_trench = f_dyn_surf  # Assume the same as the surface - this is currently not provided
                f_dyn_surf = 1.
            # interpolate between
            f_dyn_emb = f_dyn_trench + (f_dyn_full_emb - f_dyn_trench) * (
                (h * f_contact) / fd.depth)
        else:
            f_dyn_emb = 1
    else:
        n_emb = 1.0
        f_dyn_emb = 1.0

    return k_v_0 * n_emb * f_dyn_surf * f_dyn_emb