{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Symbolic manipulation of the Hoffman failure criterion" ] }, { "cell_type": "code", "execution_count": 264, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle C_{1} \\left(s_{22} - s_{33}\\right)^{2} + C_{2} \\left(s_{11} - s_{33}\\right)^{2} + C_{3} \\left(- s_{11} + s_{22}\\right)^{2} + C_{4} s_{11} + C_{5} s_{22} + C_{6} s_{33} + C_{7} s_{23} + C_{8} s_{13} + C_{9} s_{12}$" ], "text/plain": [ "C1*(s22 - s33)**2 + C2*(s11 - s33)**2 + C3*(-s11 + s22)**2 + C4*s11 + C5*s22 + C6*s33 + C7*s23 + C8*s13 + C9*s12" ] }, "execution_count": 264, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as sy\n", "\n", "s11, s22, s33, s23, s13, s12, C1, C2, C3, C4, C5, C6, C7, C8, C9 = sy.symbols(\n", " \"s11, s22, s33, s23, s13, s12, C1, C2, C3, C4, C5, C6, C7, C8, C9\"\n", ")\n", "\n", "Xc, Xt, Yc, Yt, Zc, Zt, S23, S13, S12 = sy.symbols(\n", " \"Xc, Xt, Yc, Yt, Zc, Zt, S23, S13, S12\"\n", ")\n", "\n", "strengths = Xc, Xt, Yc, Yt, Zc, Zt, S23, S13, S12\n", "stresses = s11, s22, s33, s23, s13, s12\n", "coeffs = C1, C2, C3, C4, C5, C6, C7, C8, C9\n", "\n", "hoffmann = (\n", " C1 * (s22 - s33) ** 2\n", " + C2 * (s11 - s33) ** 2\n", " + C3 * (s22 - s11) ** 2\n", " + C4 * s11\n", " + C5 * s22\n", " + C6 * s33\n", " + C7 * s23\n", " + C8 * s13\n", " + C9 * s12\n", ")\n", "\n", "hoffmann" ] }, { "cell_type": "code", "execution_count": 265, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle C_{2} Xc^{2} + C_{3} Xc^{2} + C_{4} Xc$" ], "text/plain": [ "C2*Xc**2 + C3*Xc**2 + C4*Xc" ] }, "execution_count": 265, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = {s : 0.0 for s in stresses}\n", "x[stresses[0]] = Xc\n", "hoffmann.subs(x)" ] }, { "cell_type": "code", "execution_count": 266, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}0 & Xc^{2} & Xc^{2} & Xc & 0 & 0 & 0 & 0 & 0\\\\0 & Xt^{2} & Xt^{2} & Xt & 0 & 0 & 0 & 0 & 0\\\\Yc^{2} & 0 & Yc^{2} & 0 & Yc & 0 & 0 & 0 & 0\\\\Yt^{2} & 0 & Yt^{2} & 0 & Yt & 0 & 0 & 0 & 0\\\\Zc^{2} & Zc^{2} & 0 & 0 & 0 & Zc & 0 & 0 & 0\\\\Zt^{2} & Zt^{2} & 0 & 0 & 0 & Zt & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0 & S_{23} & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0 & 0 & S_{13} & 0\\\\0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & S_{12}\\end{matrix}\\right]$" ], "text/plain": [ "Matrix([\n", "[ 0, Xc**2, Xc**2, Xc, 0, 0, 0, 0, 0],\n", "[ 0, Xt**2, Xt**2, Xt, 0, 0, 0, 0, 0],\n", "[Yc**2, 0, Yc**2, 0, Yc, 0, 0, 0, 0],\n", "[Yt**2, 0, Yt**2, 0, Yt, 0, 0, 0, 0],\n", "[Zc**2, Zc**2, 0, 0, 0, Zc, 0, 0, 0],\n", "[Zt**2, Zt**2, 0, 0, 0, Zt, 0, 0, 0],\n", "[ 0, 0, 0, 0, 0, 0, S23, 0, 0],\n", "[ 0, 0, 0, 0, 0, 0, 0, S13, 0],\n", "[ 0, 0, 0, 0, 0, 0, 0, 0, S12]])" ] }, "execution_count": 266, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = sy.zeros(9, 9)\n", "\n", "x = {s : 0.0 for s in stresses}\n", "x[stresses[0]] = Xc\n", "subs = hoffmann.subs(x)\n", "A[0, :] = sy.Matrix([[subs.coeff(ci) for ci in coeffs]])\n", "\n", "x = {s : 0.0 for s in stresses}\n", "x[stresses[0]] = Xt\n", "subs = hoffmann.subs(x)\n", "A[1, :] = sy.Matrix([[subs.coeff(ci) for ci in coeffs]])\n", "\n", "x = {s : 0.0 for s in stresses}\n", "x[stresses[1]] = Yc\n", "subs = hoffmann.subs(x)\n", "A[2, :] = sy.Matrix([[subs.coeff(ci) for ci in coeffs]])\n", "\n", "x = {s : 0.0 for s in stresses}\n", "x[stresses[1]] = Yt\n", "subs = hoffmann.subs(x)\n", "A[3, :] = sy.Matrix([[subs.coeff(ci) for ci in coeffs]])\n", "\n", "x = {s : 0.0 for s in stresses}\n", "x[stresses[2]] = Zc\n", "subs = hoffmann.subs(x)\n", "A[4, :] = sy.Matrix([[subs.coeff(ci) for ci in coeffs]])\n", "\n", "x = {s : 0.0 for s in stresses}\n", "x[stresses[2]] = Zt\n", "subs = hoffmann.subs(x)\n", "A[5, :] = sy.Matrix([[subs.coeff(ci) for ci in coeffs]])\n", "\n", "x = {s : 0.0 for s in stresses}\n", "x[stresses[3]] = S23\n", "subs = hoffmann.subs(x)\n", "A[6, :] = sy.Matrix([[subs.coeff(ci) for ci in coeffs]])\n", "\n", "x = {s : 0.0 for s in stresses}\n", "x[stresses[4]] = S13\n", "subs = hoffmann.subs(x)\n", "A[7, :] = sy.Matrix([[subs.coeff(ci) for ci in coeffs]])\n", "\n", "x = {s : 0.0 for s in stresses}\n", "x[stresses[5]] = S12\n", "subs = hoffmann.subs(x)\n", "A[8, :] = sy.Matrix([[subs.coeff(ci) for ci in coeffs]])\n", " \n", "A" ] }, { "cell_type": "code", "execution_count": 267, "metadata": {}, "outputs": [], "source": [ "inv_A = A.inv()" ] }, { "cell_type": "code", "execution_count": 268, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}- \\frac{1}{2 Xc \\left(Xc - Xt\\right)} & \\frac{1}{2 Xt \\left(Xc - Xt\\right)} & \\frac{1}{2 Yc \\left(Yc - Yt\\right)} & - \\frac{1}{2 Yt \\left(Yc - Yt\\right)} & \\frac{1}{2 Zc \\left(Zc - Zt\\right)} & - \\frac{1}{2 Zt \\left(Zc - Zt\\right)} & 0 & 0 & 0\\\\\\frac{1}{2 Xc \\left(Xc - Xt\\right)} & - \\frac{1}{2 Xt \\left(Xc - Xt\\right)} & - \\frac{1}{2 Yc \\left(Yc - Yt\\right)} & \\frac{1}{2 Yt \\left(Yc - Yt\\right)} & \\frac{1}{2 Zc \\left(Zc - Zt\\right)} & - \\frac{1}{2 Zt \\left(Zc - Zt\\right)} & 0 & 0 & 0\\\\\\frac{1}{2 Xc \\left(Xc - Xt\\right)} & - \\frac{1}{2 Xt \\left(Xc - Xt\\right)} & \\frac{1}{2 Yc \\left(Yc - Yt\\right)} & - \\frac{1}{2 Yt \\left(Yc - Yt\\right)} & - \\frac{1}{2 Zc \\left(Zc - Zt\\right)} & \\frac{1}{2 Zt \\left(Zc - Zt\\right)} & 0 & 0 & 0\\\\- \\frac{Xt}{Xc \\left(Xc - Xt\\right)} & \\frac{Xc}{Xt \\left(Xc - Xt\\right)} & 0 & 0 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & - \\frac{Yt}{Yc \\left(Yc - Yt\\right)} & \\frac{Yc}{Yt \\left(Yc - Yt\\right)} & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & - \\frac{Zt}{Zc \\left(Zc - Zt\\right)} & \\frac{Zc}{Zt \\left(Zc - Zt\\right)} & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0 & \\frac{1}{S_{23}} & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0 & 0 & \\frac{1}{S_{13}} & 0\\\\0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\frac{1}{S_{12}}\\end{matrix}\\right]$" ], "text/plain": [ "Matrix([\n", "[-1/(2*Xc*(Xc - Xt)), 1/(2*Xt*(Xc - Xt)), 1/(2*Yc*(Yc - Yt)), -1/(2*Yt*(Yc - Yt)), 1/(2*Zc*(Zc - Zt)), -1/(2*Zt*(Zc - Zt)), 0, 0, 0],\n", "[ 1/(2*Xc*(Xc - Xt)), -1/(2*Xt*(Xc - Xt)), -1/(2*Yc*(Yc - Yt)), 1/(2*Yt*(Yc - Yt)), 1/(2*Zc*(Zc - Zt)), -1/(2*Zt*(Zc - Zt)), 0, 0, 0],\n", "[ 1/(2*Xc*(Xc - Xt)), -1/(2*Xt*(Xc - Xt)), 1/(2*Yc*(Yc - Yt)), -1/(2*Yt*(Yc - Yt)), -1/(2*Zc*(Zc - Zt)), 1/(2*Zt*(Zc - Zt)), 0, 0, 0],\n", "[ -Xt/(Xc*(Xc - Xt)), Xc/(Xt*(Xc - Xt)), 0, 0, 0, 0, 0, 0, 0],\n", "[ 0, 0, -Yt/(Yc*(Yc - Yt)), Yc/(Yt*(Yc - Yt)), 0, 0, 0, 0, 0],\n", "[ 0, 0, 0, 0, -Zt/(Zc*(Zc - Zt)), Zc/(Zt*(Zc - Zt)), 0, 0, 0],\n", "[ 0, 0, 0, 0, 0, 0, 1/S23, 0, 0],\n", "[ 0, 0, 0, 0, 0, 0, 0, 1/S13, 0],\n", "[ 0, 0, 0, 0, 0, 0, 0, 0, 1/S12]])" ] }, "execution_count": 268, "metadata": {}, "output_type": "execute_result" } ], "source": [ "inv_A.simplify()\n", "inv_A" ] }, { "cell_type": "code", "execution_count": 269, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'ImmutableDenseMatrix([[-(1/2)/(Xc*(Xc - Xt)), (1/2)/(Xt*(Xc - Xt)), (1/2)/(Yc*(Yc - Yt)), -(1/2)/(Yt*(Yc - Yt)), (1/2)/(Zc*(Zc - Zt)), -(1/2)/(Zt*(Zc - Zt)), 0, 0, 0], [(1/2)/(Xc*(Xc - Xt)), -(1/2)/(Xt*(Xc - Xt)), -(1/2)/(Yc*(Yc - Yt)), (1/2)/(Yt*(Yc - Yt)), (1/2)/(Zc*(Zc - Zt)), -(1/2)/(Zt*(Zc - Zt)), 0, 0, 0], [(1/2)/(Xc*(Xc - Xt)), -(1/2)/(Xt*(Xc - Xt)), (1/2)/(Yc*(Yc - Yt)), -(1/2)/(Yt*(Yc - Yt)), -(1/2)/(Zc*(Zc - Zt)), (1/2)/(Zt*(Zc - Zt)), 0, 0, 0], [-Xt/(Xc*(Xc - Xt)), Xc/(Xt*(Xc - Xt)), 0, 0, 0, 0, 0, 0, 0], [0, 0, -Yt/(Yc*(Yc - Yt)), Yc/(Yt*(Yc - Yt)), 0, 0, 0, 0, 0], [0, 0, 0, 0, -Zt/(Zc*(Zc - Zt)), Zc/(Zt*(Zc - Zt)), 0, 0, 0], [0, 0, 0, 0, 0, 0, 1/S23, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1/S13, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1/S12]])'" ] }, "execution_count": 269, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sympy import pycode\n", "\n", "pycode(inv_A)" ] }, { "cell_type": "code", "execution_count": 270, "metadata": {}, "outputs": [], "source": [ "new_coeffs = inv_A @ sy.Matrix([1 for _ in range(len(coeffs))])" ] }, { "cell_type": "code", "execution_count": 271, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(9, 9)" ] }, "execution_count": 271, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(coeffs), len(new_coeffs)" ] }, { "cell_type": "code", "execution_count": 272, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{1}{S_{12}}$" ], "text/plain": [ "1/S12" ] }, "execution_count": 272, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_coeffs[-1]" ] }, { "cell_type": "code", "execution_count": 273, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle C_{1} \\left(s_{22} - s_{33}\\right)^{2} + C_{2} \\left(s_{11} - s_{33}\\right)^{2} + C_{3} \\left(- s_{11} + s_{22}\\right)^{2} + C_{4} s_{11} + C_{5} s_{22} + C_{6} s_{33} + C_{7} s_{23} + C_{8} s_{13} + C_{9} s_{12}$" ], "text/plain": [ "C1*(s22 - s33)**2 + C2*(s11 - s33)**2 + C3*(-s11 + s22)**2 + C4*s11 + C5*s22 + C6*s33 + C7*s23 + C8*s13 + C9*s12" ] }, "execution_count": 273, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hoffmann" ] }, { "cell_type": "code", "execution_count": 274, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(C1, C2, C3, C4, C5, C6, C7, C8, C9)" ] }, "execution_count": 274, "metadata": {}, "output_type": "execute_result" } ], "source": [ "coeffs" ] }, { "cell_type": "code", "execution_count": 275, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle s_{11} \\left(\\frac{Xc}{Xt \\left(Xc - Xt\\right)} - \\frac{Xt}{Xc \\left(Xc - Xt\\right)}\\right) + s_{22} \\left(\\frac{Yc}{Yt \\left(Yc - Yt\\right)} - \\frac{Yt}{Yc \\left(Yc - Yt\\right)}\\right) + s_{33} \\left(\\frac{Zc}{Zt \\left(Zc - Zt\\right)} - \\frac{Zt}{Zc \\left(Zc - Zt\\right)}\\right) + \\left(- s_{11} + s_{22}\\right)^{2} \\cdot \\left(\\frac{1}{2 Zt \\left(Zc - Zt\\right)} - \\frac{1}{2 Zc \\left(Zc - Zt\\right)} - \\frac{1}{2 Yt \\left(Yc - Yt\\right)} + \\frac{1}{2 Yc \\left(Yc - Yt\\right)} - \\frac{1}{2 Xt \\left(Xc - Xt\\right)} + \\frac{1}{2 Xc \\left(Xc - Xt\\right)}\\right) + \\left(s_{11} - s_{33}\\right)^{2} \\left(- \\frac{1}{2 Zt \\left(Zc - Zt\\right)} + \\frac{1}{2 Zc \\left(Zc - Zt\\right)} + \\frac{1}{2 Yt \\left(Yc - Yt\\right)} - \\frac{1}{2 Yc \\left(Yc - Yt\\right)} - \\frac{1}{2 Xt \\left(Xc - Xt\\right)} + \\frac{1}{2 Xc \\left(Xc - Xt\\right)}\\right) + \\left(s_{22} - s_{33}\\right)^{2} \\left(- \\frac{1}{2 Zt \\left(Zc - Zt\\right)} + \\frac{1}{2 Zc \\left(Zc - Zt\\right)} - \\frac{1}{2 Yt \\left(Yc - Yt\\right)} + \\frac{1}{2 Yc \\left(Yc - Yt\\right)} + \\frac{1}{2 Xt \\left(Xc - Xt\\right)} - \\frac{1}{2 Xc \\left(Xc - Xt\\right)}\\right) + \\frac{s_{23}}{S_{23}} + \\frac{s_{13}}{S_{13}} + \\frac{s_{12}}{S_{12}}$" ], "text/plain": [ "s11*(Xc/(Xt*(Xc - Xt)) - Xt/(Xc*(Xc - Xt))) + s22*(Yc/(Yt*(Yc - Yt)) - Yt/(Yc*(Yc - Yt))) + s33*(Zc/(Zt*(Zc - Zt)) - Zt/(Zc*(Zc - Zt))) + (-s11 + s22)**2*(1/(2*Zt*(Zc - Zt)) - 1/(2*Zc*(Zc - Zt)) - 1/(2*Yt*(Yc - Yt)) + 1/(2*Yc*(Yc - Yt)) - 1/(2*Xt*(Xc - Xt)) + 1/(2*Xc*(Xc - Xt))) + (s11 - s33)**2*(-1/(2*Zt*(Zc - Zt)) + 1/(2*Zc*(Zc - Zt)) + 1/(2*Yt*(Yc - Yt)) - 1/(2*Yc*(Yc - Yt)) - 1/(2*Xt*(Xc - Xt)) + 1/(2*Xc*(Xc - Xt))) + (s22 - s33)**2*(-1/(2*Zt*(Zc - Zt)) + 1/(2*Zc*(Zc - Zt)) - 1/(2*Yt*(Yc - Yt)) + 1/(2*Yc*(Yc - Yt)) + 1/(2*Xt*(Xc - Xt)) - 1/(2*Xc*(Xc - Xt))) + s23/S23 + s13/S13 + s12/S12" ] }, "execution_count": 275, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_hoffman = hoffmann.subs({k:v for k, v in zip(coeffs, new_coeffs)})\n", "new_hoffman" ] }, { "cell_type": "code", "execution_count": 276, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{Xc s_{11}}{Xc Xt - Xt^{2}} - \\frac{Xt s_{11}}{Xc^{2} - Xc Xt} + \\frac{Yc s_{22}}{Yc Yt - Yt^{2}} - \\frac{Yt s_{22}}{Yc^{2} - Yc Yt} + \\frac{Zc s_{33}}{Zc Zt - Zt^{2}} - \\frac{Zt s_{33}}{Zc^{2} - Zc Zt} - \\frac{2 s_{11}^{2}}{2 Xc Xt - 2 Xt^{2}} + \\frac{2 s_{11}^{2}}{2 Xc^{2} - 2 Xc Xt} - \\frac{2 s_{11} s_{22}}{2 Zc Zt - 2 Zt^{2}} + \\frac{2 s_{11} s_{22}}{2 Yc Yt - 2 Yt^{2}} + \\frac{2 s_{11} s_{22}}{2 Xc Xt - 2 Xt^{2}} + \\frac{2 s_{11} s_{22}}{2 Zc^{2} - 2 Zc Zt} - \\frac{2 s_{11} s_{22}}{2 Yc^{2} - 2 Yc Yt} - \\frac{2 s_{11} s_{22}}{2 Xc^{2} - 2 Xc Xt} + \\frac{2 s_{11} s_{33}}{2 Zc Zt - 2 Zt^{2}} - \\frac{2 s_{11} s_{33}}{2 Yc Yt - 2 Yt^{2}} + \\frac{2 s_{11} s_{33}}{2 Xc Xt - 2 Xt^{2}} - \\frac{2 s_{11} s_{33}}{2 Zc^{2} - 2 Zc Zt} + \\frac{2 s_{11} s_{33}}{2 Yc^{2} - 2 Yc Yt} - \\frac{2 s_{11} s_{33}}{2 Xc^{2} - 2 Xc Xt} - \\frac{2 s_{22}^{2}}{2 Yc Yt - 2 Yt^{2}} + \\frac{2 s_{22}^{2}}{2 Yc^{2} - 2 Yc Yt} + \\frac{2 s_{22} s_{33}}{2 Zc Zt - 2 Zt^{2}} + \\frac{2 s_{22} s_{33}}{2 Yc Yt - 2 Yt^{2}} - \\frac{2 s_{22} s_{33}}{2 Xc Xt - 2 Xt^{2}} - \\frac{2 s_{22} s_{33}}{2 Zc^{2} - 2 Zc Zt} - \\frac{2 s_{22} s_{33}}{2 Yc^{2} - 2 Yc Yt} + \\frac{2 s_{22} s_{33}}{2 Xc^{2} - 2 Xc Xt} - \\frac{2 s_{33}^{2}}{2 Zc Zt - 2 Zt^{2}} + \\frac{2 s_{33}^{2}}{2 Zc^{2} - 2 Zc Zt} + \\frac{s_{23}}{S_{23}} + \\frac{s_{13}}{S_{13}} + \\frac{s_{12}}{S_{12}}$" ], "text/plain": [ "Xc*s11/(Xc*Xt - Xt**2) - Xt*s11/(Xc**2 - Xc*Xt) + Yc*s22/(Yc*Yt - Yt**2) - Yt*s22/(Yc**2 - Yc*Yt) + Zc*s33/(Zc*Zt - Zt**2) - Zt*s33/(Zc**2 - Zc*Zt) - 2*s11**2/(2*Xc*Xt - 2*Xt**2) + 2*s11**2/(2*Xc**2 - 2*Xc*Xt) - 2*s11*s22/(2*Zc*Zt - 2*Zt**2) + 2*s11*s22/(2*Yc*Yt - 2*Yt**2) + 2*s11*s22/(2*Xc*Xt - 2*Xt**2) + 2*s11*s22/(2*Zc**2 - 2*Zc*Zt) - 2*s11*s22/(2*Yc**2 - 2*Yc*Yt) - 2*s11*s22/(2*Xc**2 - 2*Xc*Xt) + 2*s11*s33/(2*Zc*Zt - 2*Zt**2) - 2*s11*s33/(2*Yc*Yt - 2*Yt**2) + 2*s11*s33/(2*Xc*Xt - 2*Xt**2) - 2*s11*s33/(2*Zc**2 - 2*Zc*Zt) + 2*s11*s33/(2*Yc**2 - 2*Yc*Yt) - 2*s11*s33/(2*Xc**2 - 2*Xc*Xt) - 2*s22**2/(2*Yc*Yt - 2*Yt**2) + 2*s22**2/(2*Yc**2 - 2*Yc*Yt) + 2*s22*s33/(2*Zc*Zt - 2*Zt**2) + 2*s22*s33/(2*Yc*Yt - 2*Yt**2) - 2*s22*s33/(2*Xc*Xt - 2*Xt**2) - 2*s22*s33/(2*Zc**2 - 2*Zc*Zt) - 2*s22*s33/(2*Yc**2 - 2*Yc*Yt) + 2*s22*s33/(2*Xc**2 - 2*Xc*Xt) - 2*s33**2/(2*Zc*Zt - 2*Zt**2) + 2*s33**2/(2*Zc**2 - 2*Zc*Zt) + s23/S23 + s13/S13 + s12/S12" ] }, "execution_count": 276, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "new_hoffman = new_hoffman.expand()\n", "new_hoffman" ] }, { "cell_type": "code", "execution_count": 277, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{s_{33}}{Zt} + \\frac{s_{33}}{Zc} - \\frac{s_{11} s_{22}}{Zc Zt} + \\frac{s_{11} s_{33}}{Zc Zt} + \\frac{s_{22} s_{33}}{Zc Zt} - \\frac{s_{33}^{2}}{Zc Zt} + \\frac{s_{22}}{Yt} + \\frac{s_{22}}{Yc} + \\frac{s_{11} s_{22}}{Yc Yt} - \\frac{s_{11} s_{33}}{Yc Yt} - \\frac{s_{22}^{2}}{Yc Yt} + \\frac{s_{22} s_{33}}{Yc Yt} + \\frac{s_{11}}{Xt} + \\frac{s_{11}}{Xc} - \\frac{s_{11}^{2}}{Xc Xt} + \\frac{s_{11} s_{22}}{Xc Xt} + \\frac{s_{11} s_{33}}{Xc Xt} - \\frac{s_{22} s_{33}}{Xc Xt} + \\frac{s_{23}}{S_{23}} + \\frac{s_{13}}{S_{13}} + \\frac{s_{12}}{S_{12}}$" ], "text/plain": [ "s33/Zt + s33/Zc - s11*s22/(Zc*Zt) + s11*s33/(Zc*Zt) + s22*s33/(Zc*Zt) - s33**2/(Zc*Zt) + s22/Yt + s22/Yc + s11*s22/(Yc*Yt) - s11*s33/(Yc*Yt) - s22**2/(Yc*Yt) + s22*s33/(Yc*Yt) + s11/Xt + s11/Xc - s11**2/(Xc*Xt) + s11*s22/(Xc*Xt) + s11*s33/(Xc*Xt) - s22*s33/(Xc*Xt) + s23/S23 + s13/S13 + s12/S12" ] }, "execution_count": 277, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_hoffman = new_hoffman.simplify()\n", "new_hoffman" ] }, { "cell_type": "code", "execution_count": 278, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'s33/Zt + s33/Zc - s11*s22/(Zc*Zt) + s11*s33/(Zc*Zt) + s22*s33/(Zc*Zt) - s33**2/(Zc*Zt) + s22/Yt + s22/Yc + s11*s22/(Yc*Yt) - s11*s33/(Yc*Yt) - s22**2/(Yc*Yt) + s22*s33/(Yc*Yt) + s11/Xt + s11/Xc - s11**2/(Xc*Xt) + s11*s22/(Xc*Xt) + s11*s33/(Xc*Xt) - s22*s33/(Xc*Xt) + s23/S23 + s13/S13 + s12/S12'" ] }, "execution_count": 278, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pycode(new_hoffman)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plates and Shells" ] }, { "cell_type": "code", "execution_count": 279, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle - \\frac{s_{11} s_{22}}{Zc Zt} + \\frac{s_{22}}{Yt} + \\frac{s_{22}}{Yc} + \\frac{s_{11} s_{22}}{Yc Yt} - \\frac{s_{22}^{2}}{Yc Yt} + \\frac{s_{11}}{Xt} + \\frac{s_{11}}{Xc} - \\frac{s_{11}^{2}}{Xc Xt} + \\frac{s_{11} s_{22}}{Xc Xt} + \\frac{s_{23}}{S_{23}} + \\frac{s_{13}}{S_{13}} + \\frac{s_{12}}{S_{12}}$" ], "text/plain": [ "-s11*s22/(Zc*Zt) + s22/Yt + s22/Yc + s11*s22/(Yc*Yt) - s22**2/(Yc*Yt) + s11/Xt + s11/Xc - s11**2/(Xc*Xt) + s11*s22/(Xc*Xt) + s23/S23 + s13/S13 + s12/S12" ] }, "execution_count": 279, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hoffman_PS = new_hoffman.subs({s33:0,})\n", "hoffman_PS.simplify()\n", "hoffman_PS" ] }, { "cell_type": "code", "execution_count": 280, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle - \\frac{s_{11} s_{22}}{Zc Zt} + \\frac{s_{22}}{Yt} + \\frac{s_{22}}{Yc} + \\frac{s_{11} s_{22}}{Yc Yt} - \\frac{s_{22}^{2}}{Yc Yt} + \\frac{s_{11}}{Xt} + \\frac{s_{11}}{Xc} - \\frac{s_{11}^{2}}{Xc Xt} + \\frac{s_{11} s_{22}}{Xc Xt} + \\frac{s_{23}}{S_{23}} + \\frac{s_{13}}{S_{13}} + \\frac{s_{12}}{S_{12}}$" ], "text/plain": [ "-s11*s22/(Zc*Zt) + s22/Yt + s22/Yc + s11*s22/(Yc*Yt) - s22**2/(Yc*Yt) + s11/Xt + s11/Xc - s11**2/(Xc*Xt) + s11*s22/(Xc*Xt) + s23/S23 + s13/S13 + s12/S12" ] }, "execution_count": 280, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hoffman_PS = hoffman_PS.simplify()\n", "hoffman_PS" ] }, { "cell_type": "code", "execution_count": 281, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'-s11*s22/(Zc*Zt) + s22/Yt + s22/Yc + s11*s22/(Yc*Yt) - s22**2/(Yc*Yt) + s11/Xt + s11/Xc - s11**2/(Xc*Xt) + s11*s22/(Xc*Xt) + s23/S23 + s13/S13 + s12/S12'" ] }, "execution_count": 281, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pycode(hoffman_PS)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Membranes" ] }, { "cell_type": "code", "execution_count": 282, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle - \\frac{s_{11} s_{22}}{Zc Zt} + \\frac{s_{22}}{Yt} + \\frac{s_{22}}{Yc} + \\frac{s_{11} s_{22}}{Yc Yt} - \\frac{s_{22}^{2}}{Yc Yt} + \\frac{s_{11}}{Xt} + \\frac{s_{11}}{Xc} - \\frac{s_{11}^{2}}{Xc Xt} + \\frac{s_{11} s_{22}}{Xc Xt} + \\frac{s_{12}}{S_{12}}$" ], "text/plain": [ "-s11*s22/(Zc*Zt) + s22/Yt + s22/Yc + s11*s22/(Yc*Yt) - s22**2/(Yc*Yt) + s11/Xt + s11/Xc - s11**2/(Xc*Xt) + s11*s22/(Xc*Xt) + s12/S12" ] }, "execution_count": 282, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hoffman_membrane = new_hoffman.subs({s33:0, s23:0, s13:0})\n", "hoffman_membrane.simplify()\n", "hoffman_membrane" ] }, { "cell_type": "code", "execution_count": 283, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle - \\frac{s_{11} s_{22}}{Zc Zt} + \\frac{s_{22}}{Yt} + \\frac{s_{22}}{Yc} + \\frac{s_{11} s_{22}}{Yc Yt} - \\frac{s_{22}^{2}}{Yc Yt} + \\frac{s_{11}}{Xt} + \\frac{s_{11}}{Xc} - \\frac{s_{11}^{2}}{Xc Xt} + \\frac{s_{11} s_{22}}{Xc Xt} + \\frac{s_{12}}{S_{12}}$" ], "text/plain": [ "-s11*s22/(Zc*Zt) + s22/Yt + s22/Yc + s11*s22/(Yc*Yt) - s22**2/(Yc*Yt) + s11/Xt + s11/Xc - s11**2/(Xc*Xt) + s11*s22/(Xc*Xt) + s12/S12" ] }, "execution_count": 283, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hoffman_membrane = hoffman_membrane.simplify()\n", "hoffman_membrane" ] }, { "cell_type": "code", "execution_count": 284, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'-s11*s22/(Zc*Zt) + s22/Yt + s22/Yc + s11*s22/(Yc*Yt) - s22**2/(Yc*Yt) + s11/Xt + s11/Xc - s11**2/(Xc*Xt) + s11*s22/(Xc*Xt) + s12/S12'" ] }, "execution_count": 284, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pycode(hoffman_membrane)" ] } ], "metadata": { "kernelspec": { "display_name": ".sigeps", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "28d81e0e1442962330764574f1956d80898814d1923baa1210fb6369a4e79b2a" } } }, "nbformat": 4, "nbformat_minor": 2 }