У меня есть (прерывистая) функция f от R^n до {0, 1}, предоставленная пользователем. Например. что-то вроде этого "круглого неравенства":
def charfunc(x):
# assume x is a numpy array
return x[0]**2 + x[1]**2 < 1
Я хочу найти границу области (областей), где f == 1, путем выборки значений функции в регулярной сетке и уточнить эту сетку (итеративно) в областях, где значение изменяется. Я думаю, что это не должно быть такой экзотической проблемой, и я уверен, что она уже решена во вселенной Python. Однако я нашел только сложные пакеты PDE/FEM и NDTAMR. Первые кажутся слишком большими накладными расходами. NDTAMR выглядит многообещающе, но дает странные результаты (по крайней мере, с параметрами по умолчанию из примеров):
Есть уточненные ячейки, которые не близки к границе, а есть клетки, которые близки, но не очищены. Код для этого примера находится в этом репозитории.
Вопрос: Как использовать NDTAMR или какой-либо другой пакет Python, чтобы получить сетку, которая уточняется везде рядом с границей, но больше нигде?