Документация довольно скудная, но надо разобраться. Более-менее понял, как организовать входные данные и произвести вычисления.
Для примера рассматриваю структуру, состоящую из трех областей, в каждой области свои коэффициенты. Геометрия и граничные условия заданы в соответствующих файлах.
Код:
[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, разделенные восклицательными знаками, - коэффициенты, которые различны в этих трех областях (остальные коэффициенты в данном случае одинаковы) - для придания физического смысла, назовем их проводимостью
![$\sigma$ $\sigma$](https://dxdy-01.korotkov.co.uk/f/8/c/d/8cda31ed38c6d59d14ebefa44009957282.png)
- вот проводимость трех областей различна, а вычисляемая величина - потенциал
строю сетку, вычисляю. Дальше нарисовать, собственно, решение легко:
Код:
pdesurf(p,t,u)
Теперь я хочу построить, скажем,
![$-\sigma\nabla u$ $-\sigma\nabla u$](https://dxdy-01.korotkov.co.uk/f/4/4/8/448d9a85b5cf9d18d4998ac2dd2c880c82.png)
. вычислить градиент я могу, хоть напрямую используя pdegrad(), хоть перейдя к
![$xy$ $xy$](https://dxdy-03.korotkov.co.uk/f/6/5/f/65f1b48fb5f326a680b0f7393b9d8b6d82.png)
-сетке и далее используя gradient(). Вопрос в том, как корректно домножить нужные элементы массива
![$u$ $u$](https://dxdy-03.korotkov.co.uk/f/6/d/b/6dbb78540bd76da3f1625782d42d6d1682.png)
на нужные
![$\sigma$ $\sigma$](https://dxdy-01.korotkov.co.uk/f/8/c/d/8cda31ed38c6d59d14ebefa44009957282.png)
. Мысли, которые приходят в голову сходу что-то уж очень громоздкие - для тестового примера еще можно было бы использовать, но если у меня областей будет не 3, а сотня, то велика вероятность, что запутаюсь где-то. Должно быть какое-то достаточно простое решение. Может кто-то его знает?