• Регистрация
Редактор-сообщества-Экпонента
Редактор-сообщества-Экпонента+1.01
редактор
  • Написать
  • Подписаться

Список функций Partial Differential Equations Toolbox

Анализ данных или машинное обучение 
26.09.2019

Приведено детальное описание большинства функций в Инструментарии Решения Дифференциальных Уравнений в Частных Производных. Некоторые из функций, которые используются графическим интерфейсом пользователя (GUI) приложения PDETool, не представлены в списке функций PDE, потому что они, как предполагается, не используются непосредственно - они вызываются из приложения PDETool.

Функции, сгруппированные по назначению

  • pdetool - запуск GUI-приложения PDETool или выполнение одной из его команд

  • pdeinit - Инициализация GUI-приложения PDETool

Функции решения PDE задач

  • adaptmesh - адаптивная генерация конечноэлементной сетки и решение PDE

  • assema - сборка расчётной области из составных частей (геометрических объектов)

  • assemb - сборка граничных условий PDE задачи для всех граничных сегментов

  • assempde - сборка глобальной матрицы коэффициентов и правой части PDE задачи

  • hyperbolic - решение гиперболической PDE задачи

  • parabolic - решение параболической PDE задачи

  • pdeeig - решение PDE задачи на собственные значения

  • pdenonlin - решение нелинейной PDE задачи

  • poisolv - быстрое решение уравнения Пуассона на прямоугольной сетке 

Функции создания геометрических объектов в GUI-приложении PDETool

  • pdecirc - создание круга и его прорисовка

  • pdeellip - создание эллипса и его прорисовка

  • pdemdlcv - преобразование m-файлов PDE моделей, ориентированных на PDE Toolbox версии 1.0

  • pdepoly - создание многоугольника и его прорисовка

  • pderect - создание прямоугольника и его прорисовка

Функции, реализующие геометрические алгоритмы 

  • csgchk - проверка корректности матрицы описания геометрии

  • csgdel - удаление границы между зонами (минимальными регионами) в расчётной области

  • decsg - разбиение всей геометрии расчётной области на зоны (минимальные регионы)

  • initmesh - создание (инициализация) треугольной конечноэлементной сетки

  • jigglemesh - регуляризация треугольной конечноэлементной сетки

  • pdearcl - возвращает значение параметра для параметризованной кривой, соответствующего значению длины дуги этой кривой

  • poimesh - построение регулярной сетки в прямоугольной расчётной области

  • refinemesh - переопределение (сгущение) треугольной сетки

  • wbound - запись файла описания (спецификации) граничных условий

  • wgeom - запись m-функции описания (спецификации) геометрии расчётной области

Функции визуализации 

  • pdecont - сокращённая команда "контурной" визуализации решения PDE задачи

  • pdegplot - визуализация геометрии расчётной области

  • pdemesh - визуализация треугольной конечноэлементной сетки

  • pdeplot - главная функция визуализации в PDE Toolbox

  • pdesurf - сокращённая команда визуализации решения PDE задачи в виде поверхностного 3D графика

Полезные функции 

  • dst - дискретное синусоидальное преобразование

  • idst - обратное дискретное синусоидальное преобразование

  • pdeadgsc - выбор треугольников по относительному критерию точности

  • pdeadworst - выбор треугольников по самой большой мере ошибки решения

  • pdecgrad - вычисление "функции потока" в центре треугольного конечного элемента

  • pdeent - возвращает индексы треугольников, граничащих с данным набором треугольников

  • pdegrad - вычисление градиента решения PDE задачи в центре треугольного конечного элемента

  • pdeintrp - вычисление решения PDE в центре треугольных элементов по узловому распределению решения PDE

  • pdejmps - ошибка в процессе адаптивного переопределения конечноэлементной сетки

  • pdeprtni - интерполяция узлового распределения функции по распределению функции в центрах треугольников

  • pdesde - индексы граничных элементов между зонами расчётной области

  • pdesdp - индексы узлов конечноэлементной сетки на границе раздела зон

  • pdesdt - индексы треугольников на границе раздела зон

  • pdesmech - вычисление узлового распределения тензора механических напряжений

  • pdetrg - вычисление геометрических параметров треугольной конечноэлементной сетки

  • pdetriq - вычисление показателя регулярности треугольников

  • poiasma - учёт (сборка) вкладов в глобальную матрицу коэффициентов от граничных точек при быстром решении уравнения Пуассона

  • poicalc - быстрый решатель уравнения Пуассона на прямоугольной сетке

  • poiindex - индексы узлов в канонически упорядоченной прямоугольной сетке

  • sptarn - решение сформированной разреженной задачи на собственные значения (частоты)

  • tri2grid - преобразование (интерполяция) узлового распределения функции на треугольной сетке в узловое распределение на прямоугольной сетке

Генерация пользовательских m-файлов 

  • pdebound - формирование m-файла описания граничных условий

  • pdegeom - формирование m-файла описания геометрии

 

Функции, сгруппированные по назначению

Наверх

pdetool - запуск GUI-приложения PDETool или выполнение одной из его команд

Синтаксис:

pdetool

pdetool(action,flag)

Описание:

Вызов функции pdetool без входных и выходных аргументов - запуск GUI-приложения PDETool.

Входные параметры.

  • action - строка символов, содержащая код команды, которую должно выполнить приложение PDETool:
    - ‘’ или 'initialize' - Инициализация GUI-приложения PDETool;
    - 'save_as' - Сохранение описания геометрии в m-файле;
    - 'save' - Сохранение описания геометрии в текущем m-файле;
    - 'write' - Запись описания геометрии в открытый m-файл с помощью функции fprintf;
    - 'open' - Загрузка описания геометрии из m-файла;
    - 'new' - Переход в режим прорисовки новой геометрии (см. список команд PDETool);
    - 'exit' - Завершение работы GUI-приложения PDETool;
    - 'print' - Печать фигуры PDETool;
    - 'axlim' - Установить (изменить) значения пределов координатных осей;
    - 'axeq' - Установить/ отменить на экране одинаковый масштаб по осям x и y;
    - 'spacing' - Установить лимиты и шаг координатной сетки;
    - 'drawline' - Переключиться в режим интерактивной прорисовки многоугольника;
    - 'drawrect' - Переключиться в режим интерактивной прорисовки прямоугольника (flag=1 - прорисовка от начальной вершины; flag=2 - прорисовка от центра);
    - 'drawellipse' - Переключиться в режим интерактивной прорисовки эллипса/ круга (flag=1 - прорисовка от начальной вершины; flag=2 - прорисовка от центра);
    - 'lineclk' - Интерактивная прорисовка линии;
    - 'linedraw' - Нажатие кнопки для прорисовки линии или законченного многоугольника;
    - 'undo' - Отменить предыдущую прорисованную линию;
    - 'cut' - Поместить в буфер выделенный геометрический объект (flag=1 - переместить; flag=2 - копировать);
    - 'circlecntr' - Интерактивная прорисовка эллипса/ круга;
    - 'rectstart' - Отпустить мышь для прорисовки прямоугольника;
    - 'circledraw' - Нажатие кнопки для прорисовки эллипса/ круга;
    - 'rectdraw' - Нажатие кнопки для прорисовки прямоугольника;
    - 'clear' - Удалить выделенный геометрический объект;
    - 'gridon' - Показать/ скрыть координатную сетку в объекте Axes;
    - 'snapon' - Округлять/ не округлять координаты указателя мыши при показе их значений пользователю;
    - 'boundmode' - Переключение в режим ввода граничных условий;
    - 'pdemode' - Переключение в режим ввода параметров (коэффициентов) PDE;
    - 'edgelbl' - Ручная разметка (идентификация) граничных сегментов;
    - 'sublbl' - Ручная разметка (идентификация) зон расчётной области;
    - 'pdesublbl' - Ручная разметка (идентификация) зон расчётной области в режиме ввода параметров (коэффициентов) PDE;
    - 'pdenodelbl' - Ручная разметка (идентификация) узлов конечноэлементной сетки;
    - 'pdetrilbl' - Ручная разметка (идентификация) треугольников конечноэлементной сетки;
    - 'showsublbl' - Показ номеров зон;
    - 'showedgelbl' - Показ номеров граничных сегментов;
    - 'shownodelbl' - Показ номеров узлов конечноэлементной сетки;
    - 'showtrilbl' - Показ номеров треугольников конечноэлементной сетки;
    - 'meshmode' - Переключение в режим построения конечноэлементной сетки;
    - 'initmesh' - Инициализация (генерация) конечноэлементной сетки;
    - 'refine' - Переопределение (сгущение) конечноэлементной сетки во всей расчётной области;
    - 'jiggle' - Регуляризация конечноэлементной сетки;
    - 'unrefine' - Отмена сгущения конечноэлементной сетки во всей расчётной области;
    - 'triqual' - Отобразить в цвете значения показателя регулярности для всех конечных элементов (треугольников) сетки;
    - 'solve' - Решить краевую задачу (вычислить узловое распределение искомой величины);
    - 'solve_param' - Установить параметры решателя PDE;
    - 'zoom' - Включить режим показа в увеличенном масштабе выделяемой прямоугольной области в PDE-модели;
    - 'changemode' - Смена режима PDETool (обычно это переход в режим ввода граничных условий);
    - 'drawbounds' - Прорисовка внутренних и внешних граничных сегментов;
    - 'boundclk' - Интерактивное выделение граничного сегмента и развёртывание диалогового окна для ввода параметров граничных условий;
    - 'removeb' - Удаление выделенной границы раздела зон (если flag=-1, то удаление всех границ раздела зон);
    - 'clearsol' - Удаление визуализации решения PDE задачи из графического объекта Axes;
    - 'export' - Команда экспорта данных в базовую рабочую область (flag=1 - экспорт данных описания геометрии; flag=2 - экспорт данных описания граничных условий; flag=3 - экспорт конечноэлементной сетки; flag=4 - Экспорт переменных, описывающих распределение PDE коэффициентов в расчётной области; flag=5 - Экспорт решения PDE задачи в виде узлового распределения; flag=6 - экспорт анимации решения);
    - 'formchk' - Проверка, не изменилась ли формула описания геометрии расчётной области;
    - 'appl_cb' - Переключение в режим работы с другой краевой задачей (flag - номер краевой задачи в списке);
    - 'initbounds' - Инициализация граничных условий (для всех граничных сегментов устанавливаются стандартные граничные условия);
    - 'set_param' - Переключение в режим ввода параметров (коэффициентов) PDE;
    - 'set_bounds' - Переключение в режим ввода граничных условий;
    - 'helponoff' - Запретить/ разрешить выдачу подсказок по кнопкам инструментальной панели PDETool;
    - 'refresh' - Обновить изображение PDE-модели в поле Axes;
    - 'about' - Развёртывание диалогового окна «О приложении PDETool»;
    - 'error' - Развёртывание окна выдачи сообщения об ошибке.

  • flag - параметр, конкретизирующий выполняемую команду (см. action='drawrect', 'drawellipse', 'cut', 'removeb', 'export', 'appl_cb').

