TREVR: A general $N log^2 N$ radiative transfer algorithm
  We present TREVR (Tree-based REVerse Ray Tracing), a general algorithm for
computing the radiation field, including absorption, in astrophysical
simulations. TREVR is designed to handle large numbers of sources and
absorbers; it is based on a tree data structure and is thus suited to codes
that use trees for their gravity or hydrodynamics solvers (e.g. Adaptive Mesh
Refinement). It achieves computational speed while maintaining a specified
accuracy via controlled lowering of the resolution of both sources and rays
from each source. TREVR computes the radiation field in order ${N\log
N_{source}}$ time without absorption and order ${N \log N_{source} \log{N}}$
time with absorption. These scalings arise from merging sources of radiation
according to an opening angle criterion and walking the tree structure to trace
a ray to a depth that gives the chosen accuracy for absorption. The
absorption-depth refinement criterion is unique to TREVR. We provide a suite of
tests demonstrating the algorithm's ability to accurately compute fluxes,
ionization fronts and shadows.
