MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

Математика\Partial Differential Equations Toolbox

В.Е.Шмелев "Partial Differential Equations Toolbox. Инструментарий решения дифференциальных уравнений в частных производных":
2. Работа пользователя с GUI-приложением PDE Toolbox Matlab

  В оглавление книги \ К следующему разделу \ К предыдущему разделу

2.6. Сохранение PDE–модели в виде m-файла

По командам File/Save, File/Save As происходит сохранение PDE–модели в виде m-файла (см. описание команд PDETool, п.2.1.1). m-файл представляет собой m-функцию без входных и выходных параметров, имеющую имя pdemodel. Каждый оператор этого m-файла вызывает функцию графического интерфейса пользователя (GUI) или пакета PDE Toolbox MATLAB. Ниже приведён пример такого m-файла.

function pdemodel
[pde_fig,ax]=pdeinit;
pdetool('appl_cb',7);
set(ax,'DataAspectRatio',[1 1 1]);
set(ax,'PlotBoxAspectRatio',[9 6 1]);
set(ax,'XLim',[-9 9]);
set(ax,'YLim',[-6 6]);
set(ax,'XTickMode','auto');
set(ax,'YTickMode','auto');
pdetool('gridon','on');
% Geometry description:
pderect([-8 8 -6 6],'R1');
pdecirc(0,0,4,'C1');
pdecirc(0,0,3,'C2');
pderect([-1.5 1.5 1 1.5],'R2');
pderect([-1.5 1.5 -1 -1.5],'R3');
set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','R1+C1+C2+R2+R3')
% Boundary conditions:
pdetool('changemode',0)
pdesetbd(5,...
'dir',...
1,...
'1',...
'-10')
pdesetbd(4,...
'neu',...
1,...
'0',...
'0')
pdesetbd(2,...
'dir',...
1,...
'1',...
'10')
pdesetbd(1,...
'neu',...
1,...
'0',...
'0')
% Mesh generation:
setuprop(pde_fig,'Hgrad',1.3);
setuprop(pde_fig,'refinemethod','regular');
pdetool('initmesh')
pdetool('refine')
pdetool('refine')
% PDE coefficients:
pdeseteq(1,...
'1./(1.0)!1./(1.0)!1./(1.0)!1./(1.0)!1./(120)',...
'sqrt(-1)*(2*2*pi/3E8).*(0.0)-(2*2*pi/3E8).*(2*2*pi/3E8).*(1.0)!sqrt(-1)*(2*2*pi/3E8).*(0.0)-(2*2*pi/3E8).*(2*2*pi/3E8).*(1.0)!sqrt(-1)*(2*2*pi/3E8).*(0.0)-(2*2*pi/3E8).*(2*2*pi/3E8).*(1.0)!sqrt(-1)*(2*2*pi/3E8).*(0.0)-(2*2*pi/3E8).*(2*2*pi/3E8).*(1.0)!sqrt(-1)*(2*2*pi/3E8).*(5.6E4*376.7)-(2*2*pi/3E8).*(2*2*pi/3E8).*(1.0)',...
'0.0!0.0!0.0!0.0!0.0',...
'1.0!1.0!1.0!1.0!1.0',...
'0:10',...
'0.0',...
'0.0',...
'[0 100]')
setuprop(pde_fig,'currparam',...
['2*2*pi/3E8!2*2*pi/3E8!2*2*pi/3E8!2*2*pi/3E8!2*2*pi/3E8';...
'1.0!1.0!1.0!1.0!120 ';...
'0.0!0.0!0.0!0.0!5.6E4*376.7 ';...
'1.0!1.0!1.0!1.0!1.0 '])
% Solve parameters:
setuprop(pde_fig,'solveparam',...
str2mat('0','12288','10','pdeadworst',...
'0.5','longest','0','1E-4','','fixed','Inf'))
% Plotflags and user data strings:
setuprop(pde_fig,'plotflags',[6 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 1]);
setuprop(pde_fig,'colstring','abs(u)');
setuprop(pde_fig,'arrowstring','');
setuprop(pde_fig,'deformstring','');
setuprop(pde_fig,'heightstring','');
% Solve PDE:
pdetool('solve')

Как видно, в общем случае m-файл PDE–модели состоит из 8 разделов: Общая часть, Раздел описания геометрии, Раздел описания граничных условий, Раздел генерации конечноэлементной сетки, Раздел задания коэффициентов PDE, Раздел задания параметров решателя, Раздел задания параметров визуализации, Раздел решения PDE.

