Closed maxpkatz closed 5 years ago
The strategy here is to break q into 3 groups:
q_core
: NQC
comps, NQCSRC
source compsq_passive
: NQP
comps, NQPSRC
source comps (which may be 0 if we are not considering passive sources)q_rad
: NQR
comps (there are no sources for this).Eventually, we will rename q_core
-> q
For the 4th order, we would need a q_bar version of each.
important: as part of this, we need to take the velocities out of qpass_map
there is a better way to save memory without the complexity of separating the primitive state. This is to do the parabolic reconstruction and intergration "on demand" as done now on the actual_ppm
branch.
We have to carry around NQ variables in the construction of the final interface states, for Ip/Im (and similarly, NQSRC variables for Ip_src/Im_src). By splitting the thermodynamic and passive variables into separate arrays, there's two potential optimizations. First, we only require one wave (the middle wave) for the passive variables, so the second-to-last dimension can be size 1, not size 3. Second, we could configure the PPM reconstruction and tracing to be done one passive variable at a time, so that the passive Ip/Im could be size 1 in the last dimension, not size npassive. This optimization is necessary for being able to scale the PPM algorithm for large networks.