Repository: petrobras/ross

Issue:
Error when trying to save rotor with coupling element
As mentioned in #1134, an error was encountered when saving a rotor with coupling element:
```
File d:\ProgramData\Anaconda3\Lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec
exec(code, globals, locals) File ..\wvc_insideshafting\ross10v01_inside_coupling.py:107
rotor.save('rotor.toml')
File d:\ProgramData\Anaconda3\Lib\site-packages\ross\rotor_assembly.py:3132 in save
el.save(file)
File d:\ProgramData\Anaconda3\Lib\site-packages\ross\shaft_element.py:411 in save
"name": self.material.name,
AttributeError: 'CouplingElement' object has no attribute 'material'
```

Discussion:
@ross-bott: Hi there!
I have marked this issue as stale because it has not had activity for 45 days.
Consider the following options:
- If the issue refers to a large task, break it in smaller issues that can be solved in
less than 45 days;
- Label the issue as `wontfix` or `wontfix for now` and close it.

Solution patch:
diff --git a/docs/user_guide/tutorial_part_1.ipynb b/docs/user_guide/tutorial_part_1.ipynb
index 111580e8..37bc71ee 100644
--- a/docs/user_guide/tutorial_part_1.ipynb
+++ b/docs/user_guide/tutorial_part_1.ipynb
@@ -630,6 +630,195 @@
     "```"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### 2.3 Creating coupling element (CouplingElement Class)\n",
+    "\n",
+    "Here, we introduce the `CouplingElement` class, a subclass of the `ShaftElement` class, designed to model the interaction between two rotor shafts. This element is implemented in a general form in ROSS. The coupling plays a crucial role in mechanical systems by transmitting forces, vibrations, and motion between rotating shafts. It is primarily characterized by adding stiffness, mass, and inertia to the system, which are essential for simulating the real-world behavior of coupled rotors.\n",
+    "\n",
+    "__Steps:__\n",
+    "- Create two shafts: Start by defining two rotor shafts using the `ShaftElement` class. Each shaft can have its own properties like material, length, and diameter.\n",
+    "- Join shafts with coupling: Use the `CouplingElement` class to connect the two shafts by inserting the elements in a list following a certain order."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 2.3.1 Define the shafts with their respective dimensions and properties"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Shaft 1 - Left\n",
+    "L1 = [300, 92, 200, 200, 92, 300]  # Segment lengths (in mm)\n",
+    "r1 = [61.5, 75, 75, 75, 75, 61.5]  # Segment radii (in mm)\n",
+    "shaft1 = [\n",
+    "    rs.ShaftElement(\n",
+    "        L=L1[i] * 1e-3,  # Convert length to meters\n",
+    "        idl=0.0,  # Inner diameter in meters\n",
+    "        odl=r1[i] * 2e-3,  # Outer diameter in meters\n",
+    "        material=steel,  # Material used for the shaft\n",
+    "        shear_effects=True,\n",
+    "        rotary_inertia=True,\n",
+    "        gyroscopic=True,\n",
+    "    )\n",
+    "    for i in range(len(L1))\n",
+    "]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Shaft 2 - Right\n",
+    "L2 = [80, 200, 200, 640]  # Segment lengths (in mm)\n",
+    "r2 = [160.5, 160.5, 130.5, 130.5]  # Segment radii (in mm)\n",
+    "shaft2 = [\n",
+    "    rs.ShaftElement(\n",
+    "        L=L2[i] * 1e-3,  # Convert length to meters\n",
+    "        idl=0.0,  # Inner diameter in meters\n",
+    "        odl=r2[i] * 2e-3,  # Outer diameter in meters\n",
+    "        material=steel,  # Material used for the shaft\n",
+    "        shear_effects=True,\n",
+    "        rotary_inertia=True,\n",
+    "        gyroscopic=True,\n",
+    "    )\n",
+    "    for i in range(len(L2))\n",
+    "]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 2.3.2 Define the coupling element that connects the two shafts"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "In this example, only the torsional stiffness is adopted. However, you can pass any of the following arguments (if not provided, the default value is zero):\n",
+    "- kt_x, \n",
+    "- kt_y,\n",
+    "- kt_z (axial stiffness), \n",
+    "- kr_x, \n",
+    "- kr_y,\n",
+    "- kr_z (torsional stiffness),\n",
+    "\n",
+    "considering that the stiffness matrix $\\mathbf{K}$ will be assembled like this:\n",
+    "\n",
+    "$\n",
+    "\\mathbf{K} = \n",
+    "\\begin{bmatrix}\n",
+    "k_{t_x} & 0 & 0 & 0 & 0 & 0 & -k_{t_x} & 0 & 0 & 0 & 0 & 0 \\\\\n",
+    "0 & k_{t_y} & 0 & 0 & 0 & 0 & 0 & -k_{t_y} & 0 & 0 & 0 & 0 \\\\\n",
+    "0 & 0 & k_{t_z} & 0 & 0 & 0 & 0 & 0 & -k_{t_z} & 0 & 0 & 0 \\\\\n",
+    "0 & 0 & 0 & k_{r_x} & 0 & 0 & 0 & 0 & 0 & -k_{r_x} & 0 & 0 \\\\\n",
+    "0 & 0 & 0 & 0 & k_{r_y} & 0 & 0 & 0 & 0 & 0 & -k_{r_y} & 0 \\\\\n",
+    "0 & 0 & 0 & 0 & 0 & k_{r_z} & 0 & 0 & 0 & 0 & 0 & -k_{r_z} \\\\\n",
+    "-k_{t_x} & 0 & 0 & 0 & 0 & 0 & k_{t_x} & 0 & 0 & 0 & 0 & 0 \\\\\n",
+    "0 & -k_{t_y} & 0 & 0 & 0 & 0 & 0 & k_{t_y} & 0 & 0 & 0 & 0 \\\\\n",
+    "0 & 0 & -k_{t_z} & 0 & 0 & 0 & 0 & 0 & k_{t_z} & 0 & 0 & 0 \\\\\n",
+    "0 & 0 & 0 & -k_{r_x} & 0 & 0 & 0 & 0 & 0 & k_{r_x} & 0 & 0 \\\\\n",
+    "0 & 0 & 0 & 0 & -k_{r_y} & 0 & 0 & 0 & 0 & 0 & k_{r_y} & 0 \\\\\n",
+    "0 & 0 & 0 & 0 & 0 & -k_{r_z} & 0 & 0 & 0 & 0 & 0 & k_{r_z}\n",
+    "\\end{bmatrix}\n",
+    "$\n",
+    "\n",
+    "__Note:__ Although not demonstrated here, the same logic used for stiffness coefficients can also be applied to damping coefficients (ct_x, ct_y, ct_z, cr_x, cr_y, cr_z)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "CouplingElement(m=151.0, Ip=3.48, n=None)"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Mass at each station (e.g., hub mass of the coupling)\n",
+    "mass_left_station = 151 / 2\n",
+    "mass_right_station = 151 / 2\n",
+    "\n",
+    "# Polar moment of inertia of the coupling\n",
+    "Ip = 3.48\n",
+    "\n",
+    "# Torsional stiffness\n",
+    "torsional_stiffness = 3.04e6\n",
+    "\n",
+    "# Create the coupling element\n",
+    "coupling = rs.CouplingElement(\n",
+    "    m_l=mass_left_station,  # Mass on the left station (in kg)\n",
+    "    m_r=mass_right_station,  # Mass on the right station (in kg)\n",
+    "    Ip_l=Ip\n",
+    "    / 2,  # Polar moment of inertia on the left station (assuming equal distribution in kg·m²)\n",
+    "    Ip_r=Ip\n",
+    "    / 2,  # Polar moment of inertia on the right station (assuming equal distribution in kg·m²)\n",
+    "    kr_z=torsional_stiffness,  # Torsional stiffness (in N·m/rad)\n",
+    ")\n",
+    "coupling"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 2.3.3 Coupling all elements\n",
+    "\n",
+    "Combine all elements into a single list for the rotor model.\n",
+    "The elements must be in order."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[ShaftElement(L=0.3, idl=0.0, idr=0.0, odl=0.123,  odr=0.123, material='Steel', n=None),\n",
+       " ShaftElement(L=0.092, idl=0.0, idr=0.0, odl=0.15,  odr=0.15, material='Steel', n=None),\n",
+       " ShaftElement(L=0.2, idl=0.0, idr=0.0, odl=0.15,  odr=0.15, material='Steel', n=None),\n",
+       " ShaftElement(L=0.2, idl=0.0, idr=0.0, odl=0.15,  odr=0.15, material='Steel', n=None),\n",
+       " ShaftElement(L=0.092, idl=0.0, idr=0.0, odl=0.15,  odr=0.15, material='Steel', n=None),\n",
+       " ShaftElement(L=0.3, idl=0.0, idr=0.0, odl=0.123,  odr=0.123, material='Steel', n=None),\n",
+       " CouplingElement(m=151.0, Ip=3.48, n=None),\n",
+       " ShaftElement(L=0.08, idl=0.0, idr=0.0, odl=0.321,  odr=0.321, material='Steel', n=None),\n",
+       " ShaftElement(L=0.2, idl=0.0, idr=0.0, odl=0.321,  odr=0.321, material='Steel', n=None),\n",
+       " ShaftElement(L=0.2, idl=0.0, idr=0.0, odl=0.261,  odr=0.261, material='Steel', n=None),\n",
+       " ShaftElement(L=0.64, idl=0.0, idr=0.0, odl=0.261,  odr=0.261, material='Steel', n=None)]"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "shaft_elements = [*shaft1, coupling, *shaft2]\n",
+    "shaft_elements"
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -666,7 +855,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": 16,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.852258Z",
@@ -682,7 +871,7 @@
        "DiskElement(Id=0.329, Ip=0.178, m=32.58, color='Firebrick', n=0, scale_factor=1.0, tag='Disk')"
       ]
      },
