Skip to main content

Parametric coil and inductor geometry generator

Project description

PyPI - Version PyPI - License

coil-geom

coil-geom is a Python package for generating and visualizing coil and inductor geometries using clean, parametric definitions. It is designed for engineering, scientific visualization, and symbolic / schematic-style plotting.

  • Pure geometry first (NumPy-friendly)
  • Save coil geometry data as PPTX, SVG, and PDF
  • Suitable for electronics, physics, and CAD-style workflows

Coil Types There are four types of coil geometry:

  1. Circle Coil
  2. Ellipse Coil
  3. Ellipse Coil with Curvature Similarity
  4. Ellipse Coil with Shape Similarity

Each coil geometry consists of three parts: primary coil(circle or ellipse) and transition coil(circle or ellipse). Primary coil can be a circle or an ellipse. Transition coil also can be a circle or an ellipse. CircleCoil has two primary circles and a transition circle in-betweens. EllipseCoil has two primary ellipses and a transition circle in-betweens. EllipseCoilShape has two primary ellipses and an transition ellipse with shape similarity. EllipseCoilCurvature has two primary ellipses and a transition ellipse with curvature similarity).

Circle Coil

Alt Text

Ellipse Coil

Alt Text

Ellipse Coil Shape Similarity

Alt Text

Ellipse Coil Curvature Similarity

Alt Text

🔗 Project Links

Installation

pip install coil-geom

Export Coil Geometries (PPTX, SVG, and PDF)

import coil_geom as cg

c_c_up = cg.CircleCoil(p_dist=0.7, ncoil=5)
c_c_dn = cg.CircleCoil(ncoil=5)

c_e_up = cg.EllipseCoil(p_dist=0.4, ncoil=5)
c_e_dn = cg.EllipseCoil(ncoil=5)

c_es_up = cg.EllipseCoilShape(p_dist=0.4, target=0.8, ncoil=5)
c_es_dn = cg.EllipseCoilShape(ncoil=5)

c_ec_up = cg.EllipseCoilCurvature(p_dist=0.4, ncoil=5)
c_ec_dn = cg.EllipseCoilCurvature(ncoil=5)

cg.save_ppt(c_c_up ,  "c_c_up.pptx" )
cg.save_ppt(c_c_dn ,  "c_c_dn.pptx" )
cg.save_ppt(c_e_up ,  "c_e_up.pptx" )
cg.save_ppt(c_e_dn ,  "c_e_dn.pptx" )
cg.save_ppt(c_es_up, "c_es_up.pptx", debug=True)
cg.save_ppt(c_es_dn, "c_es_dn.pptx", debug=True)
cg.save_ppt(c_ec_up, "c_ec_up.pptx", lead_l=2, lead_r=2)
cg.save_ppt(c_ec_dn, "c_ec_dn.pptx")

cg.save_svg(c_c_up ,  "c_c_up.svg" )
cg.save_svg(c_c_dn ,  "c_c_dn.svg" )
cg.save_svg(c_e_up ,  "c_e_up.svg" )
cg.save_svg(c_e_dn ,  "c_e_dn.svg" )
cg.save_svg(c_es_up, "c_es_up.svg", debug=True)
cg.save_svg(c_es_dn, "c_es_dn.svg", debug=True)
cg.save_svg(c_ec_up, "c_ec_up.svg", lead_l=2, lead_r=2)
cg.save_svg(c_ec_dn, "c_ec_dn.svg")

cg.save_pdf(c_c_up ,  "c_c_up.pdf" )
cg.save_pdf(c_c_dn ,  "c_c_dn.pdf" )
cg.save_pdf(c_e_up ,  "c_e_up.pdf" )
cg.save_pdf(c_e_dn ,  "c_e_dn.pdf" )
cg.save_pdf(c_es_up, "c_es_up.pdf", debug=True)
cg.save_pdf(c_es_dn, "c_es_dn.pdf", debug=True)
cg.save_pdf(c_ec_up, "c_ec_up.pdf")
cg.save_pdf(c_ec_dn, "c_ec_dn.pdf")

Plot Coil Geometries

import matplotlib.pyplot as plt
import coil_geom as cg

cc = cg.CircleCoil(ncoil=5)
ce = cg.EllipseCoil(ncoil=5)
ces = cg.EllipseCoilShape(ncoil=5)
cec = cg.EllipseCoilCurvature(ncoil=5)

x1, y1 = cc.create_geom()
x2, y2 = ce.create_geom()
x3, y3 = ces.create_geom()
x4, y4 = cec.create_geom()

fig, axs = plt.subplots(nrows=4, ncols=1,  figsize=(8, 6))
fig.suptitle('Circle & Ellipse Coil Geometry')
axs[0].plot(x1, y1)
axs[0].set_aspect('equal')
axs[1].plot(x2, y2)
axs[1].set_aspect('equal')
axs[2].plot(x3, y3)
axs[2].set_aspect('equal')
axs[3].plot(x4, y4)
axs[3].set_aspect('equal')
plt.show()

Alt Text

Plot 3 Phase Delta Connection

def three_delta(coil, lead_l, lead_r):

    xs, ys = [], []
    c1 = coil.create_geom(False, lead_l, lead_r)
    x1, y1 = c1.get()
    xs.append(x1)
    ys.append(y1)
    
    c2 = c1.flipud().rotate(60, axis=0)
    xs.append(c2.x)
    ys.append(c2.y)
    
    c3 = c1.flipud().rotate(-60, axis=2)
    xs.append(c3.x)
    ys.append(c3.y)
        
    return xs, ys

Alt Text

Plot 3 Phase Y Connection

def three_y(coil, lead_l, lead_r):

    xs, ys = [], []
    c = coil.create_geom(False, lead_l, lead_r)
    c1 = c.rotate(90, axis=0)
    xs.append(c1.x)
    ys.append(c1.y)
    
    c2 = c1.rotate(120, axis=0)
    xs.append(c2.x)
    ys.append(c2.y)
    
    c3 = c2.rotate(120, axis=0)
    xs.append(c3.x)
    ys.append(c3.y)        
    return xs, ys

Alt Text

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

coil_geom-0.2.21.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

coil_geom-0.2.21-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file coil_geom-0.2.21.tar.gz.

File metadata

  • Download URL: coil_geom-0.2.21.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.9

File hashes

Hashes for coil_geom-0.2.21.tar.gz
Algorithm Hash digest
SHA256 e57bdbf3f2aa1322c2d9d8b10646d2b136a04ac956c863fda6e9c8341a08aef2
MD5 abad2de6681fe8cff580d7f4682a78e0
BLAKE2b-256 df0c6bd4e69a56b08e374f57d19e2138b57be0d80134a0a982cd457ba761f49e

See more details on using hashes here.

File details

Details for the file coil_geom-0.2.21-py3-none-any.whl.

File metadata

  • Download URL: coil_geom-0.2.21-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.9

File hashes

Hashes for coil_geom-0.2.21-py3-none-any.whl
Algorithm Hash digest
SHA256 88ff97130bfb2df76d08614d053c07be3d2a290bff6c8595b4b697bf475920c4
MD5 5dba839051a7d7a4ae5852d445818f1b
BLAKE2b-256 7036ff9b4a825a05a97738f9ae41d7af7e872f33e9c91f3bc3d8d36a66d81951

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page