Modelování a vizualizace elektromagnetických polí v MATLABu Tomáš Mikolanda Ústav mechatroniky a technické informatiky Oddělení elektrotechniky a elektroniky BETA verze
Obsah přednášky Úvod do problematiky. Význam a podstata základních. matematických vektorových operátorů. Numerický výpočet, interpretace, chyby a vizualizace. MATLAB Základní grafické prostředky. Nástroje pro vizualizaci skalárních polí. Nástroje pro vizualizaci vektorových polí. Praktické ukázky. Elektrostatické pole. Magnetostatické pole. BONUS na konec Ukázka příkladů ze zápočtových prací z loňského roku. Vaše otázka na závěr? „Co budeme řešit za semestrální práci?“ Obsah přednášky
Úvod do problematiky Otázky a co si musíme uvědomit. Co se počítá? Jak se to počítá? V čem se to spočítá? Jak zobrazit výsledky? Jak výsledky interpretovat? PROČ se to počítá??? Úvod do problematiky
Úvod do problematiky Co se počítá? Komplikované prostorové nebo rovinné technické úlohy. Šíření nebo rozložení EM pole v anizotropním, nehomogenním, nelineárním či tvrdém prostředí. Vysokofrekvenční EM pole. Dynamické úlohy. Sdružené úlohy (termo-EM, EM-mech) Příklady: Rozložení EM pole v elektrickém motoru. Magnetické projevy hvězd. Úvod do problematiky
Úvod do problematiky Jak se to počítá? Jednoduché úlohy analyticky – ručně. Elektrické pole soustavy bodových nábojů. Elektrické a magnetické pole jednoduchých a symetrických úloh (koule, vodič, polorovina, rovina). Vyjadřujeme v kartézských, cylindrických nebo sférických souřadnicích; mezi všema existují vzájemné převody. Jednoduché příklady obvodů s rozprostřenými parametry – homogenní vedení, hloubka vniku.. Úvod do problematiky
Úvod do problematiky Jak se to počítá? Komplikované úlohy numericky Numerická aproximace (Runge-Kutta, ODE, …) Metoda konečných diferencí Metoda konečných prvků (FEM) Dle typu úlohy lze použít buďto některý ze specializovaných numerických řešičů nebo si vytvořit svůj vlastní. Úvod do problematiky
Úvod do problematiky V čem se to spočítá? ANSYS COMSOL MATLAB MATHEMATICA MATHCAD Následují ukázky výstupů z jednotlivých programů. Úvod do problematiky
ANSYS Úvod do problematiky
COMSOL Úvod do problematiky
MATLAB Úvod do problematiky
MATHEMATICA Úvod do problematiky
MATHCAD Úvod do problematiky
Úvod do problematiky Jak zobrazit výsledky? Přímo ve výpočetním systému, pokud to umožňuje. Pomocí některého z grafických postprocessorů. Jak výsledky interpretovat? Velmi opatrně, proč? Modely se realizují za určitých zjednodušujících předpokladů (nulová tloušťka, nekonečná rychlost šíření,…) Moderní je se spoléhat se na výsledky numerických modelů aniž bychom rozuměli fyzikální podstatě problému!!! PROČ se to počítá? … Úvod do problematiky
Význam a podstata základních. matematických vektorových operátorů Význam a podstata základních. matematických vektorových operátorů. Numerický výpočet, interpretace, chyby a vizualizace. grad div (Div) rot (Rot) laplace
Operátorový počet Operátor grad Významy operátoru Skalární funkci převádí na funkci vektorovou. Určuje směr největšího spádu funkce. MATLAB: gradient Operátorový počet
Operátorový počet Operátor div (Div) Významy operátoru Vektorovou funkci převádí na funkci skalární. Udává zřídlovost vektorového pole. Div – plošná divergence Velký význam v teorii EM pole při zkoumání podmínek na rozhraní dvou prostředí. MATLAB: divergence Operátorový počet
Operátorový počet Operátor rot (Rot) Významy operátoru Zachovává vektorovou funkci. Udává v každém bodě lokální míru rotace (otáčení) definované tímto polem. Rot – plošná rotace Velký význam v teorii EM pole při zkoumání podmínek na rozhraní dvou prostředí. MATLAB: curl Operátorový počet
Operátorový počet Operátor Laplace Významy operátoru Je-li operátor aplikován na skalární pole je výsledkem opět skalární pole. Pokud je aplikován na tenzorové pole je výsledkem tenzorové pole stejného řádu. MATLAB: --- Operátorový počet
Operátorový počet MATLAB a problémy numerického řešení MATLAB nepracuje s jednotkami -> rozměrová analýza je pouze na nás. Výsledky včetně chyb závisejí charakteru řešené úlohy a hustotě sítě s kterou počítáme => je bezpodmínečně nutné rozumět fyzikální podstatě řešeného problému! Pozor na výsledky integrací a zejména derivací! MATLAB nezobrazí nedefinované hodnoty, viz ukázka. Malá změna zadání způsobí velké změny na výstupu! Ukázka na funkci: Phi = 2 / sqrt(x^2 + y^2) Operátorový počet
Operátorový počet Zobrazení a význam divergence pole Stejná funkce jako u ukázky gradientu. Otázka: Proč je tentokráte vrchol záporný?? Funkce: Phi = 2 / sqrt(x^2 + y^2 + 0.2) Operátorový počet
Operátorový počet Zobrazení a význam rotace pole První dva obrázky, funkce: A = (-y; x) Druhá dvojice, funkce: A = (-y/R^2; x/R), kde R=sqrt(X^2 + Y^2) Operátorový počet
MATLAB je koncipován jako nástroj pro počítání s vektory => lineární algebra. MATLAB je interpreter, nikoli kompilátor! Maximálního výkonu při výpočtech dosáhnete při vektorovém zápisu operací. Pouze v těch nejnutnějších situacích používat cykly! MATLAB - základy
MATLAB je postaven na principu toolboxů (zásuvných modulů). Toolboxy se dají dokupovat (licencovat) zvlášť podle potřeby. Průměrná cena jednoho toolboxu je pro školství 7.980,- Kč, standardní licence je pak v intervalu <16; 80> tis. Kč. Informace o instalaci: ver Nápověda: help doc MATLAB - základy
MATLAB - základy Pozor na zápis a typ operandů! B = magic(3); // např. [8 1 6; 3 5 7; 4 9 2] C1 = A * B; // =[26 38 26; 31 34 25; 41 36 43] C2 = A .* B;// =[8 2 18; 6 5 21; 12 27 4] C1 != C2 MATLAB - základy
MATLAB – základní grafické prostředky Funkce pro kreslení čárových grafů Odlišují se pouze v tom jaké nastavují měřítko osám grafu. Pro všechny funkce je vstupem vektor nebo matice. Funkce automaticky upraví měřítko os podle vstupních dat. Změnu měřítka lze provést funkcemi: xlim Ylim zlim MATLAB – základní grafické prostředky
MATLAB – základní grafické prostředky plot - 2D graf s lineárním měřítkem na obou osách plot3 – 3D graf s lineárním měřítkem na všech osách loglog – Graf s logaritmickým měřítkem pro všechny osy semilogx – Graf s logaritmickým měřítkem pro osu X a lineárním měřítkem pro osu Y. semilogy – Graf s logaritmickým měřítkem pro osu Y a lineárním měřítkem pro osu X. plotyy – Graf se dvěma osami Y, na levé a pravé straně s odlišným měřítkem. MATLAB – základní grafické prostředky
MATLAB – základní grafické prostředky plot(Y) plot(X1,Y1,...) plot(X1,Y1,LineSpec,...) plot(...,'PropertyName',PropertyValue,...) plot(axes_handle,...) Př: x = -pi : .1 : pi; y = sin(x); plot(x, y) set(gca,'XTick',-pi:pi/2:pi) set(gca,'XTickLabel',{'-pi','-i/2','0','pi/2','pi'}) MATLAB – základní grafické prostředky
MATLAB – základní grafické prostředky plot3(X1,Y1,Z1,...) plot3(X1,Y1,Z1,LineSpec,...) plot3(...,'PropertyName',PropertyValue,...) plot3(X1,Y1,Z1,X2,Y2,Z2,LineSpec,X3,Y3,Z3) Př: Lorenzův attractor MATLAB – základní grafické prostředky
MATLAB – základní grafické prostředky loglog(Y) loglog(X1,Y1,...) loglog(X1,Y1,LineSpec,...) loglog(...,'PropertyName',PropertyValue,...) Př: x = logspace(-1,2); loglog(x,exp(x),'-s') ; grid on; MATLAB – základní grafické prostředky
MATLAB – základní grafické prostředky semilogx(Y) semilogy(...) semilogx(X1,Y1,...) semilogx(X1,Y1,LineSpec,...) semilogx(...,'PropertyName',PropertyValue,...) Př: x = 0 : .1 : 10; semilogy(x, 10.^x); MATLAB – základní grafické prostředky
MATLAB – základní grafické prostředky plotyy(X1,Y1,X2,Y2) plotyy(X1,Y1,X2,Y2,function) plotyy(X1,Y1,X2,Y2,'function1','function2') [AX,H1,H2] = plotyy(...) Př: x = 0:0.01:20; y1 = 200*exp(-0.05*x).*sin(x); y2 = 0.8*exp(-0.5*x).*sin(10*x); [AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); set(get(AX(1),'Ylabel'),'String','Slow Decay'); set(get(AX(2),'Ylabel'),'String','Fast Decay'); xlabel('Time (\musec)'); title('Multiple Decay Rates'); set(H1,'LineStyle','--'); set(H2,'LineStyle',':'); MATLAB – základní grafické prostředky
MATLAB – vizualizace skalárních polí Skalární funkce Skalární funkce je funkce, které každému bodu v prostoru přiřazuje jedno číslo - skalár. Příklady skalárních polí Teplota atmosféry Země v blízkosti povrchu. Absolutní hodnoty vektorových polí (absolutní hodnota magnetické indukce, intenzity el. pole) Jak zobrazit skalární funkci? Otázka do pléna.. MATLAB – vizualizace skalárních polí
MATLAB – vizualizace skalárních polí surface – low-level funkce, nedoporučuji používat, lze nadělat hodně chyb mesh# vs surf# ??? mesh# – drátový model surf# – povrchový model (vyplněný) contour – vrstevnicový graf (zobrazuje ekvipotenciály - izokřivky) pcolor – hodnota funkce odpovídá barevné složce, z = 0 -> jedná se o rovinu, hodnota funkce je vyjádřena barvou. MATLAB – vizualizace skalárních polí
MATLAB – vizualizace skalárních polí Jak funkce používat? 1) meshgrid – generuje pole pro X a Y souřadnice pro 3D grafy [X,Y] = meshgrid(x,y) x, y ~ 1D vektory, rozsah vst. hodnot pro „x“ resp. „y“ X, Y ~ matice (2D) pole složená z kopií vektorů „x“ a „y“ Pozn.: Veškeré výpočty se musejí realizovat s „novými“ proměnnými „X“ a „Y“ !!! 2) Výpočet: MATLAB – vizualizace skalárních polí
MATLAB – vizualizace skalárních polí [X,Y] = meshgrid(-8 : .5 : 8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; surfc(X,Y,Z); MATLAB – vizualizace skalárních polí
MATLAB – vizualizace skalárních polí Další možnosti Stínování: shading [###] flat faceted interp Default nastavení: faceted MATLAB – vizualizace skalárních polí
MATLAB – vizualizace skalárních polí Barevné mapy: Jet HSV Hot Cool Spring Summer Autumn Winter Gray Bone Copper Pink Lines Změna: colormap ### MATLAB – vizualizace skalárních polí
MATLAB – vizualizace skalárních polí Výpočet a zobrazení normálových vektorů surfnorm(Z) surfnorm(X,Y,Z) [Nx,Ny,Nz] = surfnorm(...) Normálové vektory nejsou normalizované! Nezobrazuje ty, které směřují od pozorovatele. Příklad: [X,Y] = meshgrid(-8 : .5 : 8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; surfc(X,Y,Z); hold on; surfnorm(X, Y, Z); MATLAB – vizualizace skalárních polí
MATLAB – vizualizace vektorových polí comet - 2-D comet plot. comet3 - 3-D comet plot. compass – Vektory vycházející z počátku (dobré pro fázorový diagram). feather – Vektory, které jsou rovnoměrně rozloženy podél horizontální osy. quiver – Zobrazí vektor o hodnotách (u,v) v bodě (x,y). quiver3 - 3-D varianta předchozí funkce. MATLAB – vizualizace vektorových polí
MATLAB – vizualizace vektorových polí comet(y) comet(x,y) comet(x,y,p) comet(axes_handle,...) Příklad: t = 0:.01:2*pi; x = cos(2*t).*(cos(t).^2); y = sin(2*t).*(sin(t).^2); comet(x,y); MATLAB – vizualizace vektorových polí
MATLAB – vizualizace vektorových polí comet3(z) comet3(x,y,z) comet3(x,y,z,p) comet3(axes_handle,...) Příklad: t = -10*pi:pi/250:10*pi; comet3((cos(2*t).^2).*sin(t), (sin(2*t).^2).*cos(t),t); MATLAB – vizualizace vektorových polí
MATLAB – vizualizace vektorových polí compass(U,V) compass(Z) compass(...,LineSpec) compass(axes_handle,...) h = compass(...) Příklad: t = -10*pi:pi/250:10*pi; comet3((cos(2*t).^2).*sin(t), (sin(2*t).^2).*cos(t),t); MATLAB – vizualizace vektorových polí
MATLAB – vizualizace vektorových polí feather(U,V) feather(Z) feather(...,LineSpec) feather(axes_handle,...) h = feather(...) Příklad: theta = (-90:10:90)*pi/180; r = 2*ones(size(theta)); [u,v] = pol2cart(theta,r); feather(u,v); MATLAB – vizualizace vektorových polí
MATLAB – vizualizace vektorových polí quiver(x,y,u,v) quiver(u,v) quiver(...,scale) quiver(...,LineSpec) quiver(...,LineSpec,'filled') quiver(axes_handle,...) h = quiver(...) hlines = quiver('v6',...) Příklad: [X,Y] = meshgrid(-2:.2:2); Z = X.*exp(-X.^2 - Y.^2); [DX,DY] = gradient(Z,.2,.2); contour(X,Y,Z) hold on; quiver(X,Y,DX,DY); colormap hsv; hold off; MATLAB – vizualizace vektorových polí
MATLAB – vizualizace vektorových polí quiver3(x,y,z,u,v,w) quiver3(z,u,v,w) quiver3(...,scale) quiver3(...,LineSpec) quiver3(...,LineSpec,'filled') quiver3(axes_handle,...) h = quiver3(...) Příklad: [X,Y] = meshgrid(-2:0.25:2,-1:0.2:1); Z = X.* exp(-X.^2 - Y.^2); [U,V,W] = surfnorm(X,Y,Z); quiver3(X,Y,Z,U,V,W,0.5); hold on surf(X,Y,Z); colormap hsv view(-35,45) axis ([-2 2 -1 1 -.6 .6]) hold off MATLAB – vizualizace vektorových polí
Pokročilé metody vizualizace
Pokročilé metody vizualizace streamline – zobrazuje proudnice. coneplot – zobrazí vektory rychlosti jako kužele. stream2 – vypočte proudnice – rovinná úloha. stream3 – vypočte proudnice – prostorová úloha. streamslice – zobrazí rozložené proudnice. Pokročilé metody vizualizace
Pokročilé metody vizualizace streamline(X,Y,U,V,startx,starty) streamline(U,V,startx,starty) streamline(XY) streamline(...,options) streamline(axes_handle,...) h = streamline(...) Příklad: load wind [sx,sy,sz] = meshgrid(80,20:10:50,0:5:15); h = streamline(x,y,z,u,v,w,sx,sy,sz); set(h,'Color','red') ; view(3); Pokročilé metody vizualizace
Pokročilé metody vizualizace coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz) coneplot(U,V,W,Cx,Cy,Cz) coneplot(...,s) coneplot(...,color) coneplot(...,'quiver') coneplot(...,'method') coneplot(X,Y,Z,U,V,W,'nointerp') coneplot(axes_handle,...) h = coneplot(...) Příklad: viz nápověda k příkazu.. Pokročilé metody vizualizace
Pokročilé metody vizualizace XY = stream2(x,y,u,v,startx,starty) XY = stream2(u,v,startx,starty) XY = stream2(...,options) Příklad: load wind; [sx,sy] = meshgrid(80,20:10:50); streamline(stream2(x(:,:,5),y(:,:,5),u(:,:,5),v(:, :,5),sx,sy)); Pokročilé metody vizualizace
Pokročilé metody vizualizace XYZ = stream3(X,Y,Z,U,V,W,startx,starty,startz) XYZ = stream3(U,V,W,startx,starty,startz) XYZ = stream3(...,options) Příklad: load wind; [sx sy sz] = meshgrid(80,20:10:50,0:5:15); streamline(stream3(x,y,z,u,v,w,sx,sy,sz)) view(3); Pokročilé metody vizualizace
Pokročilé metody vizualizace streamslice(X,Y,Z,U,V,W,startx,starty,startz) streamslice(U,V,W,startx,starty,startz) streamslice(X,Y,U,V) streamslice(U,V) streamslice(...,density) streamslice(...,'arrowsmode') streamslice(...,'method') streamslice(axes_handle,...) h = streamslice(...) [vertices arrowvertices] = streamslice(...) Příklad: load wind; daspect([1 1 1]); [verts averts] = streamslice(u,v,w,10,10,10); streamline([verts averts]); spd = sqrt(u.^2 + v.^2 + w.^2); hold on; slice(spd,10,10,10); colormap(hot); shading interp; view(30,50); axis(volumebounds(spd)); camlight; material([.5 1 0]); Pokročilé metody vizualizace
Praktické ukázky Magnetostatické pole Pole osamoceného vodiče Pole závitu Pole cívky (solenoidu) Praktické ukázky
Pole osamoceného vodiče
Pole závitu
Pole cívky
Modelování a vizualizace elektromagnetických polí v MATLABu Tomáš Mikolanda Ústav mechatroniky a technické informatiky Oddělení elektrotechniky a elektroniky Děkuji za pozornost