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)
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)
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)