Orbits in Gridded Potentials
Here is another example how to compute orbits
within NEMO, but now within a potential that is defined on a grid. This
opens up an way to take real data (yes yes, from the sky).
MIRIAD
First we need a small excursion into the obervers domain. Here are the basic
steps (and you can skip steps if they've been taken already):
- import your fits data into miriad, using fits in= out= op=xyin
- make sure the center of the galaxy is at the reference pixel,otherwise
fake it by using puthd in=map/crpix1 value= and
puthd in=map/crpix2 value=. This will mess up the RA/DEC,
but we only care about relative numbers here.
- deproject the image to face on. Since the reference pixel has been
set properly in the previous step, you only need to decide on
the position angle and the inclination.
deproject in= out= pa=xxx inc=yyy
- use any smoothing or transformation you like to make a more realistic (?)
density distribution. Perhaps even using ellint.
- calculate the potential from the density and with an assumed scale height
of the gas: potfft in= out= h=zzz. The units of scale height
are the same units as the pixel, unless the distance in Mpc is given,
these need to be given in pc.
- hi saf
- output the file in fits for importing into nemo: fits in= out= op=xyout
NEMO
There are three ways to make an
potential image
that can be used with the potname=ccd
descriptor:
- Import the fits file into NEMO using
fitsccd,
for example from a file you exported in MIRIAD
fitsccd in=pot1.fits out=pot1
- Use ccdmath
to define an image from scratch. Here is an
example of a Plummer potential:
ccdmath out=pot2 fie="-1/sqrt((%r/100)**2+1)" size=800,800,1 cdelt=0.01,0.01 crpix=400,400
Note the peculiar normalization of the radius because the pixel size
is 1/100.
- Use
potccd
to define an image from another potential
descriptor, e.g. the same plummer potential as in the previous
example:
potccd pot3 plummer x=-4:4:0.01 y=-4:4:0.01
You may want to test some values of this potential
using
potlist
or simply display the potential in ds9 with the
nds9 script.
Now create an orbit wit
mkorbit
mkorbit orb1 x=1 y=0 z=0 vx=0 vy=1 vz=0 potname=plummer
tsf orb1
...
double IOM[3] -0.207107 1.00000 0.00000
...
where for convenience the Plummer potential was also given (not
required if you pass all 6 phase space coordinates) to check
if the energy is bound and negative (-0.207107).
Now the orbit can be integrated using
orbint
using either potential descriptor:
orbint orb1 orb1.out 10000 0.01 potname=plummer
orbint orb1 orb2.out 10000 0.01 potname=ccd potfile=pot2
orbint orb1 orb3.out 10000 0.01 potname=ccd potfile=pot3
and plotted using
orbplot
orbplot orb1.out yapp=1/xs xrange=-4:4 yrange=-4:4
orbplot orb2.out yapp=2/xs xrange=-4:4 yrange=-4:4
orbplot orb3.out yapp=3/xs xrange=-4:4 yrange=-4:4
and you should see they are basically all the same.
potcode
The
potcode program can compute
orbits in static potential with certain forms of interaction between
the particles.