{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Kuramoto model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import jax; jax.config.update(\"jax_enable_x64\", True)\n",
    "import jax.numpy as jnp\n",
    "from jax import random\n",
    "from jaxkuramoto import Kuramoto, theory, odeint\n",
    "from jaxkuramoto.solver import runge_kutta\n",
    "from jaxkuramoto.distribution import Normal, Uniform\n",
    "\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "seed = 0\n",
    "\n",
    "n_oscillator = 10**2\n",
    "loc, scale = 0.0, 1.0\n",
    "dist = Normal(loc, scale)\n",
    "omegas = dist.sample(random.PRNGKey(seed), shape=(n_oscillator,))\n",
    "K = 3.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "t0, t1 = 0.0, 15.0\n",
    "dt = 0.01\n",
    "\n",
    "model = Kuramoto(omegas, K=K)\n",
    "init_thetas = random.uniform(random.PRNGKey(seed+1), shape=(n_oscillator,), maxval=2*jnp.pi)\n",
    "sol = odeint(model.vector_fn, runge_kutta, t0, t1, dt, init_thetas, observable_fn=model.orderparameter)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x146701790>]"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.xlabel(\"time\")\n",
    "plt.ylabel(\"order parameter\")\n",
    "plt.xlim(t0, t1)\n",
    "plt.ylim(0, 1)\n",
    "plt.plot(sol.ts, sol.observables)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "orderparam_theory = theory.orderparam(K, dist)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1467173a0>]"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(sol.ts, sol.observables)\n",
    "plt.plot([t0, t1], [orderparam_theory, orderparam_theory], color='red', linestyle='--')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x147189af0>"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 864x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=[12,6])\n",
    "plt.subplot(1,2,1)\n",
    "plt.xlim(0, 2*jnp.pi)\n",
    "plt.ylim(-5, 5)\n",
    "plt.scatter(jnp.mod(sol.init_state, 2*jnp.pi), omegas)\n",
    "plt.subplot(1,2,2)\n",
    "plt.xlim(0, 2*jnp.pi)\n",
    "plt.ylim(-5, 5)\n",
    "plt.scatter(jnp.mod(sol.final_state, 2*jnp.pi), omegas)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1472181f0>]"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAssAAAFlCAYAAAAd9qXYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABkqElEQVR4nO3de1zT1f8H8NdhDBje0NRUFO9iGiqKSmKW/lJSU1HzlmZqaverYVLmLU3KblpZXzNL856XZUqSec1beQFvKeYFL0PzitcJYzu/P7jEZYMB2z67vJ6Phw/hs+3zeTHg8N7ZuQgpJYiIiIiIqCAvpQMQERERETkrFstERERERBawWCYiIiIisoDFMhERERGRBSyWiYiIiIgsYLFMRERERGSBt9IBClO5cmVZp04dpWMQERXbvn37rkgpqyidw5HYZhORqyqszXbqYrlOnTrYu3ev0jGIiIpNCHFG6QyOxjabiFxVYW02h2EQEREREVnAYpmIiIiIyAIWy0REREREFrBYJiIiIiKygMUyEREREZEFLJaJiIiIiCxgsUxEREREZAGLZSIiIiIiC1gsExERERFZwGKZiIiIiMgCFstERERERBawWCYiIiIisoDFMhERERGRBSyWiYiIiIgsYLFMRERERGQBi2UiIiIiIgtYLBMRERERWcBimYiIiIjIAhbLREREREQW2KRYFkLME0JcEkIctnC7EELMEkKcEEIcFEK0tMV1iYio+NhmExFZz9tG5/kBwJcAFli4vSuAhln/2gL4Out/ohLRJugwIz4JKal6BPirISWQqjdAJQSMUiIwQIPoyGBEhQYqHZXIGf0AttlERFaxSbEspdwmhKhTyF16AVggpZQAdgshAoQQ1aWUF2xxfXI/uYvhGvkKX22CDjGrDkFvMAIArt815DzOKCUAQJeqx9srDuDkyZMY+FB9BAYG4tatW/j1119hMplgNBphMpkAAOHh4WjYsCFu376N/fv3w8/PDxUqVEClSpVQsWJFeHtb/2tSWG4iZ8E2m5yFlBJ37tzBzZs3cevWLdy+fRv+/v544IEHAAA///wz9Ho9TCYTTCYTpJSoV68eIiIiAAA7duyASqVCuXLlUKlSJVSqVAm+vr5KfknkhmzVs1yUQADncn1+PutYgYZXCDEawGgACAoKckg4cg7ZhaYuVQ8BQGYd16XqEbPqEKTJ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166FTuf4jg2PK5a///57VKtWDZGRkUpHISIF3E03P+bN0kZFpKwff/wRRqMRw4YNUzoKESloxIgRMBqNWLp0qcOv7VHF8uXLlxEXF4enn36aC9oTeShuSORaFixYgIceegjBwVwDn8iTNWrUCGFhYdi5c6fDr+1RFWPlypWxe/duVK1aVekoRKSQ6MhgxKw6BL3hvx5mbkjkvNauXYurV68qHYOInMD69etRqVIlh1/Xo4plIQTCwjxq2VMiyid746EZ8UlISdWjRoAGb3VpxA2JnFTt2rVRu3ZtpWMQkRO47777AABSSggLqxvZg8cMw9DpdBg1ahROnDihdBQiUlhUaCB2jOuE07HdUe70JsQs2YW649YhInYTV8VwElJKPP/889iyZYvSUYjIicycOROtW7eGIzfV85hieeXKlZg7d65iC1oTkfPRJuhwvEJr3FP5QwLQpeoRs+oQC2YnkJCQgP/97384efKk0lGIyImUK1cO+/btQ2JiosOu6THF8vLlyxESEsJJIkSUY0Z8EkxeeUej6Q1GLiPnBH766SeoVCpERUUpHYWInEiPHj3g5eWFn3/+2WHXdPtiWZugQ/i033Au4m0Yu09ijxER5bC0XByXkVPeypUr8X//9385YxSJiACgSpUqiIiIgFarddg13bpY1iboELPqEC7eMkAIL9yRvnyLlYhycBk55/TPP//gn3/+Qa9evZSOQkROqFevXjhw4ACSk5Mdcj23LpZnxCflWR4K4FusRPSf6MhgaNR5d4XjMnLKu3TpEh588EF07dpV6ShE5IR69+6NV199FV5ejilj3XrpOL7FSkSFMbeMXHRkMJeRU1hERAQOHTqkdAwiclL16tXDzJkzHXY9ty6WawRooDNTGPMtViLKFhUaiKjQQNy+fRsHDx5EOxbKijIYDJBSwsfHR+koROTEDAYD9uzZg5YtW8LPz8+u13LrYRgdG1cB8q3Dx7dYicicadOm4ZFHHsGtW7eUjuLR1q9fj/vuuw8HDx5UOgoRObHffvsNERER2LFjh92v5bbFsjZBh5X7dECuHV4EgL6tAvkWKxEVcCHwYdR4YyVCpm1D/Zg4jNdyGIASNm7ciIyMDC7zSUSF6tChA7y9vfH777/b/VpuWyybm9wnAWw+dlmZQETktMZrD2HLeQnhlTnZzyglFu4+y4JZAVu3bsVDDz0E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",
      "text/plain": [
       "<Figure size 864x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_thetas = jnp.arange(0, 2*jnp.pi, 0.01)\n",
    "plt.figure(figsize=[12,6])\n",
    "plt.subplot(1,2,1)\n",
    "plt.axis('equal')\n",
    "plt.plot(jnp.cos(_thetas), jnp.sin(_thetas), color='black', linestyle='--')\n",
    "plt.plot(jnp.cos(sol.init_state), jnp.sin(sol.init_state), 'o')\n",
    "plt.subplot(1,2,2)\n",
    "plt.axis('equal')\n",
    "plt.plot(jnp.cos(_thetas), jnp.sin(_thetas), color='black', linestyle='--')\n",
    "plt.plot(jnp.cos(sol.final_state), jnp.sin(sol.final_state), 'o')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "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.9.7 | packaged by conda-forge | (default, Sep 29 2021, 19:24:02) \n[Clang 11.1.0 ]"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "7d3977cd516aab4e7ac34ec0977b1608119a96f0bf9dd8c065a30d2af58323e0"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