Общая часть

Общая часть состоит из заголовка m-функции, оператора запуска GUI-приложения PDETool, оператора установки типа решаемой стандартной краевой задачи, операторов настройки свойств графического объекта axes. PDETool запускается оператором

[pde_fig,ax]=pdeinit;

В переменную pde_fig записывается дескриптор фигуры PDETool, в переменную ax – дескриптор графического объекта axes этой фигуры. Если к моменту выполнения этого оператора фигура PDETool уже существовала, то запуск приложения PDETool не производится, а просто возвращаются и записываются дескрипторы.

Оператор

pdetool('appl_cb',kk);

настраивает приложение PDETool на решение стандартной PDE-задачи № kk в списке стандартных краевых задач (см. подраздел 2.3). В случае данного примера 7 – “AC Power Electromagnetics”, т.е. переменное гармоническое электромагнитное поле.

Оператор

set(ax,'DataAspectRatio',[1 1 1]);

устанавливает равный масштаб по всем координатным осям.

Оператор

set(ax,'PlotBoxAspectRatio',[9 6 1]);

устанавливает относительные размеры (на экране по координатным осям) отображаемой в axes области.

Операторы

set(ax,'XLim',[-9 9]);
set(ax,'YLim',[-6 6]);

устанавливают пределы координатных осей.

Операторы

set(ax,'XTickMode','auto');
set(ax,'YTickMode','auto');

устанавливают автоматическую разметку координатных осей.

Оператор

pdetool('gridon','on');

устанавливает режим показа линий координатной сетки.

В [15] дано достаточно подробное описание свойств объекта axes: 'DataAspectRatio', 'PlotBoxAspectRatio', 'XLim', 'YLim', 'XTickMode', 'YTickMode' и др.

Раздел описания геометрии

Этот раздел содержит операторы вызова функций прорисовки в PDETool геометрических объектов (см. состав пакета PDE Toolbox Matlab, раздел 4). В конце раздела описания геометрии записывается оператор, задающий средствами GUI формулу геометрии расчётной области (см. подраздел 2.2).

Операторы

pderect([-8 8 -6 6],'R1');
pdecirc(0,0,4,'C1');
pdecirc(0,0,3,'C2');
pderect([-1.5 1.5 1 1.5],'R2');
pderect([-1.5 1.5 -1 -1.5],'R3');

создают и прорисовывают геометрические объекты (в данном случае круги и прямоугольники).

Оператор

set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','R1+C1+C2+R2+R3')

задаёт формулу геометрии расчётной области (см. подраздел 2.2).

Раздел описания граничных условий

Этот раздел содержит оператор переключения PDETool в режим ввода граничных условий, а также операторы установки граничных условий для каждого граничного сегмента.

Оператор

pdetool('changemode',0)

переключает PDETool в режим ввода граничных условий.

Оператор

pdesetbd(Nsegm,Type,Mode,eh,er)

устанавливает граничное условие для сегмента № Nsegm. Type=’dir’ – граничное условие Дирихле; Type=’neu’ – граничное условие Неймана. Mode=1 – скалярное PDE; Mode=2 – система двух скалярных PDE. eh – строка символов, содержащая выражение для коэффициента h или q граничных условий. er – строка символов, содержащая выражение для коэффициента r или g граничных условий.

Раздел генерации конечноэлементной сетки

Этот раздел содержит операторы установки с помощью функции setuprop дополнительных свойств фигуры PDETool, влияющих на генерацию и переопределение сетки; раздел содержит также команды инициализации и переопределения сетки (см. п. 2.4.4). Команды подаются функцией pdetool.

Раздел задания коэффициентов PDE

Этот раздел состоит из двух операторов.

Оператор

pdeseteq(Type,c,a,f,d,tlist,u0,ut0,range)

устанавливает в PDETool распределение коэффициентов PDE в расчётной области. Type=1 – эллиптическое PDE; Type=2 – параболическое PDE; Type=3 – гиперболическое PDE; Type=4 – решение задачи на собственные значения. c,a,f,d – матрицы символов, описывающие в виде выражений распределение коэффициентов PDE в расчётной области (формат этих матриц описан в п. 2.4.3). tlist – строковое выражение, значением которого является матрица-строка – список моментов времени, для которых нужно получить решение PDE. u0,ut0 – строковые выражения, описывающие распределение в расчётной области начальных условий для искомой величины (u0) и для её производной по времени (ut0), синтаксис такой же, как и для c,a,f,d. range – строковое выражение, значением которого является массив-строка, состоящий из двух элементов; этот массив задаёт диапазон действительных частей искомых собственных значений PDE-задачи.

