diff --git a/Containerfile b/Containerfile new file mode 100644 index 0000000..1890a88 --- /dev/null +++ b/Containerfile @@ -0,0 +1,9 @@ +FROM ubuntu:22.04 +RUN apt update && apt install -y software-properties-common +RUN add-apt-repository ppa:elmer-csc-ubuntu/elmer-csc-ppa && apt update && apt install -y elmerfem-csc +RUN apt update && DEBIAN_FRONTEND=noninteractive apt install -y python3-scipy python3-tqdm python3-click python3-tabulate python3-gmsh python3-matplotlib python3-subprocess-tee python3-pip python3-numpy python3-pandas +#RUN pip install --break-system-packages pyelmer +RUN pip install pyelmer +COPY *.py *.yml /nice-coils/ +WORKDIR /nice-coils +VOLUME /mesh diff --git a/build_container_tarball.sh b/build_container_tarball.sh new file mode 100755 index 0000000..e35069b --- /dev/null +++ b/build_container_tarball.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +podman build -f Containerfile --label nice-coils-make --tag nice-coils-runner --iidfile nice-coils-runner.cid --cache-ttl 1h +podman save --format oci-archive -o nice-coils-runner.tar.gz $(cat nice-coils-runner.cid) diff --git a/coil_test_board.kicad_pcb b/coil_test_board.kicad_pcb index 0e0533b..198750b 100644 --- a/coil_test_board.kicad_pcb +++ b/coil_test_board.kicad_pcb @@ -34,7 +34,7 @@ (58 "User.9" user)) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 123.0 123.0 0) (attr) (pad "1" np_thru_hole circle @@ -45,7 +45,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 123.0 162.0 0) (attr) (pad "1" np_thru_hole circle @@ -56,7 +56,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 162.0 123.0 0) (attr) (pad "1" np_thru_hole circle @@ -67,7 +67,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 162.0 162.0 0) (attr) (pad "1" np_thru_hole circle @@ -78,7 +78,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 123.0 180.0 0) (attr) (pad "1" np_thru_hole circle @@ -89,7 +89,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 123.0 219.0 0) (attr) (pad "1" np_thru_hole circle @@ -100,7 +100,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 162.0 180.0 0) (attr) (pad "1" np_thru_hole circle @@ -111,7 +111,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 162.0 219.0 0) (attr) (pad "1" np_thru_hole circle @@ -122,7 +122,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 123.0 237.0 0) (attr) (pad "1" np_thru_hole circle @@ -133,7 +133,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 123.0 276.0 0) (attr) (pad "1" np_thru_hole circle @@ -144,7 +144,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 162.0 237.0 0) (attr) (pad "1" np_thru_hole circle @@ -155,7 +155,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 162.0 276.0 0) (attr) (pad "1" np_thru_hole circle @@ -166,7 +166,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 123.0 294.0 0) (attr) (pad "1" np_thru_hole circle @@ -177,7 +177,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 123.0 333.0 0) (attr) (pad "1" np_thru_hole circle @@ -188,7 +188,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 162.0 294.0 0) (attr) (pad "1" np_thru_hole circle @@ -199,7 +199,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 162.0 333.0 0) (attr) (pad "1" np_thru_hole circle @@ -210,7 +210,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 123.0 351.0 0) (attr) (pad "1" np_thru_hole circle @@ -221,7 +221,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 123.0 390.0 0) (attr) (pad "1" np_thru_hole circle @@ -232,7 +232,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 162.0 351.0 0) (attr) (pad "1" np_thru_hole circle @@ -243,7 +243,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 162.0 390.0 0) (attr) (pad "1" np_thru_hole circle @@ -254,7 +254,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 180.0 123.0 0) (attr) (pad "1" np_thru_hole circle @@ -265,7 +265,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 180.0 162.0 0) (attr) (pad "1" np_thru_hole circle @@ -276,7 +276,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 219.0 123.0 0) (attr) (pad "1" np_thru_hole circle @@ -287,7 +287,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 219.0 162.0 0) (attr) (pad "1" np_thru_hole circle @@ -298,7 +298,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 180.0 180.0 0) (attr) (pad "1" np_thru_hole circle @@ -309,7 +309,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 180.0 219.0 0) (attr) (pad "1" np_thru_hole circle @@ -320,7 +320,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 219.0 180.0 0) (attr) (pad "1" np_thru_hole circle @@ -331,7 +331,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 219.0 219.0 0) (attr) (pad "1" np_thru_hole circle @@ -342,7 +342,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 180.0 237.0 0) (attr) (pad "1" np_thru_hole circle @@ -353,7 +353,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 180.0 276.0 0) (attr) (pad "1" np_thru_hole circle @@ -364,7 +364,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 219.0 237.0 0) (attr) (pad "1" np_thru_hole circle @@ -375,7 +375,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 219.0 276.0 0) (attr) (pad "1" np_thru_hole circle @@ -386,7 +386,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 180.0 294.0 0) (attr) (pad "1" np_thru_hole circle @@ -397,7 +397,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 180.0 333.0 0) (attr) (pad "1" np_thru_hole circle @@ -408,7 +408,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 219.0 294.0 0) (attr) (pad "1" np_thru_hole circle @@ -419,7 +419,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 219.0 333.0 0) (attr) (pad "1" np_thru_hole circle @@ -430,7 +430,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 180.0 351.0 0) (attr) (pad "1" np_thru_hole circle @@ -441,7 +441,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 180.0 390.0 0) (attr) (pad "1" np_thru_hole circle @@ -452,7 +452,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 219.0 351.0 0) (attr) (pad "1" np_thru_hole circle @@ -463,7 +463,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 219.0 390.0 0) (attr) (pad "1" np_thru_hole circle @@ -474,7 +474,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 237.0 123.0 0) (attr) (pad "1" np_thru_hole circle @@ -485,7 +485,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 237.0 162.0 0) (attr) (pad "1" np_thru_hole circle @@ -496,7 +496,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 276.0 123.0 0) (attr) (pad "1" np_thru_hole circle @@ -507,7 +507,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 276.0 162.0 0) (attr) (pad "1" np_thru_hole circle @@ -518,7 +518,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 237.0 180.0 0) (attr) (pad "1" np_thru_hole circle @@ -529,7 +529,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 237.0 219.0 0) (attr) (pad "1" np_thru_hole circle @@ -540,7 +540,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 276.0 180.0 0) (attr) (pad "1" np_thru_hole circle @@ -551,7 +551,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 276.0 219.0 0) (attr) (pad "1" np_thru_hole circle @@ -562,7 +562,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 237.0 237.0 0) (attr) (pad "1" np_thru_hole circle @@ -573,7 +573,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 237.0 276.0 0) (attr) (pad "1" np_thru_hole circle @@ -584,7 +584,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 276.0 237.0 0) (attr) (pad "1" np_thru_hole circle @@ -595,7 +595,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 276.0 276.0 0) (attr) (pad "1" np_thru_hole circle @@ -606,7 +606,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 237.0 294.0 0) (attr) (pad "1" np_thru_hole circle @@ -617,7 +617,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 237.0 333.0 0) (attr) (pad "1" np_thru_hole circle @@ -628,7 +628,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 276.0 294.0 0) (attr) (pad "1" np_thru_hole circle @@ -639,7 +639,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 276.0 333.0 0) (attr) (pad "1" np_thru_hole circle @@ -650,7 +650,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 237.0 351.0 0) (attr) (pad "1" np_thru_hole circle @@ -661,7 +661,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 237.0 390.0 0) (attr) (pad "1" np_thru_hole circle @@ -672,7 +672,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 276.0 351.0 0) (attr) (pad "1" np_thru_hole circle @@ -683,7 +683,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 276.0 390.0 0) (attr) (pad "1" np_thru_hole circle @@ -694,7 +694,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 294.0 123.0 0) (attr) (pad "1" np_thru_hole circle @@ -705,7 +705,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 294.0 162.0 0) (attr) (pad "1" np_thru_hole circle @@ -716,7 +716,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 333.0 123.0 0) (attr) (pad "1" np_thru_hole circle @@ -727,7 +727,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 333.0 162.0 0) (attr) (pad "1" np_thru_hole circle @@ -738,7 +738,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 294.0 180.0 0) (attr) (pad "1" np_thru_hole circle @@ -749,7 +749,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 294.0 219.0 0) (attr) (pad "1" np_thru_hole circle @@ -760,7 +760,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 333.0 180.0 0) (attr) (pad "1" np_thru_hole circle @@ -771,7 +771,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 333.0 219.0 0) (attr) (pad "1" np_thru_hole circle @@ -782,7 +782,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 294.0 237.0 0) (attr) (pad "1" np_thru_hole circle @@ -793,7 +793,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 294.0 276.0 0) (attr) (pad "1" np_thru_hole circle @@ -804,7 +804,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 333.0 237.0 0) (attr) (pad "1" np_thru_hole circle @@ -815,7 +815,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 333.0 276.0 0) (attr) (pad "1" np_thru_hole circle @@ -826,7 +826,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 294.0 294.0 0) (attr) (pad "1" np_thru_hole circle @@ -837,7 +837,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 294.0 333.0 0) (attr) (pad "1" np_thru_hole circle @@ -848,7 +848,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 333.0 294.0 0) (attr) (pad "1" np_thru_hole circle @@ -859,7 +859,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 333.0 333.0 0) (attr) (pad "1" np_thru_hole circle @@ -870,7 +870,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 294.0 351.0 0) (attr) (pad "1" np_thru_hole circle @@ -881,7 +881,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 294.0 390.0 0) (attr) (pad "1" np_thru_hole circle @@ -892,7 +892,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 333.0 351.0 0) (attr) (pad "1" np_thru_hole circle @@ -903,7 +903,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 333.0 390.0 0) (attr) (pad "1" np_thru_hole circle @@ -914,7 +914,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 351.0 123.0 0) (attr) (pad "1" np_thru_hole circle @@ -925,7 +925,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 351.0 162.0 0) (attr) (pad "1" np_thru_hole circle @@ -936,7 +936,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 390.0 123.0 0) (attr) (pad "1" np_thru_hole circle @@ -947,7 +947,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 390.0 162.0 0) (attr) (pad "1" np_thru_hole circle @@ -958,7 +958,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 351.0 180.0 0) (attr) (pad "1" np_thru_hole circle @@ -969,7 +969,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 351.0 219.0 0) (attr) (pad "1" np_thru_hole circle @@ -980,7 +980,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 390.0 180.0 0) (attr) (pad "1" np_thru_hole circle @@ -991,7 +991,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 390.0 219.0 0) (attr) (pad "1" np_thru_hole circle @@ -1002,7 +1002,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 351.0 237.0 0) (attr) (pad "1" np_thru_hole circle @@ -1013,7 +1013,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 351.0 276.0 0) (attr) (pad "1" np_thru_hole circle @@ -1024,7 +1024,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 390.0 237.0 0) (attr) (pad "1" np_thru_hole circle @@ -1035,7 +1035,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 390.0 276.0 0) (attr) (pad "1" np_thru_hole circle @@ -1046,7 +1046,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 351.0 294.0 0) (attr) (pad "1" np_thru_hole circle @@ -1057,7 +1057,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 351.0 333.0 0) (attr) (pad "1" np_thru_hole circle @@ -1068,7 +1068,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 390.0 294.0 0) (attr) (pad "1" np_thru_hole circle @@ -1079,7 +1079,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 390.0 333.0 0) (attr) (pad "1" np_thru_hole circle @@ -1090,7 +1090,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 351.0 351.0 0) (attr) (pad "1" np_thru_hole circle @@ -1101,7 +1101,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 351.0 390.0 0) (attr) (pad "1" np_thru_hole circle @@ -1112,7 +1112,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 390.0 351.0 0) (attr) (pad "1" np_thru_hole circle @@ -1123,7 +1123,7 @@ (thermal_bridge_width 0.5))) (footprint "hole" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 390.0 390.0 0) (attr) (pad "1" np_thru_hole circle @@ -1136,7 +1136,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B08") + (tedit "65C4CD1C") (at 142.5 142.5 0) (descr "1 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.029035 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 4.97945) @@ -1240,7 +1240,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1C") (at 165.0 142.5 270) (attr) (pad "1" thru_hole oval @@ -1259,7 +1259,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B09") + (tedit "65C4CD1D") (at 199.5 142.5 0) (descr "2 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.116142 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 1.99703) @@ -1427,7 +1427,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1D") (at 222.0 142.5 270) (attr) (pad "1" thru_hole oval @@ -1446,7 +1446,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B09") + (tedit "65C4CD1D") (at 256.5 142.5 0) (descr "3 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.261319 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 1.831895) @@ -1628,7 +1628,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1D") (at 279.0 142.5 270) (attr) (pad "1" thru_hole oval @@ -1647,7 +1647,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B09") + (tedit "65C4CD1D") (at 313.5 142.5 0) (descr "5 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.725885 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 1.199599) @@ -1943,7 +1943,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1D") (at 336.0 142.5 270) (attr) (pad "1" thru_hole oval @@ -1962,7 +1962,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0A") + (tedit "65C4CD1E") (at 370.5 142.5 0) (descr "10 turn 35.00 mm diameter twisted coil footprint, inductance approximately 2.903542 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.499952) @@ -2272,7 +2272,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1E") (at 393.0 142.5 270) (attr) (pad "1" thru_hole oval @@ -2291,7 +2291,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0A") + (tedit "65C4CD1E") (at 142.5 199.5 0) (descr "25 turn 35.00 mm diameter twisted coil footprint, inductance approximately 18.147136 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.149997) @@ -2857,7 +2857,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1E") (at 165.0 199.5 270) (attr) (pad "1" thru_hole oval @@ -2876,7 +2876,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0A") + (tedit "65C4CD1E") (at 199.5 199.5 0) (descr "1 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.029035 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.2) @@ -3257,7 +3257,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1E") (at 222.0 199.5 270) (attr) (pad "1" thru_hole oval @@ -3276,7 +3276,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0B") + (tedit "65C4CD1F") (at 256.5 199.5 0) (descr "2 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.116142 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 6.971229) @@ -3437,7 +3437,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1F") (at 279.0 199.5 270) (attr) (pad "1" thru_hole oval @@ -3456,7 +3456,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0B") + (tedit "65C4CD1F") (at 313.5 199.5 0) (descr "3 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.261319 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 4.155029) @@ -3617,7 +3617,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1F") (at 336.0 199.5 270) (attr) (pad "1" thru_hole oval @@ -3636,7 +3636,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D30E6") + (tedit "65C4CD1F") (at 370.5 199.5 0) (descr "5 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.725885 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 1.49826) @@ -3925,7 +3925,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD1F") (at 393.0 199.5 270) (attr) (pad "1" thru_hole oval @@ -3944,7 +3944,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D30E6") + (tedit "65C4CD20") (at 142.5 256.5 0) (descr "10 turn 35.00 mm diameter twisted coil footprint, inductance approximately 2.903542 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.499833) @@ -4489,7 +4489,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD20") (at 165.0 256.5 270) (attr) (pad "1" thru_hole oval @@ -4508,7 +4508,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0C") + (tedit "65C4CD20") (at 199.5 256.5 0) (descr "25 turn 35.00 mm diameter twisted coil footprint, inductance approximately 18.147136 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.299981) @@ -5067,7 +5067,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD20") (at 222.0 256.5 270) (attr) (pad "1" thru_hole oval @@ -5086,7 +5086,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0D") + (tedit "65C4CD20") (at 256.5 256.5 0) (descr "1 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.029035 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.2) @@ -5301,7 +5301,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD20") (at 279.0 256.5 270) (attr) (pad "1" thru_hole oval @@ -5320,7 +5320,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0D") + (tedit "65C4CD21") (at 313.5 256.5 0) (descr "2 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.116142 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 6.753159) @@ -5581,7 +5581,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD21") (at 336.0 256.5 270) (attr) (pad "1" thru_hole oval @@ -5600,7 +5600,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0D") + (tedit "65C4CD21") (at 370.5 256.5 0) (descr "3 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.261319 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 3.991398) @@ -5943,7 +5943,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD21") (at 393.0 256.5 270) (attr) (pad "1" thru_hole oval @@ -5962,7 +5962,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D30E7") + (tedit "65C4CD21") (at 142.5 313.5 0) (descr "5 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.725885 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 1.484564) @@ -6415,7 +6415,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD21") (at 165.0 313.5 270) (attr) (pad "1" thru_hole oval @@ -6434,7 +6434,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D30E7") + (tedit "65C4CD22") (at 199.5 313.5 0) (descr "10 turn 35.00 mm diameter twisted coil footprint, inductance approximately 2.903542 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.498505) @@ -7031,7 +7031,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD22") (at 222.0 313.5 270) (attr) (pad "1" thru_hole oval @@ -7050,7 +7050,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0E") + (tedit "65C4CD22") (at 256.5 313.5 0) (descr "25 turn 35.00 mm diameter twisted coil footprint, inductance approximately 18.147136 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.299825) @@ -7957,7 +7957,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD22") (at 279.0 313.5 270) (attr) (pad "1" thru_hole oval @@ -7976,7 +7976,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0F") + (tedit "65C4CD22") (at 313.5 313.5 0) (descr "1 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.029035 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.2) @@ -8321,7 +8321,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD22") (at 336.0 313.5 270) (attr) (pad "1" thru_hole oval @@ -8340,7 +8340,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0F") + (tedit "65C4CD23") (at 370.5 313.5 0) (descr "2 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.116142 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 6.372126) @@ -8885,7 +8885,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD23") (at 393.0 313.5 270) (attr) (pad "1" thru_hole oval @@ -8904,7 +8904,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B0D") + (tedit "65C4CD21") (at 142.5 370.5 0) (descr "3 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.261319 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 3.991398) @@ -9247,7 +9247,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD23") (at 165.0 370.5 270) (attr) (pad "1" thru_hole oval @@ -9266,7 +9266,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D30E8") + (tedit "65C4CD23") (at 199.5 370.5 0) (descr "5 turn 35.00 mm diameter twisted coil footprint, inductance approximately 0.725885 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 1.421561) @@ -9855,7 +9855,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD23") (at 222.0 370.5 270) (attr) (pad "1" thru_hole oval @@ -9874,7 +9874,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D30E8") + (tedit "65C4CD23") (at 256.5 370.5 0) (descr "10 turn 35.00 mm diameter twisted coil footprint, inductance approximately 2.903542 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.492055) @@ -10911,7 +10911,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD24") (at 279.0 370.5 270) (attr) (pad "1" thru_hole oval @@ -10930,7 +10930,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "652D1B10") + (tedit "65C4CD24") (at 313.5 370.5 0) (descr "25 turn 35.00 mm diameter twisted coil footprint, inductance approximately 18.147136 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.296779) @@ -13193,7 +13193,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD24") (at 336.0 370.5 270) (attr) (pad "1" thru_hole oval @@ -13212,7 +13212,7 @@ (version 20221018) (generator GerbonaraTwistedCoilGenV1) (layer "F.Cu") - (tedit "65363A90") + (tedit "65C4CD24") (at 370.5 370.5 0) (descr "25 turn 35.00 mm diameter twisted coil footprint, inductance approximately 18.147136 µH. Generated by gerbonara'c Twisted Coil generator, version 1.0.0.") (clearance 0.277182) @@ -17283,7 +17283,7 @@ (zone_connect 0))) (footprint "conn_gen_01x2" (layer "F.Cu") - (tedit "65363CD6") + (tedit "65C4CD24") (at 393.0 370.5 270) (attr) (pad "1" thru_hole oval @@ -17307,7 +17307,7 @@ (size 6.0 6.0) (thickness 0.6)) (justify left top))) - (gr_text "v1.0 2023-10-23 © 2023 Jan Götte, FG KOM, TU Darmstadt" + (gr_text "v1.0 2024-02-08 © 2023 Jan Götte, FG KOM, TU Darmstadt" (at 399.0 107.0 0) (layer "F.SilkS") (effects @@ -17334,7 +17334,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 142.5 122.8 0) (layer "B.SilkS") (effects @@ -17370,7 +17370,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 199.5 122.8 0) (layer "B.SilkS") (effects @@ -17406,7 +17406,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 256.5 122.8 0) (layer "B.SilkS") (effects @@ -17442,7 +17442,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 313.5 122.8 0) (layer "B.SilkS") (effects @@ -17478,7 +17478,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 370.5 122.8 0) (layer "B.SilkS") (effects @@ -17514,7 +17514,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 142.5 179.8 0) (layer "B.SilkS") (effects @@ -17550,7 +17550,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 199.5 179.8 0) (layer "B.SilkS") (effects @@ -17586,7 +17586,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 256.5 179.8 0) (layer "B.SilkS") (effects @@ -17622,7 +17622,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 313.5 179.8 0) (layer "B.SilkS") (effects @@ -17658,7 +17658,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 370.5 179.8 0) (layer "B.SilkS") (effects @@ -17694,7 +17694,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 142.5 236.8 0) (layer "B.SilkS") (effects @@ -17730,7 +17730,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 199.5 236.8 0) (layer "B.SilkS") (effects @@ -17766,7 +17766,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 256.5 236.8 0) (layer "B.SilkS") (effects @@ -17802,7 +17802,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 313.5 236.8 0) (layer "B.SilkS") (effects @@ -17838,7 +17838,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 370.5 236.8 0) (layer "B.SilkS") (effects @@ -17874,7 +17874,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 142.5 293.8 0) (layer "B.SilkS") (effects @@ -17910,7 +17910,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 199.5 293.8 0) (layer "B.SilkS") (effects @@ -17946,7 +17946,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 256.5 293.8 0) (layer "B.SilkS") (effects @@ -17982,7 +17982,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 313.5 293.8 0) (layer "B.SilkS") (effects @@ -18018,7 +18018,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 370.5 293.8 0) (layer "B.SilkS") (effects @@ -18054,7 +18054,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 142.5 350.8 0) (layer "B.SilkS") (effects @@ -18090,7 +18090,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 199.5 350.8 0) (layer "B.SilkS") (effects @@ -18126,7 +18126,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 256.5 350.8 0) (layer "B.SilkS") (effects @@ -18162,7 +18162,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 313.5 350.8 0) (layer "B.SilkS") (effects @@ -18198,7 +18198,7 @@ (size 2.0 2.0) (thickness 0.4)) (justify top mirror))) - (gr_text "v1.0 2023-10-23" + (gr_text "v1.0 2024-02-08" (at 370.5 350.8 0) (layer "B.SilkS") (effects @@ -18861,898 +18861,898 @@ (end 161.27 141.23) (width 2.0) (layer "F.Cu") - (tstamp "cc77ba32-98ae-4d79-a592-5d59c0e451cb")) + (tstamp "538fe6df-1817-4d6f-9621-a721cdee6fd5")) (segment (start 161.27 141.23) (end 163.25 141.23) (width 2.0) (layer "F.Cu") - (tstamp "52dc5583-e39b-4320-9af7-1b37b4100c1f")) + (tstamp "40dcb99f-5059-47cb-8c22-857fbc2553d0")) (segment (start 163.25 141.23) (end 165.0 141.23) (width 2.0) (layer "F.Cu") - (tstamp "5e6b373c-8f4d-49ae-9ed8-a638adfea223")) + (tstamp "3df80214-faf5-494f-b0f9-c457f582a218")) (segment (start 160.0 142.5) (end 161.27 143.77) (width 2.0) (layer "B.Cu") - (tstamp "5ca99898-c098-4efe-a29c-6a5ae7a599e5")) + (tstamp "3c1750f2-038f-4d42-8638-3e7ecd34289d")) (segment (start 161.27 143.77) (end 163.25 143.77) (width 2.0) (layer "B.Cu") - (tstamp "07d13be0-f7cb-45d6-9c9f-bc75dc9bfcc9")) + (tstamp "5d86b051-e4db-4cf4-a34e-dc95eea40e0e")) (segment (start 163.25 143.77) (end 165.0 143.77) (width 2.0) (layer "B.Cu") - (tstamp "f4d4c8cc-2a1b-464f-b156-7fff5a365995")) + (tstamp "67cb02b2-13c6-49ca-ad7c-b124554bb33b")) (segment (start 217.0 142.5) (end 218.27 141.23) (width 2.0) (layer "F.Cu") - (tstamp "d445a5c7-5406-4cdd-8e62-59e6e3c1f98a")) + (tstamp "628491df-462d-40a8-af56-91c370e5d42a")) (segment (start 218.27 141.23) (end 220.25 141.23) (width 2.0) (layer "F.Cu") - (tstamp "775512d5-4e96-4fc4-9e22-e408002092ec")) + (tstamp "ff27b321-1132-4dd3-956e-8ff6aaa1558c")) (segment (start 220.25 141.23) (end 222.0 141.23) (width 2.0) (layer "F.Cu") - (tstamp "1fad411c-3e2f-4ade-8b3e-c7bb49f5f603")) + (tstamp "668977fc-b50e-4084-837c-85b5c394461d")) (segment (start 217.0 142.5) (end 218.27 143.77) (width 2.0) (layer "B.Cu") - (tstamp "d724c15b-064b-4732-8313-ec1e01442ab7")) + (tstamp "12932f7a-21cd-4518-8021-a97664b5653e")) (segment (start 218.27 143.77) (end 220.25 143.77) (width 2.0) (layer "B.Cu") - (tstamp "f4184ae4-7d0a-4596-bdfb-63722b34b2fa")) + (tstamp "36f8227d-d1ed-491e-843c-382890253fea")) (segment (start 220.25 143.77) (end 222.0 143.77) (width 2.0) (layer "B.Cu") - (tstamp "71dd1631-9cb1-4387-8d9b-e2e9cfe7a722")) + (tstamp "64f22f61-115c-482b-bb3b-d3f283633320")) (segment (start 274.0 142.5) (end 275.27 141.23) (width 1.5) (layer "F.Cu") - (tstamp "b44bde31-1296-4300-9047-53d3ba6f8b15")) + (tstamp "36d6c954-9070-4321-bbc9-baf2ea9ee83f")) (segment (start 275.27 141.23) (end 277.25 141.23) (width 1.5) (layer "F.Cu") - (tstamp "03f3037f-a8c0-40bc-8d72-3819dd211c87")) + (tstamp "15e51db4-d27e-4c59-bd78-fd13f0fc3583")) (segment (start 277.25 141.23) (end 279.0 141.23) (width 1.5) (layer "F.Cu") - (tstamp "f3f5b250-505e-4cee-b117-123d294ece3c")) + (tstamp "69fe834f-7463-4626-869b-f77f0d1958af")) (segment (start 274.0 142.5) (end 275.27 143.77) (width 1.5) (layer "B.Cu") - (tstamp "cac03d07-8feb-4bc4-8c56-95ceff10b585")) + (tstamp "37988d47-591a-4e33-8b34-bce3788c3f4d")) (segment (start 275.27 143.77) (end 277.25 143.77) (width 1.5) (layer "B.Cu") - (tstamp "f60f867b-7a0c-48cd-8299-67bc9189e6a9")) + (tstamp "7f8169c9-9e96-4adf-8d12-57efdbe95d13")) (segment (start 277.25 143.77) (end 279.0 143.77) (width 1.5) (layer "B.Cu") - (tstamp "fb5e4a93-7a73-42b4-b6f8-05f69bd8fc2f")) + (tstamp "12466331-f932-4243-927b-826fca1dcb08")) (segment (start 331.0 142.5) (end 332.27 141.23) (width 0.8) (layer "F.Cu") - (tstamp "ff1d1c5c-6c11-4db4-80b8-3b7f53968e57")) + (tstamp "3d7086f6-0dd4-44a5-b95b-6e7febc7809c")) (segment (start 332.27 141.23) (end 334.25 141.23) (width 0.8) (layer "F.Cu") - (tstamp "54a24bf8-5303-4d33-accb-47f1b153593d")) + (tstamp "f5236e70-e9dc-4815-9c8b-8029db30adda")) (segment (start 334.25 141.23) (end 336.0 141.23) (width 0.8) (layer "F.Cu") - (tstamp "8a5ce407-fcf1-4b2a-aa5c-267bea1ea73c")) + (tstamp "da8a5a8e-8723-4464-8850-04761ad11230")) (segment (start 331.0 142.5) (end 332.27 143.77) (width 0.8) (layer "B.Cu") - (tstamp "fd7b5943-b201-400a-95ac-499de095673f")) + (tstamp "3d6f379a-4836-42b5-893f-34ad79d8dd29")) (segment (start 332.27 143.77) (end 334.25 143.77) (width 0.8) (layer "B.Cu") - (tstamp "10a323e8-15b0-414c-8e96-0d2267209996")) + (tstamp "c26f1c16-4729-4733-b70a-86ef86486581")) (segment (start 334.25 143.77) (end 336.0 143.77) (width 0.8) (layer "B.Cu") - (tstamp "3c813f13-3592-4723-be95-6f8ae8874584")) + (tstamp "69e1a07a-cc85-4297-a4e1-26047b2b819d")) (segment (start 388.0 142.5) (end 389.27 141.23) (width 0.5) (layer "F.Cu") - (tstamp "4b991a49-3342-4e87-9a47-a49fcac68b32")) + (tstamp "33b231cc-e15b-4639-bc44-69412976dff4")) (segment (start 389.27 141.23) (end 391.25 141.23) (width 0.5) (layer "F.Cu") - (tstamp "0d0c2f33-4647-4cbf-94c1-27a41348fe08")) + (tstamp "85234a90-3347-42d6-a7fc-2bb5f0c2d4cf")) (segment (start 391.25 141.23) (end 393.0 141.23) (width 0.5) (layer "F.Cu") - (tstamp "0f40b136-f23e-47f9-86d0-e4e6a71690f0")) + (tstamp "e4297c87-7e47-4563-bc2e-23430d4f63eb")) (segment (start 388.0 142.5) (end 389.27 143.77) (width 0.5) (layer "B.Cu") - (tstamp "1d5a4589-d126-43c9-b3cc-b21c2c5fcf35")) + (tstamp "2d514b85-0ae4-44f2-8970-97501da2eb01")) (segment (start 389.27 143.77) (end 391.25 143.77) (width 0.5) (layer "B.Cu") - (tstamp "daba8e2c-c749-4717-8816-581cd2b663c4")) + (tstamp "18339c88-e57f-4d93-8a1d-2361c3f97616")) (segment (start 391.25 143.77) (end 393.0 143.77) (width 0.5) (layer "B.Cu") - (tstamp "e4c99e22-b87c-4b01-aeca-3cd2b168bf39")) + (tstamp "061dfa10-4be9-46da-936e-f806358f15ea")) (segment (start 160.0 199.5) (end 161.27 198.23) (width 0.25) (layer "F.Cu") - (tstamp "9de3d02e-acaf-43db-be40-f3f68e56669f")) + (tstamp "85f2520a-7c1c-41f5-a255-ceec3c4c5d04")) (segment (start 161.27 198.23) (end 163.25 198.23) (width 0.25) (layer "F.Cu") - (tstamp "85f12070-3da8-4b35-8f81-085d7a5e7446")) + (tstamp "dc25ae1a-99ba-4a50-a22d-8f374d65d970")) (segment (start 163.25 198.23) (end 165.0 198.23) (width 0.25) (layer "F.Cu") - (tstamp "783ebe7a-128b-40c7-a695-e5e2767c243e")) + (tstamp "c490d6cf-8995-4e9f-ba4e-39a1ea716446")) (segment (start 160.0 199.5) (end 161.27 200.77) (width 0.25) (layer "B.Cu") - (tstamp "0d974c87-c5f7-4e2e-ac82-c5579dab4c19")) + (tstamp "03da26a0-b618-4772-9fbe-e918a34c519c")) (segment (start 161.27 200.77) (end 163.25 200.77) (width 0.25) (layer "B.Cu") - (tstamp "c73a3ee9-fa5d-454f-97bc-8bd714fc999d")) + (tstamp "b510510e-6308-4f90-8c1a-50cb235fc2b6")) (segment (start 163.25 200.77) (end 165.0 200.77) (width 0.25) (layer "B.Cu") - (tstamp "456717f4-84f9-436d-85c9-89bccf1d9d33")) + (tstamp "64b486ba-f006-4dfd-8aa4-bda871a4506e")) (segment (start 217.0 199.5) (end 218.27 198.23) (width 2.0) (layer "F.Cu") - (tstamp "bcf510b8-13dc-4a08-8369-aeb7c3057a64")) + (tstamp "49315b8d-8e51-40ee-8ff6-e9bd770e07ac")) (segment (start 218.27 198.23) (end 220.25 198.23) (width 2.0) (layer "F.Cu") - (tstamp "842ca402-9d2b-42b6-a9ca-48d120da921e")) + (tstamp "2b41441f-26cc-491e-817a-c47c0366781a")) (segment (start 220.25 198.23) (end 222.0 198.23) (width 2.0) (layer "F.Cu") - (tstamp "5a2d09d0-3681-415d-ad91-c4d37f068f65")) + (tstamp "5b8febaa-b0a4-45a3-a14f-e7612b0becae")) (segment (start 217.0 199.5) (end 218.27 200.77) (width 2.0) (layer "B.Cu") - (tstamp "6e551884-4c19-41c0-9d44-22a4f3b1d0db")) + (tstamp "76cb65e2-0873-4037-bca4-31ef9259c457")) (segment (start 218.27 200.77) (end 220.25 200.77) (width 2.0) (layer "B.Cu") - (tstamp "8b171a6e-5d20-48cc-a290-a9a22a248275")) + (tstamp "978e6982-8d20-44a8-94c2-9003013a9684")) (segment (start 220.25 200.77) (end 222.0 200.77) (width 2.0) (layer "B.Cu") - (tstamp "8713c7f8-e356-47d7-88ac-efc7e0a3fe9a")) + (tstamp "4a579cd4-f3dd-4ff4-890b-9d841096037c")) (segment (start 274.0 199.5) (end 275.27 198.23) (width 2.0) (layer "F.Cu") - (tstamp "941c9373-0ecc-479a-a5b7-aa9caa52af05")) + (tstamp "020fa55e-2d8d-48ab-8c93-30254c1fd279")) (segment (start 275.27 198.23) (end 277.25 198.23) (width 2.0) (layer "F.Cu") - (tstamp "5f9945bb-6478-453d-826d-53e7f225e954")) + (tstamp "13bb69d6-4a3a-4929-895e-4c9758258861")) (segment (start 277.25 198.23) (end 279.0 198.23) (width 2.0) (layer "F.Cu") - (tstamp "f88af976-5207-49b9-b0dc-1b710ec4bb9a")) + (tstamp "d83d3a36-0385-45ed-a4e5-2ff3b6a64695")) (segment (start 274.0 199.5) (end 275.27 200.77) (width 2.0) (layer "B.Cu") - (tstamp "c89550c7-032a-4951-a68b-ad087d55c452")) + (tstamp "2e125370-a0a8-40e5-9c10-4009a3ae2cdc")) (segment (start 275.27 200.77) (end 277.25 200.77) (width 2.0) (layer "B.Cu") - (tstamp "d79f7286-e179-4df6-a27c-55ebf49db9b0")) + (tstamp "7a48ca8f-a7a8-4d4e-a847-1feaf9394698")) (segment (start 277.25 200.77) (end 279.0 200.77) (width 2.0) (layer "B.Cu") - (tstamp "7a2be6c2-9a9e-4abb-824e-de4e6a1d83fa")) + (tstamp "71136ebe-8b2c-4137-9310-c4a7780513bd")) (segment (start 331.0 199.5) (end 332.27 198.23) (width 2.0) (layer "F.Cu") - (tstamp "4a17d5c1-70a3-4c2c-a5cd-3e68cf9c33e1")) + (tstamp "22d116a6-390f-4785-982b-6ff309a2929d")) (segment (start 332.27 198.23) (end 334.25 198.23) (width 2.0) (layer "F.Cu") - (tstamp "4afd17fe-65f3-49f4-ae8e-10f49b7a05c7")) + (tstamp "c75c6aef-7f18-458e-ba11-c562c10ac180")) (segment (start 334.25 198.23) (end 336.0 198.23) (width 2.0) (layer "F.Cu") - (tstamp "48928544-455a-48ea-8e53-a70a7cccf216")) + (tstamp "abbf4e10-d376-4ae2-a6da-9ec2ac2bb6ab")) (segment (start 331.0 199.5) (end 332.27 200.77) (width 2.0) (layer "B.Cu") - (tstamp "851f4c24-9753-440d-ba2d-6da47e626568")) + (tstamp "798d0d51-65e1-43b1-8498-ea65377bd49c")) (segment (start 332.27 200.77) (end 334.25 200.77) (width 2.0) (layer "B.Cu") - (tstamp "23503dba-55f3-4690-a695-32aeec13e3d2")) + (tstamp "091cb7a4-293e-428d-9e17-cf22fcbb9cde")) (segment (start 334.25 200.77) (end 336.0 200.77) (width 2.0) (layer "B.Cu") - (tstamp "0860a3ab-4ee0-4956-85a3-1b1b8201029f")) + (tstamp "cd91d08e-07d8-498c-b556-49c2757826fb")) (segment (start 388.0 199.5) (end 389.27 198.23) (width 2.0) (layer "F.Cu") - (tstamp "ba1dbd6b-8bc9-44c4-b5ae-43c2d102e5c2")) + (tstamp "8285259b-01d5-46fd-87a1-1a66403fa0ee")) (segment (start 389.27 198.23) (end 391.25 198.23) (width 2.0) (layer "F.Cu") - (tstamp "7733a5ad-b274-4b5f-ae0d-3bb5bc402321")) + (tstamp "7efea11a-68bd-4ffd-905a-ca3a5a0f20e6")) (segment (start 391.25 198.23) (end 393.0 198.23) (width 2.0) (layer "F.Cu") - (tstamp "fe2de244-1425-4b0a-ad95-c6df88b7fa18")) + (tstamp "5498960a-7f61-44c0-8f96-6551b8a403dc")) (segment (start 388.0 199.5) (end 389.27 200.77) (width 2.0) (layer "B.Cu") - (tstamp "90484f73-d45d-43f1-a3d3-9fa764198434")) + (tstamp "26f2b529-b93e-48dc-b8ba-2fe9831e281e")) (segment (start 389.27 200.77) (end 391.25 200.77) (width 2.0) (layer "B.Cu") - (tstamp "381d79ff-2e2a-4889-8500-60d5dc2cd0d6")) + (tstamp "0cb5e377-f026-4eb2-b61a-78180d8a573a")) (segment (start 391.25 200.77) (end 393.0 200.77) (width 2.0) (layer "B.Cu") - (tstamp "855f1cf0-b49a-4e39-8114-388659de8c1f")) + (tstamp "1a8641a2-e98b-4ea6-b950-e4fbcb24522a")) (segment (start 160.0 256.5) (end 161.27 255.23) (width 1.5) (layer "F.Cu") - (tstamp "7b0e826c-fc59-4c22-8db5-c58d4e385366")) + (tstamp "5607536d-62bf-4a54-b6bd-d7ab3f9ba129")) (segment (start 161.27 255.23) (end 163.25 255.23) (width 1.5) (layer "F.Cu") - (tstamp "a4ec5382-39a7-4c2a-89f4-c94d0f912d5b")) + (tstamp "1684b87e-47ba-4118-ae0d-6aef7c711dcf")) (segment (start 163.25 255.23) (end 165.0 255.23) (width 1.5) (layer "F.Cu") - (tstamp "988392f4-855c-4108-9d3f-9d1ffcfbcaf4")) + (tstamp "9b050b97-164c-4bdc-abaa-db5bff8f774f")) (segment (start 160.0 256.5) (end 161.27 257.77) (width 1.5) (layer "B.Cu") - (tstamp "ea0b7865-0d2d-4cd6-b698-faa3a8057434")) + (tstamp "f60ab34a-8d5a-44bc-bf31-9fd5cc82c8db")) (segment (start 161.27 257.77) (end 163.25 257.77) (width 1.5) (layer "B.Cu") - (tstamp "03c2b8c2-22cd-4563-8d0c-33b066882363")) + (tstamp "cd06d5ce-60fc-409c-8d45-e1c9bde838e2")) (segment (start 163.25 257.77) (end 165.0 257.77) (width 1.5) (layer "B.Cu") - (tstamp "844a5569-6bb3-424d-a4a9-4d81080f0386")) + (tstamp "9858233b-35b4-4bd6-8904-213f09cb1aa3")) (segment (start 217.0 256.5) (end 218.27 255.23) (width 0.5) (layer "F.Cu") - (tstamp "eb7bb0ad-4900-481d-bab0-c97a6ca1a3fe")) + (tstamp "f4287ccf-5876-49b0-abd5-409c224b0542")) (segment (start 218.27 255.23) (end 220.25 255.23) (width 0.5) (layer "F.Cu") - (tstamp "f4508c89-0775-4d00-b4e3-8d130ca5f316")) + (tstamp "a406a8e1-fd28-49c6-b1c4-0aca833e7215")) (segment (start 220.25 255.23) (end 222.0 255.23) (width 0.5) (layer "F.Cu") - (tstamp "db2265ce-c081-45c3-8bae-9464bc69b34e")) + (tstamp "286d9132-11fd-49c1-a426-d02a490edef0")) (segment (start 217.0 256.5) (end 218.27 257.77) (width 0.5) (layer "B.Cu") - (tstamp "735cd73d-aa79-4126-9014-5fa1d7ee61f5")) + (tstamp "214bfda8-c276-421f-b75c-9b798d82913f")) (segment (start 218.27 257.77) (end 220.25 257.77) (width 0.5) (layer "B.Cu") - (tstamp "23646271-2a1f-4b4b-8a77-da1a5d465e72")) + (tstamp "d2f65862-0617-46f2-9242-4a7dddbbce6a")) (segment (start 220.25 257.77) (end 222.0 257.77) (width 0.5) (layer "B.Cu") - (tstamp "3738fd42-defb-4635-8d3e-43f887a0f1ac")) + (tstamp "4ab13304-10d2-4dd7-9b84-537229d1f667")) (segment (start 274.0 256.5) (end 275.27 255.23) (width 2.0) (layer "F.Cu") - (tstamp "644024fe-b60d-43d6-a571-ff13b9158e36")) + (tstamp "e536d338-a2d6-4c2a-b241-b84a0cd02c0e")) (segment (start 275.27 255.23) (end 277.25 255.23) (width 2.0) (layer "F.Cu") - (tstamp "d1b9a725-d3ac-4b27-9fb2-346934103042")) + (tstamp "8513ff66-1e2a-4510-a7b0-a99b0aa73dd8")) (segment (start 277.25 255.23) (end 279.0 255.23) (width 2.0) (layer "F.Cu") - (tstamp "9ab85fb8-19c0-40f4-aad8-2f767c111f4f")) + (tstamp "8498e10b-0f0f-41f1-a076-29262ab82b32")) (segment (start 274.0 256.5) (end 275.27 257.77) (width 2.0) (layer "B.Cu") - (tstamp "82c01dd3-f8b1-4a6c-834f-992d5a089b21")) + (tstamp "0f3114ce-34b5-4f86-94a3-4fd3c6def32d")) (segment (start 275.27 257.77) (end 277.25 257.77) (width 2.0) (layer "B.Cu") - (tstamp "6139abf5-d770-42f5-ab01-b275a072c2f7")) + (tstamp "3baa8a13-e784-4c87-bc12-2ee9175452fd")) (segment (start 277.25 257.77) (end 279.0 257.77) (width 2.0) (layer "B.Cu") - (tstamp "0896c76e-a3d4-4105-920d-3c9e0c8a388c")) + (tstamp "8b789e8c-be8f-4b34-9587-3c34c736f0ef")) (segment (start 331.0 256.5) (end 332.27 255.23) (width 2.0) (layer "F.Cu") - (tstamp "9e44cea5-8709-4f9f-a02d-b92aecd15368")) + (tstamp "3e1cd678-e83f-44e8-8973-6d61bf27a9cb")) (segment (start 332.27 255.23) (end 334.25 255.23) (width 2.0) (layer "F.Cu") - (tstamp "6c93ec99-2055-444f-9a4b-852401171932")) + (tstamp "930d36d0-993b-4fa3-8dfc-791ceaaf7a95")) (segment (start 334.25 255.23) (end 336.0 255.23) (width 2.0) (layer "F.Cu") - (tstamp "3a598970-7957-4c0c-8c59-472b0cb46a3d")) + (tstamp "e804c76e-2485-4f78-a828-a3f21dff145e")) (segment (start 331.0 256.5) (end 332.27 257.77) (width 2.0) (layer "B.Cu") - (tstamp "ac89fc34-3167-4631-b948-0fb5c394e23c")) + (tstamp "5bcc45a1-90dd-492c-8611-eaa9e9519372")) (segment (start 332.27 257.77) (end 334.25 257.77) (width 2.0) (layer "B.Cu") - (tstamp "caa6005f-c290-40a3-bd68-6db08fc486d0")) + (tstamp "febe49ac-7641-4d67-b7d4-0672f7c5f862")) (segment (start 334.25 257.77) (end 336.0 257.77) (width 2.0) (layer "B.Cu") - (tstamp "b7417429-c72a-4ca8-aafc-48ab7dfec8ab")) + (tstamp "1fdbbcae-6879-4818-824b-3c49bdd78777")) (segment (start 388.0 256.5) (end 389.27 255.23) (width 2.0) (layer "F.Cu") - (tstamp "d808bcaa-ebde-4d93-9971-3380e17d9631")) + (tstamp "02f9e718-84af-4bb2-b9c6-467ac34272fd")) (segment (start 389.27 255.23) (end 391.25 255.23) (width 2.0) (layer "F.Cu") - (tstamp "9a9fed1b-c0a9-49e0-ad42-e6346a88c502")) + (tstamp "d2e1c4a4-93d5-479f-a960-001685301d8c")) (segment (start 391.25 255.23) (end 393.0 255.23) (width 2.0) (layer "F.Cu") - (tstamp "6ba85a1d-3a0e-45d6-9cba-9be4d6ae5581")) + (tstamp "9ff6f52b-a931-41fc-bbd8-38ced3d3a85c")) (segment (start 388.0 256.5) (end 389.27 257.77) (width 2.0) (layer "B.Cu") - (tstamp "d8e8a010-188a-4368-998f-d40fe9b6b496")) + (tstamp "e041cf3f-7808-48d3-8631-69d5bd6d3c36")) (segment (start 389.27 257.77) (end 391.25 257.77) (width 2.0) (layer "B.Cu") - (tstamp "aca8bfc2-ce79-4179-b7cf-f62937cf1c75")) + (tstamp "5677426f-df2c-49f9-871a-55fed5eedf58")) (segment (start 391.25 257.77) (end 393.0 257.77) (width 2.0) (layer "B.Cu") - (tstamp "cd273f31-ab6c-45be-a7cf-c9cd131ab6ea")) + (tstamp "9d5c8c75-ae60-4a81-afaa-f4009797972b")) (segment (start 160.0 313.5) (end 161.27 312.23) (width 2.0) (layer "F.Cu") - (tstamp "2d995403-f49e-449a-9999-bd8966755b22")) + (tstamp "0aa5cdea-0eef-4a4d-b32c-2eb018ee7d06")) (segment (start 161.27 312.23) (end 163.25 312.23) (width 2.0) (layer "F.Cu") - (tstamp "a6c1f7c2-d53b-48db-b8c7-7435e085f7b0")) + (tstamp "760a0488-6287-4a1f-a826-07b35196ef38")) (segment (start 163.25 312.23) (end 165.0 312.23) (width 2.0) (layer "F.Cu") - (tstamp "3d1af986-34f7-4463-995a-0c61b6d242e0")) + (tstamp "54baf8a3-c538-450f-bdcd-b6113b16500d")) (segment (start 160.0 313.5) (end 161.27 314.77) (width 2.0) (layer "B.Cu") - (tstamp "14c32cbd-a2d1-44c3-b3b6-c6433233a373")) + (tstamp "6801b668-3bc8-4402-899d-af9fb615af34")) (segment (start 161.27 314.77) (end 163.25 314.77) (width 2.0) (layer "B.Cu") - (tstamp "db75ed55-51ce-4453-b054-569cf8a03ac7")) + (tstamp "3ff52af9-e8eb-4e31-8257-36ba51f99a5b")) (segment (start 163.25 314.77) (end 165.0 314.77) (width 2.0) (layer "B.Cu") - (tstamp "dbec469c-648a-4fb7-a492-afb15039cc07")) + (tstamp "e80d7760-002b-40e0-b364-bdccdb1e826e")) (segment (start 217.0 313.5) (end 218.27 312.23) (width 1.5) (layer "F.Cu") - (tstamp "ce43b568-c19d-4a80-9ac3-d8dd70f49cbc")) + (tstamp "405c3399-e620-4e50-9607-4f5b680eb7a6")) (segment (start 218.27 312.23) (end 220.25 312.23) (width 1.5) (layer "F.Cu") - (tstamp "9a78a9df-67fe-4097-a514-cd7d2aed3973")) + (tstamp "e734c548-264d-4217-9a73-73a941bcb1bd")) (segment (start 220.25 312.23) (end 222.0 312.23) (width 1.5) (layer "F.Cu") - (tstamp "03635209-0b07-487c-9180-ce193f6a85ed")) + (tstamp "f3230b35-c1bf-40f7-9f5a-21a2e23287b1")) (segment (start 217.0 313.5) (end 218.27 314.77) (width 1.5) (layer "B.Cu") - (tstamp "fab7421c-96f3-4642-a6e8-44bfd7054402")) + (tstamp "ac0eda4d-b412-487d-9935-c1c4db390337")) (segment (start 218.27 314.77) (end 220.25 314.77) (width 1.5) (layer "B.Cu") - (tstamp "8d3a4531-8d2d-4d6d-a815-5d3a9b4664ca")) + (tstamp "4bd3f447-a7fc-4902-b45d-9b6c08e74861")) (segment (start 220.25 314.77) (end 222.0 314.77) (width 1.5) (layer "B.Cu") - (tstamp "fb85a44e-0740-4934-a6fd-b7f7c9432daf")) + (tstamp "3c014fbb-dac7-4fc0-b00c-624f17c645eb")) (segment (start 274.0 313.5) (end 275.27 312.23) (width 0.5) (layer "F.Cu") - (tstamp "fb118b27-73fd-490c-974f-1f8189fc2daa")) + (tstamp "64d23b93-ed9b-4f74-b223-81d812f8b617")) (segment (start 275.27 312.23) (end 277.25 312.23) (width 0.5) (layer "F.Cu") - (tstamp "8000b029-bc5e-4027-a00b-67fd5dd4ce23")) + (tstamp "78f90b8c-fe11-418a-a6df-ab3cd1914a2a")) (segment (start 277.25 312.23) (end 279.0 312.23) (width 0.5) (layer "F.Cu") - (tstamp "50a8d71c-a699-4638-9c89-bce3b98702ec")) + (tstamp "c4cd6113-87d0-4c9f-a951-9ed1314aea51")) (segment (start 274.0 313.5) (end 275.27 314.77) (width 0.5) (layer "B.Cu") - (tstamp "38feba37-eba8-4943-9abd-eec61b1f7fa5")) + (tstamp "6818d3b4-0e6d-48e5-98bb-9404f26c6393")) (segment (start 275.27 314.77) (end 277.25 314.77) (width 0.5) (layer "B.Cu") - (tstamp "2c84a7a2-362a-485e-994f-a91c8f8428bf")) + (tstamp "84050eec-ced2-47f9-8741-80f6c8dc887b")) (segment (start 277.25 314.77) (end 279.0 314.77) (width 0.5) (layer "B.Cu") - (tstamp "40c109f5-131c-4511-ae69-8cdce121fb88")) + (tstamp "6069833e-09d4-4457-bd72-d6e9f5010d01")) (segment (start 331.0 313.5) (end 332.27 312.23) (width 2.0) (layer "F.Cu") - (tstamp "ec577787-ffbc-4e45-8a2c-89b08919967b")) + (tstamp "d509a336-5209-4e0a-a944-27cb875a1c49")) (segment (start 332.27 312.23) (end 334.25 312.23) (width 2.0) (layer "F.Cu") - (tstamp "edae10b8-58e4-47e0-9181-6220581163eb")) + (tstamp "fd9d9461-0c3c-4e94-978a-a1d07aaf1bc2")) (segment (start 334.25 312.23) (end 336.0 312.23) (width 2.0) (layer "F.Cu") - (tstamp "aeca62fb-8ba6-4096-bf11-989ba2718a5b")) + (tstamp "42fa8fcb-590c-473e-8d7b-06315e19ea18")) (segment (start 331.0 313.5) (end 332.27 314.77) (width 2.0) (layer "B.Cu") - (tstamp "8f5f72f2-a1a8-4621-8b20-5d26437e53c0")) + (tstamp "d30af16d-4e45-4dff-90c2-9a540ddd2595")) (segment (start 332.27 314.77) (end 334.25 314.77) (width 2.0) (layer "B.Cu") - (tstamp "baa90f99-6a90-4591-b0bb-4e49183831fb")) + (tstamp "93bebbb6-43b4-48c6-8fbb-599114a11aef")) (segment (start 334.25 314.77) (end 336.0 314.77) (width 2.0) (layer "B.Cu") - (tstamp "a2e165d7-7022-4d47-bc01-cd77b0fcafeb")) + (tstamp "95d9a9e7-3e0f-4eee-9cbb-f15eac284adc")) (segment (start 388.0 313.5) (end 389.27 312.23) (width 2.0) (layer "F.Cu") - (tstamp "5d39730c-ed25-4282-b36e-378121137c06")) + (tstamp "7b269b78-ec63-4685-ae42-0d2b2f0d60de")) (segment (start 389.27 312.23) (end 391.25 312.23) (width 2.0) (layer "F.Cu") - (tstamp "430f90a2-780e-428e-b2c5-08caaf77438c")) + (tstamp "c74e7b0c-a8b2-4597-ac10-ea974bf2dbc1")) (segment (start 391.25 312.23) (end 393.0 312.23) (width 2.0) (layer "F.Cu") - (tstamp "b1b83e19-db8e-45d1-80db-05285c5e5e99")) + (tstamp "439528da-bcb0-40de-9f8d-b8365a3fbcb4")) (segment (start 388.0 313.5) (end 389.27 314.77) (width 2.0) (layer "B.Cu") - (tstamp "bf0701e4-2907-4645-81ed-9af2d64ca65e")) + (tstamp "0f0a37f5-1199-47cc-8db8-ea4596632338")) (segment (start 389.27 314.77) (end 391.25 314.77) (width 2.0) (layer "B.Cu") - (tstamp "f11f0175-95ab-463f-9912-e941b6f8f3cd")) + (tstamp "a10234f0-d178-42ba-b0af-1ea0a03c311e")) (segment (start 391.25 314.77) (end 393.0 314.77) (width 2.0) (layer "B.Cu") - (tstamp "8612b1b8-9ca9-4c11-badb-289260cff9ad")) + (tstamp "fa1e1dfc-f8ad-47d0-9f49-373d40444a1e")) (segment (start 160.0 370.5) (end 161.27 369.23) (width 2.0) (layer "F.Cu") - (tstamp "d06dd04f-4533-47b1-9451-928a5157f471")) + (tstamp "5fa9aa01-72c7-43c0-993e-2bf917cd0f53")) (segment (start 161.27 369.23) (end 163.25 369.23) (width 2.0) (layer "F.Cu") - (tstamp "38c6610e-77ad-40b6-9781-43dadb582631")) + (tstamp "cbcc224a-4f4b-4676-8242-995a513fc0a8")) (segment (start 163.25 369.23) (end 165.0 369.23) (width 2.0) (layer "F.Cu") - (tstamp "90e91308-ebe5-4e28-9748-e2a844fe1014")) + (tstamp "191f9a6a-c1e1-4381-84af-e65b0699e788")) (segment (start 160.0 370.5) (end 161.27 371.77) (width 2.0) (layer "B.Cu") - (tstamp "c77a682a-58f9-4e30-9b50-96afb8190400")) + (tstamp "c6f5a0db-5858-4797-825a-e468ab7663da")) (segment (start 161.27 371.77) (end 163.25 371.77) (width 2.0) (layer "B.Cu") - (tstamp "66883d1c-c502-45d5-9d49-5f89426922ae")) + (tstamp "cbe67780-e281-45f5-8e65-787f333fbe6e")) (segment (start 163.25 371.77) (end 165.0 371.77) (width 2.0) (layer "B.Cu") - (tstamp "70a470ac-786f-4205-a84e-f1b8c9ae25d8")) + (tstamp "a6b8871d-ef79-4b58-9ff9-217477346540")) (segment (start 217.0 370.5) (end 218.27 369.23) (width 2.0) (layer "F.Cu") - (tstamp "97291b24-53cd-48f0-85b6-8e2fe62d27c0")) + (tstamp "5d40bbdf-0095-4e6b-a3c1-f9490d0325d4")) (segment (start 218.27 369.23) (end 220.25 369.23) (width 2.0) (layer "F.Cu") - (tstamp "90291ad9-782f-491f-ba1f-2d1d84570d18")) + (tstamp "b493079f-99d0-404c-ba3d-6478e0084e6a")) (segment (start 220.25 369.23) (end 222.0 369.23) (width 2.0) (layer "F.Cu") - (tstamp "bbed5623-531f-4cfb-bd30-5d6cf6c1d454")) + (tstamp "13e4e8ea-eabf-4002-94f9-beb5873378cd")) (segment (start 217.0 370.5) (end 218.27 371.77) (width 2.0) (layer "B.Cu") - (tstamp "3e5a8527-d29a-4405-95f0-ecf94d3a3147")) + (tstamp "eab01787-b443-471c-9656-8964114f5685")) (segment (start 218.27 371.77) (end 220.25 371.77) (width 2.0) (layer "B.Cu") - (tstamp "3cfda92c-fc2a-4a90-9d65-7fe40d67a3d6")) + (tstamp "ca3cd6fd-8010-4624-a8f4-98bcd1ae3511")) (segment (start 220.25 371.77) (end 222.0 371.77) (width 2.0) (layer "B.Cu") - (tstamp "60f73f26-20a1-4174-bf55-ce2c67c389f9")) + (tstamp "7d19f7c4-4cd7-40c3-8823-4bae851bca13")) (segment (start 274.0 370.5) (end 275.27 369.23) (width 1.5) (layer "F.Cu") - (tstamp "33ee4c6a-77ba-44f1-9853-7e9ffc00e2b6")) + (tstamp "6da99726-db90-4a90-9a9e-f8402135f6dd")) (segment (start 275.27 369.23) (end 277.25 369.23) (width 1.5) (layer "F.Cu") - (tstamp "bbadd70a-8eb1-4a75-b9bc-7ecdf9c87e88")) + (tstamp "169f609c-cb34-4348-bf19-e85525823f91")) (segment (start 277.25 369.23) (end 279.0 369.23) (width 1.5) (layer "F.Cu") - (tstamp "1ec73619-bc83-4e12-9e32-ae4d773f231a")) + (tstamp "ca1e231b-11e9-45d2-92a7-ce612e67613a")) (segment (start 274.0 370.5) (end 275.27 371.77) (width 1.5) (layer "B.Cu") - (tstamp "ef37d2ac-619c-464b-8d83-579350ff22f8")) + (tstamp "ae0e3f81-08a6-4166-aaab-309f28dad970")) (segment (start 275.27 371.77) (end 277.25 371.77) (width 1.5) (layer "B.Cu") - (tstamp "e1cd354d-6eff-4c01-825e-e368e7d42a99")) + (tstamp "c7ebf821-90a3-4512-bb9d-8478984bd476")) (segment (start 277.25 371.77) (end 279.0 371.77) (width 1.5) (layer "B.Cu") - (tstamp "08e4d932-396e-4df0-a7a5-c514f224be8f")) + (tstamp "dcc7b1ee-9009-478c-bd54-576dec6a009a")) (segment (start 331.0 370.5) (end 332.27 369.23) (width 0.5) (layer "F.Cu") - (tstamp "ae6a5651-8592-4f07-8546-479774e9b073")) + (tstamp "b9903f18-1bb3-489c-89c1-f9755ce32d12")) (segment (start 332.27 369.23) (end 334.25 369.23) (width 0.5) (layer "F.Cu") - (tstamp "0d6a0abd-d6ea-4a6f-94b6-ae3fb44ed68a")) + (tstamp "267f73ae-49ec-4ad9-a097-e09679e1236b")) (segment (start 334.25 369.23) (end 336.0 369.23) (width 0.5) (layer "F.Cu") - (tstamp "be37ce19-281d-4cba-bcbf-e178f177e3d4")) + (tstamp "eecf12c4-1f58-4675-b72c-bee7d15cfd13")) (segment (start 331.0 370.5) (end 332.27 371.77) (width 0.5) (layer "B.Cu") - (tstamp "2f443b15-96d1-4e0d-8004-5ac6cde8350d")) + (tstamp "ff7d83d2-c1ce-40fa-8d9b-b3e64d09db3f")) (segment (start 332.27 371.77) (end 334.25 371.77) (width 0.5) (layer "B.Cu") - (tstamp "4e7c2cf8-e2eb-4a07-90ad-4d790d2e48ad")) + (tstamp "c3fa219e-215b-4acc-82f6-d1212853ab32")) (segment (start 334.25 371.77) (end 336.0 371.77) (width 0.5) (layer "B.Cu") - (tstamp "66df82ca-8155-4932-b413-2dadbc74299f")) + (tstamp "7c7b46e4-6fba-4504-aed5-abbe3017698e")) (segment (start 388.0 370.5) (end 389.27 369.23) (width 0.5) (layer "F.Cu") - (tstamp "d045094d-15d9-4008-a8a3-6acf44336265")) + (tstamp "9f0c0c60-5ccc-43e9-b4ae-9af40721ee86")) (segment (start 389.27 369.23) (end 391.25 369.23) (width 0.5) (layer "F.Cu") - (tstamp "034b704e-6a1d-4b66-b325-76b2525f3543")) + (tstamp "d2b7071d-ddba-47db-b7ee-cf84ef01adf2")) (segment (start 391.25 369.23) (end 393.0 369.23) (width 0.5) (layer "F.Cu") - (tstamp "dec75311-eb13-41db-ac4a-0ca2ed11a429")) + (tstamp "3f96f4eb-fd30-4b66-af36-c9ef8936f052")) (segment (start 388.0 370.5) (end 389.27 371.77) (width 0.5) (layer "B.Cu") - (tstamp "25e1d853-3351-4d54-82de-50b90b66de37")) + (tstamp "735d2fcb-8416-4efe-b130-73f43f13876c")) (segment (start 389.27 371.77) (end 391.25 371.77) (width 0.5) (layer "B.Cu") - (tstamp "40748f7d-716b-491a-a293-2d9f61b862fd")) + (tstamp "2bd44100-7ee6-486e-9d34-a6937f06962d")) (segment (start 391.25 371.77) (end 393.0 371.77) (width 0.5) (layer "B.Cu") - (tstamp "ca108d76-8bf3-41a2-8cdf-132c87979afc"))) \ No newline at end of file + (tstamp "8a211741-5cf5-44c7-ba13-e9f79c15f8d4"))) \ No newline at end of file diff --git a/sim_runner.py b/sim_runner.py index d615caa..d0c630b 100644 --- a/sim_runner.py +++ b/sim_runner.py @@ -1,11 +1,14 @@ #!/usr/bin/env python3 import threading +import datetime import queue import itertools import pathlib import tempfile +import secrets import sys +import uuid import sqlite3 import time import math @@ -17,9 +20,10 @@ import click from tabulate import tabulate -def mesh_args(db, coil_id, mesh_type, mesh_file, outfile): +def mesh_args(db, coil_id, mesh_type, mesh_file, outfile, **kwargs): mesh_type = {'split': '--mesh-split-out', 'normal': '--mesh-out', 'mutual': '--mesh-mutual-out'}[mesh_type] - rows = db.execute('SELECT key, value FROM results WHERE coil_id=?', (coil_id,)).fetchall() + rows = dict(db.execute('SELECT key, value FROM results WHERE coil_id=?', (coil_id,)).fetchall()) + rows.update(kwargs) args = ['python', '-m', 'twisted_coil_gen_twolayer', mesh_type, mesh_file, '--pcb'] for k, v in rows: prefix, _, k = k.partition('.') @@ -169,7 +173,8 @@ def run(ctx, run_id, log_dir, mesh_dir): if run_id is None: run_id, = ctx.obj['db_connect']().execute('SELECT run_id FROM runs ORDER BY timestamp DESC LIMIT 1').fetchone() ctx.obj['run_id'] = run_id - ctx.obj['log_dir'] = pathlib.Path(log_dir) + log_dir = ctx.obj['log_dir'] = pathlib.Path(log_dir) + log_dir.mkdir(exist_ok=True) ctx.obj['mesh_dir'] = pathlib.Path(mesh_dir) @@ -260,6 +265,73 @@ def self_inductance(ctx, num_jobs): threads.append(t) q.join() +@run.command() +@click.option('target_hosts', type=click.Path(exists=True, dir_okay=False, path_type=pathlib.Path), help='File with one SSH target host name per line') +@click.option('job_file', type=click.Path(exists=True, dir_okay=False, path_type=pathlib.Path), help='JSON job description file') +@click.pass_context +def run_mutual_inductance(ctx, target_hosts, job_file): + db = ctx.obj['db_connect']() + target_hosts = [l.strip() for l in target_hosts.read_text().splitlines()] + log_dir.mkdir(exist_ok=True) + jobs = json.loads(job_file.read_text()) + + q = queue.Queue() + def queue_worker(host): + try: + while True: + case_name, case_id, kwargs = q.get_nowait() + workdir = pathlib.Path('/mesh') / f'{case_name}-{case_id}' # container path + mesh_file = wordir / 'mesh.msh' # container path + host_log = lambda log_name: ctx.obj['log_dir'] / f'{case_name}-{log_name}-{case_id}.log' + mesh_log = host_log('mesh') # host path + sim_log = host_log('sim') # host path + try: + args = mesh_args(db, coil_id, 'mutual', mesh_file, str(workdir / 'tmp_pcb.kicad_pcb'), **kwargs) + res = subprocess.run(['ssh', host, 'podman', 'run', '-v', './mesh:/mesh:rw', 'nice-coils-runner', *args], check=True, capture_output=True, text=True) + mesh_log.write_text(res.stdout + res.stderr) + + try: + tqdm.tqdm.write(f'Processing {mesh_file} on {host}') + res = subprocess.run(['ssh', host, 'podman', 'run', '-v', './mesh:/mesh:rw', 'nice-coils-runner', 'python', '-m', 'coil_parasitics', 'mutual-inductance', '--sim-dir', workdir, mesh_file], check=True, capture_output=True, text=True) + sim_log.write_text(res.stdout + res.stderr) + + try: + for fn in ['ElmerGrid_stdout.log', + 'ElmerGrid_stderr.log', + 'ElmerSolver_stdout.log', + 'ElmerSolver_stderr.log']: + subprocess.run(['scp', f'{host}:mesh/{workdir.name}/{fn}', str(host_log(Path(fn).stem))], check=True, capture_output=True, text=True) + + except subprocess.CalledProcessError as e: + print(f'Error copying simulation logs, rc={e.returncode}', file=sys.stderr) + sim_log.write_text(e.stdout + e.stderr) + + except subprocess.CalledProcessError as e: + print(f'Error running simulation, rc={e.returncode}', file=sys.stderr) + sim_log.write_text(e.stdout + e.stderr) + + except subprocess.CalledProcessError as e: + print('Mesh generation failed with exit code {e.returncode}', file=sys.stderr) + mesh_log.write_text(e.stdout + e.stderr) + + tq.update(1) + q.task_done() + except queue.Empty: + pass + + run_id = f'{datetime.datetime.now():%Y%m%d-%H%M%S}-{secrets.token_urlsafe(6)}' + for i, (job_name, kwargs) in jobs.items(): + case_id = f'{run_id}-{i}' + q.put((job_name, case_id, kwargs)) + + tq = tqdm.tqdm(total=num_meshes-num_completed) + threads = [] + for host in target_hosts: + t = threading.Thread(target=lambda: queue_worker(host), daemon=True) + t.start() + threads.append(t) + q.join() + @run.command() @click.pass_context def self_capacitance(ctx):