The code currently separates the full Einstein-Boltzmann system into background and perturbation stages automatically. This separation is always guaranteed by the perturbative nature of the problem. However, these stages can usually be broken down into more stages. For example:
- Background (differential equations)
- Thermodynamics (differential equations)
- Sound horizon (integral equation)
- Perturbations (differential equations)
- Line-of-sight integration (integral equation)
The symbolic-to-numeric compilation process in SymBoltz should automatically identify and separate all computational stages for the model at hand. This can be done by investigating the structure of the Jacobian matrix, which gives a directed dependency graph between all variables in the model. Leaves should be handled by integral equations, while cycles (isolated from other cycles with a one-directional dependency) should be handled as ODE blocks.
The code currently separates the full Einstein-Boltzmann system into background and perturbation stages automatically. This separation is always guaranteed by the perturbative nature of the problem. However, these stages can usually be broken down into more stages. For example:
The symbolic-to-numeric compilation process in SymBoltz should automatically identify and separate all computational stages for the model at hand. This can be done by investigating the structure of the Jacobian matrix, which gives a directed dependency graph between all variables in the model. Leaves should be handled by integral equations, while cycles (isolated from other cycles with a one-directional dependency) should be handled as ODE blocks.