cagurto / disk_envelope_model

0 stars 3 forks source link

Test 1: DUST OPACITIES USING THE JENA OPTICAL CONSTANTS DATABASE #5

Open cagurto opened 8 years ago

cagurto commented 8 years ago

Jena Database

http://www.astro.uni-jena.de/Laboratory/Database/databases.html

It contains tables with the "n" and "k" values as a function of wavelength, as measured in their laboratory. To create actual opacities (in units of cm^2/gram-of-dust) from these values requires a further procedure, which depends very much on the geometry and size of the dust grains. There is no "golden bullet" procedure for this. The simplest procedure is Mie Theory, which is valid for spherical solid particles. This is what is offered here.

Steps:

  1. Download the optical constants from the Jena database. For this particular example: http://www.astro.uni-jena.de/Laboratory/OCDB/data/silicate/pyrmg70.lnk
  2. Compile the fortran code by typing: make , on the unix command line
  3. Go into IDL and type: .r make_opacs
  4. This should make opacities for 5 different grain sizes, and plot them.

pyrmg70.lnk "MIE" 1 0.0 -0.99999999 -0.99999999 1 -3.5 3.01000 -2.0 pyrmg70.lnk "MIE" 1 0.0 6.4714920e-09 6.4714920e-09 1 -3.5 3.01000 -2.0 pyrmg70.lnk "MIE" 1 0.0 1.0000000 1.0000000 1 -3.5 3.01000 -2.0 pyrmg70.lnk "MIE" 1 0.0 2.0000000 2.0000000 1 -3.5 3.01000 -2.0 pyrmg70.lnk "MIE" 1 0.0 3.0000000 3.0000000 1 -3.5 3.01000 -2.0

import numpy as np import matplotlib.pyplot as plt data1=np.loadtxt('dustkappa_1.inp',skiprows=2) data2=np.loadtxt('dustkappa_2.inp',skiprows=2) data3=np.loadtxt('dustkappa_3.inp',skiprows=2) data4=np.loadtxt('dustkappa_4.inp',skiprows=2) data5=np.loadtxt('dustkappa_5.inp',skiprows=2)

plot wavelenght v/s kappa_abs in cm^2/gram

plt.plot(data1[:,0],data1[:,1],color='b',label ='$q=-0.991$') plt.plot(data2[:,0],data2[:,1],color='g',label ='$q=6.47e-09$') plt.plot(data3[:,0],data3[:,1],color='r',label ='$q=1.000$') plt.plot(data4[:,0],data4[:,1],color='c',label ='$q=2.000$') plt.plot(data5[:,0],data5[:,1],color='m',label ='$q=3.000$') plt.legend() plt.xscale('log') plt.yscale('log') plt.xlabel("$\lambda\; [\mu\mathrm{m}]$") plt.ylabel("$\kappa\; [\mathrm{cm}^2/\mathrm{g}]$") plt.show()

_Note that this is just an example. Please edit the makeopacs.pro file and/or choose another optical constants file for making different opacities. Also note that in many cases a single grain size (instead of a distribution) may be more than enough for your scientific purposes.

This example shows not only how to make the dustkappa__.inp files and the dustopac.inp file for RADMC-3D (in this example: *_5 individual grain sizes**), but also shows the limitations of the Mie code.

One sees here that the absorption opacity becomes very low around 7 micron (in fact, in the code it becomes negative, which is unphysical, but it is limited to 1d-20). This is an artifact of the code. Also one sees that, since the optical constants only go out to 500 micron, the opacity is simply extrapolated with a power law beyond that wavelength. This is a rather ad-hoc assumption. In fact, it is plain wrong for the largest of the grains, since the "knee" where the opacity goes from flat into power law should lie around 2_pi_a_grain, which should be further to the right in the plot. Another limitation one can see is the wiggles in some of the opacities. They are "real" if the grain is indeed exactly spherical, but don't over-interpret them, since in reality grains are not exactly spherical, and they are never exactly of the same size. With a properly sample size mixture (not 5, like in this example, but 10000 sizes, for instance) these wiggles would wash out. Please keep all these limitations in mind!

NOTE: Apparently not all files in the Jena database have the wavelength in units of micron; some are in cm^-1. Please beware!

NOTE: Since version 0.31 the makedust.F program has a small modification in the way the interpolation of the optical constants is done. This gets rid of a strange wiggle in the submillimeter opacity for the jena opacities, which are sampled only very coursely in that range. BUT PLEASE BEWARE: this does not mean that the opacity produced with makedust.F will now be reliable in that range of wavelengths. Only if you have a finely spaced table of optical constants in that range can you be sure about the reliability of the opacity there.

cagurto commented 8 years ago

figure_jena_5sizegrains