Intel compilers require non-standard inquire(directory=)
Nodes of different colours represent the following:
Solid arrows point from a submodule to the (sub)module which it is descended from. Dashed arrows point from a module or program unit to modules which it uses.
throw error if directory does not exist this accomodates non-Fortran 2018 error stop with variable character