Changes between Version 3 and Version 4 of LineTransfer
- Timestamp:
- 01/12/17 17:05:20 (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
LineTransfer
v3 v4 1 == Data structures == 2 There are two primary data structures used by the linetransfer routines in AstroBEAR 1 == Line Transfer == 3 2 4 1. !PatchDef - This stores information about patches needed to do the ray tracing 5 1. !RayGroupDef - This stores information about a particular group of parallel rays 3 Astrobear currently supports 1D Line Transfer of ionizing radiation in the +x direction. To enable this you will need to use the !MultiSpecies EOS, turn on Hydrogen Tracking, set iLineTransfer=1 and !LineTransferFlux to whatever value you would like (in units of cm^-2^ s^-1^) 4 5 * iEOS=1 6 * lTrackHydrogen=T 7 * iLineTransfer = 1 8 * !LineTransferFlux=2e13 9 10 This will turn on photo-ionization of hydrogen, ionization heating, recombination, recombination cooling, and Lyman alpha cooling. 11 12 == Photo Ionization == 13 Photoionization of neutral hydrogen is given by 14 15 $I_{ph}=F e^{-\tau} \sigma n_H$ 16 17 with 18 19 $\sigma= 6.3\times 10^{-18} cm^2$ 20 21 $\tau=\int \sigma n_H dx$ 22 23 and 24 25 $F$ is the value set in physics.data for !LineTransferFlux and 26 27 == Photo Ionization Heating == 28 29 $\frac{de}{dt}=e_\gamma I_{ph}$ 30 31 with $e_\gamma=2.4 eV$ 32 33 == Recombination == 34 35 The recombination rate is 36 37 $R=\alpha n_e n_{H+}$ 38 39 with $\alpha = 2.59\times 10^{-13}(T/10^4 K)^{-0.7} cm^3 s^{-1}$ 6 40 7 41 8 The basic algorithm to calculate optical depths is as follows: 42 == Recombination Cooling == 43 Recombination cooling is given by 44 $\frac{de}{dt}= -\Lambda_{rec} n_e n_{H+}$ 9 45 10 == Get Local Depths == 11 Integrate across each patch and store the local (patch) contribution to the optical depth at each cell center as well as the total optical depth across the patch. 46 with 12 47 13 == Collect Patches == 14 For each patch, build a list of shadow-patches and send/receive the optical depth across each shadow patch. 48 $\Lambda_{rec}=6.11 \times 10^{-10} cm^3 s^{-1} k_BT \left(T/K\right)^{-.89} $ 15 49 16 == Add Shadows == 17 For each patch, sort the shadow patches by their earliest 'z-value' 18 Then accumulate shadows for each patch 50 == Lyman alpha cooling == 19 51 52 Lyman alpha cooling is given by 20 53 21 Currently the code just calculates the optical depth to each zone. 54 $\frac{de}{dt}=-\Lambda_{\alpha} n_e n_H$ 22 55 23 The Krumholz et al scheme, calculates ionization rates as well as optical depths when it traverses the tree. 56 with 24 57 25 1. Modify tree traversal scheme to also calculate the ionization rate in addition to the optical depth 26 2. Add routines to take ionization rate and calculate heating/cooling rates and calculate CFL 27 3. Add routine to update energy and ionization values 28 4. Add sub-cycling 29 5. Will need to store ionization & heating/cooling rates in addition to optical depths at patch boundaries for AMR to work with sub-cycling so we can update ghost zones 30 6. Implement healpix tree traversal scheme. 58 $\Lambda_{\alpha} = 7.5 \times 10^{-19} \mbox{erg cm}^{3} \mbox{s}^{-1} e^{-118348 K/T}$ 31 59 60 == Time Stepping == 61 62 Currently this only works in fixed grid so !MaxLevel needs to be set to 0 in global.data 63 64 The linetransfer step happens after the hydro update and it sub-cycles as many times as necessary to prevent the number densities of neutral or ionized hydrogen as well as the internal energy from changing by more than 10%. It currently does not constrain the hydro time step.