function pdemodel
[pde_fig,ax]=pdeinit;
pdetool('appl_cb',1);
set(ax,'DataAspectRatio',[1 2.25 1]);
set(ax,'PlotBoxAspectRatio',[3 2 1]);
set(ax,'XLim',[-3 3]);
set(ax,'YLim',[-1 8]);
set(ax,'XTick',[ -3,...
 -2.5,...
 -2,...
 -1.5,...
 -1,...
 -0.5,...
 0,...
 0.5,...
 1,...
 1.5,...
 2,...
 2.5,...
 3,...
]);
set(ax,'YTick',[ -1,...
 -0.5,...
 0,...
 0.5,...
 1,...
 1.5,...
 2,...
 2.5,...
 3,...
 3.5,...
 4,...
 4.5,...
 5,...
 5.5,...
 6,...
 6.5,...
 7,...
 7.5,...
 8,...
]);
pdetool('gridon','on');

% Geometry description:
pdepoly([ -2,...
 0,...
 2,...
],...
[ 1,...
 3,...
 1,...
],...
 'P2');
pdepoly([ -2,...
 0,...
 2,...
],...
[ 2,...
 4,...
 2,...
],...
 'P3');
pdepoly([ -2,...
 0,...
 2,...
],...
[ 3,...
 5,...
 3,...
],...
 'P4');
pdepoly([ -2,...
 0,...
 2,...
],...
[ 4,...
 6,...
 4,...
],...
 'P5');
pdepoly([ -2,...
 0,...
 2,...
],...
[ 5,...
 7,...
 5,...
],...
 'P6');
pderect([-0.5 0.5 0 1],'R1');
set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','P2+P3+P4+P5+P6+R1')

% Boundary conditions:
pdetool('changemode',0)
pdesetbd(39,...
'dir',...
1,...
'1',...
'0')
pdesetbd(36,...
'dir',...
1,...
'1',...
'0')
pdesetbd(35,...
'dir',...
1,...
'1',...
'0')
pdesetbd(32,...
'dir',...
1,...
'1',...
'0')
pdesetbd(31,...
'dir',...
1,...
'1',...
'0')
pdesetbd(28,...
'dir',...
1,...
'1',...
'0')
pdesetbd(27,...
'dir',...
1,...
'1',...
'0')
pdesetbd(24,...
'dir',...
1,...
'1',...
'0')
pdesetbd(23,...
'dir',...
1,...
'1',...
'0')
pdesetbd(20,...
'dir',...
1,...
'1',...
'0')
pdesetbd(19,...
'dir',...
1,...
'1',...
'0')
pdesetbd(17,...
'dir',...
1,...
'1',...
'0')
pdesetbd(16,...
'dir',...
1,...
'1',...
'0')
pdesetbd(13,...
'dir',...
1,...
'1',...
'0')
pdesetbd(12,...
'dir',...
1,...
'1',...
'0')
pdesetbd(9,...
'dir',...
1,...
'1',...
'0')
pdesetbd(8,...
'dir',...
1,...
'1',...
'0')
pdesetbd(6,...
'dir',...
1,...
'1',...
'0')
pdesetbd(5,...
'dir',...
1,...
'1',...
'0')
pdesetbd(4,...
'dir',...
1,...
'1',...
'0')
pdesetbd(3,...
'dir',...
1,...
'1',...
'0')
pdesetbd(2,...
'dir',...
1,...
'1',...
'0')
pdesetbd(1,...
'dir',...
1,...
'1',...
'0')

% Mesh generation:
setappdata(pde_fig,'Hgrad',1.3);
setappdata(pde_fig,'refinemethod','regular');
setappdata(pde_fig,'jiggle',char('on','mean',''));
pdetool('initmesh')
pdetool('refine')

% PDE coefficients:
pdeseteq(1,...
'1.0',...
'0.0',...
'(abs(y-2.1)<0.1).*(abs(x-1)<0.1)+(abs(x+1)<0.1).*(abs(y-3.1)<0.1)+(abs(x)<0.1).*(abs(y-4)<0.1)',...
'1.0',...
'0:10',...
'0.0',...
'0.0',...
'[0 100]')
setappdata(pde_fig,'currparam',...
['1.0                                                                                           ';...
'0.0                                                                                           ';...
'(abs(y-2.1)<0.1).*(abs(x-1)<0.1)+(abs(x+1)<0.1).*(abs(y-3.1)<0.1)+(abs(x)<0.1).*(abs(y-4)<0.1)';...
'1.0                                                                                           '])

% Solve parameters:
setappdata(pde_fig,'solveparam',...
str2mat('0','1098','10','pdeadworst',...
'0.5','longest','0','1E-4','','fixed','Inf'))

% Plotflags and user data strings:
setappdata(pde_fig,'plotflags',[1 1 1 1 1 1 6 1 0 0 0 1 1 0 0 0 0 1]);
setappdata(pde_fig,'colstring','');
setappdata(pde_fig,'arrowstring','');
setappdata(pde_fig,'deformstring','');
setappdata(pde_fig,'heightstring','');

% Solve PDE:
pdetool('solve')