Оператор

setuprop(pde_fig,'currparam',...
['2*2*pi/3E8!2*2*pi/3E8!2*2*pi/3E8!2*2*pi/3E8!2*2*pi/3E8';...
'1.0!1.0!1.0!1.0!120 ';...
'0.0!0.0!0.0!0.0!5.6E4*376.7 ';...
'1.0!1.0!1.0!1.0!1.0 '])

определяет содержимое строк ввода диалогового окна ввода коэффициентов PDE для каждой зоны (см. рис. 2.12, п. 2.1.6).

Раздел задания параметров решателя

Этот раздел содержит оператор задания параметров решателя PDE. Дополнительному свойству 'solveparam' фигуры PDETool присваивается матрица символов, определяющая содержание строк ввода диалогового окна задания параметров решателя PDE (см. рис. 2.19, п. 2.1.8, п. 2.4.5).

Раздел задания параметров визуализации

Этот раздел содержит операторы установки дополнительных свойств фигуры PDETool, определяющих содержание строк ввода и состояние флагов диалогового окна ввода параметров визуализации решения PDE (см. рис. 2.21, п. 2.1.9, а также подраздел 2.5). Перечень и назначение этих свойств сведено в таблицу.

Дополнительное свойство фигуры PDETool, устанавливаемое функциями setuprop, setappdata

Назначение свойства

'colstring'

Содержание строки ввода “User entry”, относящейся к флагу “Color"

'arrowstring'

Содержание строки ввода “User entry”, относящейся к флагу “Arrows"

'deformstring'

Содержание строки ввода “User entry”, относящейся к флагу “Deformed mesh"

'heightstring'

Содержание строки ввода “User entry”, относящейся к флагу “Height (3-D plot)"

'plotflags'

Это свойство должно быть равно числовому массиву-строке, каждый элемент которого имеет следующее назначение:

'plotflags'(1)

Номер пункта ниспадающего меню группы “Property”, относящегося к флагу “Color"

'plotflags'(2)

Номер пункта ниспадающего меню группы “Plot style”, относящегося к флагу “Color"

'plotflags'(3)

Номер пункта ниспадающего меню группы “Property”, относящегося к флагу “ Height (3-D plot)"

'plotflags'(4)

Номер пункта ниспадающего меню группы “Plot style”, относящегося к флагу “ Height (3-D plot)"

'plotflags'(5)

Номер пункта ниспадающего меню группы “Property”, относящегося к флагу “Arrows"

'plotflags'(6)

Номер пункта ниспадающего меню группы “Plot style”, относящегося к флагу “Arrows"

'plotflags'(7)

Номер пункта ниспадающего меню "Colormap"

'plotflags'(8)

Флаг "Plot solution automatically": 1 – установлен; 0 – сброшен

'plotflags'(9)

Флаг "Plot in x-y grid": 1 – установлен; 0 – сброшен

'plotflags'(10)

Флаг "Show mesh": 1 – установлен; 0 – сброшен

'plotflags'(11)

Флаг "Animation": 1 – установлен; 0 – сброшен

'plotflags'(12)

Номер пункта ниспадающего меню "Time for plot"

'plotflags'(13)

Флаг “Color”: 1 – установлен; 0 – сброшен

'plotflags'(14)

Флаг “Contour”: 1 – установлен; 0 – сброшен

'plotflags'(15)

Флаг “Height (3-D plot)”: 1 – установлен; 0 – сброшен

'plotflags'(16)

Флаг “Arrows”: 1 – установлен; 0 – сброшен

'plotflags'(17)

Флаг “Deformed mesh”: 1 – установлен; 0 – сброшен

'plotflags'(18)

Номер пункта ниспадающего меню группы “Property”, относящегося к флагу “Deformed mesh"

Раздел решения PDE

Этот раздел содержит команду решения PDE. Команда подаётся функцией pdetool.

В оглавление книги \ К следующему разделу \ К предыдущему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика