Документация довольно скудная, но надо разобраться. Более-менее понял, как организовать входные данные и произвести вычисления.
Для примера рассматриваю структуру, состоящую из трех областей, в каждой области свои коэффициенты. Геометрия и граничные условия заданы в соответствующих файлах.
Код:
[p,e,t]=initmesh('test_rect_geom');
[p,e,t]=refinemesh('test_rect_geom',p,e,t);
u=assempde('test_rect_bound',p,e,t,'1!1e-4!1e-4',0,0);
Здесь
1, 1e-4, 1e-4, разделенные восклицательными знаками, - коэффициенты, которые различны в этих трех областях (остальные коэффициенты в данном случае одинаковы) - для придания физического смысла, назовем их проводимостью
- вот проводимость трех областей различна, а вычисляемая величина - потенциал
строю сетку, вычисляю. Дальше нарисовать, собственно, решение легко:
Код:
pdesurf(p,t,u)
Теперь я хочу построить, скажем,
. вычислить градиент я могу, хоть напрямую используя pdegrad(), хоть перейдя к
-сетке и далее используя gradient(). Вопрос в том, как корректно домножить нужные элементы массива
на нужные
. Мысли, которые приходят в голову сходу что-то уж очень громоздкие - для тестового примера еще можно было бы использовать, но если у меня областей будет не 3, а сотня, то велика вероятность, что запутаюсь где-то. Должно быть какое-то достаточно простое решение. Может кто-то его знает?