Moved the input reading and error handling to the advection class
Implemented the factory function in the diffusion base class
Created factory function for pressure and cleaned up other functions