How to Use Collision Unit
Collision Unit has the API functions for plasma diagnostics and abundance analysis of collisionally excited lines. Here are some examples of using Collision Unit:
s2=obj_new('collision')
s2->set,['s','ii']
upper_levels='1,2,1,3/'
lower_levels='1,5/'
density = double(2550)
line_flux_ratio=double(10.753)
temperature=s2->calc_temperature(line_flux_ratio=line_flux_ratio, density=density, $
upper_levels=upper_levels, lower_levels=lower_levels)
print, "Electron Temperature:", temperature
Electron Temperature: 7920.2865
s2=obj_new('collision')
s2->set,['s','ii']
upper_levels='1,2/'
lower_levels='1,3/'
temperature=double(7000.0);
line_flux_ratio=double(1.506);
density=s2->calc_density(line_flux_ratio=line_flux_ratio, temperature=temperature, $
upper_levels=upper_levels, lower_levels=lower_levels)
print, "Electron Density:", density
Electron Density: 2312.6164
o3=obj_new('collision')
o3->set,['o','iii']
levels5007='3,4/'
temperature=double(10000.0)
density=double(5000.0)
iobs5007=double(1200.0)
Abb5007=o3->calc_abundance(temperature=temperature, density=density, $
line_flux=iobs5007, atomic_levels=levels5007)
print, 'N(O^2+)/N(H+):', Abb5007
N(O^2+)/N(H+): 0.00041256231
o3=obj_new('collision')
o3->set,['o','iii']
levels5007='3,4/'
temperature=double(10000.0)
density=double(5000.0)
iobs5007=double(1200.0)
emis=o3->calc_emissivity(temperature=temperature, density=density, $
atomic_levels=levels5007)
print, 'Emissivity(O III 5007):', emis
Emissivity(O III 5007): 3.6041012e-21
s2=obj_new('collision')
s2->set,['s','ii']
density = double(1000)
temperature=double(10000.0);
Nlj=s2->calc_populations(temperature=temperature, density=density)
print, 'Populations:', Nlj
Populations: 0.96992796 0.0070037404 0.023062517 2.6594158e-06 3.1277593e-06
s2=obj_new('collision')
s2->set,['s','ii']
temperature=double(10000.0)
N_crit=s2->calc_crit_density(temperature=temperature)
print, 'Critical Densities:', N_crit
Critical Densities: 0.0000000 5007.8396 1732.8414 1072685.0 2220758.1
o3=obj_new('collision')
o3->set,['o','iii']
temperature=double(10000.0)
density=double(5000.0)
o3->print_ionic, temperature=temperature, density=density
Temperature = 10000.0 K Density = 5000.0 cm-3 Level Populations Critical Densities Level 1: 1.556E-01 0.000E+00 Level 2: 4.269E-01 4.908E+02 Level 3: 4.172E-01 3.419E+03 Level 4: 2.221E-04 6.853E+05 Level 5: 1.522E-08 2.547E+07 2.597E-05 88.34um (2-->1) 4.986E-23 0.000E+00 9.632E-05 32.66um 51.81um (3-->1) (3-->2) 0.000E+00 3.081E-22 2.322E-06 6.791E-03 2.046E-02 4932.60A 4960.29A 5008.24A (4-->1) (4-->2) (4-->3) 4.153E-25 1.208E-21 3.604E-21 0.000E+00 2.255E-01 6.998E-04 1.685E+00 2315.58A 2321.67A 2332.12A 4364.45A (5-->1) (5-->2) (5-->3) (5-->4) 0.000E+00 5.875E-24 1.815E-26 2.335E-23 H-beta emissivity: 1.239E-25 N(H+) Ne [erg/s]
How to Use Recombination Unit
Recombination Unit has the API functions for plasma diagnostics and abundance analysis of recombination lines. Here are some examples of using Recombination Unit:
he1=obj_new('recombination')
he1->set,['he','ii'] ; He I
temperature=double(10000.0)
density=double(5000.0)
he_i_4471_flux= 2.104
linenum=10; 4471.50
Abund_he_i=he1->calc_abundance(temperature=temperature, density=density, $
linenum=linenum, line_flux=he_i_4471_flux)
print, 'N(He^+)/N(H^+):', Abund_he_i
N(He^+)/N(H^+): 0.040848391
he2=obj_new('recombination')
he2->set,['he','iii'] ; He II
temperature=double(10000.0)
density=double(5000.0)
he_ii_4686_flux = 135.833
Abund_he_ii=he2->calc_abundance(temperature=temperature, density=density, $
line_flux=he_ii_4686_flux)
print, 'N(He^2+)/N(H^+):', Abund_he_ii
N(He^2+)/N(H^+): 0.11228817
c2=obj_new('recombination')
c2->set,['c','iii'] ; C II
temperature=double(10000.0)
density=double(5000.0)
wavelength=6151.43
c_ii_6151_flux = 0.028
Abund_c_ii=c2->calc_abundance(temperature=temperature, density=density, $
wavelength=wavelength, line_flux=c_ii_6151_flux)
print, 'N(C^2+)/N(H+):', Abund_c_ii
N(C^2+)/N(H+): 0.00063404650
c3=obj_new('recombination')
c3->set,['c','iv'] ; C III
temperature=double(10000.0)
density=double(5000.0)
wavelength=4647.42
c_iii_4647_flux = 0.107
Abund_c_iii=c3->calc_abundance(temperature=temperature, density=density, $
wavelength=wavelength, line_flux=c_iii_4647_flux)
print, 'N(C^3+)/N(H+):', Abund_c_iii
N(C^3+)/N(H+): 0.00017502840
n2=obj_new('recombination')
n2->set,['n','iii'] ; N II
wavelength=4442.02
n_ii_4442_flux = 0.017
Abund_n_ii=n2->calc_abundance(temperature=temperature, density=density, $
wavelength=wavelength, line_flux=n_ii_4442_flux)
print, 'N(N^2+)/N(H+):', Abund_n_ii
N(N^2+)/N(H+): 0.00069297542
n3=obj_new('recombination')
n3->set,['n','iv'] ; N III
wavelength=4640.64
n_iii_4641_flux = 0.245
Abund_n_iii=n3->calc_abundance(temperature=temperature, density=density, $
wavelength=wavelength, line_flux=n_iii_4641_flux)
print, 'N(N^3+)/N(H+):', Abund_n_iii
N(N^3+)/N(H+): 6.3366174e-05
o2=obj_new('recombination')
o2->set,['o','iii'] ; O II
wavelength=4613.68
o_ii_4614_flux = 0.009
Abund_o_ii=o2->calc_abundance(temperature=temperature, density=density, $
wavelength=wavelength, line_flux=o_ii_4614_flux)
print, 'N(O^2+)/N(H+):', Abund_o_ii
N(O^2+)/N(H+): 0.0018886330
ne2=obj_new('recombination')
ne2->set,['ne','iii'] ; Ne II
wavelength=3777.14
ne_ii_3777_flux = 0.056
Abund_ne_ii=ne2->calc_abundance(temperature=temperature, density=density, $
wavelength=wavelength, line_flux=ne_ii_3777_flux)
print, 'N(Ne^2+)/N(H+):', Abund_ne_ii
N(Ne^2+)/N(H+): 0.00043376850
he1=obj_new('recombination')
he1->set,['he','ii'] ; He I
temperature=double(10000.0)
density=double(5000.0)
linenum=10; 4471.50
emiss_he_i=he1->calc_emissivity(temperature=temperature, density=density, $
linenum=linenum)
print, 'He I Emissivity:', emiss_he_i
He I Emissivity: 6.3822830e-26
he2=obj_new('recombination')
he2->set,['he','iii'] ; He II
temperature=double(10000.0)
density=double(5000.0)
emiss_he_ii=he2->calc_emissivity(temperature=temperature, density=density)
print, 'He II Emissivity:', emiss_he_ii
He II Emissivity: 1.4989134e-24
c2=obj_new('recombination')
c2->set,['c','iii'] ; C II
temperature=double(10000.0)
density=double(5000.0)
wavelength=6151.43
emiss_c_ii=c2->calc_emissivity(temperature=temperature, density=density, $
wavelength=wavelength)
print, 'C II Emissivity:', emiss_c_ii
C II Emissivity: 5.4719511e-26
c3=obj_new('recombination')
c3->set,['c','iv'] ; C III
temperature=double(10000.0)
density=double(5000.0)
wavelength=4647.42
emiss_c_iii=c3->calc_emissivity(temperature=temperature, density=density, $
wavelength=wavelength)
print, 'C III Emissivity:', emiss_c_iii
C III Emissivity: 7.5749632e-25
n2=obj_new('recombination')
n2->set,['n','iii'] ; N II
wavelength=4442.02
emiss_n_ii=n2->calc_emissivity(temperature=temperature, density=density, $
wavelength=wavelength)
print, 'N II Emissivity:', emiss_n_ii
N II Emissivity: 3.0397397e-26
n3=obj_new('recombination')
n3->set,['n','iv'] ; N III
wavelength=4640.64
emiss_n_iii=n3->calc_emissivity(temperature=temperature, density=density, $
wavelength=wavelength)
print, 'N III Emissivity:', emiss_n_iii
N III Emissivity: 4.7908644e-24
o2=obj_new('recombination')
o2->set,['o','iii'] ; O II
wavelength=4613.68
emiss_o_ii=o2->calc_emissivity(temperature=temperature, density=density, $
wavelength=wavelength)
print, 'O II Emissivity:', emiss_o_ii
O II Emissivity: 5.9047319e-27
ne2=obj_new('recombination')
ne2->set,['ne','iii'] ; Ne II
wavelength=3777.14
emiss_ne_ii=ne2->calc_emissivity(temperature=temperature, density=density, $
wavelength=wavelength)
print, 'Ne II Emissivity:', emiss_ne_ii
Ne II Emissivity: 1.5996881e-25
How to Use Reddening Unit
Reddening Unit has the API functions for estimating logarithmic extinctions at H-beta and dereddening observed fluxes based on reddening laws and extinctions. Here are some examples of using Reddening Unit:
ext=obj_new('reddening')
wavelength=6563.0
R_V=3.1
fl=ext->redlaw(wavelength, rv=R_V, ext_law='GAL')
print, 'fl(6563):', fl
fl(6563): -0.32013816
ext=obj_new('reddening')
wavelength=6563.0
R_V=3.1
fl=ext->redlaw_gal(wavelength, rv=R_V)
print, 'fl(6563):', fl
fl(6563): -0.32013816
ext=obj_new('reddening')
wavelength=6563.0
fl=ext->redlaw_gal2(wavelength)
print, 'fl(6563):', fl
fl(6563): -0.30925984
ext=obj_new('reddening')
wavelength=6563.0
R_V=3.1
fl=ext->redlaw_ccm(wavelength, rv=R_V)
print, 'fl(6563):', fl
fl(6563): -0.29756615
ext=obj_new('reddening')
wavelength=6563.0
fl=ext->redlaw_jbk(wavelength)
print, 'fl(6563):', fl
fl(6563): -0.33113684
ext=obj_new('reddening')
wavelength=6563.0
R_V=3.1
fmlaw='AVGLMC'
fl=ext->redlaw_fm(wavelength, fmlaw=fmlaw, rv=R_V)
print, 'fl(6563):', fl
fl(6563): -0.35053034
ext=obj_new('reddening')
wavelength=6563.0
fl=ext->redlaw_smc(wavelength)
print, 'fl(6563):', fl
fl(6563): -0.22659261
ext=obj_new('reddening')
wavelength=6563.0
fl=ext->redlaw_lmc(wavelength)
print, 'fl(6563):', fl
fl(6563): -0.30871187
ext=obj_new('reddening')
wavelength=6563.0
m_ext=1.0
flux=1.0
ext_law='GAL'
R_V=3.1
flux_deredden=ext->deredden_relflux(wavelength, flux, m_ext, ext_law=ext_law, rv=R_V)
print, 'dereddened flux(6563)', flux_deredden
dereddened flux(6563) 0.47847785
ext=obj_new('reddening')
wavelength=6563.0
m_ext=1.0
flux=1.0
ext_law='GAL'
R_V=3.1
flux_deredden=ext->deredden_flux(wavelength, flux, m_ext, ext_law=ext_law, rv=R_V)
print, 'dereddened flux(6563)', flux_deredden
dereddened flux(6563) 4.7847785