Действие большинства названных команд совпадает с действием команд меню GUI-приложения PDETool.

 

 

Наверх

pdeinit - Инициализация GUI-приложения PDETool

Синтаксис.

pdeinit

hfig=pdeinit

[hfig,hax]=pdeinit

Описание.

Производится инициализация GUI-приложения PDETool: очищается рабочее пространство и буферная память этого приложения. PDETool будет готово к работе с новой PDE моделью. Если в данный момент нет приложения PDETool в памяти ЭВМ, то оно запускается с параметром ‘new’.

Функция pdeinit особенно полезна при отладке PDE модели, когда она одновременно загружена и в PDETool и в редактор m-файлов.

Выходные параметры.

  • hfig - дескриптор фигуры PDETool;

  • hax - дескриптор объекта axes фигуры PDETool.

 

Функции решения PDE задач

 

Наверх

adaptmesh - адаптивная генерация конечноэлементной сетки и решение PDE

Синтаксис:

[u,p,e,t]=adaptmesh(g,b,c,a,f,p1,v1,...)

Описание:

Данная функция вычисляет решение скалярной эллиптической краевой задачи, основанной на уравнении

-div(c*grad(u))+a*u=f                                                                        (1)

Входные параметры.

  • g - массив описания геометрии (см. pdegeom, decsg);

  • b - имя пользовательской m-функции, вычисляющей матрицы описания граничных условий (см. pdebound);

  • с - массив, описывающий распределение коэффициента c в расчётной области (см. уравнение (1));

  • a - массив, описывающий распределение коэффициента a в расчётной области (см. уравнение (1));

  • f - массив, описывающий распределение правой части PDE f в расчётной области (см. уравнение (1));

  • p1,v1,… - список ключевых («именных») параметров функции adaptmesh:
    pk - строки символов - имена указываемых параметров;
    vk - значения указываемых параметров.

Имена ключевых параметров, их назначение и допустимые значения представлены в таблице:

pk Значение vk / {По умолчанию} Описание
Maxt Положительное целое {Inf} Максимальное число новых треугольников
Ngen Положительное целое {10} Максимальное число генерируемых треугольников
Mesh p_нач, e_нач, t_нач Сетка, полученная при инициализации
Tripick {pdeadworst}|pdeadgsc Метод выделения треугольников
Par числовое значение {0.5} Функциональный параметр
Rmethod {longest}|regular Метод переопределения (сгущения) сетки (см. refinemesh)
Nonlin on | {off} Использование нелинейного решателя
Toln числовое значение {1e-3} Точность решения нелинейной задачи
Init строка символов | числовое значение Начальное приближение нелинейной задачи
Jac {fixed} | lumped | full Якобиан при решении нелинейной задачи
Norm числовое значение {Inf} Ограничение нормы решения нелинейной задачи

Par передаётся функции tripick. Обычно этот параметр используется как точность решения PDE. Допустимо не более чем Ngen итераций. Вычисление останавливается, когда число треугольников в конечноэлементной сетке превышает Maxt.

Выходные параметры.

  • u - узловое распределение решения PDE задачи (столбцовая матрица), см. assempde;

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы): первая строка - горизонтальные координаты узлов, вторая строка - вертикальные координаты узлов; 

  • e - матрица граничных элементов на границах раздела зон (см. initmesh, pdegeom); 

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie.

 

 

Наверх

assema - сборка расчётной области из составных частей (геометрических объектов)

Синтаксис:

[k,m,f1]=assema(p,t,c,a,f)

Возможны также следующие варианты вызова данной функции 

[k,m,f1]=assema(p,t,c,a,f,u0) 

[k,m,f1]=assema(p,t,c,a,f,u0,time) 

[k,m,f1]=assema(p,t,c,a,f,u0,time,sdl) 

[k,m,f1]=assema(p,t,c,a,f,time) 

[k,m,f1]=assema(p,t,c,a,f,time,sdl) 

Описание:

Данная функция осуществляет сборку глобальной статической матрицы коэффициентов («жёсткости») k, динамической матрицы коэффициентов (матрицы «масс») m и столбцовой матрицы правой части f1. 

Входные параметры.

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    - первая строка - горизонтальные координаты узлов;
    - вторая строка - вертикальные координаты узлов; 

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
      t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
      t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie. 

  • с - массив, описывающий распределение коэффициента c в расчётной области (см. уравнение (1) в assempde); 

  • a - массив, описывающий распределение коэффициента a в расчётной области (см. уравнение (1) в assempde); 

  • f - массив, описывающий распределение правой части PDE f в расчётной области (см. уравнение (1) в assempde).

Входные параметры p, t, c, a, f, u0, time, sdl более подробно описаны в assempde.

 

 

Наверх

assemb - сборка граничных условий PDE задачи для всех граничных сегментов

Синтаксис:

[q,g,h,r]=assemb(b,p,e) 

Возможны также другие варианты вызова данной функции 

[q,g,h,r]=assemb(b,p,e,u0) 

[q,g,h,r]=assemb(b,p,e,u0,time) 

[q,g,h,r]=assemb(b,p,e,u0,time,sdl) 

[q,g,h,r]=assemb(b,p,e,time) 

[q,g,h,r]=assemb(b,p,e,time,sdl) 

Описание:

Данная функция осуществляет сборку матриц коэффициентов q, h и одномерных массивов правых частей g, r. Граничные условия Дирихле в глобальном виде представляются как матричное уравнение h*u=r. Аналогично матрицы q, h представляют глобальные граничные условия Неймана (см. pdebound).

Входные параметры.

  • b - имя пользовательской m-функции, вычисляющей матрицы описания граничных условий (см.  pdebound);

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    - первая строка - горизонтальные координаты узлов,
    - вторая строка - вертикальные координаты узлов; 

  • e - матрица граничных элементов на границах раздела зон (см. initmesh, pdegeom). 

Входные параметры b,p,e,u0,time,sdl более подробно описаны в assempde.

 

 

Наверх

assempde - сборка глобальной матрицы коэффициентов и правой части PDE задачи

Синтаксис:

u=assempde(b,p,e,t,c,a,f) 

Описание:

Осуществляет сборку и решение PDE задачи, основанной на уравнении 

-div(c*grad(u))+a*u=f.                                                                                                     (1) 

Узловое распределение решения представляет собой столбцовую матрицу u. 

Входные параметры.

  • b - имя пользовательской m-функции, вычисляющей матрицы описания граничных условий (см. pdebound);

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    - первая строка - горизонтальные координаты узлов,
    - вторая строка - вертикальные координаты узлов; 

  • e - матрица граничных элементов на границах раздела зон (см. initmesh, pdegeom);

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    - t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    - t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie. 

  • с - массив, описывающий распределение коэффициента c в расчётной области (см. уравнение (1)); 

  • a - массив, описывающий распределение коэффициента a в расчётной области (см. уравнение (1)); 

  • f - массив, описывающий распределение правой части PDE f в расчётной области (см. уравнение (1)). 

Синтаксис:

[k,f1]=assempde(b,p,e,t,c,a,f) 

Описание:

Осуществляет сборку глобальной разреженной матрицы коэффициентов k и глобальной столбцовой матрицы правой части f1. Решение PDE задачи вычисляется оператором MATLAB u=k\f1. 

Синтаксис:

[k,f1,b1,ud]=assempde(b,p,e,t,c,a,f) 

Описание:

Осуществляет сборку таким образом, что u=b1*(k\f1)+ud.

Синтаксис:

[k,m,f1,q,g,h,r]=assempde(b,p,e,t,c,a,f) 

Описание:

Осуществляет сборку нестационарной PDE задачи без решения.

Синтаксис:

u=assempde(k,m,f,q,g,h,r) 

Описание:

Осуществляет решение скомпонованной PDE задачи. 

Синтаксис:

[k1,f1]=assempde(k,m,f,q,g,h,r) 

Описание:

Осуществляет представление скомпонованной PDE задачи в виде глобальной матрицы коэффициентов k1 и глобальной правой части f1. 

Синтаксис:

[k1,f1,b1,ud]=assempde(k,m,f,q,g,h,r) 

Описание:

То же, что и в предыдущем случае, для системы PDE с граничными условиями Дирихле. 

Для скалярной PDE задачи u - матрица-столбец узлового распределения искомой величины. Для системы PDE u - матрица размера (NP,N), где NP - число узлов конечноэлементной сетки, N - число переменных в каждом узле. 

В общем случае b - имя пользовательского m-файла, вычисляющего матрицы описания граничных условий q, g, h, r (см. pdebound). 

Возможны также следующие варианты вызова данной функции: 

u=assempde(b,p,e,t,c,a,f,u0) 

u=assempde(b,p,e,t,c,a,f,u0,time) 

u=assempde(b,p,e,t,c,a,f,time) 

[k,f1]=assempde(b,p,e,t,c,a,f,u0) 

[k,f1]=assempde(b,p,e,t,c,a,f,u0,time) 

[k,f1]=assempde(b,p,e,t,c,a,f,u0,time,sdl) 

[k,f1]=assempde(b,p,e,t,c,a,f,time) 

[k,f1]=assempde(b,p,e,t,c,a,f,time,sdl) 

[k,f1,b1,ud]=assempde(b,p,e,t,c,a,f,u0) 

[k,f1,b1,ud]=assempde(b,p,e,t,c,a,f,u0,time) 

[k,f1,b1,ud]=assempde(b,p,e,t,c,a,f,time) 

[k,m,f1,q,g,h,r]=assempde(b,p,e,t,c,a,f,u0) 

[k,m,f1,q,g,h,r]=assempde(b,p,e,t,c,a,f,u0,time) 

[k,m,f1,q,g,h,r]=assempde(b,p,e,t,c,a,f,u0,time,sdl) 

[k,m,f1,q,g,h,r]=assempde(b,p,e,t,c,a,f,time,sdl) 

