BELFEM 0.9.3
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
rutherford.winding.Winding Class Reference

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 = []

Constructor & Destructor Documentation

◆ __init__()

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 )

Member Function Documentation

◆ conductor_groups()

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.

◆ n_s()

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.

◆ tape_shift()

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.

◆ z_partition_count()

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.

Member Data Documentation

◆ cableWidth

rutherford.winding.Winding.cableWidth = cableWidth

◆ edgeRadius

rutherford.winding.Winding.edgeRadius = edgeRadius

◆ gapResolution

rutherford.winding.Winding.gapResolution = gapResolution

◆ interlayer

rutherford.winding.Winding.interlayer = layerGap * 0.001

◆ layAngle

rutherford.winding.Winding.layAngle = layAngle

◆ layers

list rutherford.winding.Winding.layers = []

◆ length

rutherford.winding.Winding.length = numPitches * self.pitch

◆ numLayers

rutherford.winding.Winding.numLayers = numLayers

◆ numPitches

rutherford.winding.Winding.numPitches = numPitches

◆ numTapes

rutherford.winding.Winding.numTapes = numTapes

◆ pitch

rutherford.winding.Winding.pitch = P0 / math.tan(theta0)

◆ sense

rutherford.winding.Winding.sense = sense

◆ tapeResolution

rutherford.winding.Winding.tapeResolution = tapeResolution

◆ tapeWidth

rutherford.winding.Winding.tapeWidth = tapeWidth

◆ ws

float rutherford.winding.Winding.ws = cableWidth - 2.0 * edgeRadius

The documentation for this class was generated from the following file:
  • examples/rutherford/python/rutherford/winding.py