def computeKie(aold,anew,burgersvector,dislocationtype,materialprops): crackfront = anew[2,:] crackplane = anew[1,:] slipplane = computePlane(crackfront,burgersvector) slipplanekey = convertToString(slipplane,1) slipplanet = computePlane(slipplane,crackfront) anewslip = np.vstack((slipplanet,slipplane,crackfront)) compliancemat = getPlaneStrainComplianceMat(materialprops['elastic'],materialprops['symmetry'],aold,anewslip) theta = Mmath.compute_angle(crackplane,slipplane) phi = Mmath.compute_angle(burgersvector,slipplanet) (nu, mu) = getElPECompliance(compliancemat) gammaus = materialprops['unstable'][dislocationtype] printStuff(crackplane,slipplane,theta,phi,nu,mu) try: return np.sqrt(2*mu/(1-nu)*(1 + (1-nu)*np.tan(phi)**2)*gammaus)/fI(theta) except ZeroDivisionError: return np.inf
def computeKie(aold, anew, burgersvector, dislocationtype, materialprops): crackfront = anew[2, :] crackplane = anew[1, :] slipplane = computePlane(crackfront, burgersvector) slipplanekey = convertToString(slipplane, 1) slipplanet = computePlane(slipplane, crackfront) anewslip = np.vstack((slipplanet, slipplane, crackfront)) compliancemat = getPlaneStrainComplianceMat(materialprops['elastic'], materialprops['symmetry'], aold, anewslip) theta = Mmath.compute_angle(crackplane, slipplane) phi = Mmath.compute_angle(burgersvector, slipplanet) (nu, mu) = getElPECompliance(compliancemat) gammaus = materialprops['unstable'][dislocationtype] printStuff(crackplane, slipplane, theta, phi, nu, mu) try: return np.sqrt(2 * mu / (1 - nu) * (1 + (1 - nu) * np.tan(phi)**2) * gammaus) / fI(theta) except ZeroDivisionError: return np.inf
def kie(self,aold,anew,burgersvector,symmoption=False,printoption=False): crackfront = anew[2,:] crackplane = anew[1,:] slipplane = plane_spanned_by_vecs(crackfront,burgersvector) slipplanet = plane_spanned_by_vecs(slipplane,crackfront) anewslip = np.vstack((slipplanet,slipplane,crackfront)) theta = Mmath.compute_angle(crackplane,slipplane) phi = Mmath.compute_angle(burgersvector,slipplanet) if printoption: print('Crack Plane: {0}'.format(crackplane)) print('Slip Plane: {0}'.format(slipplane)) print('Theta: {0} (degrees)'.format(Mmath.degfac*theta)) print('Phi: {0} (degrees)'.format(Mmath.degfac*phi)) compliance = self.voigt_rotated_plane_strain_compliance(aold,anewslip,symmoption) (nu, mu) = isotropic_constants(compliance) slipplanekey = convert_to_string(slipplane,1) burgerskey = convert_to_string(burgersvector,1) gammaus = self.usf_energy(slipplanekey,burgerskey) try: return np.sqrt(2*mu/(1-nu)*(1 + (1-nu)*np.tan(phi)**2)*gammaus)/fI(theta) except ZeroDivisionError: return np.inf