93 | | Taking viscosity as an example. The goal for the multiphysics modules is to calculate a vdot inside a grid, using the known hydro vars. It will need the two ghost zone's as illustrated below:[[BR]] |
| 93 | Taking viscosity as an example. The goal for the multiphysics modules is to calculate a change of velocisty inside a grid, using the known hydro vars. [[BR]] |
| 94 | This integration can be done before any hyperbolic updates. We denote the hyperbolic update, integrated source term calculation and explicit source term calculation as H, S and E. [[BR]] |
| 95 | The operators applied are as follows: [[BR]][[BR]] |
| 96 | [[latex($E S^{1/2} H S^(1/2)$)]][[BR]][[BR]] |
| 97 | But this operator does not commute with its own transpose, meaning that [[BR]][[BR]] |
| 98 | [[latex($E S^{1/2} H S^(1/2) \neq S^{1/2} H S^(1/2) E$)]][[BR]][[BR]] |
| 99 | This is obvious with for example, viscosity, in which the E operator raises temperature and lowers the velocity profile. The hyperbolic solver will have a different response to the data modified by E comparing to that of unmodified. [[BR]] |
| 100 | A symmetric operator splitting can be achieved if we do[[BR]][[BR]] |
| 101 | [[latex($E^{1/2} S^{1/2} H S^(1/2)E^{1/2}$)]][[BR]][[BR]] |
| 102 | Since the commutator of this operator with its transpose will be zero.[[BR]] |
| 103 | For any given grid, the external explicit solver requires two steps of updating. The tricky part of the solver is to figure out what to use at the grid boundaries. The three different boundary situations are summarized below:[[BR]] |
| 104 | (1)For any physical boundary, use the physical boundary condition.(outflow: impose a fixed velocity; and so on)[[BR]] |
| 105 | (2)For any internal boundary to direct neighbors, get the needed data directly by communication.[[BR]] |
| 106 | (3)For any internal boundary to parent level, we need the following ghosting scheme:[[BR]][[BR]] |
| 107 | [[Image(http://www.pas.rochester.edu/~shuleli/mp_scheme.png, 50%)]][[BR]][[BR]] |
| 108 | When advancing dt, we have 10 ghost zones, we also need to explicitly store [[latex($\dot{v}_a dt/2$)]], the time derivative of velocity advection to be used for adjacent child grids.[[BR]] |
| 109 | The steps are:[[BR]] |
| 110 | 1) apply E(dt/2) to internal + ghost 1~8 using ghost 9 and 10. [[BR]] |
| 111 | 2) apply H(dt/2) to internal + ghost 1~4 using ghost 5~8. [[BR]] |
| 112 | 3) apply another H(dt/2) to internal using ghost 1~4. [[BR]] |
| 113 | 4) manually update ghost 1~2 using [[latex($\dot{v}_a dt/2$)]]. [[BR]] |
| 114 | 5) apply E(dt/2) to internal again using the updated ghost 1~2. [[BR]][[BR]] |