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)
phib : Bar(s) potential pattern speed (km/s/kpc)
phir : Spiral potential pattern speed (km/s/kpc)
pitchA : Pitch angle of spiral arms (deg)
read_from_file : Read in potential from file?
- 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,in_physical_units,ios,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,read_from_file,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/in_physical_units [logical,optional/default=.true.]
Flag to track if the above are in physical or code units
- extern_spiral/ios [integer]
- 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/read_from_file [logical,optional/default=.false.]
Read in potential file?
- 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)
- Parameters:
iunit [integer,in]
- Use :
infile_utils(write_inopt()),units(utime(),udist()),physcon(pc(),solarm(),gg(),kpc(),km(),deg_to_rad())
- subroutine extern_spiral/read_options_spiral(db, nerr)
- 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: