Development of a finite element Navier Stokes solver with applications to turbulent and hypersonic flows