Changes between Version 25 and Version 26 of FluxLimitedDiffusion
- Timestamp:
- 03/20/13 12:22:41 (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
FluxLimitedDiffusion
v25 v26 185 185 186 186 || [[latex(\left [ 1 + \psi \left( \alpha^n_{i+1/2} + \alpha^n_{i-1/2} + \epsilon^n_i \right ) \right ] E^{n+1}_i - \left ( \psi \alpha^n_{i+1/2} \right ) E^{n+1}_{i+1} - \left ( \psi \alpha^n_{i-1/2} \right ) E^{n+1}_{i-1} =\left [ 1 - \bar{\psi} \left( \alpha^n_{i+1/2} + \alpha^n_{i-1/2} + \epsilon^n_i \right ) \right ] E^n_i+\phi^n_i e^n_i + \theta^n_i)]] || 187 || [[latex(\left (1 \right ) e^{n+1}_i = \left ( \psi \epsilon^n_i \right )E^{n+1}_i + \left ( 1 - \phi^n_i \right ) e^n_i + \left ( \bar{\psi} \epsilon^n_i \right ) E^n_i-\theta^i_n )]] || 188 189 190 191 Clearly the second equation is trivial to solve after the first system of equations has been solved. So if we treat the temperature as being constant we can calculate the local heating/cooling due to radiative emission/absorption 192 193 [[latex(e^{n+1}_i = e^n_i + \epsilon^n_i \left ( E^{n+1}_i -\frac{4\pi}{c}B \left (T^n_i \right ) \right ))]] 194 187 || [[latex(e^{n+1}_i = e^n_i + \epsilon^n_i \left [ \left ( \psi E^{n+1}_i + \bar{\psi} E^{n}_i \right ) - \frac{4 \pi}{c} B \left ( T^n_i \right ) \right ] )]] || 188 189 In this case the first equation decouples and can be solved on it's own, and then the solution plugged back into the second equation to solve for the new energy. 195 190 196 191 === 2D etc... === 197 192 198 For 2D the matrix coefficients would be 199 200 || [[latex(1+\alpha^n_{i+1/2,j}+\alpha^n_{i-1/2,j}+\alpha^n_{i,j+1/2}+\alpha^n_{i,j-1/2}+\epsilon^n_i )]] || [[latex(E^{n+1}_{i,j})]] || 201 || [[latex(-\alpha^n_{i-1/2,j})]] || [[latex(E^{n+1}_{i-1,j})]] || 202 || [[latex(-\alpha^n_{i+1/2,j})]] || [[latex(E^{n+1}_{i+1,j})]] || 203 || [[latex(-\alpha^n_{i,j-1/2})]] || [[latex(E^{n+1}_{i,j-1})]] || 204 || [[latex(-\alpha^n_{i,j+1/2})]] || [[latex(E^{n+1}_{i,j+1})]] || 205 206 and the source term would be unchanged from 1D 207 208 || [[latex(E^n_i+\frac{4\pi \epsilon^n_i}{c}B \left (T^n_i \right ) )]] 209 193 For 2D or 3D we have more connections to add to the matrix elements but it is very straight forward... There will be additional alpha terms for each dimension, but everything else stays the same. 194 195 196 === Initial solution vector === 197 For the initial solution vector, we can just use Edot from the parent update (or last time step if we are on the coarse grid) to guess E, and then we can solve for the new e given our guess at the new E using the same time stepping (Backward Euler, Crank Nicholson, etc...). 198 199 [[latex(E^{n+1}_i = E^{n}_i+\dot{E}^{n}_i \Delta t)]] 200 [[latex(e^{n+1}_i = \frac{1}{1+\psi \phi^n_i} \left { \left ( \psi \epsilon^n_i \right )E^{n+1}_i + \left ( 1 - \bar{\psi}\phi^n_i \right ) e^n_i + \left ( \bar{\psi} \epsilon^n_i \right ) E^n_i-\theta^i_n \right } )]] 210 201 211 202 == Coarse-Fine Boundaries == 212 203 Since we are doing our implicit solves first, we can use time interpolated solutions for the implicit solve for non-refined ghost zones. To do this we just need Edot. The opacities etc... in the ghost zones can be obtained from the hydro terms. 213 204 214 What about radiative implicit heating in coarse ghost cells which we will need to do hydro update? Could do this explicitly using E and Edot205 What about radiative implicit heating in coarse ghost cells which we will need to do hydro update? Could do this implicitly using E and Edot (don't need hypre for this implicit solve though) 215 206 216 207