Ejemplo n.º 1
0
    def thickness_hoop(self, delta_P, D_o, t_corr, f_tol):
        """Number [Pa] -> Number [m]
        Internal Pressure Containment
        (Clause 6.4.2.2)
        Considers:
        - maximum internal pressure (design pressure)
        - minimum external pressure (zero)"""

        # Allowabe hoop stress
        sig_h_a = self.pd8010.df_h*self.sig_y_d

        t_thin = delta_P*D_o/(2*sig_h_a)

        # Determine whether thick or thin wall
        if t_thin/D_o >= 20:
            t_h = t_thin
        else:
            def t_thick(t):
                """Equation (5)"""
                eq = delta_P*((D_o**2+(D_o-2*t)**2)/(D_o**2-(D_o-2*t)**2))
                return sig_h_a - eq
            # Run Newton-Raphson solver
            t_h = nr_solve(t_thick, x0=t_thin)

        return self.pd8010.req_thickness(t_h, t_corr, f_tol)
Ejemplo n.º 2
0
    def thickness_buckle(self, P_o, D_o):
        """Propagation Buckling Due to External Over Pressure
        (Clause G.2)
        Considers:
        - minimum internal pressure (zero)
        - maximum external pressure (at water depth, d)"""

        def P_p(t):
            """Propagation pressure
            Equation (G.21)"""
            return 10.7*self.sig_y_d*(t/D_o)**2.25-P_o

        return nr_solve(P_p)
Ejemplo n.º 3
0
    def thickness_collapse(self, P_o, E, v, D_o, f_0):
        """Local Buckling Due to External Over Pressure
        (Clause G.1.2)
        Considers:
        - minimum internal pressure (zero)
        - maximum external pressure (at water depth, d)"""

        def P_e(t):
            """Critical Pressure for an Elastic Critical Tube
            Equation (G.2)"""
            return 2*E/(1-v**2)*(t/D_o)**3

        def P_y(t):
            """Yield Pressure
            Equation (G.3)"""
            return 2*self.sig_y_d*(t/D_o)

        def char_resist(t):
            """Characteristic resistance for external pressure
            Equation (G.1)"""
            return ((P_o/P_e(t))-1) * ((P_o/P_y(t))**2-1) - (P_o/P_y(t))*f_0*(D_o/t)

        return nr_solve(char_resist)