From 35aec1bb47769eeff8ba98caeca00736a7dfbab3 Mon Sep 17 00:00:00 2001 From: polymurph Date: Tue, 5 Jul 2022 20:09:40 +0200 Subject: [PATCH] work on quadrupole model --- ...nfinite_lnegth_Quadrupole-checkpoint.ipynb | 62 +++++++++---------- .../Model_of_infinite_lnegth_Quadrupole.ipynb | 62 +++++++++---------- 2 files changed, 58 insertions(+), 66 deletions(-) diff --git a/quadrupole/.ipynb_checkpoints/Model_of_infinite_lnegth_Quadrupole-checkpoint.ipynb b/quadrupole/.ipynb_checkpoints/Model_of_infinite_lnegth_Quadrupole-checkpoint.ipynb index cbec00d..583fb1d 100644 --- a/quadrupole/.ipynb_checkpoints/Model_of_infinite_lnegth_Quadrupole-checkpoint.ipynb +++ b/quadrupole/.ipynb_checkpoints/Model_of_infinite_lnegth_Quadrupole-checkpoint.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -28,6 +28,7 @@ " def __init__(self,R,r_0):\n", " self.R = R\n", " self.r_0 = r_0\n", + " self.pPole = np.zeros(4)\n", " self.pPole[0] = [r_0/np.sqrt(2),r_0/np.sqrt(2)]\n", " self.pPole[1] = [-r_0/np.sqrt(2),r_0/np.sqrt(2)]\n", " self.pPole[2] = [-r_0/np.sqrt(2),-r_0/np.sqrt(2)]\n", @@ -44,7 +45,6 @@ " if np.abs(ion.p) >= r_0:\n", " return None\n", " \n", - "\n", " signLUT = [1,-1,1,-1]\n", " index = 0;\n", " \n", @@ -54,51 +54,47 @@ " index = index + 1\n", " \n", " # calculate force on ion\n", + " r_v = pPole[index] - ion.position\n", + " ion.F += K * ion.charge * Q * r_v / (np.abs(r_v)**3)\n", " \n", - " \n", - " #ion.F += t_s**2 * 1 / ion.m \n", - " \n", - " \n", - " \n", - " \n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# phi_0 potential for the quadrupole rods\n", - "def phi_0(U, V, f, t):\n", - " return U + V * np.sin(2 * np.pi * f * t)" + " newPosition = t_s**2 * 1 / ion.m * ion.F + ion.position\n", + "\n", + " return newPosition" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 11, "metadata": {}, "outputs": [ { - "ename": "SyntaxError", - "evalue": "unexpected EOF while parsing (, line 7)", + "ename": "ValueError", + "evalue": "setting an array element with a sequence.", "output_type": "error", "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m7\u001b[0m\n\u001b[0;31m \u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m unexpected EOF while parsing\n" + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: float() argument must be a string or a number, not 'list'", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;31m# quadrupole\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mquad\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minfiniteLengthQuadrupole\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5E-3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m15E-3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mn\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mion\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mposition\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mquad\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalcNewIonPos\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mion\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mt_s\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, R, r_0)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mr_0\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mr_0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpPole\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpPole\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 15\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpPole\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpPole\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: setting an array element with a sequence." ] } ], "source": [ - "def force_on_ion(Q_I, p_I, Q_rods, p_rods):\n", - " K = 1 / (4 * np.pi * sc.epsilon_0)\n", - " \n", - " # sum all individual electric field contributions of the rods\n", - " for Q in Q_rods:\n", - " \n", - " \n", - " \n", - " " + "t_s = 1E-6\n", + "\n", + "# coffein atom 524.50002164 dalton (8.709527e-25 kg)\n", + "ion = Ion([0,0,0], sc.e, 8.709527e-25,0)\n", + "\n", + "# quadrupole\n", + "quad = infiniteLengthQuadrupole(5E-3,15E-3)\n", + "for n in range(0,1000,1):\n", + " ion.position = quad.calcNewIonPos(0,1000,ion,t_s)\n", + " print(ion.position)\n", + " " ] } ], diff --git a/quadrupole/Model_of_infinite_lnegth_Quadrupole.ipynb b/quadrupole/Model_of_infinite_lnegth_Quadrupole.ipynb index cbec00d..583fb1d 100644 --- a/quadrupole/Model_of_infinite_lnegth_Quadrupole.ipynb +++ b/quadrupole/Model_of_infinite_lnegth_Quadrupole.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -28,6 +28,7 @@ " def __init__(self,R,r_0):\n", " self.R = R\n", " self.r_0 = r_0\n", + " self.pPole = np.zeros(4)\n", " self.pPole[0] = [r_0/np.sqrt(2),r_0/np.sqrt(2)]\n", " self.pPole[1] = [-r_0/np.sqrt(2),r_0/np.sqrt(2)]\n", " self.pPole[2] = [-r_0/np.sqrt(2),-r_0/np.sqrt(2)]\n", @@ -44,7 +45,6 @@ " if np.abs(ion.p) >= r_0:\n", " return None\n", " \n", - "\n", " signLUT = [1,-1,1,-1]\n", " index = 0;\n", " \n", @@ -54,51 +54,47 @@ " index = index + 1\n", " \n", " # calculate force on ion\n", + " r_v = pPole[index] - ion.position\n", + " ion.F += K * ion.charge * Q * r_v / (np.abs(r_v)**3)\n", " \n", - " \n", - " #ion.F += t_s**2 * 1 / ion.m \n", - " \n", - " \n", - " \n", - " \n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# phi_0 potential for the quadrupole rods\n", - "def phi_0(U, V, f, t):\n", - " return U + V * np.sin(2 * np.pi * f * t)" + " newPosition = t_s**2 * 1 / ion.m * ion.F + ion.position\n", + "\n", + " return newPosition" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 11, "metadata": {}, "outputs": [ { - "ename": "SyntaxError", - "evalue": "unexpected EOF while parsing (, line 7)", + "ename": "ValueError", + "evalue": "setting an array element with a sequence.", "output_type": "error", "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m7\u001b[0m\n\u001b[0;31m \u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m unexpected EOF while parsing\n" + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mTypeError\u001b[0m: float() argument must be a string or a number, not 'list'", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;31m# quadrupole\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mquad\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minfiniteLengthQuadrupole\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5E-3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m15E-3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mn\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mion\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mposition\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mquad\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcalcNewIonPos\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mion\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mt_s\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, R, r_0)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mr_0\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mr_0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpPole\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpPole\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 15\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpPole\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpPole\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mr_0\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: setting an array element with a sequence." ] } ], "source": [ - "def force_on_ion(Q_I, p_I, Q_rods, p_rods):\n", - " K = 1 / (4 * np.pi * sc.epsilon_0)\n", - " \n", - " # sum all individual electric field contributions of the rods\n", - " for Q in Q_rods:\n", - " \n", - " \n", - " \n", - " " + "t_s = 1E-6\n", + "\n", + "# coffein atom 524.50002164 dalton (8.709527e-25 kg)\n", + "ion = Ion([0,0,0], sc.e, 8.709527e-25,0)\n", + "\n", + "# quadrupole\n", + "quad = infiniteLengthQuadrupole(5E-3,15E-3)\n", + "for n in range(0,1000,1):\n", + " ion.position = quad.calcNewIonPos(0,1000,ion,t_s)\n", + " print(ion.position)\n", + " " ] } ],