Numerical methods for modelling fluid flow in highly heterogeneous and fractured reservoirs