Индикатор поддоменов Fenics в файле сетки

В документации Fenics упоминается, что

DirichletBC takes three arguments, the first one is our function space V, the next is the boundary condition value and the third is the subdomain indicator which is information stored in the mesh.

Где находится указатель субдомена в файле сетки? Как я могу изменить это значение?


Контекст: я решаю вопрос о домене, который имеет несколько граничных частей, с постоянным условием Дирихле в каждой части.

Файл сетки, который я использую, был сгенерирован с использованием Triangle, и dolfin-convert чтобы получить файл XML.

Насколько я понимаю, инструменты построения сетки, такие как GMSH, изначально предоставляют возможность отмечать границы, но я бы не стал прибегать к другой схеме, поскольку я привык к треугольнику.

1 ответ

Решение

Я не понял, как изменить сетку, чтобы добавить граничные маркеры, но я нашел обходной путь к части проблемы на странице 9 этого документа.

Идея состоит в том, чтобы определить граничное условие для каждой границы

u_1 = Constant(0.0)
def b_1(x, on_boundary):
    return on_boundary and \
        near(x[0]*x[0]+x[1]*x[1], 1, 1e-2)

затем определение списка граничных условий, которые могут быть переданы solve функция

bcs = [DirichletBC(V, u_1, b_1), ...]

Однако это будет работать только в том случае, если каждая граница может быть описана уравнением. Так что это не общее решение проблемы

Другие вопросы по тегам