Это скорее комментарий, чем ответ, но поле комментария слишком маленькое, ...
Одним из полезных аспектов OpenMP является то, что вы можете распараллеливать последовательную программу поэтапно. Таким образом, вашим первым шагом должно быть написание последовательного кода, который решит вашу проблему. Когда вы это сделаете, вы можете опубликовать снова и попросить помощи в распараллеливании.
Чтобы распараллелить вашу программу, найдите самый внешний оператор цикла и подумайте, как распределение итераций цикла по потокам повлияет на вычисления. Я подозреваю, что вы захотите создать общий вектор точек закрытия, когда циклы вращаются, а затем отсортировать его в конце только в одном потоке. Или, возможно, нет.