Необязательные входные параметры.

  • sdl - список (в виде одномерного массива) номеров зон расчётной области, для которых нужно произвести сборку PDE задачи (в случае указания данного параметра сборка будет произведена только для указанных зон); 

  • u0 - начальное приближение решения PDE задачи в виде узлового распределения для нелинейного решателя;

  • time - ограничение времени моделируемого процесса. 

Коэффициенты PDE в скалярном случае. 

Коэффициенты c, a, f (см. уравнение (1)) в качестве входных параметров функции assempde могут быть представлены следующим образом. 

  • Скалярная константа. 

  • Матрица-строка значений данного коэффициента в центрах треугольников конечноэлементной сетки. 

  • Текстовое выражение в терминах синтаксиса языка MATLAB, в котором допускается использование абстрактных переменных x, y, sd, u, ux, uy, t. Здесь x, y - координаты центра конечного элемента; sd - номер зоны, которой принадлежит треугольник; u - искомая величина в центре треугольника; ux, uy - компоненты градиента искомой величины в конечном элементе; t - время. 

  • Последовательность текстовых выражений, разделённых восклицательными знаками (!), каждое из которых соответствует своей зоне. 

  • Имя m-функции, имеющей список входных параметров (p,t,u,time), возвращающая элементное распределение данного коэффициента PDE в виде матрицы-строки. 

Если c представляет собой постоянное распределение двумерного тензора второй валентности, то соответствующий входной параметр c представляется матрицей размера (2,2), содержащей декартовы компоненты этого тензора. 

В случае системы из N PDE a и f представляют собой матрицы размера (NP,N), c - матрица, состоящая из (NP,NP) блоков размера (N,N), каждый из которых развёрнут в строку. 

 

 

Наверх

hyperbolic - решение гиперболической PDE задачи

Синтаксис:

u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d) 

Возможны также следующие варианты вызова данной функции: 

u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d,rtol) 

u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d,rtol,atol) 

Здесь rtol, atol - относительная и абсолютная погрешность решателя ODE. 

Описание:

Производит решение скалярной PDE задачи, основанной на уравнении вида

d*d2u/dt2-div(c*grad(u))+a*u=f                                                                                      (1) 

Входные параметры.

  • u0 - узловое распределение искомой величины в начальный момент времени t=0;

  • ut0 - узловое распределение первой производной по времени искомой величины при t=0;

  • tlist – список моментов времени, для которых нужно вычислить решение уравнения (1);

  • b - имя пользовательской m-функции, вычисляющей матрицы описания граничных условий (см. pdebound);

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы): первая строка - горизонтальные координаты узлов, вторая строка - вертикальные координаты узлов;

  • e - матрица граничных элементов на границах раздела зон (см. initmesh, pdegeom);

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    - t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    - t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie.

  • с - массив, описывающий распределение коэффициента c в расчётной области (см. уравнение (1));

  • a - массив, описывающий распределение коэффициента a в расчётной области (см. уравнение (1));

  • f - массив, описывающий распределение правой части PDE f в расчётной области (см. уравнение (1));

  • d - массив, описывающий распределение коэффициента d в расчётной области (см. уравнение (1)).

Кодирование входных параметров c, a, f, d более подробно описано в assempde.

Выходной параметр. 

В случае скалярной PDE задачи u1 - матрица размера (NP,length(tlist)), где NP - число узлов конечноэлементной сетки. Каждый столбец матрицы u1 представляет собой узловое распределение искомой величины u в соответствующий момент времени. В случае системы PDE из N уравнений u1 - матрица размера (NP*N,length(tlist)). Каждый столбец матрицы u1 состоит из N подстолбцов, каждый из которых представляет собой узловое распределение соответствующей искомой переменной в соответствующий момент времени. 

Синтаксис.

u1=hyperbolic(u0,ut0,tlist,k,f,b,ud,m) 

Описание.

Производит решение обыкновенного дифференциального уравнения 

b'*m*b*(d2ui/dt2)+k*ui=f, u=b*ui+ud. 

 

 

Наверх

parabolic - решение параболической PDE задачи

Синтаксис.

u1=parabolic(u0,tlist,b,p,e,t,c,a,f,d) 

Возможны также следующие варианты вызова данной функции: 

u1=parabolic(u0,tlist,b,p,e,t,c,a,f,d,rtol), 

u1=parabolic(u0,tlist,b,p,e,t,c,a,f,d,rtol,atol). 

Здесь rtol, atol - относительная и абсолютная погрешность решателя ODE. 

Описание:

Производит решение скалярной PDE задачи, основанной на уравнении вида 

d*du/dt-div(c*grad(u))+a*u=f                                                                                                              (1)

Входные параметры.

  • u0 - узловое распределение искомой величины в начальный момент времени t=0; 

  • tlist – список моментов времени, для которых нужно вычислить решение уравнения (1); 

  • b - имя пользовательской m-функции, вычисляющей матрицы описания граничных условий (см. pdebound);

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    - первая строка - горизонтальные координаты узлов,
    - вторая строка - вертикальные координаты узлов; 

  • e - матрица граничных элементов на границах раздела зон (см. initmesh, pdegeom); 

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    - t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    - t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie. 

  • с - массив, описывающий распределение коэффициента c в расчётной области (см. уравнение (1)); 

  • a - массив, описывающий распределение коэффициента a в расчётной области (см. уравнение (1)); 

  • f - массив, описывающий распределение правой части PDE f в расчётной области (см. уравнение (1)); 

  • d - массив, описывающий распределение коэффициента d в расчётной области (см. уравнение (1)). 

Кодирование входных параметров c, a, f, d более подробно описано в assempde

Выходной параметр. 

В случае скалярной PDE задачи u1 - матрица размера (NP,length(tlist)), где NP - число узлов конечноэлементной сетки. Каждый столбец матрицы u1 представляет собой узловое распределение искомой величины u в соответствующий момент времени. В случае системы PDE из N уравнений u1 - матрица размера (NP*N,length(tlist)). Каждый столбец матрицы u1 состоит из N подстолбцов, каждый из которых представляет собой узловое распределение соответствующей искомой переменной в соответствующий момент времени. 

Синтаксис.

u1=parabolic(u0,tlist,k,f,b,ud,m) 

Описание.

Производит решение обыкновенного дифференциального уравнения 

b'*m*b*(d ui/dt)+k*ui=f, u=b*ui+ud.

 

 

Наверх

pdeeig - решение PDE задачи на собственные значения

Синтаксис.

[v,l]=pdeeig(b,p,e,t,c,a,d,r)

Описание.

Производит решение задачи на собственные значения скалярного PDE или системы PDE. Вычисляются собственные значения l эллиптического PDE, которое в скалярном случае имеет вид:

-div(c*grad(u))+a*u = l*d*u .

Собственные значения записываются в массив l, который имеет длину size(p,2).

Входные параметры.

  • v - матрица собственных векторов; столбцам её соответствуют узлы конечноэлементной сетки, т.е. каждый столбец - это собственный вектор соответствующего узла. size(v)=[size(p,2), size(p,2)]. В случае системы PDE первые size(p,2) столбцов соответствуют первой переменной PDE,
    следующие size(p,2) столбцов - второй переменной PDE и т.д.

  • Входные параметры b, p, e, t, c, a достаточно подробно описаны в assempde, initmesh, assemb, pdebound.

  • d - параметр, аналогичный a, описывающий распределение коэффициента d дифференциального уравнения.

  • r - массив, состоящий из двух элементов, задающий интервал поиска собственных значений на действительной оси комплексной плоскости.

Обратите внимание, что при решении задачи на собственные значения PDE можно задавать только нулевые граничные условия. Ненулевые граничные условия удаляются (обнуляются) автоматически.

 

 

Наверх

pdenonlin - решение нелинейной PDE задачи

Синтаксис.

[u,res]=pdenonlin(b,p,e,t,c,a,f,'PropertyName','PropertyValue',...)

Описание.

Вычисляет решение нелинейной PDE задачи, основанной на уравнении (1) (см. assempde).

В нелинейной PDE задаче распределение коэффициентов PDE зависит от распределения решения PDE или от его пространственных дифференциальных операторов.

Входные параметры.

  • Входные параметры b, p, e, t, c, a, f описаны в assempde.

Перечень ключевых параметров и их возможных значений представлен в следующей таблице:

Property Name Property Value По умолчанию Описание
Jacobian fixed | lumped | full fixed Аппроксимация якобиана
U0 числовое или строка символов 0 Начальное приближение решения PDE
Tol положительный скаляр 1e-4 Значение относительной погрешности, при достижении которой можно заканчивать итерационный процесс
MaxIter положительное целое 25 Максимальное число итераций в методе Гаусса-Ньютона
MinStep положительный скаляр 1/2^16 Минимальный шаг при поиске направления к следующему приближению
Report on | off  off Выдача в командное окно информации о ходе вычислений
Norm числовое или строка символов Inf Относительная норма “энергетического функционала”

( …‘Jacobian’,’full’) - вычисление полного якобиана, основанное на разреженной версии функции numjac;

( …‘Jacobian’,’lumped’) - аппроксимация якобиана, основанная на численном дифференцировании коэффициентов;

( …‘Jacobian’,’fixed’) - аппроксимация якобиана по матрице “жёсткости”.

  • u - узловое распределение решения PDE;

  • res - оценка нормы относительной погрешности вычисления решения PDE.

 

 

Наверх

poisolv - быстрое решение уравнения Пуассона на прямоугольной сетке 

Синтаксис.

u=poisolv(b,p,e,t,f)

Описание.

Решает уравнение Пуассона с граничными условиями Дирихле на регулярной прямоугольной сетке. Комбинация синусоидального преобразования и трёхдиагонального решения используется для ускорения выполнения данной функции.

Входные параметры.

  • b - имя пользовательской m-функции, вычисляющей матрицы описания граничных условий (см. pdebound);

  • p, e, t - массивы описания конечноэлементной сетки (см. initmesh);

  • f - матрица узлового распределения правой части PDE; строкам соответствуют узлы столбцам - переменные PDE.

Выходной параметр.

  • u - матрица узлового распределения решения PDE (Пуассона); size(u)=size(f).

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

u=assempde(b,p,e,t,1,0,f).

 

Функции создания геометрических объектов в GUI-приложении PDETool

 

Наверх

pdecirc - создание круга и его прорисовка

Синтаксис:

pdecirc(xc,yc,radius,label)

Описание.

В GUI-приложении PDETool создаётся и прорисовывается новый геометрический объект - круг. Если в среде MATLAB нет приложения PDETool, то при выполнении функции pdecirc это приложение запускается.

