After having put much effort into the consistent finite differencing
of the transport equation in favor of an accurate evolution of expectation
values, we investigate in this section the energy conservation properties
in the most challenging run started from the massive
M
progenitor star. Our scheme preserves lepton numbers to machine precision
by construction. In Fig. (
)
|
We would obtain energy conservation to machine precision if we could
enforce perfect cancellation in the six chains discussed after Eq.
(
), i.e.
,
,
,
,
,
and
.
The hydrodynamics scheme is designed to absorb the energy exchange
by the collision integral to machine precision and conserve energy
perfectly, even on the adaptive grid. By selecting only the positive
contributions in the canceling terms we obtain a measure of the importance
for an accurate cancellation. After an integration over the computational
domain, Fig. (
)
Nevertheless, these terms are perfectly matched in our implementation.
Violation of energy conservation therefore stems from the terms
(the matching is tuned for an isotropic neutrino distribution) and
(the matching is based on an energy flux averaging) as discussed in
the context of Eqs. (
) and (
) respectively.
In section
we have discussed energy
conservation violations by the adaptive grid corrections when they
are applied to the radiation quantities. Where do they enter the conservation
check? If we evaluate Eq. (27)
on the adaptive grid according to the recipe in Eq. (
),
we note that the integration of the energy over the whole star reduces
the adaptive grid corrections to surface terms. These surface terms
vanish because the grid velocity is zero at the center and the surface
of the star. If we compare with the more detailed Eq. (
)
we find that this time derivative corresponds exactly to the term
. The energy violations by the adaptive
grid show only up in the terms
and
.
If these terms are evaluated with all the grid corrections in the
time evolution of
,
,
, and
,
they will numerically differ from the terms
and
we have used in Eqs. (
) and (
)
for the approximate matching. We check the influence of the adaptive
grid corrections by a comparison with a run using a pure Lagrangian
grid, where no adaptive grid corrections can compromise energy conservation.
However, in order to get enough resolution in the run with the fixed
grid, we had to run with
spatial zones instead of the
we used with the adaptive grid. This run is extremely slow. On the
one hand, the solution vector is four times larger. But much more
important is that every single zone has to change its value from the
preshock conditions to the postshock conditions in the allowed
-change
steps. This requires an almost
times smaller time step than
with the adaptive grid, where a zone can follow the shock. In the
latter case, the conditions in the zone changes on a much longer time
scale determined by the drift between the zone speed and the shock
propagation. In order to let a run reach the interesting phase around
ms after bounce in reasonable time, we had to reduce the
angular resolution to only two angular bins. Both measures, the increase
of spatial and time resolution and the decrease of angular resolution
can in principle affect energy conservation. Nevertheless, we hope
to get the correct impression of the influence of the adaptive grid
on the energy conservation. The two terms
and
of the Lagrangian run are also shown in Fig. (
)
(thin lines). We find that the order of magnitude of energy violation
in the cancellation
does
not significantly change on the fixed grid. However, the cancellation
in the term
is greatly reduced on the fixed grid. This suggests that the adaptive
grid corrections of the radiation quantities are the dominant remaining
sources of energy violation, about five times larger than the mismatch
in
.
The absolute necessity of accurate energy conservation may be discussed. But certainly, it provided an invaluable check for the congruence between the programmers intention and the actual implementation of the many intricate finite difference expressions in our code.