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
Example #2
0
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