def _get_model_extrapolate(self): cb = CBClampedRandXi(pullout=False) spirrid = SPIRRID(q=cb, sampling_type='LHS') sV0 = self.sV0 V_f = 1.0 r = 3.5e-3 m = self.m tau = RV('gamma', shape=self.tau_shape, scale=self.tau_scale, loc=self.tau_loc) n_int = self.n_int w = self.w2 lm = self.lm spirrid.eps_vars = dict(w=w) spirrid.theta_vars = dict(tau=tau, E_f=self.Ef, V_f=V_f, r=r, m=m, sV0=sV0, lm=lm) spirrid.n_int = n_int sigma_c = spirrid.mu_q_arr / self.r**2 return sigma_c
def model_free(self, tau_loc, tau_shape, tau_scale): xi_shape = 6.7 #xi_scale = 3243. / (182e3 * (pi * 3.5e-3 **2 * 50.)**(-1./xi_shape)*gamma(1+1./xi_shape)) xi_scale = 7.6e-3 #CS=8. #mu_tau = 1.3 * self.r * 3.6 * (1.-0.01) / (2. * 0.01 * CS) #tau_scale = (mu_tau - tau_loc)/tau_shape #xi_scale = 0.0077 #xi_shape = 6.7 #tau_scale = (mu_tau - tau_loc)/tau_shape cb = CBClampedRandXi(pullout=False) spirrid = SPIRRID(q=cb, sampling_type='LHS') tau = RV('gamma', shape=tau_shape, scale=tau_scale, loc=tau_loc) w = self.w spirrid.eps_vars = dict(w=w) spirrid.theta_vars = dict(tau=tau, E_f=self.Ef, V_f=self.V_f, r=self.r, m=xi_shape, sV0=xi_scale) spirrid.n_int = 5000 sigma_c = spirrid.mu_q_arr / self.r**2 plt.plot(w, sigma_c) return sigma_c
def _get_model_extrapolate(self): cb = CBClampedRandXi(pullout=False) spirrid = SPIRRID(q=cb, sampling_type='LHS') sV0 = self.sV0 V_f = 1.0 r = 3.5e-3 m = self.m tau = RV('gamma', shape=self.tau_shape, scale=self.tau_scale, loc=self.tau_loc) n_int = self.n_int w = self.w2 lm = self.lm spirrid.eps_vars = dict(w=w) spirrid.theta_vars = dict(tau=tau, E_f=self.Ef, V_f=V_f, r=r, m=m, sV0=sV0, lm=lm) spirrid.n_int = n_int sigma_c = spirrid.mu_q_arr / self.r ** 2 return sigma_c
def model_clamped(self, tau_shape, tau_scale, tau_loc): cb = CBClampedRandXi(pullout=True) spirrid = SPIRRID(q=cb, sampling_type='LHS') sV0 = self.sV0 V_f = self.V_f r = self.r m = self.m tau = RV('gamma', shape=tau_shape, scale=tau_scale, loc=tau_loc) n_int = self.n_int w = self.w2 lm = self.lm spirrid.eps_vars = dict(w=w) spirrid.theta_vars = dict(tau=tau, E_f=self.Ef, V_f=V_f, r=r, m=m, sV0=sV0, lm=lm) spirrid.n_int = n_int sigma_c = spirrid.mu_q_arr / self.r ** 2 return sigma_c
def model_free(self, tau_loc, tau_shape, tau_scale): xi_shape = 6.7 #xi_scale = 3243. / (182e3 * (pi * 3.5e-3 **2 * 50.)**(-1./xi_shape)*gamma(1+1./xi_shape)) xi_scale = 7.6e-3 #CS=8. #mu_tau = 1.3 * self.r * 3.6 * (1.-0.01) / (2. * 0.01 * CS) #tau_scale = (mu_tau - tau_loc)/tau_shape #xi_scale = 0.0077 #xi_shape = 6.7 #tau_scale = (mu_tau - tau_loc)/tau_shape cb = CBClampedRandXi(pullout=False) spirrid = SPIRRID(q=cb, sampling_type='LHS') tau = RV('gamma', shape=tau_shape, scale=tau_scale, loc=tau_loc) w = self.w spirrid.eps_vars = dict(w=w) spirrid.theta_vars = dict(tau=tau, E_f=self.Ef, V_f=self.V_f, r=self.r, m=xi_shape, sV0=xi_scale) spirrid.n_int = 5000 sigma_c = spirrid.mu_q_arr / self.r ** 2 plt.plot(w, sigma_c) return sigma_c
def _get_model_rand(self): cb = CBResidualRandXi() spirrid = SPIRRID(q=cb, sampling_type='PGrid') sV0 = self.sV0 tau_scale = self.tau_scale V_f = 1.0 r = 3.5e-3 m = self.m tau = RV('weibull_min', shape=self.tau_shape, scale=tau_scale, loc=self.tau_loc) n_int = self.n_int w = self.w spirrid.eps_vars=dict(w=w) spirrid.theta_vars=dict(tau=tau, E_f=self.Ef, V_f=V_f, r=r, m=m, sV0=sV0) spirrid.n_int=n_int if isinstance(r, RV): r_arr = np.linspace(r.ppf(0.001), r.ppf(0.999), 300) Er = np.trapz(r_arr ** 2 * r.pdf(r_arr), r_arr) else: Er = r ** 2 sigma_c = spirrid.mu_q_arr / Er return sigma_c
def mechanisms(): m = 5.15004407 sV0 = 0.00915595 r = 3.5e-3 Ef = 181e3 cb = CBClampedRandXi(pullout=False) spirrid = SPIRRID(q=cb, sampling_type='LHS', theta_vars=dict(E_f=Ef, sV0=sV0, V_f=1.0, r=r, m=m, tau=RV('gamma', shape=0.03684979, scale=3.75278102, loc=0.0), lm=1000.), n_int=100, ) lm_arr = np.linspace(1000., 3., 20) sigma_u_hommech = [] for lm_i in lm_arr: spirrid.theta_vars['lm'] = lm_i max_w = min(30., lm_i * 0.07) w_arr = np.linspace(0.0, max_w, 200) spirrid.eps_vars = dict(w=w_arr) sig_w = spirrid.mu_q_arr / r ** 2 plt.plot(w_arr, sig_w) plt.show() sigma_u_hommech.append(np.max(sig_w)) sigma_u_hommech = np.array(sigma_u_hommech) plt.plot(lm_arr, sigma_u_hommech)#/np.min(sigma_u_hommech)) plt.xlabel('crack spacing') plt.ylabel('normalized strength') plt.show()