Входные параметры.

  • xc, yc - x и y координаты центра круга;

  • radius - радиус круга;

  • label - символьная строка, содержащая имя создаваемого геометрического объекта (если этот параметр не указан, то уникальное имя создаётся автоматически приложением PDETool).

 

 

Наверх

pdeellip - создание эллипса и его прорисовка

Синтаксис:

pdeellip(xc,yc,radiusx,radiusy,angle,label)

Описание:

В GUI-приложении PDETool создаётся и прорисовывается новый геометрический объект - эллипс. Если в среде MATLAB нет приложения PDETool, то при выполнении функции pdeellip это приложение запускается.

Входные параметры.

  • xc, yc - x и y координаты центра эллипса;

  • radiusx, radiusy - большая и малая полуоси эллипса;

  • angle - угол поворота осей эллипса относительно начального положения (начальное положение - большая ось направлена вдоль оси x, малая -вдоль оси y); угол отсчитывается против часовой стрелки, измеряется в радианах;

  • label - символьная строка, содержащая имя создаваемого геометрического объекта (если этот параметр не указан, то уникальное имя создаётся автоматически приложением PDETool).

 

 

Наверх

pdemdlcv - преобразование m-файлов PDE моделей, ориентированных на PDE Toolbox версии 1.0

Синтаксис.

pdemdlcv(infile,outfile)

Описание:

Осуществляет преобразование PDE Toolbox Model m-файла для использования в MATLAB 5 и 6.

Входные параметры.

  • infile - строка символов, содержащая имя входного файла;

  • outfile - строка символов, содержащая имя выходного файла.

Выходной файл может быть загружен в качестве PDE модели в приложение PDETool, работающее в среде MATLAB 5 и 6.

 

 

Наверх

pdepoly - создание многоугольника и его прорисовка

Синтаксис.

pdepoly(x,y,label)

Описание.

В GUI-приложении PDETool создаётся и прорисовывается новый геометрический объект - многоугольник. Если в среде MATLAB нет приложения PDETool, то при выполнении функции pdepoly это приложение запускается.

Входные параметры.

  • x - массив горизонтальных координат вершин многоугольника;

  • y - массив вертикальных координат вершин многоугольника;

  • label - символьная строка, содержащая имя создаваемого геометрического объекта (если этот параметр не указан, то уникальное имя создаётся автоматически приложением PDETool).

 

 

Наверх

pderect - создание прямоугольника и его прорисовка

Синтаксис.

pderect([xmin xmax ymin ymax],label)

Описание.

В GUI-приложении PDETool создаётся и прорисовывается новый геометрический объект - прямоугольник. Если в среде MATLAB нет приложения PDETool, то при выполнении функции pderect это приложение запускается.

Входные параметры.

  • xmin, xmax, ymin, ymax - координаты нижней левой и верхней правой вершин создаваемого прямоугольника (предполагается, что стороны прямоугольника параллельны осям координат);

  • label - символьная строка, содержащая имя создаваемого геометрического объекта (если этот параметр не указан, то уникальное имя создаётся автоматически приложением PDETool).

 

Функции, реализующие геометрические алгоритмы 

 

Наверх

csgchk - проверка корректности матрицы описания геометрии

Синтаксис:

gstat=csgchk(gd,xlim,ylim) 

Описание:

Возвращает в виде массива-строки коды ошибок в геометрических объектах, представленных в матрице описания геометрии gd. xlim, ylim - текущие длины осей x и y в расчётной области. Эти последние два параметра являются необязательными и используются при вызове этой функции из pdetool.

Синтаксис:

gstat=csgchk(gd) 

Описание:

Это сокращённая форма вызова данной функции, рекомендуемая при использовании из командной строки MATLAB. 

gstat(k)=0, если k-й геометрический объект корректен. 

Если k-й объект - круг: 

- gstat(k)=1 - неположительное значение радиуса; 

- gstat(k)=2 - идентификатор графического объекта не уникален. 

Если k-й объект - многоугольник: 

- gstat(k)=1 – открытый, самопересечений граничной ломаной нет; 

- gstat(k)=2 - закрытый, есть самопересечения граничной ломаной; 

- gstat(k)=3 - открытый, есть самопересечения граничной ломаной. 

Матрица описания геометрии gd является корректной, если все члены gstat равны нулю. Формат матрицы gd описан в pdegeom.

 

 

Наверх

csgdel - удаление границы между зонами (минимальными регионами) в расчётной области

Синтаксис:

[dl1,bt1]=csgdel(dl,bt,bl) 

Описание:

Удаляет границы между зонами, указанные в списке bl. 

dl, dl1 - матрицы геометрии зон; bt, bt1 - булевы матрицы. 

Более подробное описание входных параметров - см. в decsg.

Синтаксис:

[dl1,bt1]=csgdel(dl,bt)

Описание:

Удаляет все внутренние границы зон.

 

 

Наверх

decsg - разбиение всей геометрии расчётной области на зоны (минимальные регионы)

Синтаксис:

dl=decsg(gd,sf,ns) 

Входные параметры. 

  • gd - матрица описания геометрии; 

  • sf - формула геометрии расчётной области (текстовая строка, см. список команд PDETool); 

  • ns - матрица имён геометрических объектов. 

Выходные параметры. 

  • dl - матрица граничных сегментов зон. 

Синтаксис:

dl=decsg(gd) 

Описание:

Возвращает все граничные сегменты зон. 

Синтаксис:

[dl,bt]=decsg(gd) и [dl,bt]=decsg(gd,sf,ns)

Описание:

Возвращает также булеву матрицу bt, показывающую принадлежность исходных геометрических объектов зонам. Столбцам соответствуют столбцы матрицы gd, строкам соответствуют столбцы матрицы dl. 

Синтаксис:

[dl,bt,dl1,bt1,msb1]=decsg(gd) и [dl,bt,dl1,bt1,msb1]=decsg(gd,sf,ns)                              (2) 

Описание:

Возвращает также вторую матрицу зон dl1 и соответствующую булеву матрицу bt1. Вся совокупность второго множества зон имеет связную внешнюю границу. Эти зоны могут быть наглядно показаны MATLABом с помощью средства “patch objects”. Выполняемые операторы (2) дополнительно возвращают последовательность msb1 прорисовывающих команд для каждой зоны второго множества. 

Матрица описания геометрии gd. 

Каждому столбцу матрицы gd соответствует геометрический объект. PDE Toolbox поддерживает четыре типа геометрических объектов. Первая строка матрицы gd содержит коды типов геометрических объектов. 

  1. Круг. Код типа = 1. Строки 2, 3 - x и y координаты центра. Строка 4 - радиус круга. 

  2. Многоугольник. Код типа = 2. Строка 2 - число N граничных сегментов. Далее N строк - x координаты начальных вершин граничных сегментов. Затем N строк - y координаты начальных вершин граничных сегментов.

  3. Прямоугольник. Код типа = 3. Строка 2 - число N граничных сегментов (N=4 всегда). Далее 4 строки - x координаты начальных вершин граничных сегментов. Затем 4 строки - y координаты начальных вершин граничных сегментов. 

  4. Эллипс. Код типа = 4. Строки 2, 3 - x и y координаты центра. Строки 4, 5 - большая и малая полуоси. Строка 6 - угол поворота в радианах против часовой стрелки относительно начального положения эллипса. 

Матрица граничных сегментов зон dl.

Граничному сегменту зоны соответствует столбец матрицы dl. 

Первая строка матрицы dl содержит коды типов граничных сегментов. Вторая и третья строки - начальные и конечные x координаты сегментов. Четвёртая и пятая строки - начальные и конечные y координаты сегментов. Шестая и седьмая строки содержат номера зон, примыкающих слева и справа к граничному сегменту. 

Геометрические типы граничных сегментов: 

  1. Дуга окружности. Код типа = 1. Строки 8, 9 - координаты центра окружности. 

  2. Отрезок прямой. Код типа = 2. 

  3. Дуга эллипса. Код типа = 4. Строки 8, 9 - координаты центра эллипса. Строки 10, 11 - большая и малая полуоси эллипса. Строка 12 - угол поворота в радианах против часовой стрелки относительно начального положения эллипса. 

Матрица имён геометрических объектов ns. 

Каждому столбцу матрицы ns соответствует геометрический объект. Каждый столбец представляет собой последовательность ASCII кодов символов имени геометрического объекта. ASCII коды представляются в виде числовых значений типа double. Число строк в матрице ns равно максимальной длине из всех имён геометрических объектов. Более короткие имена дополняются в конце нулевыми кодами. 

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

 

 

Наверх

initmesh - создание (инициализация) треугольной конечноэлементной сетки

Синтаксис:

[p,e,t]=initmesh(g,p1,v1,p2,v2,p3,v3,p4,v4,p5,v5,p6,v6,p7,v7,p8,v8)

Описание:

Возвращает треугольную конечноэлементную сетку, построенную в расчётной области, геометрия которой описана в m-функции g.

Обязательным является только первый входной параметр g.

Входные параметры.

p1,v1,… - список необязательных ключевых («именных») параметров функции initmesh:

pk - строки символов - имена указываемых параметров;

vk - значения указываемых параметров.

Имена ключевых параметров, их назначение и допустимые значения представлены в таблице:

pk Значение vk / {По умолчанию} Описание
Hmax Числовое значение {estimate} Максимальный размер треугольников
Hgrad Числовое значение {1.3} Показатель нерегулярности треугольников
Box on|{off} Генерация сетки в пределах ограниченного прямоугольника
Init on|{off} Выполнить только начальную триангуляцию границ
Jiggle off|{mean}|min Вызов функции jigglemesh
JiggleIter Числовое значение {10} Максимальное число итераций при регуляризации сетки

Параметры Box и Init связаны с работой алгоритма построения сетки. Их полезно устанавливать в ‘on’ для изучения алгоритма построения

сетки. Параметры Jiggle и JiggleIter используются для управления уровнем регуляризации конечноэлементной сетки (подробнее см. jigglemesh).

Выходные параметры.

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    - первая строка - горизонтальные координаты узлов,
    - вторая строка -вертикальные координаты узлов;

  • e - матрица граничных элементов на границах раздела зон (см. pdegeom):
    столбцам соответствуют граничные элементы (стороны конечных элементов, принадлежащие границам раздела зон или границе расчётной области);
    первые две строки - номера номера начальных и конечных узлов граничных элементов;
    строки 3, 4 - длина «дуги» от начала граничного сегмента до начального и конечного узла граничного элемента, отнесённая к длине «дуги» граничного сегмента;
    строка 5 - номера граничных сегментов, которым принадлежат граничные элементы;
    строки 6, 7 - номера зон, примыкающих слева и справа к граничным элементам;

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    - t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    - t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie.

 

 

