extern_spiral
Module
Description
- This module contains everything related to
Clare and Alex’s galactic potentials:
- References:
Cox and Gomez (2002), ApJS 142, 261-267 Pichardo et al. (2003), ApJ 582, 230-245 Freeman (1970), ApJ 160, 811-830 Miyamoto and Nagi (1975), PASJ 27, 533-543 Dobbs, Bonnell & Pringle (2006), MNRAS 371, 1663-1674 Cladwell and Ostriker (1981), APJ 251, 61-87 Allen and Martos (1986), RMAA 13, 137-147 Khorperskov et al. (2012), arXiv:1207.5162v1 Long and Murali (1992), APJ 397, 44-48 Voigt and Letelier (2011), MNRAS 411, 2371-2382 and other basic forms (see Binney and Tremaine 1987)
- Owner:
Daniel Price
- Runtime parameters:
NN : No of arms in stellar spiral potential
a_bar : Major axis of galactic bar (in x, kpc)
b_bar : Minor axis of galactic bar (in y, kpc)
c_bar : Minor axis of galactic bar (in z, kpc)
iarms : type of arm potential (1:C&G 2:4 P&M spheroids+linear)
ibulg : type of bulge potential (1:Plummer 2:Hernquist 3:Hubble)
idisk : type of disk potential (1:log 2:flattened 3:Freeman w. bar/arm)
ihalo : type of halo potential (1:C&O 2:Flat 3:A&M 4:K&B 5:NFW)
iread : Read in potential from file (1=y,0=n)
phib : Bar(s) potential pattern speed (km/s/kpc)
phir : Spiral potential pattern speed (km/s/kpc)
pitchA : Pitch angle of spiral arms (deg)
- Dependencies:
infile_utils, io, mathfunc, physcon, units
Quick access
- Variables:
a_0
,a_02
,adisk
,alphabar
,ammhalo
,amrhalo
,barmass
,bdisk
,betabar
,c_0
,c_02
,cnfw
,co
,cotalpha
,cz
,d_0
,den0
,dxpot
,dypot
,dzpot
,dzq
,e_0
,e_02
,ebar
,epsbar
,eta_khop
,gcode
,haloci
,hubbci
,hz
,i
,iarms
,ibar
,ibulg
,idisk
,ihalo
,initialsp
,ios
,iread
,j
,jj
,lmabar
,lmbbar
,lmcbar
,mbulge
,mdisk
,mhalo
,mhubbbulge
,mnadisk
,mnbdisk
,mnfw
,mnmdisk
,mspiral
,newpot3d
,nn
,nni
,nshape
,nt
,p0
,p1
,phi0
,phibar
,phir
,potfilename
,potlenx
,potleny
,potlenz
,potxmax
,potymax
,potzmax
,r0
,ra1
,ra2
,ra3
,radiusofbar
,rbars
,rbulge
,rc
,rc2
,rc21
,rcore
,rdcore
,rhalo
,rhalomax
,rho0b
,rhubbbulge
,rhubbmax
,ri
,rl
,rlhalo
,rlim
,rnfw
,rob
,rs
,rsarms
,rsk
,rspheroids
,rtot
,rtotterm
,shapefn
,sinalpha
,spiralsum
,strbard
,strbarw
,strength
,t0
,tau_arm
,vhalo
,vob
,zdisk
- Routines:
amhalo()
,betafn()
,binreadpot3d()
,cohalo()
,dehnenbar()
,flathalo()
,hernbul()
,hubbbul()
,initialise_spiral()
,kbhalo()
,kfdiscsp()
,lmtbar()
,lmxbar()
,logdisc()
,mndisc()
,nfwhalo()
,orthog_basisbar()
,pichardo_potential()
,plumbul()
,read_options_spiral()
,s_potential()
,schmidt_potential()
,softpot()
,vogtsbar()
,wadabar()
,wang_bar()
,write_options_spiral()
Variables
- extern_spiral/a_0 [real]
- extern_spiral/a_02 [real]
- extern_spiral/adisk [real]
- extern_spiral/alpha [real,optional/default=15.0]
The arm pitch angle in deg
- extern_spiral/alphabar [real]
- extern_spiral/ammhalo [real]
- extern_spiral/amrhalo [real]
- extern_spiral/barmass [real]
- extern_spiral/bdisk [real]
- extern_spiral/betabar [real]
- extern_spiral/c_0 [real]
- extern_spiral/c_02 [real]
- extern_spiral/cnfw [real]
- extern_spiral/co [real]
- extern_spiral/cotalpha [real]
- extern_spiral/cz (3) [real]
- extern_spiral/d_0 [real]
- extern_spiral/den0 (*,*) [real,allocatable]
- extern_spiral/dxpot [real]
- extern_spiral/dypot [real]
- extern_spiral/dzpot [real]
- extern_spiral/dzq [real]
- extern_spiral/e_0 [real]
- extern_spiral/e_02 [real]
- extern_spiral/ebar [real]
- extern_spiral/epsbar [real]
- extern_spiral/eta_khop [real]
- extern_spiral/gcode [real]
- extern_spiral/haloci [real]
- extern_spiral/hubbci [real]
- extern_spiral/hz [real]
- extern_spiral/i [integer]
- extern_spiral/iarms [integer,optional/default=0]
Arm id flag
- extern_spiral/ibar [integer,optional/default=0]
- extern_spiral/ibulg [integer,optional/default=0]
Bulge id flag
- extern_spiral/idisk [integer,optional/default=1]
Disk id flag
- extern_spiral/ihalo [integer,optional/default=0]
DM halo id flag
- extern_spiral/initialsp [integer,optional/default=1]
Flag to track if the above are in code units (1=no, 0=yes)
- extern_spiral/ios [integer]
- extern_spiral/iread [integer,optional/default=0]
Read in potential file?
- extern_spiral/j [integer]
- extern_spiral/jj [integer]
- extern_spiral/lmabar [real,optional/default=4.0]
Bar major axis (x1kpc)
- extern_spiral/lmbbar [real,optional/default=1.0]
Bar minor axis (x1kpc)
- extern_spiral/lmcbar [real,optional/default=1.0]
Bar minor axis (x1kpc), triaxial bar
- extern_spiral/mbulge [real]
- extern_spiral/mdisk [real]
- extern_spiral/mhalo [real]
- extern_spiral/mhubbbulge [real]
- extern_spiral/mnadisk [real]
- extern_spiral/mnbdisk [real]
- extern_spiral/mnfw [real]
- extern_spiral/mnmdisk [real]
- extern_spiral/mspiral [real]
- extern_spiral/newpot3d (*,*,*) [real,allocatable]
- extern_spiral/nn [real,optional/default=2.0]
should be integer, but used in real expressions
- extern_spiral/nni [integer]
- extern_spiral/nshape [real]
- extern_spiral/nt [integer]
- extern_spiral/p0 [real]
- extern_spiral/p1 [real]
- extern_spiral/phi0 [real]
- extern_spiral/phibar [real,optional/default=40.0]
km/s/kpc, for bars from Dehnen99
- extern_spiral/phir [real,optional/default=20.0]
km/s/kpc, for arms
- extern_spiral/potfilename [character]
- extern_spiral/potlenx [integer]
- extern_spiral/potleny [integer]
- extern_spiral/potlenz [integer]
- extern_spiral/potxmax [real]
- extern_spiral/potymax [real]
- extern_spiral/potzmax [real]
- extern_spiral/r0 [real]
- extern_spiral/ra1 [real]
- extern_spiral/ra2 [real]
- extern_spiral/ra3 [real]
- extern_spiral/radiusofbar [real]
- extern_spiral/rbars [real]
- extern_spiral/rbulge [real]
- extern_spiral/rc [real]
- extern_spiral/rc2 [real]
- extern_spiral/rc21 [real]
- extern_spiral/rcore [real]
- extern_spiral/rdcore [real]
- extern_spiral/rf [real]
- extern_spiral/rhalo [real]
- extern_spiral/rhalomax [real]
- extern_spiral/rho0b [real]
- extern_spiral/rhubbbulge [real]
- extern_spiral/rhubbmax [real]
- extern_spiral/ri [real]
- extern_spiral/rl [real]
- extern_spiral/rlhalo [real]
- extern_spiral/rlim [real]
- extern_spiral/rnfw [real]
- extern_spiral/rob [real]
- extern_spiral/rs [real]
- extern_spiral/rsarms [real]
- extern_spiral/rsk [real]
- extern_spiral/rspheroids (*,*) [real,allocatable]
- extern_spiral/rtot [real]
- extern_spiral/rtotterm [real]
- extern_spiral/shapefn (*,*) [real,allocatable]
- extern_spiral/sinalpha [real]
- extern_spiral/spiralsum (*) [real,allocatable]
- extern_spiral/strbard [real]
- extern_spiral/strbarw [real]
- extern_spiral/strength [real]
- extern_spiral/t0 [real]
- extern_spiral/tau_arm [real]
- extern_spiral/vhalo [real]
- extern_spiral/vob [real]
- extern_spiral/zdisk [real]
Subroutines and functions
- subroutine extern_spiral/write_options_spiral(iunit)
- subroutine extern_spiral/read_options_spiral(name, valstring, imatch, igotall, ierr)
- subroutine extern_spiral/initialise_spiral(ierr)
- subroutine extern_spiral/logdisc(xi, yi, zi, d2, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
d2 [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- subroutine extern_spiral/mndisc(xi, yi, zi, d2, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
d2 [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- subroutine extern_spiral/kfdiscsp(xi, yi, zi, d2, r, phii, ti, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
d2 [real,in]
r [real,in]
phii [real,in]
ti [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- Use :
physcon
(pi()
),mathfunc
(bessk0_s()
,bessi0_s()
,bessk1_s()
,bessi1_s()
,poly()
,ik01a()
)- Call to:
- subroutine extern_spiral/plumbul(xi, yi, zi, r, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
r [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- subroutine extern_spiral/hernbul(xi, yi, zi, r, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
r [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- subroutine extern_spiral/hubbbul(xi, yi, zi, r, dr, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
r [real,in]
dr [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- subroutine extern_spiral/cohalo(xi, yi, zi, r, dr, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
r [real,in]
dr [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- subroutine extern_spiral/flathalo(xi, yi, zi, r, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
r [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- subroutine extern_spiral/amhalo(xi, yi, zi, r, dr, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
r [real,in]
dr [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- subroutine extern_spiral/kbhalo(xi, yi, zi, r, dr, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
r [real,in]
dr [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- subroutine extern_spiral/nfwhalo(xi, yi, zi, r, dr, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
r [real,in]
dr [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- subroutine extern_spiral/s_potential(xi, yi, zi, ti, potout, fextxi, fextyi, fextzi)
- subroutine extern_spiral/pichardo_potential(xi, yi, zi, rcyl2, ti, phii, phi, fextxi, fextyi, fextzi)
- subroutine extern_spiral/schmidt_potential(xi, yi, zi, rcyl2, ti, phii, phi, fextxi, fextyi, fextzi)
- function extern_spiral/betafn(om2, z2)
–Calcs beta using quad equation if particle is inside spheroid. –The difference here compared to betafnold is this only evaluates –the realistic outcomes to save computation time.
- Parameters:
om2 [real,in]
z2 [real,in]
- Return:
betafn (2) [real]
- Use :
io
(fatal()
)- Called from:
- Call to:
- subroutine extern_spiral/lmxbar(offset, ascale, bscale, xi, yi, zi, ti, phi, fextxi, fextyi, fextzi)
- Parameters:
offset [real,in]
ascale [real,in]
bscale [real,in]
xi [real,in]
yi [real,in]
zi [real,in]
ti [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- Call to:
- subroutine extern_spiral/lmtbar(xi, yi, zi, ti, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
ti [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- Call to:
- subroutine extern_spiral/dehnenbar(xi, yi, d2, phii, ti, phi, fextxi, fextyi)
- subroutine extern_spiral/wadabar(xi, yi, d2, phii, ti, hi, phi, fextxi, fextyi)
- Parameters:
xi [real,in]
yi [real,in]
d2 [real,in]
phii [real,in]
ti [real,in]
hi [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
- Call to:
- subroutine extern_spiral/wang_bar(ri, phii, thetai, pot)
- Parameters:
ri [real,in]
phii [real,in]
thetai [real,in]
pot [real,out]
- Use :
physcon
(pi()
),mathfunc
(legendre_associated()
,gegenbauer_poly()
)- Called from:
- Call to:
- subroutine extern_spiral/orthog_basisbar(xi, yi, zi, r, dr, ti, hi, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
r [real,in]
dr [real,in]
ti [real,in]
hi [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- Call to:
- subroutine extern_spiral/vogtsbar(xi, yi, zi, ti, phi, fextxi, fextyi, fextzi)
- Parameters:
xi [real,in]
yi [real,in]
zi [real,in]
ti [real,in]
phi [real,inout]
fextxi [real,inout]
fextyi [real,inout]
fextzi [real,inout]
- function extern_spiral/softpot(pspeed, softfac, ti)
–Softens the potentials for bars/spirals to avoid “hard” activation. –Taken from Dehnen00. –The value for softpot reduces the density/mass of the potential.
- Parameters:
pspeed [real,in]
softfac [real,in]
ti [real,in]
- Return:
softpot [real]
- Use :
io
(fatal()
)- Called from: