choreo.ActionSym#

class ActionSym(Py_ssize_t[::1] BodyPerm, double[:, ::1] SpaceRot, Py_ssize_t TimeRev, Py_ssize_t TimeShiftNum, Py_ssize_t TimeShiftDen)#

This class defines the symmetries in a N-body system.

A symmetry \(\sigma\) is a transformation of paths that leaves the physics of a N-body system invariant.

\[x_{\text{LoopTarget}}(t) = \text{SpaceRot} \cdot x_{\text{LoopSource}} (\text{TimeRev} * (t - \text{TimeShift}))\]

Where SpaceRot is assumed orthogonal and TimeShift is defined as a rational fraction.

Useful to detect loops and constraints.

cf Palais’ principle of symmetric criticality in [1]

Cited:

[1]

Richard S Palais. The principle of symmetric criticality. Communications in Mathematical Physics, 69(1):19–30, 1979.

Class Constructor

__init__()

Specifies a symmetry of the action functional.

Parameters:
  • BodyPerm (numpy.ndarray(shape = (nbody), dtype = np.intp)) – Permutation of the bodies.

  • SpaceRot (numpy.ndarray(shape = (geodim, geodim), dtype = np.float64)) – Isometry of space.

  • TimeRev (int) – A value of -1 denotes time reversal, and a value of 1 denotes no time reversal.

  • TimeShiftNum (int) – Numerator of the rational time shift.

  • TimeShiftDen (int) – Denominator of the rational time shift.

Methods Summary

ApplyT

Returns a rational transformed time instant given an input rational time instant.

ApplyTInv

Returns a rational inverse transformed time instant given an input rational time instant.

ApplyTInvSegm

Returns a rational inverse transformed time segment given an input rational time segment.

ApplyTSegm

Returns a rational transformed time segment given an input rational time segment.

BuildCayleyGraph

Builds the Cayley graph of a list of group generators.

Compose

Returns the composition of two transformations.

Conjugate

Returns the conjugation of a transformation with respect to another transformation.

FromDict

Returns a new choreo.ActionSym from a dict.

Identity

Returns the identity transformation.

Inverse

Returns the inverse of a symmetry transformation.

InvolutivePermutations

Generates all involutive permutations of size n.

IsIdentity

Returns True if the transformation is within atol of the identity.

IsIdentityPerm

Returns True if the body permutation part of the transformation is the identity permutation.

IsIdentityPermAndRot

Returns True if parts of the transformation are within atol of the identity.

IsIdentityPermAndRotAndTimeRev

Returns True if parts of the transformation are within atol of the identity.

IsIdentityRot

Returns True if the space isometry part of the transformation is within atol of the identity.

IsIdentityRotAndTime

Returns True if parts of the transformation are within atol of the identity.

IsIdentityRotAndTimeRev

Returns True if parts of the transformation are within atol of the identity.

IsIdentityTimeRev

Returns True if the transformation does not reverse time.

IsIdentityTimeShift

Returns True if the transformation does not shift time.

IsSame

Returns True if the two transformations are within atol of each other.

IsSamePerm

Returns True if the two transformations have identical body permutations.

IsSameRot

Returns True if the two transformations have space isometries within atol of each other.

IsSameRotAndTime

Returns True if the two transformations have properties within atol of each other.

IsSameRotAndTimeRev

Returns True if the two transformations have properties within atol of each other.

IsSameTimeRev

Returns True if the two transformations have identical time reversal.

IsSameTimeShift

Returns True if the two transformations have identical time shifts.

IsWellFormed

Returns True if the transformation is well-formed.

Random

Returns a random transformation.

SurjectiveDirectSpaceRot

Surjective parametrization of direct isometries.

TimeDerivative

Returns the time derivative of a symmetry transformation.

TimeShifts

Generates all rational fractions in \([0,1[\) with denominator lower or equal to max_den.

TransformPos

Computes a transformed position by the space isometry.

TransformSegment

Computes a transformed segment of positions by the time and space isometry.

__init__

Specifies a symmetry of the action functional.

to_dict

Returns a dict containing the transformation informations.

Attributes

BodyPerm

numpy.ndarray(shape = (nbody), dtype = np.intp) Permutation of the bodies.

SpaceRot

numpy.ndarray(shape = (nbody), dtype = np.intp) Isometry of space.

TimeRev

int Time reversal

TimeShiftDen

int Denominator of the rational time shift.

TimeShiftNum

int Numerator of the rational time shift.