def F1(w): u = w["disp"] p = w["press"] F = grad(u) + identity(u) J = det(F) Finv = inv(F) return p * J * transpose(Finv) + mu * F
def A12(w): u = w["disp"] F = zeros_like(grad(u)) for i in range(3): F[i, i] += 1. F += grad(u) J = det(F) Finv = inv(F) return J * transpose(Finv)
def F2(w): u = w["disp"] p = w["press"].value F = grad(u) + identity(u) J = det(F) Js = .5 * (lmbda + p + 2. * np.sqrt(lmbda * mu + .25 * (lmbda + p) ** 2)) / lmbda dJsdp = ((.25 * lmbda + .25 * p + .5 * np.sqrt(lmbda * mu + .25 * (lmbda + p) ** 2)) / (lmbda * np.sqrt(lmbda * mu + .25 * (lmbda + p) ** 2))) return J - (Js + (p + mu / Js - lmbda * (Js - 1)) * dJsdp)
def F1(w): u = w["disp"] p = w["press"] F = zeros_like(grad(u)) for i in range(3): F[i, i] += 1. F += grad(u) J = det(F) Finv = inv(F) return p * J * transpose(Finv) + mu * F
def a(u, v, w): F, iF = deformation_gradient(w) DF = grad(u) dF = grad(v) dFiF = mul(dF, iF) DFiF = mul(DF, iF) tr_DFiF_dFiF = ddot(transpose(dFiF), DFiF) lnJ = np.log(det(F)) return (mu * ddot(DF, dF) - (lmbda * lnJ - mu) * tr_DFiF_dFiF + lmbda * trace(dFiF) * trace(DFiF))
def A11(w): u = w["disp"] p = w["press"] eye = identity(u) F = grad(u) + eye J = det(F) Finv = inv(F) L = (p * J * np.einsum("lk...,ji...->ijkl...", Finv, Finv) - p * J * np.einsum("jk...,li...->ijkl...", Finv, Finv) + mu * np.einsum("ik...,jl...->ijkl...", eye, eye)) return L
def F2(w): u = w["disp"] p = w["press"].value F = zeros_like(grad(u)) for i in range(3): F[i, i] += 1. F += grad(u) J = det(F) Js = .5 * (lmbda + p + 2. * sqrt(lmbda * mu + .25 * (lmbda + p) ** 2)) / lmbda dJsdp = ((.25 * lmbda + .25 * p + .5 * sqrt(lmbda * mu + .25 * (lmbda + p) ** 2)) / (lmbda * sqrt(lmbda * mu + .25 * (lmbda + p) ** 2))) return J - (Js + (p + mu / Js - lmbda * (Js - 1)) * dJsdp)
def A11(w): u = w["disp"] p = w["press"] F = zeros_like(grad(u)) eye = zeros_like(grad(u)) for i in range(3): F[i, i] += 1. eye[i, i] += 1. F += grad(u) J = det(F) Finv= inv(F) L = (p * J * einsum("lk...,ji...->ijkl...", Finv, Finv) - p * J * einsum("jk...,li...->ijkl...", Finv, Finv) + mu * einsum("ik...,jl...->ijkl...", eye, eye)) return L
def volume(w): dw = w["disp"].grad F = dw + identity(dw) J = det(F) return J
def A12(w): u = w["disp"] F = grad(u) + identity(u) J = det(F) Finv = inv(F) return J * transpose(Finv)
def L(v, w): F, iF = deformation_gradient(w) dF = grad(v) lnJ = np.log(det(F)) return mu * ddot(F, dF) + (lmbda * lnJ - mu) * ddot(transpose(iF), dF)