int PerformAlgorithm(char alg, std::string filename, std::string output_name, std::string analysis){ Timer overall,algtimer; overall.start(); Array2D<elev_t> elevations(filename,false); switch(alg){ case '1': algtimer.start(); original_priority_flood(elevations); algtimer.stop(); elevations.saveGDAL(output_name,analysis); overall.stop(); cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl; cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl; return 0; case '2': algtimer.start(); improved_priority_flood(elevations); algtimer.stop(); elevations.saveGDAL(output_name,analysis); overall.stop(); cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl; cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl; return 0; case '3': algtimer.start(); priority_flood_epsilon(elevations); algtimer.stop(); elevations.saveGDAL(output_name,analysis); overall.stop(); cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl; cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl; return 0; case '4': { Array2D<d8_flowdir_t> flowdirs; algtimer.start(); priority_flood_flowdirs(elevations,flowdirs); algtimer.stop(); flowdirs.saveGDAL(output_name,analysis); overall.stop(); cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl; cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl; return 0; } case '5': { Array2D<int32_t> pit_mask; algtimer.start(); priority_flood_watersheds(elevations,pit_mask,false); algtimer.stop(); pit_mask.saveGDAL(output_name,analysis); overall.stop(); cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl; cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl; return 0; } case '6': algtimer.start(); Zhou2016(elevations); algtimer.stop(); elevations.saveGDAL(output_name,analysis); overall.stop(); cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl; cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl; return 0; default: cerr<<"Unrecognised algorithm choice!"<<endl; return -1; } }