diff --git a/paper/media/phase_diagram.pdf b/paper/media/phase_diagram.pdf new file mode 100644 index 00000000..f984c91f Binary files /dev/null and b/paper/media/phase_diagram.pdf differ diff --git a/paper/media/phase_diagram_R_ball.pdf b/paper/media/phase_diagram_R_ball.pdf new file mode 100644 index 00000000..e72616e5 Binary files /dev/null and b/paper/media/phase_diagram_R_ball.pdf differ diff --git a/paper/media/phase_diagram_R_cone.pdf b/paper/media/phase_diagram_R_cone.pdf new file mode 100644 index 00000000..a99492d4 Binary files /dev/null and b/paper/media/phase_diagram_R_cone.pdf differ diff --git a/paper/media/profile_comparison.pdf b/paper/media/profile_comparison.pdf new file mode 100644 index 00000000..d6620ff5 Binary files /dev/null and b/paper/media/profile_comparison.pdf differ diff --git a/paper/media/test_1d_stability-spa.pdf b/paper/media/test_1d_stability-spa.pdf new file mode 100644 index 00000000..ee37b52a Binary files /dev/null and b/paper/media/test_1d_stability-spa.pdf differ diff --git a/playground/nb/colab_discrete_stability.ipynb b/playground/nb/colab_discrete_stability.ipynb deleted file mode 100644 index ea5f7457..00000000 --- a/playground/nb/colab_discrete_stability.ipynb +++ /dev/null @@ -1,424 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "view-in-github" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": { - "id": "0fnr9Vinc8H_" - }, - "outputs": [], - "source": [ - "import sympy as sp\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "import yaml\n", - "import hashlib\n", - "\n", - "def load_data(rootdir):\n", - "\n", - "\t# with open(rootdir + '/parameters.pkl', 'r') as f:\n", - "\t# \tparams = json.load(f)\n", - "\n", - "\twith open(rootdir + '/parameters.yaml') as f:\n", - "\t\tparams = yaml.load(f, Loader=yaml.FullLoader)\n", - "\n", - "\twith open(rootdir + '/time_data.json', 'r') as f:\n", - "\t\tdata = json.load(f)\n", - "\t\tdataf = pd.DataFrame(data).sort_values('load')\n", - "\n", - "\tif os.path.isfile(rootdir + '/signature.md5'):\n", - "# print('sig file found')\n", - "\t\twith open(rootdir + '/signature.md5', 'r') as f:\n", - "\t\t\tsignature = f.read()\n", - "\telse:\n", - "\t\tprint('no sig file found')\n", - "\t\tsignature = hashlib.md5(str(params).encode('utf-8')).hexdigest()\n", - "\n", - "\treturn params, dataf, signature \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "branch_name = 'main'\n", - "branch_name = 'andres-conerecipe'\n", - "\n", - "!rm -rf mec647\n", - "try:\n", - " !git clone -b {branch_name} https://github.com/kumiori/mec647.git\n", - "# sys.path.append('mec647/')\n", - "\n", - "except Exception as e:\n", - " print('Something went wrong', e)\n", - " !rm -rf mec647\n", - " !git clone https://github.com/kumiori/mec647.git\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "## Simple Analytic \n", - "α, α1, α2, e1, e2 = sp.symbols('α α1 α2 e1 e2')\n", - "u1, u2 = sp.symbols('u1 u2')\n", - "K1, K2 = sp.symbols('K1 K2', positive=True)\n", - "s1, s2 = sp.symbols('s1 s2', positive=True)\n", - "μ, N = sp.symbols('μ N', positive=True)\n", - "w1 = sp.symbols('w1', positive=True)\n", - "t = sp.Symbol('t', positive=True)\n", - "k = sp.Symbol('k', positive=True)\n", - "\n", - "# _N = 2\n", - "\n", - "K = lambda α: (1-α)/(1+(k-1)*α)\n", - "s = lambda α: 1/K(α)\n", - "\n", - "U = 1/2*μ*(K1*u1**2 + K2*(t-u1)**2) * N\n", - "\n", - "S = w1*(α1 + α2) / N\n", - "\n", - "sol_u = sp.solve(U.diff(u1), u1)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Example: material parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "_params = {\n", - " 'N': 2,\n", - " 'k': 3,\n", - " 'k_res': 0.0001,\n", - " 'model_dimension': 1,\n", - " 'model_type': '1D-discrete',\n", - " 'mu': 1,\n", - " 'w1': 1}\n", - "\n", - "_mu, _w1, _k, _N = _params.get(\"mu\"), _params.get(\"w1\"), _params.get(\"k\"), _params[\"N\"]\n", - "\n", - "matpar = {k: _k, w1: _w1, N: _N, μ: _mu}\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle \\frac{0.5 K_{1} K_{2} N t^{2} μ}{K_{1} + K_{2}}$" - ], - "text/plain": [ - "0.5*K1*K2*N*t**2*μ/(K1 + K2)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "E=U.subs(u1, sol_u[0]).simplify()\n", - "E" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Homogeneous response\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle \\frac{0.25 N t^{2} μ \\left(1 - α\\right)}{α \\left(k - 1\\right) + 1}$" - ], - "text/plain": [ - "0.25*N*t**2*μ*(1 - α)/(α*(k - 1) + 1)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\n", - "_E = E.subs({K1: 1/s(α), K2: 1/s(α)})\n", - "_E" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle \\frac{0.25 N t^{2} μ \\left(1 - α\\right)}{α \\left(k - 1\\right) + 1} + \\frac{2 w_{1} α}{N}$" - ], - "text/plain": [ - "0.25*N*t**2*μ*(1 - α)/(α*(k - 1) + 1) + 2*w1*α/N" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "F = (E+S)\n", - "F = (E+S).subs({K1: 1/s(α), K2: 1/s(α), α1: α, α2: α})\n", - "\n", - "F" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Critical damage load" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle - \\frac{0.25 N k t^{2} μ}{\\left(k α - α + 1\\right)^{2}} + \\frac{2 w_{1}}{N}$" - ], - "text/plain": [ - "-0.25*N*k*t**2*μ/(k*α - α + 1)**2 + 2*w1/N" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Fa = F.diff(α).simplify()\n", - "Fa" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle - 0.25 N k t^{2} μ + \\frac{2 w_{1}}{N}$" - ], - "text/plain": [ - "-0.25*N*k*t**2*μ + 2*w1/N" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Fa.subs({α: 0})" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle \\frac{2.82842712474619 \\sqrt{w_{1}}}{N \\sqrt{k} \\sqrt{μ}}$" - ], - "text/plain": [ - "2.82842712474619*sqrt(w1)/(N*sqrt(k)*sqrt(μ))" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sp.solve(Fa, t)[1].subs({α: 0})" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4.5" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "_F = sp.lambdify((α, t), F.subs(matpar), 'numpy')\n", - "_F(0, 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle \\frac{2.82842712474619 \\sqrt{w_{1}}}{N \\sqrt{k} \\sqrt{μ}}$" - ], - "text/plain": [ - "2.82842712474619*sqrt(w1)/(N*sqrt(k)*sqrt(μ))" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\n", - "tc = sp.solve(Fa, t)[1].subs({α: 0})\n", - "tc" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/latex": [ - "$\\displaystyle 0.816496580927726$" - ], - "text/plain": [ - "0.816496580927726" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "_tc = sp.N(tc.subs(matpar))\n", - "_tc" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(np.linspace(0., 2.), _F(0, np.linspace(0., 2.)))\n", - "plt.axvline(_tc, c='k')\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "colab": { - "authorship_tag": "ABX9TyM5sqGttt4V4dnzNq4srf19", - "include_colab_link": true, - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "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.9.13" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -}