algorithm linear temperature basin-paving code GMIN contributor James Farrell