可以算多相

Signed-off-by: dmy@lab <dmy@lab.com>
This commit is contained in:
dmy@lab 2015-09-24 14:38:43 +08:00
parent eea457bae4
commit 152ee0a213
1 changed files with 31 additions and 22 deletions

View File

@ -11,10 +11,14 @@ ConductorX=[-14500,14500];%
ConductorY=[16500,16500];%线 ConductorY=[16500,16500];%线
CSM_N=80;%线 CSM_N=80;%线
subconductorR=30;%线 subconductorR=30;%线
phaseN=2;%
%% %%
% %
Volt=[500;500;500;500;-500;-500;-500;-500]; Volt_=[500;-500;];
Volt=[500*ones(CSM_N*semi_lineCount,1);-500*ones(CSM_N*semi_lineCount,1)]; Volt=[];
for vLoop=1:length(Volt_)
Volt=[Volt;Volt_(vLoop)*ones(CSM_N*semi_lineCount,1);];
end
%线线线 %线线线
% %
arc=2*pi/semi_lineCount; arc=2*pi/semi_lineCount;
@ -28,24 +32,23 @@ step=1/10;
maxLoop=round((subconductorR-r1)/step); maxLoop=round((subconductorR-r1)/step);
for Loop=1:maxLoop; for Loop=1:maxLoop;
simulationChargePos=ones(CSM_N,1); simulationChargePos=ones(CSM_N,1);
simulationChargeAPos=[]; simulationChargeABCPos=[];
simulationChargeBPos=[]; for I=1:CSM_N
for sC=1:semi_lineCount simulationChargePos(I)=exp(1j*((I-1)*CSM_arc+CSM_arc/2))*r1;%
for I=1:CSM_N end
% simulationChargePos(I)=exp(1j*((I-1)*CSM_arc+CSM_arc/2))*(R+r1);% for phaseLoop=1:phaseN
simulationChargePos(I)=exp(1j*((I-1)*CSM_arc+CSM_arc/2))*r1;% for sC=1:semi_lineCount
simulationChargeABCPos=[simulationChargeABCPos;simulationChargePos+ConductorX(phaseLoop)+1j*ConductorY(phaseLoop)+exp(1j*((sC-1)*arc+arc/2))*R];%线
end end
simulationChargeAPos=[simulationChargeAPos;simulationChargePos+ConductorX(1)+1j*ConductorY(1)+exp(1j*((sC-1)*arc+arc/2))*R];%线
simulationChargeBPos=[simulationChargeBPos;simulationChargePos+ConductorX(2)+1j*ConductorY(2)+exp(1j*((sC-1)*arc+arc/2))*R];%线
end end
% simulationChargeAPos=simulationChargePos+ConductorX(1)+1j*ConductorY(1); % simulationChargeAPos=simulationChargePos+ConductorX(1)+1j*ConductorY(1);
% simulationChargeBPos=simulationChargePos+ConductorX(2)+1j*ConductorY(2); % simulationChargeBPos=simulationChargePos+ConductorX(2)+1j*ConductorY(2);
simulationChargePos=[simulationChargeAPos;simulationChargeBPos]; % simulationChargePos=simulationChargeABCPos;
% %
H=diag(imag(simulationChargePos)); H=diag(imag(simulationChargeABCPos));
r=subconductorR*eye(length(imag(simulationChargePos)));%线 r=subconductorR*eye(length(imag(simulationChargeABCPos)));%线
%线线 %线线
matSimulationChargePos=repmat(simulationChargePos,1,length(simulationChargePos)); matSimulationChargePos=repmat(simulationChargeABCPos,1,length(simulationChargeABCPos));
conductor2conductorDistance=matSimulationChargePos-conj(matSimulationChargePos'); conductor2conductorDistance=matSimulationChargePos-conj(matSimulationChargePos');
conductor2conductorDistance=abs(conductor2conductorDistance-diag(diag(conductor2conductorDistance))); conductor2conductorDistance=abs(conductor2conductorDistance-diag(diag(conductor2conductorDistance)));
matMirrorChargePos=conj(matSimulationChargePos);% matMirrorChargePos=conj(matSimulationChargePos);%
@ -69,18 +72,23 @@ for Loop=1:maxLoop;
vrfRelPos=exp(1j*vrfRelA)*subconductorR; vrfRelPos=exp(1j*vrfRelA)*subconductorR;
%使线线 %使线线
vrfPos=[]; vrfPos=[];
for sC=1:semi_lineCount for phaseLoop=1:phaseN
vrfPos=[vrfPos;exp(1j*((sC-1)*arc+arc/2))*R+ConductorX(1)+1j*ConductorY(1)+vrfRelPos]; for sC=1:semi_lineCount
vrfPos=[vrfPos;exp(1j*((sC-1)*arc+arc/2))*R+ConductorX(phaseLoop)+1j*ConductorY(phaseLoop)+vrfRelPos];
end
end end
% vrfPos=ConductorX(1)+1j*ConductorY(1)+vrfRelPos;
% %
matVrfPos=repmat(vrfPos,1,length(simulationChargePos)); matVrfPos=repmat(vrfPos,1,length(simulationChargeABCPos));
vrf2ConductorDistance=abs(matVrfPos-repmat(conj(simulationChargePos'),length(vrfPos),1)); vrf2ConductorDistance=abs(matVrfPos-repmat(conj(simulationChargeABCPos'),length(vrfPos),1));
vrf2MirrorDistance=abs(matVrfPos-repmat(conj(conj(simulationChargePos')),length(vrfPos),1)); vrf2MirrorDistance=abs(matVrfPos-repmat(conj(conj(simulationChargeABCPos')),length(vrfPos),1));
Pij=1/2/pi/eslong*log(vrf2MirrorDistance./vrf2ConductorDistance); Pij=1/2/pi/eslong*log(vrf2MirrorDistance./vrf2ConductorDistance);
% %
V=Pij*QRI; V=Pij*QRI;
error=sum(abs(V-500)./500)/length(V); Vvalidation=[];
for phaseLoop=1:phaseN
Vvalidation=[Vvalidation;Volt_(phaseLoop)*ones(semi_lineCount*200,1);];
end
error=sum(abs((V-Vvalidation)./Vvalidation))/length(Vvalidation);
r1=r1+step; r1=r1+step;
end end
display('Finished.'); display('Finished.');
@ -88,7 +96,8 @@ if Loop<maxLoop
display('Converged.'); display('Converged.');
end end
display(Loop); display(Loop);
scatter(real(simulationChargeAPos),imag(simulationChargeAPos),[],'r'); scatter(real(simulationChargeABCPos(1:length(simulationChargeABCPos)/1)),imag(simulationChargeABCPos(1:length(simulationChargeABCPos)/1)),[],'r');
axis equal
hold on; hold on;
scatter(real(vrfPos),imag(vrfPos),[],'k'); scatter(real(vrfPos),imag(vrfPos),[],'k');
% scatter(real([simulationChargeAPos(1:10);]),imag([simulationChargeAPos(1:10);]),10,'red'); % scatter(real([simulationChargeAPos(1:10);]),imag([simulationChargeAPos(1:10);]),10,'red');