{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "id": "bdJUbtgw3giW" }, "outputs": [], "source": [ "from matplotlib import rc\n", "import matplotlib\n", "matplotlib.rcParams['animation.embed_limit'] = 2**128\n", "rc('animation', html='jshtml')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "S4f3EpQo3j4d" }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.animation as animation" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 378 }, "id": "VENqZDEG35qG", "outputId": "4fe5745b-42dc-4ab1-fd61-6dd2923010cd" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "fig = plt.figure(figsize=(8,6))\n", "ax = plt.axes()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "LTjqAC9H4CJX", "outputId": "a23ef90f-933d-4330-f75e-1ee37504d2ae" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(125.0, 0.0)" ] }, "metadata": {}, "execution_count": 5 } ], "source": [ "a = 125000.0\n", "dz = 1000.0\n", "n = int(a//dz) +1\n", "z = np.linspace(0.0,a,n)\n", "\n", "seg_por_ano = 365.0*24.0*60.0*60.0\n", "\n", "t_rift = 30.0\n", "t_rift = t_rift*1.0E6 # duração da fase rift em anos\n", "t = -t_rift\n", "dt = 1000.0 # passo de tempo em anos\n", "tmax = 60.0E6 # em anos\n", "tprint = t + 0.5E6\n", "\n", "beta = 2.0 # fator de estiramento\n", "kappa = 1.0E-6 #difusividade térmica\n", "\n", "G = np.log(beta) / (t_rift*seg_por_ano)\n", "\n", "fac = dt*seg_por_ano*kappa/dz**2\n", "\n", "T1 = 1300.0\n", "T = z*T1/a\n", "\n", "T_ini = np.copy(T) \n", "\n", "ax.plot(T,z/1000.0,\"g\",label=\"Temperatura Inicial\")\n", "ax.set_ylim(a/1000.0,0)\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "yO7Aw-rf4JWr" }, "outputs": [], "source": [ "def Jheat(next_frame):\n", " global T, z, G, t, dt, T0_pos_rift\n", " ax.clear()\n", " ax.plot(T_ini,z/1000.0,\"g\",label=\"Temperatura Inicial\")\n", " ax.set_ylim(a/1000.0,0)\n", " \n", " for i in range(1000):\n", " T[1:-1] += fac*(T[2:] - 2*T[1:-1] + T[:-2]) + \\\n", " dt*seg_por_ano*G*z[1:-1]*(T[2:]- T[:-2])/(2*dz)\n", " t +=dt\n", " if (t==0):\n", " T0_pos_rift = np.copy(T)\n", " if (t>0):\n", " G=0.0\n", " if (t>0):\n", " plot=ax.plot(T0_pos_rift,z/1000.0,\"red\",label=f\"Temperatura 0 Myr\")\n", "\n", " plot=ax.plot(T,z/1000.0,\"b\",label=f\"Temperatura {t//1.0E6} Myr\")\n", " ax.legend()\n", " ax.set_ylim(a/1000.0,0)\n", " ax.set_ylabel(\"Profundidade (km)\")\n", " ax.set_xlabel(\"Temperatura ($^\\circ$C)\")\n", " return plot, T" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "kgO-jUV34GGJ" }, "outputs": [], "source": [ "anim = animation.FuncAnimation(fig, Jheat, frames=np.arange(100), blit=False, repeat=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "qI5JLRjy4KHq", "colab": { "base_uri": "https://localhost:8080/", "height": 530 }, "outputId": "3d3407d8-885a-4281-887d-3bc720ff7891" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ] }, "metadata": {}, "execution_count": 9 } ], "source": [ "anim" ] }, { "cell_type": "code", "source": [], "metadata": { "id": "G3ESoo8kwyu3" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [], "metadata": { "id": "wHI3p_ODw0jo" }, "execution_count": null, "outputs": [] } ], "metadata": { "colab": { "provenance": [], "collapsed_sections": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }