BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
pancake.basecurve Namespace Reference

Classes

class  Basecurve
class  RigidTransform

Functions

np.ndarray rotation_z (float angle)
np.ndarray rotation_x (float angle)

Variables

 _GL_X
 _GL_W
 _EZ = np.array([0.0, 0.0, 1.0])

Detailed Description

Base class for regular space curves with analytic derivatives and a moving frame.

Notation follows Russenschuck, *Field Computation for Accelerator Magnets* (2010):

* Sec. 3.1  Frenet frame of a space curve with general parameter t,
  Eqs. (3.29)-(3.30):  T = v/|v|,  B = v x a / |v x a|,  N = B x T,
  kappa = |v x a| / |v|^3,  tau = (v x a) . da/dt / |v x a|^2.
* Sec. 19.2 generalized Frenet-Serret equations for strips, Eq. (19.9):

      T' =  kappa_n n - kappa_g b
      n' = -kappa_n T + tau     b
      b' =  kappa_g T - tau     n

  with the strip frame {T, n, b}: T tangent, n normal to the broad face of
  the tape, b along the tape width.  kappa_n is the "easy way" (normal)
  curvature, kappa_g the "hard way" (geodesic) curvature and tau the twist.
* Eqs. (19.30)-(19.35): an additional twist angle theta_T(s) about T
  rotates n, b into n*, b* and changes the curvature parameters to
  tau* = tau + dtheta_T/ds, kappa_g* = cos(theta) kappa_g + sin(theta) kappa_n,
  kappa_n* = cos(theta) kappa_n - sin(theta) kappa_g.

The default `frame` implemented here is the classical Frenet frame, which is
only defined where the curvature does not vanish.  Curves with straight
sections (e.g. the leads of a pancake coil) must override `frame` and
`curvatures` with a frame that stays defined and continuous.

Function Documentation

◆ rotation_x()

np.ndarray rotation_x ( float angle)

◆ rotation_z()

np.ndarray rotation_z ( float angle)

Variable Documentation

◆ _EZ

pancake.basecurve._EZ = np.array([0.0, 0.0, 1.0])
protected

◆ _GL_W

pancake.basecurve._GL_W
protected

◆ _GL_X

pancake.basecurve._GL_X
protected