Systems overview
There are four types of concrete systems in the MOOSE framework:
AuxiliarySystem: This system holds auxiliary variable and degree of freedom information
DisplacedSystem: This system wraps either nonlinear or auxiliary systems within a displaced problem context
NonlinearEigenSystem: This system is used for solving eigen problems of the form and interfaces with SLEPc.
NonlinearSystem: This system is used for solving nonlinear systems of equations and interfaces with PETSc.
Both NonlinearSystem and NonlinearEigenSystem inherit from NonlinearSystemBase which implements systems such as automatic scaling. NonlinearSystemBase, DisplacedSystem, and AuxiliarySystem all inherit from SystemBase which wraps the libMesh System object and provides APIs for accessing system vector and matrix data among other things.