Наверх

jigglemesh - регуляризация треугольной конечноэлементной сетки

Синтаксис:

p1=jigglemesh(p,e,t,p1,v1,p2,v2)

Описание:

Возвращает регуляризованную конечноэлементную сетку. Узлы сетки перемещаются таким образом, чтобы показатель регулярности треугольников был не менее некоторого значения. Показатель регулярности вычисляется с помощью функции pdetriq.

Входные параметры.

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    первая строка - горизонтальные координаты узлов,
    вторая строка -вертикальные координаты узлов;

  • e - матрица граничных элементов на границах раздела зон (см. initmesh, pdegeom);

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie.

  • p1,v1,p2,v2 - список необязательных ключевых («именных») параметров функции adaptmesh:
    - pk - строки символов - имена указываемых параметров;
    - vk - значения указываемых параметров.

Имена ключевых параметров, их назначение и допустимые значения представлены в таблице:

pk Значение vk / {По умолчанию} Описание
Opt {off}|mean|min Метод оптимизации сетки
Iter 1 или 20 (см. ниже) Максимальное число итераций

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

Этот процесс повторяется в соответствии со значениями параметров Opt и Iter:

  • Если Opt установлен в ‘off’, то итерационный процесс повторяется Iter раз (по умолчанию: один); 

  • Если Opt установлен в ‘mean’, то итерационный процесс повторяется, пока средний показатель регулярности треугольников заметно не увеличится или пока число итераций не превысит значение Iter (по умолчанию: 20); 

  • Если Opt установлен в ‘min’, то итерационный процесс повторяется, пока минимальный показатель регулярности треугольников заметно не увеличится или пока число итераций не превысит значение Iter (по умолчанию: 20).

 

 

Наверх

pdearcl - возвращает значение параметра для параметризованной кривой, соответствующего значению длины дуги этой кривой

Синтаксис:

pp=pdearcl(p,xy,s,s0,s1)

Входные параметры.

  • p - монотонно возрастающий массив-строка, содержащий значения параметра кривой;

  • xy - матрица из двух строк, содержащая координаты соответствующих точек кривой;

Первой точке кривой соответствует длина дуги s0, последней точке соответствует длина дуги s1;

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

Требуется, чтобы значения длины дуги s, s0, s1 были пропорциональны истинной длине дуги.

 

 

Наверх

poimesh - построение регулярной сетки в прямоугольной расчётной области

Синтаксис.

[p,e,t]=poimesh(g,nx,ny)

Описание.

Формирует регулярную сетку в расчётной области прямоугольной формы.

Входные параметры.

  • g - строковая переменная, содержащая имя m-файла описания геометрии (см. pdegeom);

  • nx - число шагов равномерной дискретизации сетки вдоль горизонтальной оси;

  • ny - число шагов равномерной дискретизации сетки вдоль вертикальной оси.

Выходные параметры.

  • p, e, t - массивы описания конечноэлементной сетки (см. initmesh). На выходе число узлов конечноэлементной сетки равно (nx+1)*(ny+1).

  • x-стороной расчётной области считается та, которая образует с осью x наименьший угол (это означает, что стороны прямоугольника могут быть непараллельны осям координат).

Синтаксис.

[p,e,t]=poimesh(g,n)

Описание.

Выполняются те же действия в предположении, что nx=ny=n.

Синтаксис.

[p,e,t]=poimesh(g)

Описание.

Выполняются те же действия в предположении, что n=1.

Для лучшей работы функции poisolv желательно, чтобы max(nx,ny) было равно целой степени числа 2. Если геометрия расчётной области не прямоугольная, то на выходе функции poimesh будет p=0.

 

 

Наверх

refinemesh - переопределение (сгущение) треугольной сетки

Синтаксис.

[p1,e1,t1]=refinemesh(g,p,e,t)

Описание.

Возвращает переопределённую версию треугольной конечноэлементной сетки, представленной геометрией g, матрицей узлов p, матрицей граничных элементов e и матрицей треугольников t.

Входные параметры.

  • g описывает геометрию PDE задачи. g может матрицей “расчленённой” геометрии или именем m-файла описания геометрии. См также decsg, pdegeom.

  • p, e, t - матрицы описания конечноэлементной сетки (см initmesh).

Синтаксис.

[p1,e1,t1,u1]=refinemesh(g,p,e,t,u)

Описание.

Переопределяет сетку, а также доопределяет значения искомой функции во вновь сгенерированных узлах конечноэлементной сетки. Доопределение производится с помощью линейной интерполяции (т.е. применяются линейные функции формы).

Входные параметры.

  • u - узловое распределение искомой функции (величины) на непереопределённой сетке. Строкам u и столбцам p соответствуют узлы. Строкам u1 и столбцам p1 соответствуют узлы переопределённой сетки. Каждый столбец u интерполируется отдельно.

Синтаксис.

[p1,e1,t1]=refinemesh(g,p,e,t,u,it) или [p1,e1,t1,u1]=refinemesh(g,p,e,t,u,it)

Входные параметры.

  • it - список зон для переопределения сетки, если it - матрица-строка, или список треугольников, если it - матрица-столбец.

Если этот параметр задан, то сетка переопределяется (сгущается) только в указанных зонах или конечных элементах.

Синтаксис.

[p1,e1,t1]=refinemesh(g,p,e,t,u,it,mode) или [p1,e1,t1,u1]=refinemesh(g,p,e,t,u,it,mode)

Входные параметры.

  • mode - метод переопределения сетки (по умолчанию - “регулярное переопределение”, когда каждый переопределяемый треугольник разделяется на четыре треугольника).
    Этот параметр может принимать одно из следующих значений:
    - ‘longest’ - треугольники делятся на два так, что большая сторона делится пополам;
    - ‘regular’ - “регулярное переопределение”.

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

 

 

Наверх

wbound - запись файла описания (спецификации) граничных условий

Синтаксис.

fid=wbound(bl,mn)

Описание.

Записывает m-файл описания граничных условий. Имя файла [mn,’.m’]. Этот файл является эквивалентом матрицы описания граничных условий bl (см. pdebound).

Возвращается fid=-1, если файл не мог быть записан.

fid - идентификатор записываемого файла (см. fopen).

 

 

Наверх

wgeom - запись m-функции описания (спецификации) геометрии расчётной области

Синтаксис.

fid=wgeom(dl,mn)

Описание.

Записывает m-файл описания геометрии. Имя файла [mn,’.m’]. Этот файл является эквивалентом матрицы описания геометрии dl (см. decsg).

Возвращается fid=-1, если файл не мог быть записан.

fid - идентификатор записываемого файла (см. fopen).

 

Функции визуализации 

 

Наверх

pdecont - сокращённая команда "контурной" визуализации решения PDE задачи

Синтаксис:

pdecont(p,t,u)

Описание:

Прорисовывает 10 кривых уровня переменной u, узловое распределение которой задано в столбцовой матрице u (см. assempde). При вычислениях применяется линейная конечноэлементная интерполяция.

Входные параметры.

  • p, t - переменные, описывающие конечноэлементную сетку (см. initmesh).

Синтаксис:

pdecont(p,t,u,N)

Описание:

Прорисовывает N кривых уровня.

Синтаксис:

pdecont(p,t,u,v)

Описание:

Прорисовывает кривые уровня, соответствующие значениям, содержащимся в массиве v.

Синтаксис:

h=pdecont(p,t,u,lev)

Описание.

Прорисовывает кривые уровня и возвращает дескрипторы соответствующих графических объектов типа line.

Визуализация осуществляется средствами элементарной графики MATLAB (см. также plot, figure).

 

 

Наверх

pdegplot - визуализация геометрии расчётной области

Синтаксис:

pdegplot(g)

Описание:

Средствами элементарной графики MATLAB производит визуализацию граничных сегментов расчётной области. Показываются также и внутренние границы.

Синтаксис.

h=pdegplot(g)

Описание:

Возвращает также список дескрипторов объектов в объекте axes фигуры.

Входные параметры.

  • g может быть матрицей граничных сегментов (см. выходной параметр функции decsg) или именем m-файла описания геометрии (см. pdegeom).

 

 

Наверх

pdemesh - визуализация треугольной конечноэлементной сетки

Синтаксис.

pdemesh(p,e,t)

Описание.

Средствами элементарной графики MATLAB производит визуализацию конечноэлементной сетки, описанной переменными p,e,t (см. initmesh).

Синтаксис.

pdemesh(p,e,t,u)

Описание.

Производит визуализацию узлового распределения решения PDE (переменная u).

Синтаксис.

h=pdemesh(p,e,t) и h=pdemesh(p,e,t,u)

Описание.

Возвращает также дескрипторы соответствующих графических объектов axes.

 

 

Наверх

pdeplot - главная функция визуализации в PDE Toolbox

Синтаксис.

h=pdeplot(p,e,t,p1,v1,...)

Описание.

Средствами элементарной графики MATLAB производит визуализацию конечноэлементной сетки, описанной переменными p,e,t (см. initmesh) или узлового распределения решения PDE. Список дескрипторов объектов axes графического окна figure записывается в переменную h.

Входные параметры.

  • pk - имена ключевых параметров; 

  • vk - значения соответствующих ключевых параметров.

Список ключевых параметров и их возможных значений представлен в следующей таблице.

pk Значение vk / {По умолчанию} Описание
xydata переменная или выражение Узловое или элементное распределение визуализируемой функции
xystyle off | flat | {interp} Стиль визуализации переменной, указанной в параметре ‘xydata’
contour {off} | on Контурная визуализация (показ линий равного уровня)
zdata переменная или выражение Узловое или элементное распределение визуализируемой функции, если предполагается, что функция должна быть представлена в виде трёхмерной поверхности
zstyle off | {continuous} | discontinuous Стиль визуализации в виде трёхмерной поверхности
flowdata переменная или выражение Элементное распределение функции, если предполагается, что это “функция потока”
flowstyle off | {arrow} Стиль визуализации “функции потока”
colormap colormap cool Имя цветовой палитры или матрица цветовой палитры для визуализации переменной, указанной в параметре ‘xydata’
xygrid {off} | on Преобразование к x-y сетке перед визуализацией
gridparam [tn; a2; a3] Индексы треугольников и параметры их функций формы, передаваемые функции tri2grid при преобразовании к x-y сетке. Этот параметр удобно задавать для ускорения работы функции tri2grid, если нужно визуализировать несколько переменных,
описывающих элементное распределение функций.
mesh {off} | on Визуализация конечноэлементной сетки
colorbar off | {on} Показ цветовой шкалы
title Пустая строка по умолчанию Заголовок окна figure, в котором производится визуализация
levels 10 Число уровней функции или массив указанных значений уровня для контурной визуализации