-     "execution_count": 12,
+     "execution_count": 16,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -703,7 +892,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": 17,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.858420Z",
@@ -720,7 +909,7 @@
        " DiskElement(Id=0.17809, Ip=0.38373, m=35.8, color='Firebrick', n=4, scale_factor=1.0, tag=None)]"
       ]
      },
-     "execution_count": 13,
+     "execution_count": 17,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -746,7 +935,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": 18,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.865480Z",
@@ -763,7 +952,7 @@
        " DiskElement(Id=0.17809, Ip=0.38373, m=35.8, color='Firebrick', n=4, scale_factor=1.0, tag=None)]"
       ]
      },
-     "execution_count": 14,
+     "execution_count": 18,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -810,7 +999,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": 19,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.872858Z",
@@ -859,7 +1048,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": 20,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.878732Z",
@@ -876,7 +1065,7 @@
        " DiskElement(Id=5.5224, Ip=0.56007, m=128.38, color='Firebrick', n=4, scale_factor=1.0, tag=None)]"
       ]
      },
-     "execution_count": 16,
+     "execution_count": 20,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -903,7 +1092,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 17,
+   "execution_count": 21,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.888469Z",
@@ -920,7 +1109,7 @@
        " DiskElement(Id=5.5224, Ip=0.56007, m=128.38, color='Firebrick', n=4, scale_factor=1.0, tag=None)]"
       ]
      },
-     "execution_count": 17,
+     "execution_count": 21,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -963,7 +1152,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": 22,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.898793Z",
@@ -985,7 +1174,7 @@
        " DiskElement(Id=0.025, Ip=0.048, m=6.96, color='Firebrick', n=35, scale_factor=1, tag=None)]"
       ]
      },
-     "execution_count": 18,
+     "execution_count": 22,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -1048,7 +1237,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": 23,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.933249Z",
@@ -1100,7 +1289,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": 24,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.939716Z",
@@ -1181,7 +1370,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": 25,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.949823Z",
@@ -1242,7 +1431,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": 26,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:09.956539Z",
@@ -2187,7 +2376,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": 27,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.022418Z",
@@ -3203,7 +3392,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 24,
+   "execution_count": 28,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.032332Z",
@@ -4159,7 +4348,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 25,
+   "execution_count": 29,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.043025Z",
@@ -4184,7 +4373,7 @@
        " frequency=None, tag=None)"
       ]
      },
-     "execution_count": 25,
+     "execution_count": 29,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -4209,7 +4398,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 26,
+   "execution_count": 30,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.049684Z",
@@ -4223,18 +4412,18 @@
      "data": {
       "text/plain": [
        "BallBearingElement(n=0, n_link=None,\n",
-       " kxx=[46416883.847697675], kxy=[0.0],\n",
-       " kyx=[0.0], kyy=[100906269.23412538],\n",
-       " kzz=[0], cxx=[580.211048096221],\n",
+       " kxx=[np.float64(46416883.847697675)], kxy=[0.0],\n",
+       " kyx=[0.0], kyy=[np.float64(100906269.23412538)],\n",
+       " kzz=[0], cxx=[np.float64(580.211048096221)],\n",
        " cxy=[0.0], cyx=[0.0],\n",
-       " cyy=[1261.3283654265672], czz=[0],\n",
+       " cyy=[np.float64(1261.3283654265672)], czz=[0],\n",
        " mxx=[0], mxy=[0],\n",
        " myx=[0], myy=[0],\n",
        " mzz=[0],\n",
        " frequency=None, tag='ballbearing')"
       ]
      },
-     "execution_count": 26,
+     "execution_count": 30,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -4270,7 +4459,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 27,
+   "execution_count": 31,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.057753Z",
@@ -4284,18 +4473,18 @@
      "data": {
       "text/plain": [
        "RollerBearingElement(n=0, n_link=None,\n",
-       " kxx=[272821927.4006065], kxy=[0.0],\n",
-       " kyx=[0.0], kyy=[556779443.6747072],\n",
-       " kzz=[0], cxx=[3410.2740925075814],\n",
+       " kxx=[np.float64(272821927.4006065)], kxy=[0.0],\n",
+       " kyx=[0.0], kyy=[np.float64(556779443.6747072)],\n",
+       " kzz=[0], cxx=[np.float64(3410.2740925075814)],\n",
        " cxy=[0.0], cyx=[0.0],\n",
-       " cyy=[6959.74304593384], czz=[0],\n",
+       " cyy=[np.float64(6959.74304593384)], czz=[0],\n",
        " mxx=[0], mxy=[0],\n",
        " myx=[0], myy=[0],\n",
        " mzz=[0],\n",
        " frequency=None, tag='rollerbearing')"
       ]
      },
-     "execution_count": 27,
+     "execution_count": 31,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -4335,7 +4524,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 28,
+   "execution_count": 32,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.064205Z",
@@ -4350,18 +4539,18 @@
      "data": {
       "text/plain": [
        "MagneticBearingElement(n=0, n_link=None,\n",
-       " kxx=[-4640.623377181318], kxy=[0.0],\n",
-       " kyx=[0.0], kyy=[-4640.623377181318],\n",
-       " kzz=[0], cxx=[4.645268645827145],\n",
+       " kxx=[np.float64(-4640.623377181318)], kxy=[0.0],\n",
+       " kyx=[0.0], kyy=[np.float64(-4640.623377181318)],\n",
+       " kzz=[0], cxx=[np.float64(4.645268645827145)],\n",
        " cxy=[0.0], cyx=[0.0],\n",
-       " cyy=[4.645268645827145], czz=[0],\n",
+       " cyy=[np.float64(4.645268645827145)], czz=[0],\n",
        " mxx=[0], mxy=[0],\n",
        " myx=[0], myy=[0],\n",
        " mzz=[0],\n",
        " frequency=None, tag='magneticbearing')"
       ]
      },
-     "execution_count": 28,
+     "execution_count": 32,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -4419,7 +4608,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 29,
+   "execution_count": 33,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.072303Z",
@@ -4447,7 +4636,7 @@
        "  837.75804096  942.47779608 1047.1975512  1151.91730632], tag=None)"
       ]
      },
-     "execution_count": 29,
+     "execution_count": 33,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -4474,7 +4663,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 30,
+   "execution_count": 34,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.091977Z",
@@ -4509,7 +4698,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 31,
+   "execution_count": 35,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.096377Z",
@@ -4527,7 +4716,7 @@
        "       [0., 0., 2.]])"
       ]
      },
-     "execution_count": 31,
+     "execution_count": 35,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -4540,7 +4729,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 32,
+   "execution_count": 36,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.101806Z",
@@ -4558,7 +4747,7 @@
        "       [0., 0., 0.]])"
       ]
      },
-     "execution_count": 32,
+     "execution_count": 36,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -4594,7 +4783,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 33,
+   "execution_count": 37,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.107711Z",
@@ -8220,7 +8409,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 34,
+   "execution_count": 38,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.209475Z",
@@ -12324,7 +12513,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 35,
+   "execution_count": 39,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.302694Z",
@@ -15896,7 +16085,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 36,
+   "execution_count": 40,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.357835Z",
@@ -15925,7 +16114,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 37,
+   "execution_count": 41,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.612551Z",
@@ -31419,7 +31608,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 38,
+   "execution_count": 42,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.785364Z",
@@ -31448,7 +31637,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 39,
+   "execution_count": 43,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.821493Z",
@@ -31464,7 +31653,7 @@
        "True"
       ]
      },
-     "execution_count": 39,
+     "execution_count": 43,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -31504,7 +31693,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 40,
+   "execution_count": 44,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.864395Z",
@@ -31533,7 +31722,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 41,
+   "execution_count": 45,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.869015Z",
@@ -31571,7 +31760,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 42,
+   "execution_count": 46,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.873278Z",
@@ -31619,7 +31808,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 43,
+   "execution_count": 47,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.878245Z",
@@ -31685,7 +31874,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 44,
+   "execution_count": 48,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:10.883404Z",
@@ -31711,7 +31900,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 45,
+   "execution_count": 49,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:19.505216Z",
@@ -31741,20 +31930,20 @@
          "showlegend": true,
          "type": "scatter",
          "x": [
-          7095.678952434681,
-          7053.922204820403,
-          6066.34047403177,
-          6238.505236051112,
-          6189.552990960706,
-          6199.536289498481
+          6337.709616605819,
+          7095.678955570789,
+          6285.872952973383,
+          7053.92219961087,
+          6066.340473965502,
+          6189.552990761897
          ],
          "y": [
-          7095.678952434681,
-          7053.922204820403,
-          6066.34047403177,
-          6238.505236051112,
-          6189.552990960706,
-          6199.536289498481
+          6337.709616605819,
+          7095.678955570789,
+          6285.872952973383,
+          7053.92219961087,
+          6066.340473965502,
+          6189.552990761897
          ]
         },
         {
@@ -31762,26 +31951,37 @@
          "legendgroup": "Forward",
          "marker": {
           "color": [
-           394.20768309265475,
-           288.1619760201223,
-           77.75541305861691,
-           18.293232560985068,
-           0.48330202569732567,
-           0.4331574396189151,
-           0.3881976881639353,
-           0.34838024417851843,
-           0.31349579726032095,
-           0.28312923136631274,
-           0.25667266360656177,
-           0.23360543837881048,
-           0.21350054328661752,
-           0.19596797924116097,
-           0.18063563391850931,
-           0.16718112166802365,
-           0.15532889426932675,
-           0.1448444836598706,
-           0.1355287915241365,
-           0.12721282301469944
+           1037.0912771497185,
+           921.4057615327148,
+           827.0573827271369,
+           744.0008664445875,
+           668.0100423141349,
+           597.4402849880606,
+           531.1587295625097,
+           467.14900583566066,
+           401.24923457484687,
+           325.3758289110384,
+           214.6100795782158,
+           28.06561930655868,
+           15.129785204293976,
+           11.270854767852653,
+           9.161300762851582,
+           7.748696048899534,
+           6.7042240213448965,
+           5.898439576773788,
+           5.261420154919689,
+           4.749389488713092,
+           4.33242724836494,
+           3.988413673345152,
+           3.70233314244538,
+           3.4637148648255884,
+           3.263294255667014,
+           3.092628423349806,
+           2.945522108919731,
+           2.817348676391854,
+           2.704542817659362,
+           2.6042555188064656,
+           2.5140789061528026
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-up"
@@ -31791,6 +31991,17 @@
          "showlegend": false,
          "type": "scatter",
          "x": [
+          3008.028424436822,
+          3273.8171794002874,
+          3539.605934363753,
+          3805.3946893272177,
+          4071.183444290683,
+          4336.972199254148,
+          4602.760954217613,
+          4868.5497091810785,
+          5134.338464144544,
+          5400.127219108009,
+          5665.915974071474,
           5931.704729034939,
           6197.493483998405,
           6463.28223896187,
@@ -31813,26 +32024,37 @@
           10981.69107334078
          ],
          "y": [
-          315.22008794708984,
-          394.3165540309207,
-          1188.1827090372606,
-          4679.71035852595,
-          6203.904197151721,
-          6215.660934977263,
-          6229.503325250328,
-          6244.802510634905,
-          6260.974712938822,
-          6277.575679892675,
-          6294.375075105983,
-          6311.2290289673665,
-          6328.037209981436,
-          6344.658253970397,
-          6360.924795604858,
-          6376.726024389629,
-          6391.994604772081,
-          6406.693571677772,
-          6420.806993796813,
-          6434.333321374886
+          75.18729761146696,
+          93.79554077807404,
+          114.372984982292,
+          137.41966759717138,
+          163.29853425235945,
+          192.1316071309244,
+          223.89805788871007,
+          258.9334170943823,
+          299.44240948348676,
+          355.2141414594202,
+          489.348447745999,
+          3102.8835327456386,
+          5673.387318240745,
+          7515.351251455647,
+          9067.155468709296,
+          10437.578611222309,
+          11663.694552279634,
+          12749.122724217492,
+          13698.664374921464,
+          14522.538436306324,
+          15236.006508342343,
+          15858.503568826309,
+          16407.10708789264,
+          16896.153251835964,
+          17337.209039920428,
+          17738.648969102593,
+          18106.336264930214,
+          18444.334184950832,
+          18755.356300953677,
+          19041.055160303164,
+          19302.23673144957
          ]
         },
         {
@@ -31840,88 +32062,37 @@
          "legendgroup": "Forward",
          "marker": {
           "color": [
-           1037.09092410291,
-           1151.0210081241653,
-           1069.6068087395631,
-           988.3794251221992,
-           907.7975423018796,
-           828.6539171536059,
-           752.0788252600171,
-           679.2418999117735,
-           610.3552501752301,
-           543.5373226360143,
-           474.1346584753457
-          ],
-          "coloraxis": "coloraxis",
-          "symbol": "triangle-up"
-         },
-         "mode": "markers",
-         "name": "Forward",
-         "showlegend": false,
-         "type": "scatter",
-         "x": [
-          3008.028424436822,
-          3273.8171794002874,
-          3539.605934363753,
-          3805.3946893272177,
-          4071.183444290683,
-          4336.972199254148,
-          4602.760954217613,
-          4868.5497091810785,
-          5134.338464144544,
-          5400.127219108009,
-          5665.915974071474
-         ],
-         "y": [
-          75.18732299728948,
-          91.67148407538804,
-          105.32155989811638,
-          120.73827205306648,
-          138.09920920721518,
-          157.48864293324118,
-          178.77202947933185,
-          201.46742049633667,
-          224.88750857634545,
-          249.1395836572294,
-          276.6771342174356
-         ]
-        },
-        {
-         "hoverinfo": "none",
-         "legendgroup": "Forward",
-         "marker": {
-          "color": [
-           1232.5622624145064,
-           921.4054541593258,
-           827.057422029017,
-           744.0008925701703,
-           668.0100890077471,
-           597.4403284777286,
-           531.1586577479438,
-           467.148954443738,
-           401.2492246963775,
-           325.37581681866544,
-           214.61008795223768,
-           28.065619319725204,
-           15.129785188858158,
-           0.5995548246354069,
-           0.5386146510761148,
-           12.450222195261563,
-           9.756528795015114,
-           8.113746929465103,
-           6.982299755247614,
-           6.148646649073562,
-           5.507317336731712,
-           4.997773939392863,
-           4.584495133492097,
-           4.245355988471296,
-           3.963407351432451,
-           3.7246268104406375,
-           3.51910493575126,
-           3.3396672996386036,
-           3.1809693217412347,
-           3.038963049408969,
-           2.9106048954261423
+           1232.561264007337,
+           1151.0217092529438,
+           1069.6070274013762,
+           988.3795971518924,
+           907.797444933141,
+           828.6542430192301,
+           752.078778489477,
+           679.2419800471503,
+           610.355236766888,
+           543.5372687137666,
+           474.1346344418449,
+           394.20768520756025,
+           288.1619727222264,
+           77.75541794477331,
+           18.29323263554961,
+           12.450222117751112,
+           9.756528892365544,
+           8.11374696746641,
+           6.9822997756116445,
+           6.148646702121708,
+           5.507317310050555,
+           4.997773950070083,
+           4.584495133293842,
+           4.245355986478682,
+           3.963407355430262,
+           3.7246268100643247,
+           3.519104944673807,
+           3.339667310896423,
+           3.180969333090029,
+           3.038963032909508,
+           2.910604893932013
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-up"
@@ -31964,37 +32135,37 @@
           10981.69107334078
          ],
          "y": [
-          79.5799188460081,
-          93.7955721909617,
-          114.37297962281588,
-          137.41966289291588,
-          163.29852275305464,
-          192.13159356411265,
-          223.8980878940701,
-          258.9334457335007,
-          299.442416821886,
-          355.214154145223,
-          489.3484283041681,
-          3102.8835334347264,
-          5673.38732255569,
-          6189.565157376313,
-          6194.89050480645,
-          6696.729605755686,
-          8304.142888696693,
-          9671.011661011098,
-          10856.536389469073,
-          11892.359201551795,
-          12802.318389314509,
-          13609.615322694955,
-          14332.620153236048,
-          14986.117755423984,
-          15583.27480750784,
-          16135.259984431395,
-          16650.506143764185,
-          17135.52853828568,
-          17595.528269603466,
-          18034.81324599788,
-          18457.077330204003
+          79.5799832812108,
+          91.67142832409804,
+          105.32153831073757,
+          120.73825099389664,
+          138.0992240123612,
+          157.48858081708065,
+          178.77204081430543,
+          201.4673970755356,
+          224.8875135989757,
+          249.1396084871932,
+          276.67714793105347,
+          315.2200864648429,
+          394.3165585497322,
+          1188.182641168605,
+          4679.710332567746,
+          6696.729653473693,
+          8304.142840013825,
+          9671.011687149006,
+          10856.536339377706,
+          11892.359168159415,
+          12802.31842360364,
+          13609.61531467131,
+          14332.620145181265,
+          14986.117754388595,
+          15583.27480239054,
+          16135.260015390637,
+          16650.506120408732,
+          17135.52852854722,
+          17595.528287646735,
+          18034.81322625679,
+          18457.077341123877
          ]
         },
         {
@@ -32002,37 +32173,37 @@
          "legendgroup": "Forward",
          "marker": {
           "color": [
-           1.4562337723949017,
-           1.4187922659806134,
-           1.3727442556539844,
-           1.320976573016668,
-           1.264460401283006,
-           1.203013617788659,
-           1.1360222229305594,
-           1.063103157674292,
-           0.984620473163943,
-           0.9023477408715024,
-           0.819707269798452,
-           0.7402918003367184,
-           0.6666729491931986,
-           11.270854770028416,
-           9.161300771724031,
-           7.748696032950887,
-           6.704224022435567,
-           5.89843955191675,
-           5.26142017290215,
-           4.749389494143737,
-           4.332427237690978,
-           3.988413675581661,
-           3.702333144500896,
-           3.463714864673733,
-           3.2632942591102325,
-           3.0926284165175653,
-           2.9455221161037803,
-           2.817348681965862,
-           2.7045428182229823,
-           2.604255513576724,
-           2.5140789056869477
+           1.4562337743982643,
+           1.4187922647803048,
+           1.3727442564799544,
+           1.3209765729345406,
+           1.2644604013326493,
+           1.2030136189476597,
+           1.1360222215711764,
+           1.0631031575435832,
+           0.9846204730612512,
+           0.9023477403325144,
+           0.8197072698839603,
+           0.7402918002026742,
+           0.6666729491514013,
+           0.5995548244120641,
+           0.5386146512445719,
+           0.48330202557712376,
+           0.4331574396293457,
+           0.3881976876458122,
+           0.34838024438611487,
+           0.31349579741536515,
+           0.28312923128000833,
+           0.25667266364532604,
+           0.23360543823570976,
+           0.2135005432931564,
+           0.19596797931655768,
+           0.18063563388373433,
+           0.16718112176476752,
+           0.15532889424193289,
+           0.14484448365837072,
+           0.13552879153747513,
+           0.12721282304998494
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-up"
@@ -32075,37 +32246,37 @@
           10981.69107334078
          ],
          "y": [
-          7022.384731987466,
-          6880.434383389981,
-          6758.9842457651375,
-          6653.225336264173,
-          6559.646837296851,
-          6476.185494274515,
-          6402.104185123428,
-          6337.670647859902,
-          6283.7089924171905,
-          6241.8750545841285,
-          6213.092570645359,
-          6196.312254102064,
-          6189.344837989213,
-          7515.35125799258,
-          9067.155464027806,
-          10437.578616037008,
-          11663.694573163344,
-          12749.122771798638,
-          13698.664357792351,
-          14522.538463617611,
-          15236.00650600934,
-          15858.503575973904,
-          16407.107086567932,
-          16896.153245290487,
-          17337.20903967181,
-          17738.648992007442,
-          18106.336258219664,
-          18444.334194260868,
-          18755.356327720667,
-          19041.055119491124,
-          19302.23673964943
+          7022.384727959478,
+          6880.4343839895055,
+          6758.984246013405,
+          6653.225337195088,
+          6559.646836665363,
+          6476.185495315607,
+          6402.104185445512,
+          6337.67064846987,
+          6283.708992628799,
+          6241.875054377215,
+          6213.092570358875,
+          6196.312254338533,
+          6189.344837771628,
+          6189.565157850574,
+          6194.890504887366,
+          6203.904196966829,
+          6215.660935387944,
+          6229.503325477378,
+          6244.802510692876,
+          6260.974713329368,
+          6277.575679840952,
+          6294.375075207776,
+          6311.229028987094,
+          6328.037209896754,
+          6344.65825407951,
+          6360.924795654762,
+          6376.726024460485,
+          6391.994604906927,
+          6406.693571730182,
+          6420.806993558993,
+          6434.3333215248085
          ]
         },
         {
@@ -32113,37 +32284,37 @@
          "legendgroup": "Backward",
          "marker": {
           "color": [
-           260929.5739031084,
-           113975.2172126299,
-           53901.513055188174,
-           26999.13100355137,
-           14135.240800668873,
-           7675.49249215858,
-           4298.632320824814,
-           2462.561841584925,
-           1415.4002164781127,
-           694.1159684693837,
-           591.0482535286383,
-           473.21360584627143,
-           328.0505982050993,
-           80.35788180200035,
-           18.443902942698212,
-           0.4391117255390645,
-           0.39162266557106895,
-           0.3492183192916987,
-           0.31180775764094787,
-           0.2791472590931447,
-           0.25080904353804373,
-           0.2261978936008312,
-           0.2048048086789575,
-           0.18621134452625424,
-           0.17003838419364573,
-           0.15592892914241094,
-           0.143575373477173,
-           0.13271599460852507,
-           0.12312904157484644,
-           0.11462699459651952,
-           0.1070513382109902
+           260930.6230645541,
+           113975.50451057137,
+           53901.48442881131,
+           26999.130505421715,
+           14135.23698824342,
+           7675.490519820049,
+           4298.63376452703,
+           2462.5622400309317,
+           1415.4002688588505,
+           782.3757910829112,
+           344.9207007912109,
+           29.52265928024977,
+           15.556529236996091,
+           11.504149517742947,
+           9.305335382570838,
+           7.836714863872972,
+           6.751235014157976,
+           5.913190715352015,
+           5.249716760458412,
+           4.715367614566623,
+           4.279092717622462,
+           3.917842279598128,
+           3.6158383402836334,
+           3.361930024575747,
+           3.1462541025997175,
+           2.9598982384444983,
+           2.7963132319783246,
+           2.65065310410167,
+           2.519313893520583,
+           2.3996364333524904,
+           2.2896732824681267
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-down"
@@ -32186,37 +32357,37 @@
           10981.69107334078
          ],
          "y": [
-          0.03874131295587192,
-          0.1082017467623715,
-          0.2744885225235201,
-          0.6509401279512244,
-          1.469042793802262,
-          3.190447807546445,
-          6.725459230756434,
-          13.92177458464898,
-          28.997737669530775,
-          50.176113028465885,
-          68.91924516106505,
-          101.7070075153897,
-          177.47506268951128,
-          970.2327156662784,
-          4462.95748302602,
-          6059.704257118711,
-          6065.491244803673,
-          6073.074799292416,
-          6081.86259309378,
-          6091.313103721032,
-          6101.019280169939,
-          6110.7718056713,
-          6120.441198223894,
-          6129.938632589339,
-          6139.143702983904,
-          6147.917877102533,
-          6156.173502324563,
-          6163.861466679442,
-          6170.959238180215,
-          6177.462389185966,
-          6183.378599175126
+          0.03874116257013536,
+          0.10820147567242036,
+          0.2744886675078465,
+          0.6509401396311948,
+          1.4690431898831462,
+          3.190448628847891,
+          6.7254569693552915,
+          13.921772335813252,
+          28.99773659687724,
+          63.84077444355473,
+          183.32281345062495,
+          2789.7842549828547,
+          5361.243436342098,
+          7212.19828361979,
+          8780.341041016405,
+          10172.68333701814,
+          11423.412977727983,
+          12532.33452162077,
+          13501.070272662111,
+          14337.934936168298,
+          15057.630853877708,
+          15680.10781114994,
+          16223.57772320495,
+          16703.934746988703,
+          17134.246719841845,
+          17524.07944813176,
+          17880.581798035313,
+          18209.28449519199,
+          18514.526927011877,
+          18799.637883968688,
+          19067.001789883525
          ]
         },
         {
@@ -32224,17 +32395,37 @@
          "legendgroup": "Backward",
          "marker": {
           "color": [
-           1294.5865227786555,
-           1240.346182223751,
-           1186.2561303093696,
-           1130.7116865703445,
-           1072.4213822134334,
-           1010.2133214023124,
-           942.8651847453287,
-           868.9043920141698,
-           786.3811458831672,
-           782.3757571612272,
-           344.92071429633444
+           1294.5864313937468,
+           1240.3462697776192,
+           1186.2561597406093,
+           1130.7117079883355,
+           1072.421347702547,
+           1010.2133904003116,
+           942.8651533691838,
+           868.9044224291606,
+           786.3811474102548,
+           694.115941905118,
+           591.0482407263339,
+           473.2136050744669,
+           328.05059738516866,
+           80.3578869814441,
+           18.443902929726026,
+           12.524244626996705,
+           9.803892454284243,
+           8.14713368407733,
+           7.006885790025332,
+           6.167136172549353,
+           5.52141332435585,
+           5.008758635199403,
+           4.593541505758233,
+           4.2537160247040875,
+           3.97247099126618,
+           3.735927446218814,
+           3.5343426115631917,
+           3.3606622992988577,
+           3.2095349286903954,
+           3.0767071721831787,
+           2.958673795072262
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-down"
@@ -32254,56 +32445,7 @@
           4868.5497091810785,
           5134.338464144544,
           5400.127219108009,
-          5665.915974071474
-         ],
-         "y": [
-          6.916251770582552,
-          8.641677948132095,
-          10.631757101595277,
-          12.981122388538532,
-          15.821243184007775,
-          19.343722207843847,
-          23.84354950662535,
-          29.806096767986425,
-          38.09338495007412,
-          63.84077725179257,
-          183.3228063780888
-         ]
-        },
-        {
-         "hoverinfo": "none",
-         "legendgroup": "Backward",
-         "marker": {
-          "color": [
-           29.52265932385764,
-           15.556529223641752,
-           0.5499228500953314,
-           0.4917197974830755,
-           12.524244614273249,
-           9.80389240431753,
-           8.147133597223236,
-           7.006885828219548,
-           6.167136170390446,
-           5.521413306152376,
-           5.008758638288699,
-           4.593541509333816,
-           4.253716025960588,
-           3.9724709931124056,
-           3.7359274392394095,
-           3.534342619370252,
-           3.360662307004781,
-           3.209534933380761,
-           3.076707168628,
-           2.9586737909166456
-          ],
-          "coloraxis": "coloraxis",
-          "symbol": "triangle-down"
-         },
-         "mode": "markers",
-         "name": "Backward",
-         "showlegend": false,
-         "type": "scatter",
-         "x": [
+          5665.915974071474,
           5931.704729034939,
           6197.493483998405,
           6463.28223896187,
@@ -32326,26 +32468,37 @@
           10981.69107334078
          ],
          "y": [
-          2789.784249551724,
-          5361.2434389904665,
-          6056.282472022366,
-          6056.339798337356,
-          6483.624837260364,
-          8097.177568495898,
-          9472.291096097852,
-          10667.69165962968,
-          11714.59023150467,
-          12636.49303643663,
-          13456.407427705117,
-          14192.499023571949,
-          14859.228463489646,
-          15469.38095895932,
-          16033.65223039236,
-          16559.66606378202,
-          17052.76597365335,
-          17516.678274107624,
-          17954.06929628721,
-          18366.9981217601
+          6.916252258531415,
+          8.641677337274945,
+          10.631756838168588,
+          12.981122142788651,
+          15.821243694455866,
+          19.343720889988024,
+          23.84355029201276,
+          29.80609571474278,
+          38.093384871029976,
+          50.176114940660554,
+          68.91924667737344,
+          101.70700765749116,
+          177.4750631433228,
+          970.2326498153436,
+          4462.957495739877,
+          6483.624811925941,
+          8097.177568026504,
+          9472.291048134788,
+          10667.691699962746,
+          11714.590277406009,
+          12636.492996285057,
+          13456.407441084724,
+          14192.49902344628,
+          14859.228462737556,
+          15469.380962930683,
+          16033.652244416897,
+          16559.666071481588,
+          17052.765990326945,
+          17516.678307557922,
+          17954.069263925085,
+          18366.998114595208
          ]
         },
         {
@@ -32353,37 +32506,37 @@
          "legendgroup": "Backward",
          "marker": {
           "color": [
-           1.4125027953136364,
-           1.3711002009673563,
-           1.3217172483743858,
-           1.2670517839518778,
-           1.2080039938091005,
-           1.1444446007809002,
-           1.075914608135358,
-           1.0022328609664477,
-           0.923929514886497,
-           0.8428216366281731,
-           0.7621566456291103,
-           0.6852199910476683,
-           0.6142944406864412,
-           11.504149533916548,
-           9.305335394305926,
-           7.836714848274998,
-           6.751235029538587,
-           5.913190722896813,
-           5.249716764591721,
-           4.715367624593478,
-           4.279092714485501,
-           3.91784228154504,
-           3.6158383407081582,
-           3.3619300234361016,
-           3.146254103373068,
-           2.959898240898631,
-           2.7963132314589036,
-           2.650653105747211,
-           2.519313895549562,
-           2.3996364285462533,
-           2.2896732845537966
+           1.412502797578738,
+           1.3711002021027523,
+           1.3217172479802477,
+           1.2670517836008863,
+           1.2080039928569088,
+           1.144444600974539,
+           1.075914608509693,
+           1.0022328614934997,
+           0.9239295149566314,
+           0.8428216367480568,
+           0.7621566453438996,
+           0.6852199911851398,
+           0.6142944407426233,
+           0.5499228502853867,
+           0.4917197976741892,
+           0.439111725192416,
+           0.3916226658049414,
+           0.34921831933508085,
+           0.31180775787849085,
+           0.27914725930601225,
+           0.2508090433096802,
+           0.22619789366283677,
+           0.20480480880857904,
+           0.18621134457112823,
+           0.1700383841352691,
+           0.15592892911790987,
+           0.1435753734445833,
+           0.13271599469289616,
+           0.12312904164047866,
+           0.11462699459710128,
+           0.1070513381182158
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-down"
@@ -32426,37 +32579,37 @@
           10981.69107334078
          ],
          "y": [
-          6916.878414813508,
-          6773.543050013675,
-          6650.504146191023,
-          6543.075818649211,
-          6447.90185820154,
-          6363.028659693789,
-          6287.7327057084985,
-          6222.173997187511,
-          6166.960704793608,
-          6123.40390778512,
-          6092.122494193517,
-          6071.976955514872,
-          6060.849796113008,
-          7212.198271373247,
-          8780.341033827803,
-          10172.68334602568,
-          11423.41295561772,
-          12532.33449324797,
-          13501.070278885914,
-          14337.934925696807,
-          15057.63085350062,
-          15680.107814157764,
-          16223.57772897563,
-          16703.934745351973,
-          17134.246719740062,
-          17524.07944459087,
-          17880.581801463013,
-          18209.284496563036,
-          18514.5269297093,
-          18799.63787620342,
-          19067.0017878122
+          6916.878414881941,
+          6773.543052824832,
+          6650.504147140471,
+          6543.075819313423,
+          6447.901858226217,
+          6363.028661360778,
+          6287.732704590799,
+          6222.173997023632,
+          6166.960704715362,
+          6123.40390737707,
+          6092.1224942756635,
+          6071.976955577278,
+          6060.849795915919,
+          6056.2824720228045,
+          6056.339798333127,
+          6059.704257175552,
+          6065.491244414916,
+          6073.074798602869,
+          6081.862593306162,
+          6091.313103520541,
+          6101.019280199866,
+          6110.771805674974,
+          6120.441198284279,
+          6129.938632523526,
+          6139.143703064118,
+          6147.917877012829,
+          6156.173502424005,
+          6163.861466753642,
+          6170.959238136233,
+          6177.462389078369,
+          6183.37859930542
          ]
         },
         {
@@ -33655,7 +33808,6 @@
          ]
         },
         "legend": {
-         "itemsizing": "constant",
          "orientation": "h",
          "x": 0.5,
          "xanchor": "center",
@@ -34510,7 +34662,7 @@
         "yaxis": {
          "range": [
           0,
-          21232.460413614375
+          21232.46040459453
          ],
          "title": {
           "text": "Natural Frequencies (RPM)"
@@ -34538,7 +34690,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 46,
+   "execution_count": 50,
    "metadata": {
     "execution": {
      "iopub.execute_input": "2023-05-04T01:05:19.532208Z",
@@ -34567,20 +34719,20 @@
          "showlegend": true,
          "type": "scatter",
          "x": [
-          7095.678952434681,
-          7053.922204820403,
-          6066.34047403177,
-          6238.505236051112,
-          6189.552990960706,
-          6199.536289498481
+          6337.709616605819,
+          7095.678955570789,
+          6285.872952973383,
+          7053.92219961087,
+          6066.340473965502,
+          6189.552990761897
          ],
          "y": [
-          7095.678952434681,
-          7053.922204820403,
-          6066.34047403177,
-          6238.505236051112,
-          6189.552990960706,
-          6199.536289498481
+          6337.709616605819,
+          7095.678955570789,
+          6285.872952973383,
+          7053.92219961087,
+          6066.340473965502,
+          6189.552990761897
          ]
         },
         {
@@ -34588,26 +34740,37 @@
          "legendgroup": "Forward",
          "marker": {
           "color": [
-           394.20768309265475,
-           288.1619760201223,
-           77.75541305861691,
-           18.293232560985068,
-           0.48330202569732567,
-           0.4331574396189151,
-           0.3881976881639353,
-           0.34838024417851843,
-           0.31349579726032095,
-           0.28312923136631274,
-           0.25667266360656177,
-           0.23360543837881048,
-           0.21350054328661752,
-           0.19596797924116097,
-           0.18063563391850931,
-           0.16718112166802365,
-           0.15532889426932675,
-           0.1448444836598706,
-           0.1355287915241365,
-           0.12721282301469944
+           1037.0912771497185,
+           921.4057615327148,
+           827.0573827271369,
+           744.0008664445875,
+           668.0100423141349,
+           597.4402849880606,
+           531.1587295625097,
+           467.14900583566066,
+           401.24923457484687,
+           325.3758289110384,
+           214.6100795782158,
+           28.06561930655868,
+           15.129785204293976,
+           11.270854767852653,
+           9.161300762851582,
+           7.748696048899534,
+           6.7042240213448965,
+           5.898439576773788,
+           5.261420154919689,
+           4.749389488713092,
+           4.33242724836494,
+           3.988413673345152,
+           3.70233314244538,
+           3.4637148648255884,
+           3.263294255667014,
+           3.092628423349806,
+           2.945522108919731,
+           2.817348676391854,
+           2.704542817659362,
+           2.6042555188064656,
+           2.5140789061528026
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-up"
@@ -34617,6 +34780,17 @@
          "showlegend": false,
          "type": "scatter",
          "x": [
+          3008.028424436822,
+          3273.8171794002874,
+          3539.605934363753,
+          3805.3946893272177,
+          4071.183444290683,
+          4336.972199254148,
+          4602.760954217613,
+          4868.5497091810785,
+          5134.338464144544,
+          5400.127219108009,
+          5665.915974071474,
           5931.704729034939,
           6197.493483998405,
           6463.28223896187,
@@ -34639,77 +34813,37 @@
           10981.69107334078
          ],
          "y": [
-          315.22008794708984,
-          394.3165540309207,
-          1188.1827090372606,
-          4679.71035852595,
-          6203.904197151721,
-          6215.660934977263,
-          6229.503325250328,
-          6244.802510634905,
-          6260.974712938822,
-          6277.575679892675,
-          6294.375075105983,
-          6311.2290289673665,
-          6328.037209981436,
-          6344.658253970397,
-          6360.924795604858,
-          6376.726024389629,
-          6391.994604772081,
-          6406.693571677772,
-          6420.806993796813,
-          6434.333321374886
-         ]
-        },
-        {
-         "hoverinfo": "none",
-         "legendgroup": "Forward",
-         "marker": {
-          "color": [
-           1037.09092410291,
-           1151.0210081241653,
-           1069.6068087395631,
-           988.3794251221992,
-           907.7975423018796,
-           828.6539171536059,
-           752.0788252600171,
-           679.2418999117735,
-           610.3552501752301,
-           543.5373226360143,
-           474.1346584753457
-          ],
-          "coloraxis": "coloraxis",
-          "symbol": "triangle-up"
-         },
-         "mode": "markers",
-         "name": "Forward",
-         "showlegend": false,
-         "type": "scatter",
-         "x": [
-          3008.028424436822,
-          3273.8171794002874,
-          3539.605934363753,
-          3805.3946893272177,
-          4071.183444290683,
-          4336.972199254148,
-          4602.760954217613,
-          4868.5497091810785,
-          5134.338464144544,
-          5400.127219108009,
-          5665.915974071474
-         ],
-         "y": [
-          75.18732299728948,
-          91.67148407538804,
-          105.32155989811638,
-          120.73827205306648,
-          138.09920920721518,
-          157.48864293324118,
-          178.77202947933185,
-          201.46742049633667,
-          224.88750857634545,
-          249.1395836572294,
-          276.6771342174356
+          75.18729761146696,
+          93.79554077807404,
+          114.372984982292,
+          137.41966759717138,
+          163.29853425235945,
+          192.1316071309244,
+          223.89805788871007,
+          258.9334170943823,
+          299.44240948348676,
+          355.2141414594202,
+          489.348447745999,
+          3102.8835327456386,
+          5673.387318240745,
+          7515.351251455647,
+          9067.155468709296,
+          10437.578611222309,
+          11663.694552279634,
+          12749.122724217492,
+          13698.664374921464,
+          14522.538436306324,
+          15236.006508342343,
+          15858.503568826309,
+          16407.10708789264,
+          16896.153251835964,
+          17337.209039920428,
+          17738.648969102593,
+          18106.336264930214,
+          18444.334184950832,
+          18755.356300953677,
+          19041.055160303164,
+          19302.23673144957
          ]
         },
         {
@@ -34717,37 +34851,37 @@
          "legendgroup": "Forward",
          "marker": {
           "color": [
-           1232.5622624145064,
-           921.4054541593258,
-           827.057422029017,
-           744.0008925701703,
-           668.0100890077471,
-           597.4403284777286,
-           531.1586577479438,
-           467.148954443738,
-           401.2492246963775,
-           325.37581681866544,
-           214.61008795223768,
-           28.065619319725204,
-           15.129785188858158,
-           0.5995548246354069,
-           0.5386146510761148,
-           12.450222195261563,
-           9.756528795015114,
-           8.113746929465103,
-           6.982299755247614,
-           6.148646649073562,
-           5.507317336731712,
-           4.997773939392863,
-           4.584495133492097,
-           4.245355988471296,
-           3.963407351432451,
-           3.7246268104406375,
-           3.51910493575126,
-           3.3396672996386036,
-           3.1809693217412347,
-           3.038963049408969,
-           2.9106048954261423
+           1232.561264007337,
+           1151.0217092529438,
+           1069.6070274013762,
+           988.3795971518924,
+           907.797444933141,
+           828.6542430192301,
+           752.078778489477,
+           679.2419800471503,
+           610.355236766888,
+           543.5372687137666,
+           474.1346344418449,
+           394.20768520756025,
+           288.1619727222264,
+           77.75541794477331,
+           18.29323263554961,
+           12.450222117751112,
+           9.756528892365544,
+           8.11374696746641,
+           6.9822997756116445,
+           6.148646702121708,
+           5.507317310050555,
+           4.997773950070083,
+           4.584495133293842,
+           4.245355986478682,
+           3.963407355430262,
+           3.7246268100643247,
+           3.519104944673807,
+           3.339667310896423,
+           3.180969333090029,
+           3.038963032909508,
+           2.910604893932013
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-up"
@@ -34790,37 +34924,37 @@
           10981.69107334078
          ],
          "y": [
-          79.5799188460081,
-          93.7955721909617,
-          114.37297962281588,
-          137.41966289291588,
-          163.29852275305464,
-          192.13159356411265,
-          223.8980878940701,
-          258.9334457335007,
-          299.442416821886,
-          355.214154145223,
-          489.3484283041681,
-          3102.8835334347264,
-          5673.38732255569,
-          6189.565157376313,
-          6194.89050480645,
-          6696.729605755686,
-          8304.142888696693,
-          9671.011661011098,
-          10856.536389469073,
-          11892.359201551795,
-          12802.318389314509,
-          13609.615322694955,
-          14332.620153236048,
-          14986.117755423984,
-          15583.27480750784,
-          16135.259984431395,
-          16650.506143764185,
-          17135.52853828568,
-          17595.528269603466,
-          18034.81324599788,
-          18457.077330204003
+          79.5799832812108,
+          91.67142832409804,
+          105.32153831073757,
+          120.73825099389664,
+          138.0992240123612,
+          157.48858081708065,
+          178.77204081430543,
+          201.4673970755356,
+          224.8875135989757,
+          249.1396084871932,
+          276.67714793105347,
+          315.2200864648429,
+          394.3165585497322,
+          1188.182641168605,
+          4679.710332567746,
+          6696.729653473693,
+          8304.142840013825,
+          9671.011687149006,
+          10856.536339377706,
+          11892.359168159415,
+          12802.31842360364,
+          13609.61531467131,
+          14332.620145181265,
+          14986.117754388595,
+          15583.27480239054,
+          16135.260015390637,
+          16650.506120408732,
+          17135.52852854722,
+          17595.528287646735,
+          18034.81322625679,
+          18457.077341123877
          ]
         },
         {
@@ -34828,37 +34962,37 @@
          "legendgroup": "Forward",
          "marker": {
           "color": [
-           1.4562337723949017,
-           1.4187922659806134,
-           1.3727442556539844,
-           1.320976573016668,
-           1.264460401283006,
-           1.203013617788659,
-           1.1360222229305594,
-           1.063103157674292,
-           0.984620473163943,
-           0.9023477408715024,
-           0.819707269798452,
-           0.7402918003367184,
-           0.6666729491931986,
-           11.270854770028416,
-           9.161300771724031,
-           7.748696032950887,
-           6.704224022435567,
-           5.89843955191675,
-           5.26142017290215,
-           4.749389494143737,
-           4.332427237690978,
-           3.988413675581661,
-           3.702333144500896,
-           3.463714864673733,
-           3.2632942591102325,
-           3.0926284165175653,
-           2.9455221161037803,
-           2.817348681965862,
-           2.7045428182229823,
-           2.604255513576724,
-           2.5140789056869477
+           1.4562337743982643,
+           1.4187922647803048,
+           1.3727442564799544,
+           1.3209765729345406,
+           1.2644604013326493,
+           1.2030136189476597,
+           1.1360222215711764,
+           1.0631031575435832,
+           0.9846204730612512,
+           0.9023477403325144,
+           0.8197072698839603,
+           0.7402918002026742,
+           0.6666729491514013,
+           0.5995548244120641,
+           0.5386146512445719,
+           0.48330202557712376,
+           0.4331574396293457,
+           0.3881976876458122,
+           0.34838024438611487,
+           0.31349579741536515,
+           0.28312923128000833,
+           0.25667266364532604,
+           0.23360543823570976,
+           0.2135005432931564,
+           0.19596797931655768,
+           0.18063563388373433,
+           0.16718112176476752,
+           0.15532889424193289,
+           0.14484448365837072,
+           0.13552879153747513,
+           0.12721282304998494
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-up"
@@ -34901,37 +35035,37 @@
           10981.69107334078
          ],
          "y": [
-          7022.384731987466,
-          6880.434383389981,
-          6758.9842457651375,
-          6653.225336264173,
-          6559.646837296851,
-          6476.185494274515,
-          6402.104185123428,
-          6337.670647859902,
-          6283.7089924171905,
-          6241.8750545841285,
-          6213.092570645359,
-          6196.312254102064,
-          6189.344837989213,
-          7515.35125799258,
-          9067.155464027806,
-          10437.578616037008,
-          11663.694573163344,
-          12749.122771798638,
-          13698.664357792351,
-          14522.538463617611,
-          15236.00650600934,
-          15858.503575973904,
-          16407.107086567932,
-          16896.153245290487,
-          17337.20903967181,
-          17738.648992007442,
-          18106.336258219664,
-          18444.334194260868,
-          18755.356327720667,
-          19041.055119491124,
-          19302.23673964943
+          7022.384727959478,
+          6880.4343839895055,
+          6758.984246013405,
+          6653.225337195088,
+          6559.646836665363,
+          6476.185495315607,
+          6402.104185445512,
+          6337.67064846987,
+          6283.708992628799,
+          6241.875054377215,
+          6213.092570358875,
+          6196.312254338533,
+          6189.344837771628,
+          6189.565157850574,
+          6194.890504887366,
+          6203.904196966829,
+          6215.660935387944,
+          6229.503325477378,
+          6244.802510692876,
+          6260.974713329368,
+          6277.575679840952,
+          6294.375075207776,
+          6311.229028987094,
+          6328.037209896754,
+          6344.65825407951,
+          6360.924795654762,
+          6376.726024460485,
+          6391.994604906927,
+          6406.693571730182,
+          6420.806993558993,
+          6434.3333215248085
          ]
         },
         {
@@ -34939,37 +35073,37 @@
          "legendgroup": "Backward",
          "marker": {
           "color": [
-           260929.5739031084,
-           113975.2172126299,
-           53901.513055188174,
-           26999.13100355137,
-           14135.240800668873,
-           7675.49249215858,
-           4298.632320824814,
-           2462.561841584925,
-           1415.4002164781127,
-           694.1159684693837,
-           591.0482535286383,
-           473.21360584627143,
-           328.0505982050993,
-           80.35788180200035,
-           18.443902942698212,
-           0.4391117255390645,
-           0.39162266557106895,
-           0.3492183192916987,
-           0.31180775764094787,
-           0.2791472590931447,
-           0.25080904353804373,
-           0.2261978936008312,
-           0.2048048086789575,
-           0.18621134452625424,
-           0.17003838419364573,
-           0.15592892914241094,
-           0.143575373477173,
-           0.13271599460852507,
-           0.12312904157484644,
-           0.11462699459651952,
-           0.1070513382109902
+           260930.6230645541,
+           113975.50451057137,
+           53901.48442881131,
+           26999.130505421715,
+           14135.23698824342,
+           7675.490519820049,
+           4298.63376452703,
+           2462.5622400309317,
+           1415.4002688588505,
+           782.3757910829112,
+           344.9207007912109,
+           29.52265928024977,
+           15.556529236996091,
+           11.504149517742947,
+           9.305335382570838,
+           7.836714863872972,
+           6.751235014157976,
+           5.913190715352015,
+           5.249716760458412,
+           4.715367614566623,
+           4.279092717622462,
+           3.917842279598128,
+           3.6158383402836334,
+           3.361930024575747,
+           3.1462541025997175,
+           2.9598982384444983,
+           2.7963132319783246,
+           2.65065310410167,
+           2.519313893520583,
+           2.3996364333524904,
+           2.2896732824681267
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-down"
@@ -35012,37 +35146,37 @@
           10981.69107334078
          ],
          "y": [
-          0.03874131295587192,
-          0.1082017467623715,
-          0.2744885225235201,
-          0.6509401279512244,
-          1.469042793802262,
-          3.190447807546445,
-          6.725459230756434,
-          13.92177458464898,
-          28.997737669530775,
-          50.176113028465885,
-          68.91924516106505,
-          101.7070075153897,
-          177.47506268951128,
-          970.2327156662784,
-          4462.95748302602,
-          6059.704257118711,
-          6065.491244803673,
-          6073.074799292416,
-          6081.86259309378,
-          6091.313103721032,
-          6101.019280169939,
-          6110.7718056713,
-          6120.441198223894,
-          6129.938632589339,
-          6139.143702983904,
-          6147.917877102533,
-          6156.173502324563,
-          6163.861466679442,
-          6170.959238180215,
-          6177.462389185966,
-          6183.378599175126
+          0.03874116257013536,
+          0.10820147567242036,
+          0.2744886675078465,
+          0.6509401396311948,
+          1.4690431898831462,
+          3.190448628847891,
+          6.7254569693552915,
+          13.921772335813252,
+          28.99773659687724,
+          63.84077444355473,
+          183.32281345062495,
+          2789.7842549828547,
+          5361.243436342098,
+          7212.19828361979,
+          8780.341041016405,
+          10172.68333701814,
+          11423.412977727983,
+          12532.33452162077,
+          13501.070272662111,
+          14337.934936168298,
+          15057.630853877708,
+          15680.10781114994,
+          16223.57772320495,
+          16703.934746988703,
+          17134.246719841845,
+          17524.07944813176,
+          17880.581798035313,
+          18209.28449519199,
+          18514.526927011877,
+          18799.637883968688,
+          19067.001789883525
          ]
         },
         {
@@ -35050,17 +35184,37 @@
          "legendgroup": "Backward",
          "marker": {
           "color": [
-           1294.5865227786555,
-           1240.346182223751,
-           1186.2561303093696,
-           1130.7116865703445,
-           1072.4213822134334,
-           1010.2133214023124,
-           942.8651847453287,
-           868.9043920141698,
-           786.3811458831672,
-           782.3757571612272,
-           344.92071429633444
+           1294.5864313937468,
+           1240.3462697776192,
+           1186.2561597406093,
+           1130.7117079883355,
+           1072.421347702547,
+           1010.2133904003116,
+           942.8651533691838,
+           868.9044224291606,
+           786.3811474102548,
+           694.115941905118,
+           591.0482407263339,
+           473.2136050744669,
+           328.05059738516866,
+           80.3578869814441,
+           18.443902929726026,
+           12.524244626996705,
+           9.803892454284243,
+           8.14713368407733,
+           7.006885790025332,
+           6.167136172549353,
+           5.52141332435585,
+           5.008758635199403,
+           4.593541505758233,
+           4.2537160247040875,
+           3.97247099126618,
+           3.735927446218814,
+           3.5343426115631917,
+           3.3606622992988577,
+           3.2095349286903954,
+           3.0767071721831787,
+           2.958673795072262
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-down"
@@ -35080,56 +35234,7 @@
           4868.5497091810785,
           5134.338464144544,
           5400.127219108009,
-          5665.915974071474
-         ],
-         "y": [
-          6.916251770582552,
-          8.641677948132095,
-          10.631757101595277,
-          12.981122388538532,
-          15.821243184007775,
-          19.343722207843847,
-          23.84354950662535,
-          29.806096767986425,
-          38.09338495007412,
-          63.84077725179257,
-          183.3228063780888
-         ]
-        },
-        {
-         "hoverinfo": "none",
-         "legendgroup": "Backward",
-         "marker": {
-          "color": [
-           29.52265932385764,
-           15.556529223641752,
-           0.5499228500953314,
-           0.4917197974830755,
-           12.524244614273249,
-           9.80389240431753,
-           8.147133597223236,
-           7.006885828219548,
-           6.167136170390446,
-           5.521413306152376,
-           5.008758638288699,
-           4.593541509333816,
-           4.253716025960588,
-           3.9724709931124056,
-           3.7359274392394095,
-           3.534342619370252,
-           3.360662307004781,
-           3.209534933380761,
-           3.076707168628,
-           2.9586737909166456
-          ],
-          "coloraxis": "coloraxis",
-          "symbol": "triangle-down"
-         },
-         "mode": "markers",
-         "name": "Backward",
-         "showlegend": false,
-         "type": "scatter",
-         "x": [
+          5665.915974071474,
           5931.704729034939,
           6197.493483998405,
           6463.28223896187,
@@ -35152,26 +35257,37 @@
           10981.69107334078
          ],
          "y": [
-          2789.784249551724,
-          5361.2434389904665,
-          6056.282472022366,
-          6056.339798337356,
-          6483.624837260364,
-          8097.177568495898,
-          9472.291096097852,
-          10667.69165962968,
-          11714.59023150467,
-          12636.49303643663,
-          13456.407427705117,
-          14192.499023571949,
-          14859.228463489646,
-          15469.38095895932,
-          16033.65223039236,
-          16559.66606378202,
-          17052.76597365335,
-          17516.678274107624,
-          17954.06929628721,
-          18366.9981217601
+          6.916252258531415,
+          8.641677337274945,
+          10.631756838168588,
+          12.981122142788651,
+          15.821243694455866,
+          19.343720889988024,
+          23.84355029201276,
+          29.80609571474278,
+          38.093384871029976,
+          50.176114940660554,
+          68.91924667737344,
+          101.70700765749116,
+          177.4750631433228,
+          970.2326498153436,
+          4462.957495739877,
+          6483.624811925941,
+          8097.177568026504,
+          9472.291048134788,
+          10667.691699962746,
+          11714.590277406009,
+          12636.492996285057,
+          13456.407441084724,
+          14192.49902344628,
+          14859.228462737556,
+          15469.380962930683,
+          16033.652244416897,
+          16559.666071481588,
+          17052.765990326945,
+          17516.678307557922,
+          17954.069263925085,
+          18366.998114595208
          ]
         },
         {
@@ -35179,37 +35295,37 @@
          "legendgroup": "Backward",
          "marker": {
           "color": [
-           1.4125027953136364,
-           1.3711002009673563,
-           1.3217172483743858,
-           1.2670517839518778,
-           1.2080039938091005,
-           1.1444446007809002,
-           1.075914608135358,
-           1.0022328609664477,
-           0.923929514886497,
-           0.8428216366281731,
-           0.7621566456291103,
-           0.6852199910476683,
-           0.6142944406864412,
-           11.504149533916548,
-           9.305335394305926,
-           7.836714848274998,
-           6.751235029538587,
-           5.913190722896813,
-           5.249716764591721,
-           4.715367624593478,
-           4.279092714485501,
-           3.91784228154504,
-           3.6158383407081582,
-           3.3619300234361016,
-           3.146254103373068,
-           2.959898240898631,
-           2.7963132314589036,
-           2.650653105747211,
-           2.519313895549562,
-           2.3996364285462533,
-           2.2896732845537966
+           1.412502797578738,
+           1.3711002021027523,
+           1.3217172479802477,
+           1.2670517836008863,
+           1.2080039928569088,
+           1.144444600974539,
+           1.075914608509693,
+           1.0022328614934997,
+           0.9239295149566314,
+           0.8428216367480568,
+           0.7621566453438996,
+           0.6852199911851398,
+           0.6142944407426233,
+           0.5499228502853867,
+           0.4917197976741892,
+           0.439111725192416,
+           0.3916226658049414,
+           0.34921831933508085,
+           0.31180775787849085,
+           0.27914725930601225,
+           0.2508090433096802,
+           0.22619789366283677,
+           0.20480480880857904,
+           0.18621134457112823,
+           0.1700383841352691,
+           0.15592892911790987,
+           0.1435753734445833,
+           0.13271599469289616,
+           0.12312904164047866,
+           0.11462699459710128,
+           0.1070513381182158
           ],
           "coloraxis": "coloraxis",
           "symbol": "triangle-down"
@@ -35252,37 +35368,37 @@
           10981.69107334078
          ],
          "y": [
-          6916.878414813508,
-          6773.543050013675,
-          6650.504146191023,
-          6543.075818649211,
-          6447.90185820154,
-          6363.028659693789,
-          6287.7327057084985,
-          6222.173997187511,
-          6166.960704793608,
-          6123.40390778512,
-          6092.122494193517,
-          6071.976955514872,
-          6060.849796113008,
-          7212.198271373247,
-          8780.341033827803,
-          10172.68334602568,
-          11423.41295561772,
-          12532.33449324797,
-          13501.070278885914,
-          14337.934925696807,
-          15057.63085350062,
-          15680.107814157764,
-          16223.57772897563,
-          16703.934745351973,
-          17134.246719740062,
-          17524.07944459087,
-          17880.581801463013,
-          18209.284496563036,
-          18514.5269297093,
-          18799.63787620342,
-          19067.0017878122
+          6916.878414881941,
+          6773.543052824832,
+          6650.504147140471,
+          6543.075819313423,
+          6447.901858226217,
+          6363.028661360778,
+          6287.732704590799,
+          6222.173997023632,
+          6166.960704715362,
+          6123.40390737707,
+          6092.1224942756635,
+          6071.976955577278,
+          6060.849795915919,
+          6056.2824720228045,
+          6056.339798333127,
+          6059.704257175552,
+          6065.491244414916,
+          6073.074798602869,
+          6081.862593306162,
+          6091.313103520541,
+          6101.019280199866,
+          6110.771805674974,
+          6120.441198284279,
+          6129.938632523526,
+          6139.143703064118,
+          6147.917877012829,
+          6156.173502424005,
+          6163.861466753642,
+          6170.959238136233,
+          6177.462389078369,
+          6183.37859930542
          ]
         },
         {
@@ -36481,7 +36597,6 @@
          ]
         },
         "legend": {
-         "itemsizing": "constant",
          "orientation": "h",
          "x": 0.5,
          "xanchor": "center",
@@ -37336,7 +37451,7 @@
         "yaxis": {
          "range": [
           0,
-          21232.460413614375
+          21232.46040459453
          ],
          "title": {
           "text": "Natural Frequencies (RPM)"
diff --git a/ross/coupling_element.py b/ross/coupling_element.py
index fbbf38e2..51cc5a13 100644
--- a/ross/coupling_element.py
+++ b/ross/coupling_element.py
@@ -1,9 +1,12 @@
 """Coupling Element module.
 
 This module defines the CouplingElement class which will be used to represent the coupling
-between two rotor shaft, which add mainly stiffness, mass and inertia to the system.
+between two rotor shafts, which add mainly stiffness, mass and inertia to the system.
 """
 
+import inspect
+import toml
+
 import numpy as np
 from plotly import graph_objects as go
 
@@ -205,6 +208,24 @@ class CouplingElement(ShaftElement):
             f"n={self.n})"
         )
 
+    def save(self, file):
+        signature = inspect.signature(self.__init__)
+        args_list = list(signature.parameters)
+        args = {arg: getattr(self, arg) for arg in args_list}
+
+        try:
+            data = toml.load(file)
+        except FileNotFoundError:
+            data = {}
+
+        data[f"{self.__class__.__name__}_{self.tag}"] = args
+        with open(file, "w") as f:
+            toml.dump(data, f)
+
+    @classmethod
+    def read_toml_data(cls, data):
+        return cls(**data)
+
     def M(self):
         """Mass matrix for an instance of a coupling element.
 


Test patch:
diff --git a/ross/tests/test_shaft_element.py b/ross/tests/test_shaft_element.py
index 8fe98551..63dcdb2c 100644
--- a/ross/tests/test_shaft_element.py
+++ b/ross/tests/test_shaft_element.py
@@ -9,6 +9,7 @@ from numpy.testing import assert_allclose, assert_almost_equal
 
 from ross.materials import steel
 from ross.shaft_element import ShaftElement
+from ross.coupling_element import CouplingElement
 
 
 @pytest.fixture
@@ -636,3 +637,123 @@ def test_gyroscopic_matrix_tim_6dof(tim_6dof):
 ])
     # fmt: on
     assert_almost_equal(tim_6dof.G() * 1e3, G0e_tim, decimal=5)
+
+
+@pytest.fixture
+def coupling():
+    mass_station = 151 / 2  # Assuming equal distribution of mass (in kg)
+    Ip_station = 1.74  # Polar moment of inertia, assuming equal distribution (in kg·m²)
+
+    return CouplingElement(
+        m_l=mass_station,
+        m_r=mass_station,
+        Ip_l=Ip_station,
+        Ip_r=Ip_station,
+        kt_x=1e6,
+        kt_y=2e6,
+        kt_z=3e6,  # Axial stiffness (in N/m)
+        kr_x=4e6,
+        kr_y=5e6,
+        kr_z=6e6,  # Torsional stiffness (in N·m/rad)
+    )
+
+
+def test_parameters_coupling(coupling):
+    assert coupling.m == 151
+    assert coupling.Ip == 3.48
+    assert coupling.Id_l == 0.87
+    assert coupling.Id_r == 0.87
+    assert coupling.kt_x == 1e6
+    assert coupling.kt_y == 2e6
+    assert coupling.kt_z == 3e6
+    assert coupling.kr_x == 4e6
+    assert coupling.kr_y == 5e6
+    assert coupling.kr_z == 6e6
+    assert coupling.ct_x == 0.0
+    assert coupling.ct_y == 0.0
+    assert coupling.ct_z == 0.0
+    assert coupling.cr_x == 0.0
+    assert coupling.cr_y == 0.0
+    assert coupling.cr_z == 0.0
+
+
+def test_mass_matrix_coupling(coupling):
+    # fmt: off
+    M0 = np.array([
+        [75.5 ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  , 75.5 ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  , 75.5 ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.87,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.87,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  1.74,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  , 75.5 ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  , 75.5 ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  , 75.5 ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.87,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.87,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  1.74]
+    ])
+    # fmt: on
+    assert_almost_equal(coupling.M(), M0, decimal=5)
+
+
+def test_stiffness_matrix_coupling(coupling):
+    # fmt: off
+    K0 = np.array([
+        [ 1.,  0.,  0.,  0.,  0.,  0., -1.,  0.,  0.,  0.,  0.,  0.],
+        [ 0.,  2.,  0.,  0.,  0.,  0.,  0., -2.,  0.,  0.,  0.,  0.],
+        [ 0.,  0.,  3.,  0.,  0.,  0.,  0.,  0., -3.,  0.,  0.,  0.],
+        [ 0.,  0.,  0.,  4.,  0.,  0.,  0.,  0.,  0., -4.,  0.,  0.],
+        [ 0.,  0.,  0.,  0.,  5.,  0.,  0.,  0.,  0.,  0., -5.,  0.],
+        [ 0.,  0.,  0.,  0.,  0.,  6.,  0.,  0.,  0.,  0.,  0., -6.],
+        [-1.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.],
+        [ 0., -2.,  0.,  0.,  0.,  0.,  0.,  2.,  0.,  0.,  0.,  0.],
+        [ 0.,  0., -3.,  0.,  0.,  0.,  0.,  0.,  3.,  0.,  0.,  0.],
+        [ 0.,  0.,  0., -4.,  0.,  0.,  0.,  0.,  0.,  4.,  0.,  0.],
+        [ 0.,  0.,  0.,  0., -5.,  0.,  0.,  0.,  0.,  0.,  5.,  0.],
+        [ 0.,  0.,  0.,  0.,  0., -6.,  0.,  0.,  0.,  0.,  0.,  6.]
+    ])
+    # fmt: on
+    assert_almost_equal(coupling.K() / 1e6, K0, decimal=5)
+
+
+def test_dynamic_stiffness_matrix_coupling(coupling):
+    Kst0 = np.zeros((12, 12))
+    assert_almost_equal(coupling.Kst(), Kst0, decimal=5)
+
+
+def test_damping_matrix_coupling(coupling):
+    C0 = np.zeros((12, 12))
+    assert_almost_equal(coupling.C(), C0, decimal=5)
+
+
+def test_gyroscopic_matrix_coupling(coupling):
+    # fmt: off
+    G0 = np.array([
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  1.74,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  , -1.74,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  1.74,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  , -1.74,  0.  ,  0.  ],
+        [ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ]
+    ])
+    # fmt: on
+    assert_almost_equal(coupling.G(), G0, decimal=5)
+
+
+def test_pickle_coupling(coupling):
+    coupling_pickled = pickle.loads(pickle.dumps(coupling))
+    assert coupling == coupling_pickled
+
+
+def test_save_load_coupling(coupling):
+    file = Path(tempdir) / "coupling.toml"
+    coupling.save(file)
+    coupling_loaded = CouplingElement.load(file)
+    assert coupling == coupling_loaded