The Abaqus user subroutine allows the program to be customized for particular applications which are not available through the main Abaqus facilities. You should write a user subroutine if you could not run your analysis by ABAQUS built-in models for materials, loads, properties, elements, etc. for example, if you need to model a user-defined nonlinear stress-strain relation, which is not provided by Abaqus, then look for UMAT user subroutine.

User subroutines are mostly written in Fortran. When a simulation model that contains user subroutines is submitted to Abaqus, the correct compile and link commands should be used automatically. If the version of your Fortran compiler does not correspond to that specified, incompatibilities may occur. Therefore, it is important to have compatible components for subroutine configuration.

UMAT will allow you to define the material model customized exactly for your problem.User subroutines UMAT allows constitutive models to be added to the program. A more advanced subroutine is UEL, which allows the creation of user-defined elements.

 This is interesting, isn’t it?

you can see more detail about abaqus subrotine here.