Использование решения для УЧП для определения другого УЧП - FEniCS

В настоящее время я пытаюсь решить уравнение Монжа-Ампера в FEniCS, реализуя нестандартное граничное условие.

Граничное условие требует, чтобы градиент решения отображал границу исходной области в другую заданную область.

Когда в качестве целевого домена задан единичный круг, реализация довольно проста, и я справился с ней, вставив в свою систему следующее:

+(dot(grad(uh),grad(uh))-1)*vh*ds\ (1)

где uh — пробная функция, а vh — пробная функция.

При рассмотрении более сложного целевого пространства, такого как квадрат [−1,1]×[−1,1], все становится сложнее, так как его не так просто решить вручную, поэтому моя идея состоит в том, чтобы использовать функцию расстояния .

Для этого я решил стабилизированную версию уравнения Эйконала, решением которой является функция расстояния со знаком, тогда моя идея состояла в том, чтобы заменить (1) на:

+E(grad(uh))*vh*ds

Где E — решение уравнения Эйконала, но когда я пытаюсь это реализовать, я получаю ошибку, говорящую о том, что функция ожидает скалярные аргументы,

Есть ли способ запрограммировать решение так, чтобы оно принимало grad(uh) в качестве входных данных во второй дифференциальной форме?

Спасибо всем за ваше время!


person ellya    schedule 15.07.2014    source источник


Ответы (1)


Вам нужно будет указать условия Неймана (вектор градиента) на общей границе вместо Диршеле (потенциальный скаляр).

Если бы я моделировал физическую проблему проводимости/диффузии между двумя непохожими областями, сохранение энергии потребовало бы, чтобы потоки по обе стороны границы были сбалансированы. Как бы вы выразили это граничное условие в своем уравнении?

person duffymo    schedule 21.07.2014
comment
Извините, но я действительно не понимаю, как в этом может быть общая граница. - person ellya; 24.07.2014