mirror of
https://github.com/atomic14/kicad-coil-plugins.git
synced 2024-10-18 09:06:57 +00:00
Run the simulations in parallel for speed
This commit is contained in:
parent
370fba91fc
commit
2c03cca84f
2 changed files with 27 additions and 14 deletions
|
@ -5,3 +5,4 @@ pandas
|
|||
scikit-spatial
|
||||
pre-commit
|
||||
plotly
|
||||
multiprocess
|
|
@ -290,6 +290,20 @@
|
|||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import multiprocess as mp\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def calculate_forces_on_coil(coil, x, y, z):\n",
|
||||
" points = coil.copy()\n",
|
||||
" for i in range(len(points)):\n",
|
||||
" points[i][0] = points[i][0] / 100 + x\n",
|
||||
" points[i][1] = points[i][1] / 100 + y\n",
|
||||
" points[i][2] = points[i][2] / 100 + z\n",
|
||||
" # feel the force\n",
|
||||
" Fx_, Fy_, Fz_ = calculate_forces_on_wire_points(points)\n",
|
||||
" return sum(Fx_), sum(Fy_), sum(Fz_)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# instead of sweeping horizontally, we'll sweep the coils around a circle\n",
|
||||
"def sweep_coil_circle(coil, coil_center_radius, theta):\n",
|
||||
" X = coil_center_radius * np.cos(np.deg2rad(theta))\n",
|
||||
|
@ -300,21 +314,19 @@
|
|||
" Fx = []\n",
|
||||
" Fy = []\n",
|
||||
" Fz = []\n",
|
||||
" for p in range(len(theta)):\n",
|
||||
" x = X[p]\n",
|
||||
" y = Y[p]\n",
|
||||
" z = Z\n",
|
||||
"\n",
|
||||
" points = coil.copy()\n",
|
||||
" for i in range(len(points)):\n",
|
||||
" points[i][0] = points[i][0] / 100 + x\n",
|
||||
" points[i][1] = points[i][1] / 100 + y\n",
|
||||
" points[i][2] = points[i][2] / 100 + z\n",
|
||||
" # feel the force\n",
|
||||
" Fx_, Fy_, Fz_ = calculate_forces_on_wire_points(points)\n",
|
||||
" Fx.append(sum(Fx_))\n",
|
||||
" Fy.append(sum(Fy_))\n",
|
||||
" Fz.append(sum(Fz_))\n",
|
||||
" # run this in parallel\n",
|
||||
" with mp.Pool(mp.cpu_count()) as pool:\n",
|
||||
" params = [(coil, X[p], Y[p], Z) for p in range(len(theta))]\n",
|
||||
" results = [\n",
|
||||
" pool.apply_async(calculate_forces_on_coil, params) for params in params\n",
|
||||
" ]\n",
|
||||
"\n",
|
||||
" for result in results:\n",
|
||||
" fx, fy, fz = result.get()\n",
|
||||
" Fx.append(fx)\n",
|
||||
" Fy.append(fy)\n",
|
||||
" Fz.append(fz)\n",
|
||||
" return Fx, Fy, Fz\n",
|
||||
"\n",
|
||||
"\n",
|
||||
|
|
Loading…
Reference in a new issue