Beispiel #1
0
def strain(radius, phi):
    A = np.array([[np.cos(phi), -np.sin(phi), 0.0], [np.sin(phi), np.cos(phi), 0.0], [0.000000000, 0.000000000, 1.0]])

    mo = np.array([1, 0, 0])
    no = np.array([0, 1, 0])
    m = np.dot(A, mo)
    n = np.dot(A, no)
    nn = sf.sandwich(n, n, Cijkl)
    nm = sf.sandwich(n, m, Cijkl)

    nninm = np.dot(np.linalg.inv(nn), nm)
    nni = np.linalg.inv(nn)

    T1 = -1.0 / (2 * np.pi * radius) * np.outer(m, np.dot(S, burger))
    T2 = 1.0 / (2 * np.pi * radius) * np.outer(n, np.dot(np.dot(nninm, S), burger))
    T3 = 1.0 / (2 * np.pi * radius) * np.outer(n, np.dot(np.dot(nni, B), burger))
    ux = T1 + T2 + T3
    exy = 0.5 * (ux + ux.T)
    eij = 1.0 * exy
    # These equations comes from Hirth and Lothe p.476 eq. 13-220
    return eij
Beispiel #2
0
zi, wi = np.polynomial.legendre.leggauss(nq)


def xm(z):
    x = 0.5 * (2 * np.pi * (z + 1))
    return x


for i in xrange(nq):
    x = xm(zi[i])
    A = np.array([[np.cos(x), -np.sin(x), 0.0], [np.sin(x), np.cos(x), 0.0], [0.0, 0.0, 1.0]])
    mo = np.array([1, 0, 0])
    no = np.array([0, 1, 0])
    m = np.dot(A, mo)
    n = np.dot(A, no)
    mn = sf.sandwich(m, n, Cijkl)
    nn = sf.sandwich(n, n, Cijkl)
    nm = sf.sandwich(n, m, Cijkl)
    mm = sf.sandwich(m, m, Cijkl)
    Bt = (np.dot(mn, np.dot(np.linalg.inv(nn), nm)) - mm) * wi[i]
    B = B - Bt / 2
    St = np.dot(np.linalg.inv(nn), nm) * wi[i]
    S = S - St / 2
    Qt = np.linalg.inv(nn) * wi[i]
    Q = Q - Qt / 2

# calculate distortion tensor and then the stress tensor
def strain(radius, phi):
    A = np.array([[np.cos(phi), -np.sin(phi), 0.0], [np.sin(phi), np.cos(phi), 0.0], [0.000000000, 0.000000000, 1.0]])

    mo = np.array([1, 0, 0])