The core functionality of the code, i.e., that part of the code that implements the time stepping, assembles matrices, solves linear and nonlinear systems, etc., is in the aspect::Simulator class (see the doxygen documentation of this class). Since the implementation of this class has more than 3,000 lines of code, it is split into several files that are all located in the source/simulator directory. Specifically, functionality is split into the following files:
Obviously, if you want to extend this core functionality, it is useful to first understand the numerical methods this class implements. To this end, take a look at the paper that describes these methods, see [KHB12]. Further, there are two predecessor programs whose extensive documentation is at a much higher level than the one typically found inside ASPECT itself, since they are meant to teach the basic components of convection simulators as part of the deal.II tutorial:
Neither of these two programs is nearly as modular as ASPECT, but that was also not the goal in creating them. They will, however, serve as good introductions to the general approach for solving thermal convection problems.