Matlab Pdetool Lezione 3 Magnetostatica Ing. Flavio Calvano • Modello magnetostatica; • Utilizzo del pdetool in modalità grafica; • Esercitazione di laboratorio Calcolo auto-induttanza; Calcolo mutua-induttanza; Confronto dati numerici-sperimentali. Magnetostatica Equazioni integrali magnetostatica Formulazione differenziale B 0 B A B 0JS A 0JS A ' A B A ' A A 0 gauge di coulomb Il potenziale vettore A è univocamente determinato dalla gauge di coulomb Caso 2d assial-simmetrico B(, z) 0 e J B B z e z 0e J Caso 2d assial-simmetrico J A 2 A ( A) J J e A A e con A 0 L’incognita nel caso assial-simmetrico diventa uno scalare 1 1 ( A ) ( A ) 0 J z z Pdetool Creazione geometria xmin=0; xmax=2.2*10^-2; dh=0.04; dr=0.0025 pderect([xmax-dr xmax -dh dh],'R1'); pderect([xmin 10*xmax 10*(-dh) 10*dh],'R2'); Condizioni al contorno pdesetbd(8,... 'dir',... 1,... '1',... '0') pdesetbd(5,... 'dir',... 1,... '1',... '0') pdesetbd(4,... 'dir',... 1,... '1',... '0') pdesetbd(3,... 'dir',... 1,... '1',... '0') Mesh set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','R2+R1'); gd=get(findobj(get(pde_fig,'Children'),'flat‘,'Tag','PDEMeshMenu'),'UserData'); dl=decsg(gd); [p,e,t]=initmesh(dl,'Hmax',5e-1,'init','off'); [p,e,t]=refinemesh(dl,p,e,t,'regular'); h=findobj(get(pde_fig,'Children'),'flat','Tag','PDEBoundMenu'); bl=get(findobj(get(h,'Children'),'flat','Tag','PDEBoundMode'),'UserData'); 0.25 R2=box aria ->t(4,:)=1 R1=sonda ->t(4,:)=2 0.2 0.15 0.1 Dall’indice della quarta riga della matrice t è possibile riconoscere i domini e imporre il termine noto J 0.05 0 -0.05 -0.1 -0.15 -0.2 -0.25 0 0.05 0.1 0.15 0.2 0.25 Definizione del forzamento Nspire=500; dr=0.002; dh=0.08; I=1; J0=Nspire*I/(dh*dr); %nell’area occupata dalla bobina ( A ) ( A ) 0 J z z Calcolo Soluzione for n=1:size(t,2) ni=t(1,n); % indici dei nodi del triangolo n-mo nj=t(2,n); nk=t(3,n); xi=p(1,ni); % coordinate dei vertici del tr. n-mo xj=p(1,nj); xk=p(1,nk); -div∙c(grad(A))+aA=f Con: c=rc f= rc.*(4e-7*pi).*J; rc(n)=(xi+xj+xk)/3; % baricentro del tr. n-mo if t(4,n)==1 J(n)=0; else J(n)=J0; end end A = assempde(bl,p,e,t,c,'0',f); J definita solo in R2 (t(4,:)=2) corrispondente all’area della bobina, nulla all’esterno Calcolo del Campo magnetico Br=-d(Aphi)/dz Bz=(d(Aphi*r)/dr)/r r=p(1,:); z=p(2,:); u=A.*r'; [g,dAdz]=pdegrad(p,t,A); Br=-dAdz; [drAdr,g2]=pdegrad(p,t,u); Bz=(1./rc).*drAdr; Plot linee di Campo figure pdegplot(dl) hold on xm=min(p(1,t)); xma=max(p(1,t)); ym=min(p(2,t)); yma=max(p(2,t)); na=100; x=linspace(xm,xma,na); y=linspace(ym,yma,na); flowdata1=pdeprtni(p,t,Br); flowdata2=pdeprtni(p,t,Bz); uu=tri2grid(p,t,flowdata1,x,y); vv=tri2grid(p,t,flowdata2,x,y); [msg,x,y]=xyzchk(x,y,uu,vv); scale=2; oks=find(~isnan(uu)); quiver(x(oks),y(oks),-uu(oks),-vv(oks),scale,'r-'); Campo Magnetico 0.1 0.05 0 -0.05 -0.1 0 0.005 0.01 0.015 0.02 0.025 Plot linee di flusso 0.08 0.06 0.04 S 0.02 0 -0.02 -0.04 -0.06 -0.08 -0.05 S S Φ B ndV A ndV Adl 2rA 0 0.05 0.1 pdecont(p,t,A.*p(1,:)*2*pi,10) 0.15 Esempio 2 xmax=1*10^-2; dh=0.001; dr=0.001; ymax=0.02; h=0.003; pderect([xmax-dr xmax ymax-dh ymax],'R1'); pderect([xmax-dr xmax ymax-2*dh-h ymax-1*dh-h],'R2'); pderect([xmax-dr xmax ymax-3*dh-2*h ymax-2*dh-2*h],'R3'); pderect([xmax-dr xmax ymax-4*dh-3*h ymax-3*dh-3*h],'R4'); pderect([xmax-dr xmax ymax-5*dh-4*h ymax-4*dh-4*h],'R5'); pderect([xmax-dr xmax ymax-6*dh-5*h ymax-5*dh-5*h],'R6'); pderect([xmax-dr xmax ymax-7*dh-6*h ymax-6*dh-6*h],'R7'); pderect([xmax-dr xmax ymax-8*dh-7*h ymax-7*dh-7*h],'R8'); pderect([xmax-dr xmax ymax-9*dh-8*h ymax-8*dh-8*h],'R9'); pderect([xmax-dr xmax ymax-10*dh-9*h ymax-9*dh-9*h],'R10'); pderect([0 10*xmax -5*xmax 5*xmax],'R11'); Condizioni al contorno pdetool('changemode',0) pdesetbd(5,... 'dir',... 1,... '1',... '0') pdesetbd(6,... 'dir',... 1,... '1',... '0') pdesetbd(3,... 'dir',... 1,... '1',... '0') pdesetbd(2,... 'dir',... 1,... '1',... '0') Assemblaggio termine noto for n=1:size(t,2) ni=t(1,n); % indici dei nodi del triangolo n-mo nj=t(2,n); nk=t(3,n); ni=t(1,n); % indici dei nodi del triangolo n-mo nj=t(2,n); nk=t(3,n); xi=p(1,ni); % coordinate dei vertici del tr. n-mo xj=p(1,nj); xk=p(1,nk); A = assempde(bl,p,e,t,c,'0',f); Con: c=rc f= rc.*(4*pi*1e-7).*J; rc(n)=(xi+xj+xk)/3; % baricentro del tr. n-mo I1=1; if t(4,n)==1 J(n)=0; else J(n)=I1/(dh*dr); end end J uguale a zero in R11 (t(4,:)=1) corrispondente al box aria , mentre è diversa da zero negli avvolgimenti che hanno tutte la stessa corrente Campo magnetico e flusso Campo Magnetico 0.021 0.04 0.03 0.02 0.02 0.019 0.01 0.018 0 -0.01 0.017 -0.02 0.016 -0.03 0.015 -0.04 5 6 7 8 9 10 11 12 13 0 -3 x 10 Campo e Flusso tra le spire 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 Esercitazione laboratorio Definizione Geometria xmin=0; xmax=0.018; dh=0.044; dr=0.002; xmax2=0.025; pderect([xmax-dr/2 xmax+dr/2 -dh/2 dh/2],'R1'); pderect([xmax2-dr/2 xmax2+dr/2 -dh/2 dh/2],'R2'); t(4,:)=1 t(4,:)=2 t(4,:)=3 pderect([20*xmin 20*xmax 10*(-xmax) 10*xmax],'R3'); set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String',‘R3+R1+R2'); Definizione forzamento Nspire=500; I1=0.0021; %dati laboratorio I2=0.0013; J1=zeros(1,size(t,2)); J2=zeros(1,size(t,2)); for n=1:size(t,2) ni=t(1,n); % indici dei nodi del triangolo n-mo nj=t(2,n); nk=t(3,n); xi=p(1,ni); % coordinate dei vertici del tr. n-mo xj=p(1,nj); xk=p(1,nk); rc(n)=(xi+xj+xk)/3; % baricentro del tr. n-mo if t(4,n)==2 J1(n)=Nspire*I1/(dh*dr); elseif t(4,n)==3 J2(n)= Nspire*I2/(dh*dr); end %endif end %endfor A1 = assempde(bl,p,e,t,rc.*(1/(4*pi*1e-7)),'0',rc.*J1,'0'); A2= assempde(bl,p,e,t,rc.*(1/(4*pi*1e-7)),'0',rc.*J2,'0'); Calcolo flusso e induttanza Wm 1 2 J AdV Vsol V V 1 1 Wm A JdV (A1 A 2 ) (J1 J 2 )dV 2 2 1 (A1J1 A 2 J1 A1J 2 A 2 J 2 )dV 2 V 1 2 V1 A1J1dV1 1 2 A 2 J1dV1 V1 1 1 2 Wm L1i1 L 2 i 22 i1Mi 2 2 2 1 2 V2 A1J 2 dV2 1 2 A J dV. 2 2 V2 Calcolo AUTO-INDUTTANZA 1 2 L1 2 A1J1dV1 2 A1J11d1dz1 i1 V i1 S 1 1 A1 = assempde(bl,p,e,t,rc.*(1/(4*pi*1e-7)),'0',rc.*J1,'0'); AT1=pdeintrp(p,t,A1); n1=find(t(4,:)==2); for n=n1 ni=t(1,n); % indici dei nodi del triangolo n-mo nj=t(2,n); nk=t(3,n); xi=p(1,ni); % coordinate dei vertici del tr. n-mo xj=p(1,nj); xk=p(1,nk); rc(n)=(xi+xj+xk)/3; % baricentro del tr. n-mo D=[1 z1i z2i; 1 z1j z2j; 1 z1k z2k]; area=det(D)/2; aa=(J1(n)*AT1(n)); ce(n)=(rc)*(aa)*area; end Lenergia=(1/I1^2)*sum(ce)*2*pi Calcolo MUTUA-INDUTTANZA M 21 1 i1i 2 A J dV 1 2 2 V2 2 i1i 2 A J d dz 1 2 2 S2 AT1=pdeintrp(p,t,A1); %A1 calcolato imponendo J1 in assempde n2=find(t(4,:)==3);% trova i triangoli del dominio della seconda bobina for n=n2 ni=t(1,n); % indici dei nodi del triangolo n-mo nj=t(2,n); nk=t(3,n); xi=p(1,ni); % coordinate dei vertici del tr. n-mo xj=p(1,nj); xk=p(1,nk); rc(n)=(xi+xj+xk)/3; % baricentro del tr. n-mo D=[1 z1i z2i; 1 z1j z2j; 1 z1k z2k]; area=det(D)/2; aa=(J2(n)*AT1(n)); ce(n)=(rc)*(aa)*area; end Menergia=(1/(I1*I2))*sum(ce)*2*pi 2 2 Confronto dati numerici-sperimentali L11energia = 10 .6 mH L11misurata=10.6 mH L22energia= 16.4 mH L22misurata= 16 .0 mH M12energia = 14.6 mH M12misurata=14.6 mH M21energia = 14.6 mH M21misurata=14.8 mH