A review of sub-channel thermal hydraulic codes for nuclear reactor core and future directions