Функция pdeplot может вызываться как из GUI-приложения PDETool, так и из командной строки MATLAB. Функция pdeplot может показать три функции (три распределения поля) одновременно. xydata визуализируется раскраской на плоскости. Представление функции определяется параметром ‘xystyle’. ‘flat’ - кусочно-постоянное представление функции в пределах каждого элемента. ‘interp’ - кусочно-линейная интерполяция с помощью функций формы. zdata визуализируется в виде трёхмерной поверхности (значение функции в каждой точке показывается “в высоту”). Представление функции определяется параметром ‘zstyle’. ‘continuous’ - кусочно-линейная интерполяция с помощью функций формы; ‘discontinuous’ - кусочно-постоянное представление функции в пределах каждого элемента. flowdata может визуализироваться в виде стрелок (если указано ‘flowstyle’,’arrow’). Узловое распределение визуализируемой функции должно представляться столбцовой матрицей длины size(p,2). Элементное распределение должно представляться матрицей-строкой длины size(t,2). Если не указаны ни xydata, ни zdata, ни flowdata, то визуализируется конечноэлементная сетка, описанная параметрами p, e, t.

 

 

Наверх

pdesurf - сокращённая команда визуализации решения PDE задачи в виде поверхностного 3D графика

Синтаксис.

pdesurf(p,t,u)

Описание.

Средствами элементарной графики MATLAB производит визуализацию решения PDE задачи в виде поверхностного трёхмерного графика.

Входные параметры.

  • p, t - массивы, описывающие конечноэлементную сетку в расчётной области (см. initmesh);

  • u - узловое или конечноэлементное распределение скалярной функции в расчётной области.

Если u - столбцовая матрица, то предполагается, что это узловое распределение.

Если u - массив-строка, то предполагается, что это конечноэлементное распределение (значения функции в центрах конечных элементов).

Синтаксис.

h=pdesurf(p,t,u)

Описание.

Дополнительно возвращает дескрипторы графических объектов.

 

Полезные функции

 

Наверх

dst - дискретное синусоидальное преобразование

Синтаксис:

y = dst(x)

Описание:

Возвращает дискретное синусоидальное преобразование от вектора x. y имеет ту же длину, что и x.

Синтаксис:

y = dst(x,n)

Описание:

Возвращает дискретное синусоидальное преобразование от первых n членов вектора x. y имеет длину n. Если x - матрица, то преобразование выполняется для каждого столбца. y имеет ту же размерность, что и x. Обратное преобразование можно вычислить с помощью функции idst.

 

 

Наверх

idst - обратное дискретное синусоидальное преобразование

Синтаксис:

x = idst(y)

Описание.

Возвращает обратное дискретное синусоидальное преобразование от вектора y. x имеет ту же длину, что и y.

Синтаксис:

x = idst(y,n)

Описание.

Возвращает обратное дискретное синусоидальное преобразование от первых n членов вектора y. x имеет длину n.

Если y - матрица, то преобразование выполняется для каждого столбца. x имеет ту же размерность, что и y.

Прямое преобразование можно вычислить с помощью функции dst.

 

 

Наверх

pdeadgsc - выбор треугольников по относительному критерию точности

Синтаксис.

bt=pdeadgsc(p,t,c,a,f,u,errf,tol)

Описание:

Треугольники выбираются для адаптивного переопределения сетки. Возвращает номера треугольников, подлежащих адаптивному переопределению, и записывает их в массив bt

Входные параметры.

  • p, t - матрицы, описывающие текущую конечноэлементную сетку в расчётной области (подробнее см. initmesh);

  • c, a, f - параметры, описывающие распределение коэффициентов PDE в расчётной области (подробнее см. assempde);

  • u - текущее узловое распределение PDE (в случае скалярной краевой задачи это столбцовая матрица размера (NP,1), где NP - число узлов конечноэлементной сетки; в случае системы из N PDE это матрица размера (NP,N); см. также assempde);

  • errf - индикатор ошибки решения PDE, вычисляется функцией pdejmps;

  • tol - параметр точности вычисления.

Треугольники выбираются исходя из критерия errf>tol*scale, где scale вычисляется по формуле scale=max(fmax*l2,amax*umax*l2,cmax*umax);

fmax=max(f); amax=max(a); cmax=max(c); umax=max(u);

l - мера минимального расстояния между геометрическими объектами.

 

 

Наверх

pdeadworst - выбор треугольников по самой большой мере ошибки решения

Синтаксис:

bt=pdeadworst(p,t,c,a,f,u,errf,wlevel)

Описание:

Треугольники выбираются для адаптивного переопределения сетки. Возвращает номера треугольников, подлежащих адаптивному переопределению, и записывает их в массив bt.

Входные параметры.

  • p, t - матрицы, описывающие текущую конечноэлементную сетку в расчётной области (подробнее см. initmesh);

  • c, a, f - параметры, описывающие распределение коэффициентов PDE в расчётной области (подробнее см. assempde);

  • u - текущее узловое распределение PDE (в случае скалярной краевой задачи это столбцовая матрица размера (NP,1), где NP - число узлов конечноэлементной сетки; в случае системы из N PDE это матрица размера (NP,N); см. также assempde);

  • errf - индикатор ошибки решения PDE, вычисляется функцией pdejmps;

  • wlevel - пороговый уровень ошибки относительно меры наихудшей ошибки решения PDE (этот параметр задаётся в пределах от 0 до 1).

Треугольники выбираются исходя из критерия errf>wlevel*max(errf).

 

 

Наверх

pdecgrad - вычисление "функции потока" в центре треугольного конечного элемента

Синтаксис.

[cgxu,cgyu]=pdecgrad(p,t,c,u)

[cgxu,cgyu]=pdecgrad(p,t,c,u,time)

[cgxu,cgyu]=pdecgrad(p,t,c,u,time,sdl)

Описание.

Возвращает конечноэлементное распределение “функции потока” c*grad(u) (см. уравнение (1) в assempde).

Входные параметры.

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    - первая строка - горизонтальные координаты узлов,
    - вторая строка - вертикальные координаты узлов;

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie.

  • с - массив, описывающий распределение коэффициента c в расчётной области (см. уравнение (1) в assempde);

  • u - матрица-столбец узлового распределения искомой величины.

  • time - задаётся, если распределение коэффициента c зависит от времени; time - момент времени.

Выходные параметры.

  • cgxu, cgyu –одномерные массивы, содержащие конечноэлементное распределение x и y составляющих “функции потока”.

Синтаксис.

[cgxu,cgyu]=pdecgrad(p,t,c,u,time,sdl)

Описание.

Возвращает конечноэлементное распределение “функции потока” c*grad(u) в зонах, номера которых заданы в одномерном массиве sdl.

 

 

Наверх

pdeent - возвращает индексы треугольников, граничащих с данным набором треугольников

Синтаксис.

ntl=pdeent(t,tl)

Описание.

Возвращает индексы треугольников, непосредственно граничащих с треугольниками, индексы которых указаны в массиве tl.

Входные параметры.

  • t - матрица треугольных конечных элементов (см. initmesh);

  • tl – массив индексов треугольников, для которых определяются соседи.

Выходной параметр.

  • ntl - массив индексов треугольников-соседей.

 

 

Наверх

pdegrad - вычисление градиента решения PDE задачи в центре треугольного конечного элемента

Синтаксис.

[ux,uy]=pdegrad(p,t,u)

Описание.

Возвращает конечноэлементное распределение градиента решения PDE grad(u) (см. уравнение (1) в assempde).

Синтаксис.

[ux,uy]=pdegrad(p,t,u,sdl)

Описание.

Возвращает конечноэлементное распределение градиента решения PDE grad(u) (см. уравнение (1) в assempde) в зонах, список номеров которых указан в sdl.

Входные параметры.

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    - первая строка - горизонтальные координаты узлов,
    - вторая строка - вертикальные координаты узлов;

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie.

  • u - матрица-столбец узлового распределения искомой величины.

 

 

Наверх

pdeintrp - вычисление решения PDE в центре треугольных элементов по узловому распределению решения PDE

Синтаксис.

ut=pdeintrp(p,t,un)

Входные и выходные параметры.

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    - первая строка - горизонтальные координаты узлов,
    - вторая строка -вертикальные координаты узлов;

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie.

Пусть N - размерность PDE системы, NP - число узлов, NT - число треугольников. Тогда

  • un - узловое распределение решения PDE в виде матрицы размера (NP,N) (строкам соответствуют узлы, столбцам - переменные PDE);

  • ut - конечноэлементное распределение решения PDE в виде матрицы размера (NT,N) (строкам соответствуют треугольные конечные элементы, столбцам - переменные PDE).

 

 

Наверх

pdejmps - ошибка в процессе адаптивного переопределения конечноэлементной сетки

Синтаксис.

errf=pdejmps(p,t,c,a,f,u,alfa,beta,m)

Описание:

Вычисляет ошибку решения PDE для адаптивного переопределения конечноэлементной сетки. Столбцам матрицы errf соответствуют треугольники, строкам - уравнения в системе PDE.

Входные параметры.

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    - первая строка - горизонтальные координаты узлов,
    - вторая строка - вертикальные координаты узлов;

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie.

  • с - массив, описывающий распределение коэффициента c в расчётной области (см. уравнение (1) в assempde);

  • a - массив, описывающий распределение коэффициента a в расчётной области (см. уравнение (1) в assempde);

  • f - массив, описывающий распределение правой части PDE f в расчётной области (см. уравнение (1) в assempde).

  • u – узловое распределение решения PDE (строкам соответствуют узлы, столбцам - переменные PDE в системе).

errf(:,K) вычисляется по формуле:

errf(:,K)=alfa*L2K(H^m*(f - AU) + beta*sqrt(0.5*sum((L(J)^m*JMP(J))^2)),

где L2K, H - L2-норма и линейный размер треугольника с номером K; AU - оператор левой части PDE, применённый к u; L(J) - длина J-й стороны K-го треугольника; JMP(J) - нормальная производная решения PDE на J-й стороне K-го треугольника.

  • alfa, beta, m - параметры представленной формулы.

 

 

Наверх

pdeprtni - интерполяция узлового распределения функции по распределению функции в центрах треугольников

Синтаксис.

un=pdeprtni(p,t,ut)

Входные параметры.

  • p - массив узлов конечноэлементной сетки (столбцам соответствуют узлы):
    - первая строка - горизонтальные координаты узлов,
    - вторая строка - вертикальные координаты узлов;

  • t - матрица треугольных конечных элементов (столбцам соответствуют треугольники):
    t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie;

  • ut - распределение функции в центрах треугольных конечных элементов (в случае скалярного PDE это матрица-строка).

Выходной параметр.

  • un - узловое распределение функции (в случае скалярного PDE это столбцовая матрица).

Пусть N - размерность PDE системы, NP - число узлов конечноэлементной сетки, NT - число треугольников сетки. Тогда в матрице ut строкам соответствуют переменные PDE, столбцам - треугольные конечные элементы, значит, матрица ut имеет размерность (N,NT). На выходе un будет иметь размерность (NP,N), т.е. строкам соответствуют узлы конечноэлементной сетки, столбцам - переменные PDE.

 

 

Наверх

pdesde - индексы граничных элементов между зонами расчётной области

Синтаксис.

ie=pdesde(e,sdl)

Входные параметры.

  • e - матрица граничных элементов на границах раздела зон (см. initmesh, pdegeom):
    - столбцам соответствуют граничные элементы (стороны конечных элементов, принадлежащие границам раздела зон или границе расчётной области);
    - первые две строки - номера номера начальных и конечных узлов граничных элементов;
    - строки 3, 4 - длина “дуги” от начала граничного сегмента до начального и конечного узла граничного элемента, отнесённая к длине “дуги” граничного сегмента;
    - строка 5 - номера граничных сегментов, которым принадлежат граничные элементы;
    - строки 6, 7 - номера зон, примыкающих слева и справа к граничным элементам;

  • sdl - список номеров зон (в виде массива-строки), для которых нужно найти внешние граничные элементы.

Выходной параметр.

  • ie - массив-строка, содержащий список номеров внешних граничных элементов в зонах с номерами sdl. Если параметр sdl не указан, то возвращается список номеров всех граничных элементов расчётной области.

 

 

Наверх

pdesdp - индексы узлов конечноэлементной сетки на границе раздела зон

Синтаксис.

[ii,ic]=pdesdp(p,e,t,sdl)

Описание.

Возвращает номера всех узлов сетки, принадлежащих зонам, указанным в списке sdl.

Входные параметры.

  • p, e, t - массивы, описывающие конечноэлементную сетку в расчётной области (см. initmesh);

  • sdl - список номеров зон (в виде массива-строки), для которых нужно найти узлы сетки.

Выходные параметры.

  • ii - список индексов узлов, которые полностью принадлежат зонам, указанным в списке sdl;

  • ic - список индексов узлов, которые также принадлежат и другим зонам.

Синтаксис.

ic=pdesdp(p,e,t,sdl)

Описание.

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

Если параметр sdl не указан, то предполагается, что указан список всех зон расчётной области.

 

 

Наверх

pdesdt - индексы треугольников на границе раздела зон

Синтаксис.

it=pdesdt(t,sdl)

Описание.

Возвращает индексы it треугольных конечных элементов, принадлежащих зонам, указанным в списке sdl.

Входные параметры.

  • t - матрица треугольных конечных элементов (см. initmesh, столбцам соответствуют треугольники):
    t(1:3,ie) - глобальные номера узлов треугольника с номером ie,
    t(4,ie) - номер зоны, которой принадлежит треугольник с номером ie.

Если параметр sdl не указан, то предполагается, что указан список всех зон расчётной области.

 

 

Наверх

pdesmech - вычисление узлового распределения тензора механических напряжений

Синтаксис.

out=pdesmech(p,t,c,u,p1,v1,...)

Описание.

Вычисляет конечноэлементное распределение тензора механических напряжений и других полей, характеризующих напряжённое деформированное состояние вещества (переменная out) по известному узловому распределению вектора перемещений u. Функция предназначена для приложений теории упругости.

Входные параметры.

  • p, t - массивы, описывающие конечноэлементную сетку (см. initmesh);

  • с - описывает распределение коэффициента PDE (модуля Юнга) (см. также assempde);

  • u - узловое распределение вектора перемещений (столбцовая матрица длины 2*size(p,2): сначала x-компоненты этого вектора, затем y-компоненты);

  • pk - строка символов - имя ключевого параметра;

  • vk - значение соответствующего параметра.

Перечень ключевых параметров и их возможных значений представлены в таблице:

pk vk / {По умолчанию} Описание
tensor ux|uy|vx|vy|exx|eyy|exy|sxx|syy|sxy|e1|e2|s1|s2|
{von Mises}
Выходная величина, возвращаемая в out
application {ps}|pn Поле напряжений | Поле напряжений на деформированной сетке
nu скаляр или строковое выражение {0.3} Коэффициент Пуассона

Конечноэлементное распределение выходной величины, возвращаемое в out, определяется значением ключевого параметра ‘tensor’:

Значение параметра ‘tensor’ Выходная величина, возвращаемая в out
‘ux’ dlx/dx
‘uy’ dlx/dy
‘vx’ dly/dx
‘vy' dly/dy
‘exx’ xx-составляющая тензора деформации
‘eyy’  yy-составляющая тензора деформации
‘exy’  xy-составляющая тензора деформации
‘sxx’  xx-составляющая тензора напряжений
‘syy’  yy-составляющая тензора напряжений
‘sxy’  xy-составляющая тензора напряжений
‘e1’ Первое главное значение деформации
‘e2’ Второе главное значение деформации
‘s1’ Первое главное значение напряжения
‘s2’ Второе главное значение напряжения
‘von Mises’ Эффективное значение напряжения

Эффективное значение напряжения (von Mises effective stress) вычисляется по-разному в зависимости от значения ключевого параметра ‘application’:

Значение параметра ‘application’ Формула, по которой вычисляется эффективное значение напряжения
‘ps’ s = sqrt(s1^2+s2^2-s1*s2)
‘pn’ s =
sqrt((s1^2+s2^2)*(nu^2-nu+1)-s1*s2*(2*nu^2-2*nu-1))

 

 

Наверх

pdetrg - вычисление геометрических параметров треугольной конечноэлементной сетки

Синтаксис.

[ar,a1,a2,a3]=pdetrg(p,t)

Описание.

Возвращает площадь каждого треугольника в ar и половину величины, противоположной котангенсу углов при вершинах каждого треугольника, в остальные выходные массивы.

Синтаксис.

[ar,g1x,g1y,g2x,g2y,g3x,g3y]=pdetrg(p,t)

Описание.

Возвращает площадь каждого треугольника в ar и составляющие градиента функций формы в остальные выходные массивы (1,2,3 - локальные номера вершин треугольников, x,y – указывают на компоненты градиента).

Входные параметры.

  • p - массив узлов всей конечноэлементной сетки (см. initmesh);

  • t - массив интересующих треугольников сетки (см. initmesh).

Все выходные параметры - массивы-строки. Число столбцов в них равно числу столбцов в матрице t.

 

 

Наверх

pdetriq - вычисление показателя регулярности треугольников

Синтаксис.

q=pdetriq(p,t)

Описание.

Вычисляет значения показателя регулярности треугольников, описанных входными параметрами.

Входные параметры.

  • p - массив узлов всей конечноэлементной сетки (см. initmesh);

  • t - массив интересующих треугольников сетки (см. initmesh).

Выходной параметр. 

  • q - массив-строка. Число столбцов в нём равно числу столбцов в матрице t.

Показатель регулярности треугольника q вычисляется по формуле:

q = 4*sqrt(3)*a/(h12+h22+h32),

где a - площадь треугольника, h1, h2, h3 - длины сторон треугольника.

Если q>0.6, то можно считать что треугольник обладает приемлемым качеством по показателю регулярности. Для равностороннего треугольника q=1.

 

 

Наверх

poiasma - учёт (сборка) вкладов в глобальную матрицу коэффициентов от граничных точек при быстром решении уравнения Пуассона

Синтаксис.

K=poiasma(N1,N2,H1,H2)

Входные параметры.

  • N1, N2 - число точек в первом и во втором направлениях (предполагается, что расчётная область и сетка - прямоугольные, среда - однородная);

  • H1, H2 - шаг сетки в этих направлениях.

Выходной параметр.

  • K - глобальная разреженная матрица коэффициентов (“матрица жёсткости”),
    имеющая размерность (N1*N2, N1*N2).

Синтаксис.

K=poiasma(N1,N2)

Описание.

Выполняется то же действие. Предполагается, что H1=H2.

Синтаксис.

K=poiasma(N)

Описание.

Выполняется то же действие. Предполагается, что N1=N2=N.

 

 

Наверх

poicalc - быстрый решатель уравнения Пуассона на прямоугольной сетке

Синтаксис. 

u=poicalc(f,H1,H2,N1,N2)

Описание.

Вычисляет решение уравнения Пуассона для внутренних узлов равномерной прямоугольной сетки.

Входные параметры.

  • f - матрица узлового распределения правой части PDE;
    строкам соответствуют узлы столбцам - переменные PDE;

  • N1, N2 - число точек в первом и во втором направлениях (предполагается, что расчётная область и сетка - прямоугольные, среда - однородная);

  • H1, H2 - шаг сетки в этих направлениях.

Выходной параметр.

  • u - матрица узлового распределения решения PDE (Пуассона); size(u)=size(f).

Число узлов конечноэлементной сетки (а значит и число строк f,u) равно N1*N2.

Если параметры N1, N2 не указаны, то предполагается, что задано N1=N2=sqrt(size(f,1)).

Если параметры H1, H2 не указаны, то предполагается, что H1=H2.

Порядок следования строк в f, u соответствует каноническому упорядочению внутренних узлов, как возвращает функция poiindex.

Решение производится с помощью синусоидального преобразования (см. dst, idst) вдоль первого направления трёхдиагонального матричного решения во втором направлении. Желательно, чтобы N1 было равно целой степени числа 2 для лучшей работы вычислительного алгоритма функции poicalc.

 

 

Наверх

poiindex - индексы узлов в канонически упорядоченной прямоугольной сетке

Синтаксис.

[N1,N2,H1,H2,I,C,II,CC]=poiindex(p,e,t,sd)

Описание.

Производится попытка идентифицировать (интерпретировать) сетку, описанную массивами p,e,t (см. initmesh) в зоне sd как равномерную прямоугольную сетку. Если это невозможно, то на выходе функции N1=0. Иначе:

N1, N2 - число точек в первом и во втором направлениях (предполагается, что расчётная область и сетка - прямоугольные, среда - однородная);

H1, H2 - шаг сетки в этих направлениях.

I, II имеют длину (N1-2)*(N2-2) и содержат индексы внутренних узлов. I содержит индексы исходной сетки, II содержит индексы канонически упорядоченной сетки.

C и CC имеют длину N1*N2-(N1-2)*(N2-2) и содержат индексы граничных узлов. II и CC дополняют друг друга.

В канонически упорядоченной сетке узлы располагаются в списке в направлении “слева направо” и затем “снизу вверх”. Таким образом, если

N1=3 и N2=5, то II = [5 8 11] и CC = [1 2 3 4 6 7 9 10 12 13 14 15].

 

 

Наверх

sptarn - решение сформированной разреженной задачи на собственные значения (частоты)

Синтаксис.

[xv,lmb,iresult] = sptarn(A,B,lb,ub)

 

[xv,lmb,iresult] = sptarn(A,B,lb,ub,spd)

 

[xv,lmb,iresult] = sptarn(A,B,lb,ub,spd,tolconv)

 

[xv,lmb,iresult] = sptarn(A,B,lb,ub,spd,tolconv,jmax)

 

[xv,lmb,iresult] = sptarn(A,B,lb,ub,spd,tolconv,jmax,maxmul)

Описание.

Вычисляет собственные значения матричного уравнения (A-lmb*B)*xv=0 в интервале lb < lmb <= ub.

Входные параметры.

  • A, B - разреженные матрицы;

  • lb, ub - нижняя и верхняя границы интервала поиска собственных значений на действительной оси комплексной плоскости;

  • spd - логическая величина, равная 1, если “a priori” известно, что матричная задача на собственные значения симметричная и положительно определённая, и равная 0 в противном случае; по умолчанию spd=0;

  • tolconv - требуемая относительная точность вычисления собственных значений; по умолчанию tolconv=100*eps (сто машинных эпсилонов);

  • jmax - максимальное число базисных векторов (а значит итераций) при вычислении собственных значений; в рабочей области потребуется jmax*N восьмибайтовых ячеек памяти (N - размерность разреженных матриц); малые значения этого параметра целесообразно задавать при работе на маломощных компьютерах; если компьютер достаточно мощный, то целесообразно задавать значение этого параметра по умолчанию
    (jmax=100); обычно алгоритм заканчивается раньше при достижении достаточной сходимости собственных значений;

  • maxmul - число выполнений алгоритма Арнольди; этот параметр должен иметь значение, не меньшее, чем максимальная кратность вычисляемых собственных значений; чем меньше задано значение jmax, тем больше необходимо вызывать алгоритм Арнольди; по умолчанию maxmul=N (столько раз нужно выполнять алгоритм Арнольди при вычислении собственных значений и собственных векторов единичной матрицы).

Выходные параметры.

  • xv - собственные векторы, соответствующие минимальному значению нормы матричного выражения
    A*xv-B*xv*diag(lmb);

  • lmb - собственные значения в заданном интервале;

  • abs(iresult) - число найденных собственных значений;
    - iresult=>0 - успешное завершение, все собственные значения из заданного интервала найдены;
    - iresult<0 - неуспешное завершение, не все собственные значения из заданного интервала найдены (видимо, из-за того, что задан слишком большой интервал); имеет смысл снова вызвать функцию sptarn с меньшим интервалом.

Описание алгоритма.

Используется алгоритм Арнольди со спектральным преобразованием. Начальное приближение выбирается в начале или конце заданного интервала или в случайной точке заданного интервала, когда обе его границы конечны. Число шагов поиска зависит от того, сколько собственных значений находится в интервале; алгоритм останавливается, когда число шагов достигает min(jmax,N).

После остановки можно снова начать поиск собственных векторов в ортогональном дополнении к тем, что уже найдены. Когда больше не находится собственных значений в заданном интервале, алгоритм останавливается. При малых значениях jmax может понадобиться несколько перезапусков sptarn для сходимости некоторого собственного значения. Для больших значений jmax, которые являются предпочтительными, необходимо MUL+1 выполнений алгоритма Арнольди, где MUL - максимальная кратность собственных значений в интервале.

При решении симметричных задач целесообразно (но вовсе не обязательно) задавать spd=1, т.к. алгоритмы факторизации симметричных положительно определённых матриц работают быстрее и точнее.

Неблагоприятные случаи.

 

1. Медленная сходимость. В этом случае целесообразно:

   1. уменьшить интервал lb, ub; 

   2. увеличить jmax; 

   3. увеличить maxmul.

2. В случае неудачной факторизации нужно попытаться снова вызвать sptarn с конечными значениями параметров lb, ub. В случае повторной неудачи нужно проверить сингулярность факторизуемой матрицы коэффициентов.

3. Если это происходит всегда, может иметься слишком много собственных значений в заданном интервале. Попытка задания maxmul=2 позволяет увидеть некоторые из вычисляемых собственных значений. В этом случае на выходе почти всегда получается iresult<0, т.е. не все собственные значения из заданного интервала найдены.

4. В случае переполнения памяти целесообразно уменьшить jmax.

 

Алгоритм предназначен для вычисления собственных значений, расположенных близко к действительной оси. Если нужно найти собственные значения, расположенные близко к мнимой оси, есть смысл попробовать задать A=i*A .

 

Если при spd=1 задано значение lb, большее, чем минимальное искомое собственное значение, то вычисления идут медленнее, чем при оптимальном значении lb.

 

 

Наверх

tri2grid - преобразование (интерполяция) узлового распределения функции на треугольной сетке в узловое распределение на прямоугольной сетке

Синтаксис.

uxy=tri2grid(p,t,u,x,y)

Описание.

Вычисляет значения функции на прямоугольной сетке, определённой одномерными массивами x и y, если на входе задано узловое распределение функции на треугольной сетке.

Входные параметры.

  • p, t - матрицы описания треугольной конечноэлементной сетки (см. initmesh);

  • u - узловое распределение функции (например, решения PDE) на треугольной сетке;

  • x, y - одномерные массивы, задающие прямоугольную сетку (эти массивы должны быть упорядочены в порядке возрастания).

Синтаксис.

[uxy,tn,a2,a3]=tri2grid(p,t,u,x,y)

Описание.

Возвращает также индексы tn треугольников, в которые попали точки прямоугольной сетки, а также x- и y-производные соответствующих функций формы треугольных элементов (параметры a2, a3).

Синтаксис.

uxy=tri2grid(p,t,u,tn,a2,a3)

Описание.

Вычисляет значения функции на прямоугольной сетке, определённой одномерными массивами x и y, если на входе задано узловое распределение функции на треугольной сетке. Вычисления существенно ускоряются, поскольку уже известны на входе индексы tn треугольников, в которые попали точки прямоугольной сетки, а также x- и y-производные соответствующих функций формы треугольных элементов (параметры a2, a3). Этот вариант вызова функции полезен, если необходимо преобразовать распределение нескольких функций, определённых на одной и той же треугольной сетке.

Для точек прямоугольной сетки, находящихся за пределами треугольной сетки, возвращаются значения NaN в uxy, tn, a2 и a3.

 

Генерация пользовательских m-файлов 

 

Наверх

pdebound - формирование m-файла описания граничных условий

Описание:

Пустая функция в PDE Toolbox MATLAB. Она содержит только комментарии, описывающие правила построения m-функции описания граничных условий для задачи пользователя.

Синтаксис:

Функция пользователя должна иметь следующий заголовок:

function [q,g,h,r]=pdebound(p,e,u,time)

Входные параметры.

Матрицы q и g на выходе должны содержать значения коэффициентов q и g в средних точках каждого граничного элемента. Эти матрицы описывают граничные условия Неймана 

n*c*grad(u)+q*u=g, 

где n - вектор единичной нормали.

size(q)=[N2, NE]; size(q)=[N, NE],

где N - размерность всей пространственно дискретизованной PDE задачи (N=число_узлов*число_неизвестных_переменных_PDE);

NE - число граничных элементов.

Столбцы матриц q, g, соответствующие граничным элементам с условиями Дирихле, на выходе должны содержать нулевые значения.

Матрицы h, r на выходе должны содержать значения коэффициентов h, r в начальной и конечной точке каждого граничного сегмента. Эти матрицы описывают граничные условия Дирихле h*u=r (в матричной форме h*u=r).

size(h)=[N2, 2*NE]; size(r)=[N, 2*NE].

Столбцы матриц h, r, соответствующие граничным элементам с условиями Неймана, на выходе должны содержать нулевые значения.

 

 

Наверх

pdegeom - формирование m-файла описания геометрии

Описание:

Пустая функция в PDE Toolbox MATLAB. Она содержит только комментарии, описывающие правила построения m-функции описания геометрии PDE модели для задачи пользователя. В данном случае геометрия представляется в виде списка граничных сегментов зон.

Зоной называется односвязная область, ограниченная замкнутой совокупностью участков границ геометрических объектов. Граничным сегментом называется отрезок либо дуга окружности или эллипса, принадлежащий границе раздела двух зон или внешней границе зоны (по отношению ко всей границе расчётной области). Граничный сегмент никогда не может быть замкнутым.

Имя этой m-функции передаётся в качестве входного параметра функции initmesh, adaptmesh.

Синтаксис:

ne=pdegeom

Описание.

Возвращает число граничных сегментов.

Синтаксис.

d=pdegeom(bs)

Описание.

Возвращает матрицу выборочных сведений о граничных сегментах, индексы которых указаны в массиве bs.

Каждому столбцу матрицы d соответствует граничный сегмент.

Строка 1 - начальное значение параметра кривой;

Строка 2 - конечное значение параметра кривой;

Строка 3 - номер зоны, примыкающей слева к данному сегменту;

Строка 4 - номер зоны, примыкающей справа к данному сегменту.

Синтаксис.

[x,y]=pdegeom(bs,s)

Описание.

Возвращает координаты точек, принадлежащих граничным сегментам.

Каждому столбцу матриц x, y соответствует граничный сегмент. size(x,1)=size(y,1)=length(s).

s - список значений параметра кривой граничного сегмента. bs может быть скаляром.

Теги

  • Partial Differential Equations Toolbox
    26.09.2019

    Комментарии