HTML automatically generated with rman
Table of Contents


orbsos - tabulate the SOS coordinates of an orbit


orbsos in=orbit [parameter=value]


orbsos will compute the Surface of Section (SOS) coordinates of an orbit. Currently one can only do this for 2D orbits in the x-y plane. There is an option to compute the X-VX or Y-VY SOS coordinates.

The output is a simple ascii table with 4 columns: crossing number, time, position and velocity. Example of use with tabplot(1NEMO)

  % orbsos orbit.out x  | tabplot - 3 4 xlab=x   ylab=vx
  % orbsos orbit.out y  | tabplot - 3 4 xlab=y   ylab=vy
  % orbsos orbit.out xy | tabplot - 3 4 xlab=x,y ylab=vx,vy

orbsos can be useful in locating orbital families and study ergodicity. Finding periodic orbits can be automated, but is easier through programs like perorb(1NEMO) and henyey(1NEMO) .


The following parameters are recognized in any order if the keyword is also given:
Input file, which must be an orbit(5NEMO) . [No default].
Mode to tabulate. x computes the x-vx, and y computes the y-vy SOS coordinates. These are computed while the orbit is crossing the y or x axis resp. [default: x].
Compute absolute values in the surface of section position coordinate? Only useful for non-rotating potentials. [Default: f]
Compute absolute values in the surface of section velocity coordinate? Usually useful, as a surface of section is symmetric w.r.t. to the position axis. [Default: f]
Treat the potential symmetrically, which means that crossing an axis in the opposite direction means the SOS coordinated can be inverted. This is normally true but an example where you will need symm=f is the Henon-Heiles potential. See EXAMPLES below.


Here is an example of reproducing Figures 4 and 6 in Henon & Heiles (1964) classic paper:
# Fig 2 shows the equipotential contours
potccd - hh64 x=-1:1:0.01 y=-1:1:0.01 | ccdplot - 0.01,0.0417,0.0833,0.1250,0.1667
# Fig 4 show a regular orbit 
mkorbit - y=-0.22 e=1/12.0 lz=-1 potname=hh64 | orbint - - 8000000 dt=0.005 |
    orbsos -  y symm=f | tabplot - 3 4  -0.5 0.7 -0.5 0.5
# Fig 5 shows an ergodic orbit 
mkorbit - y=0.6 e=0.125 lz=-1 potname=hh64 | orbint - - 4000000 dt=0.01 ||
    orbsos -  y symm=f | tabplot - 3 4  -0.5 0.7 -0.5 0.5 
# same ergodic orbit like in Fig 5, but with twice the accuracy of integration
mkorbit - y=0.6 e=0.125 lz=-1 potname=hh64 | orbint - - 8000000 dt=0.005 |
    orbsos -  y symm=f | tabplot - 3 4  -0.5 0.7 -0.5 0.5

Instead of looking at one orbit, using mkdiskfel(1NEMO) to create initial conditions,and potcode(1NEMO) as an integrator, the following example shows how to get a whole series of orbits in one SOS:

  mkdiskfel d3 100 rmax=2 potname=log potpars=0,1,1,0.7 emin=2
  potcode d3 d3.out potname=log potpars=0,1,1,0.7 freqout=64 tstop=1000
  orboom d3.out d3.boom odm=f nsteps=100000
  orbsos d3.boom  | tabplot - 3 4 

See Also

perorb(1NEMO) , orbint(1NEMO) , mkorbit(1NEMO) , mkdiskfel(1NEMO) , potcode(1NEMO) , orbit(3NEMO)


Peter Teuben


~/src/orbit/misc     orbsos.c

Update History

 9-jun-88    V1.0 Created      PJT
22-mar-92    V1.1 added mode= and documented      PJT
30-dec-93    V1.2 added pabs= and vabs=    PJT
9-dec-2019    V1.3 add symm=    PJT
2-jan-2020    added examples

Table of Contents