conatus.expert.ShiftReflect

class conatus.expert.ShiftReflect(coord, shift)[source]

Bases: _Z2Generator

Shift-and-reflect of a periodic pipe or cylinder: phi -> -phi composed with the half-period shift z -> z + Lz/2 of the axis,

(u_phi, u_r, u_z)(phi, r, z) -> (-u_phi, u_r, u_z)(-phi, r, z + Lz/2)

(the symmetry S of the pipe travelling waves: Wedin & Kerswell 2004, Pringle, Duguet & Kerswell 2009, Willis, Cvitanovic & Avila 2013). ShiftReflect(phi, z) on CylindricalCoordinates. A reflection (det -1: curls and cross products change sign) that reverses e_phi and d/dphi; the shift commutes with every z operator.

On a stored real field (m >= 0) it pairs the coefficients (m, k_z) and (m, -k_z) through a complex conjugation: it is real-linear, not complex-linear, so it does not reduce the complex group systems; IVPs enforce it by a declared projection after every solve of the step (timestep/symmetry_projection.py: J read off the transforms, leak monitored and refused above its bound), together with the reduced m-fold classes. Cartesian shift-reflect (plane Couette S of Nagata) lives in conatus.ecs.subspace.

Parameters:
  • coord (Coordinate)

  • shift (Coordinate)

det = -1
order = 2
property key: tuple

Hashable identity (generator kind and the two coordinates).

centre(basis)[source]

Fixed azimuth of the reflection (phi = 0).

Parameters:

basis (Basis)

Return type:

float

mirror(pos, basis)[source]

Image of azimuth pos under phi -> -phi, wrapped onto the basis period.

Parameters:
  • pos (float)

  • basis (Basis)

Return type:

float

is_fixed(pos, basis)[source]

Always False: the half-period shift moves every point (no fixed plane).

Parameters:
  • pos (float)

  • basis (Basis)

Return type:

bool

explain()[source]

What the generator does and how it is enforced.

Return type:

str