A general algorithm for the optimization of photovoltaic modules layout on irregular rooftop shapes. (10th September 2022)