Public Member Functions | |
| __init__ (self, float tapeWidth, float layAngle, float edgeRadius, float cableWidth, int numTapes, int numLayers, float layerGap, float numPitches, float tapeResolution, float gapResolution, int sense=1) | |
| tape_shift (self) | |
| conductor_groups (self) | |
| int | z_partition_count (self) |
| int | n_s (self, int layer_index, str kind) |
Public Attributes | |
| tapeWidth = tapeWidth | |
| layAngle = layAngle | |
| edgeRadius = edgeRadius | |
| cableWidth = cableWidth | |
| numTapes = numTapes | |
| numLayers = numLayers | |
| numPitches = numPitches | |
| tapeResolution = tapeResolution | |
| gapResolution = gapResolution | |
| sense = sense | |
| float | ws = cableWidth - 2.0 * edgeRadius |
| pitch = P0 / math.tan(theta0) | |
| length = numPitches * self.pitch | |
| float | interlayer = layerGap * 0.001 |
| list | layers = [] |
| rutherford.winding.Winding.__init__ | ( | self, | |
| float | tapeWidth, | ||
| float | layAngle, | ||
| float | edgeRadius, | ||
| float | cableWidth, | ||
| int | numTapes, | ||
| int | numLayers, | ||
| float | layerGap, | ||
| float | numPitches, | ||
| float | tapeResolution, | ||
| float | gapResolution, | ||
| int | sense = 1 ) |
| rutherford.winding.Winding.conductor_groups | ( | self | ) |
Galvanically connected tape sets, as lists of tape indices in the layer-major, tape-order numbering of the sidesets. Across the periodic planes tape k continues into tape k + q (q = numPitches * numTapes), so a layer splits into gcd(q, n) conductors, each one tape of n / gcd(q, n) times the length. Every group is ONE current condition and consumes one cohomology generator; listing its curves separately asks for more conditions than the topology has generators.
| int rutherford.winding.Winding.n_s | ( | self, | |
| int | layer_index, | ||
| str | kind ) |
Slot count of one tape ('tape') or one gap ('gap') strip of a
layer, at least 2 so a strip is never a single sliver.
| rutherford.winding.Winding.tape_shift | ( | self | ) |
Number of tape positions every tape advances over the cable length, when that is a whole number: q = numPitches * numTapes. Then the partition of EVERY layer at z = length coincides with its partition at z = 0 (counter-wound layers advance by -q, the same set), the end planes are pure translations of each other, and tape k's far end is tape (k + q mod n)'s near end. Returns None when q is not whole.
| int rutherford.winding.Winding.z_partition_count | ( | self | ) |
Number of z-intervals shared by all strips: the step along the layer-0 tape path is tapeResolution, so dz = tapeResolution * cos theta_0. With the slot width across the tape also equal to tapeResolution, a strip quad is a parallelogram with the angle 90 - theta between its sides, and the short-diagonal split gives near-equilateral triangles at 30 degrees.
| rutherford.winding.Winding.cableWidth = cableWidth |
| rutherford.winding.Winding.edgeRadius = edgeRadius |
| rutherford.winding.Winding.gapResolution = gapResolution |
| rutherford.winding.Winding.interlayer = layerGap * 0.001 |
| rutherford.winding.Winding.layAngle = layAngle |
| list rutherford.winding.Winding.layers = [] |
| rutherford.winding.Winding.length = numPitches * self.pitch |
| rutherford.winding.Winding.numLayers = numLayers |
| rutherford.winding.Winding.numPitches = numPitches |
| rutherford.winding.Winding.numTapes = numTapes |
| rutherford.winding.Winding.pitch = P0 / math.tan(theta0) |
| rutherford.winding.Winding.sense = sense |
| rutherford.winding.Winding.tapeResolution = tapeResolution |
| rutherford.winding.Winding.tapeWidth = tapeWidth |
| float rutherford.winding.Winding.ws = cableWidth - 2.0 * edgeRadius |