doBodu[dataa_,popisky_,barva_]:=Module[{data=dataa*(E^(I*natoceni)),pocatek=dataa[[1]]*(E^(I*natoceni))},
Graphics[{barva,Thick,
Table[{Text[ToString["  "<>popisky[[i-1]]<>"\n"<>"\n"],{Re[pocatek+(2/3)*Re[data[[i]]]],Im[pocatek+(2/3)*Im[data[[i]]]*I]}],Arrow[{{Re[pocatek],Im[pocatek]},{Re[pocatek+Re[data[[i]]]],Im[pocatek+Im[data[[i]]]*I]}}]},{i,2,Length[data]}]},Frame->True,GridLines->Automatic,PlotRange->rozmerOkna]
]
Ymatice[uzel1_,uzel2_,Z_,Y_,B_,T_]:=Module[{YT,Ykm,Ymk,Yk0,Ym0,u1,u2,m},
YT=(1/Z);
Ykm=(YT/T);
Ymk=(YT/(Conjugate[T]));
(*Pozor, ten převod trafa je zvolenej na opačné straně, než mam v diplomce, ale jinak je to ekvivalentní*)
Yk0=(1-(1/T))*YT+I*(B/2);
Ym0=((1-T)/(T*Conjugate[T]))*YT+I*(B/2);
(*Nejprve je nutno vložit na diagnálu uzlové admitance*)
m=DiagonalMatrix[Y];
For[i=1,i<Length[uzel1]+1,i++,
u1=uzel1[[i]];
u2=uzel2[[i]];
(*Dále pak admitance všech okolních větví*)
m[[u1,u1]]=m[[u1,u1]]+Ykm[[i]]+Yk0[[i]];
m[[u2,u2]]=m[[u2,u2]]+Ymk[[i]]+Ym0[[i]];
(*nediagonalni prvky*)
m[[u1,u2]]=m[[u1,u2]]-Ykm[[i]];
m[[u2,u1]]=m[[u2,u1]]-Ymk[[i]];
];
m
];
(*  K - vektor prvnich uzlu brany
  L - vektor druhych uzlu brany*)
ZF[Zmat_,K_,L_]:=Module[{pocetBran,Zf},
pocetBran=Length@K;
Zf=ConstantArray[0,{pocetBran,pocetBran}];(*matice poruch*)
For[row=1,row<pocetBran+1,row++,
For[col=1,col<pocetBran+1,col++,
Zf[[row,col]]=Zmat[[K[[row]],K[[col]]]];
If[L[[row]]*L[[col]]>0,
Zf[[row,col]]=Zf[[row,col]]+Zmat[[L[[row]],L[[col]]]];
];
If[L[[row]]>0,
Zf[[row,col]]=Zf[[row,col]]-Zmat[[L[[row]],K[[col]]]];
];
If[L[[col]]>0,
Zf[[row,col]]=Zf[[row,col]]-Zmat[[K[[row]],L[[col]]]];
];
];
];
Zf
]
(*
funkce pro alokaci proudů z bran poruch do jednotlivých uzlů
Ixd - proudy v branách poruch
KK - první zel brány
LL - druhý uzel brány
Nf - počet poruch
NU - počet uzlů
*)
Alokace[Ixd_,KK_,LL_,Nf_,NU_]:=Module[{Ixdc},
Ixdc=ConstantArray[0,NU];
Table[Ixdc[[KK[[ii]]]]=Ixdc[[KK[[ii]]]]+Ixd[[ii]],{ii,1,Nf}];
Table[If[LL[[ii]]!=0,Ixdc[[LL[[ii]]]]=Ixdc[[LL[[ii]]]]-Ixd[[ii]]],{ii,1,Nf}];
Ixdc
]
(*převod napětí ze složek 120->ABC*)
napetiABC[uzel_]:=Module[{UA,UB,UC},
{UA,UB,UC}=(Amatice.{U1c[[uzel]],U2c[[uzel]],U0c[[uzel]]})(*Uv[[uzel]]*)
]

kV=1000;
km=1;
MVA=MW=MVAr=1000000;
µS=(10^(-6));
G1={Eg->10.5kV,Sg->63MVA,xd->0.15,x2->0.2,x0->0.1};
T1={St->63MVA,U1->10.5kV,U2->121kV,p->(U1/U2),uk->0.1};
T2={St->16MVA,U1->36kV,U2->110kV,p->(U1/U2),uk->0.11};
ES1={Us->115kV,Un->110kV,Sks->1000MVA};
V1={lv->50km,R1->0.125,X1->0.4070,B->2.817µS,R0->2*R1,X0->3.5*X1 };
V2={lv->30km,R1->0.156,X1->0.4091,B->2.796µS,R0->2*R1,X0->3.5*X1 };
V3={lv->30km,R1->0.156,X1->0.4091,B->2.796µS,R0->2*R1,X0->3.5*X1 };

(*vztazna uzlova napeti*)
Uv={(*U1*)kV,(*U2*)kV,(*U3*)kV,(*U4*)kV,(*U5*)kV};
(*vztazne impedance*)
Sbase=1;
Zbase=

(*sousledne a zpetne uzlove admitance*)
Yu1={(*ES1*)/.ES1//N,0,0,(*G1*)/.G1,0}
Yu2={(*ES1*)/.ES1//N,0,0,(*G1*)/.G1,0}
Yu0={(*ES1*)/.ES1//N,(*?*),(*?*),(*G1*),0}

(*sousledné, zpětné a netočivé podélné impedance*)
uzel1={1,2,2,3,2};
uzel2={2,3,3,4,5};
Zkm1=Zkm2={(*Z12-V1*)/.V1,(*Z23-V2*)/.V2,(*Z23-V3*)/.V3,(*Z34-T1*)/.T1,(*Z25-T2*)/.T2}
Zkm0={(*Z12-V1*)//.V1,(*Z23-V2*)//.V2,(*Z23-V3*)//.V3,(*Z34-T1*),(*Z25-T2*)}
B1=B2=B0={(*Z12-V1*)/.V1,(*Z23-V2*)/.V2,(*Z23-V3*)/.V3,0,0}
T={1,1,1,(*Z34-T1*)/.T1,(*Z25-T2*)/.T2}

(*Amitanční matice sousledne slozky*)
Y1=Ymatice[uzel1,
uzel2,
Zkm1,
Yu1,
B1,
T];
%//MatrixForm
(*impedanční matice*)
Z1=Inverse[Y1];
%//MatrixForm

(*Amitanční matice zpetne slozky*)
Y2=Ymatice[uzel1,
uzel2,
Zkm2,
Yu2,
B2,
T];
%//MatrixForm
(*impedanční matice*)
Z2=Inverse[Y2]//FullSimplify;
%//MatrixForm

(*Amitanční matice nulove slozky*)
Y0=Ymatice[uzel1,
uzel2,
Zkm0,
Yu0,
B0,
T];
%//MatrixForm
(*impedanční matice*)
Z0=Inverse[Y0]//FullSimplify;
%//MatrixForm

(*pocet uzu soustavy*)
NU=;

(*predporuchova napeti a proudy*)
I1ppc={}
I2ppc={}
I0ppc={}
U1ppc=
U2ppc=
U0ppc=

(*prvni uzel poruchy*)
KK={};
(*druhy uzel poruchy, 0-zem*)
LL={};
(*poruchova faze 1-A, 2-B, 3-C*)
faze={};
(*poruchove impedance*)
Zvpi=

(*poruchová matice*)
Z1F=;
%//MatrixForm
Z2F=;
%//MatrixForm
Z0F=;
%//MatrixForm

(*komplexni promenna pro fazove otoceni*)
a=(E^(I*((2π)/3)));
Amatice={{1,1,1},
{a\[Conjugate],a,1},
{a,a\[Conjugate],1}};
(*diagonalni matice otoceni pro jednotlive faze*)
ϵ1={};
ϵ2={};
ϵ0={};

ϵ1d=;
%//MatrixForm
ϵ2d=;
%//MatrixForm
ϵ0d=;
%//MatrixForm

(*pocet poruch*)
Nf=;

(*bazova napeti na brabach poruch*) 
(*pokud je druhý uzel brány označen jako 0 je to bráno jako zem
  Na pozici 0 v listu LL je vsak "List" a tak je potřeba ho nahradit za 0 V*)
U1pp=
U2pp=
U0pp=
I1pp=I2pp=I0pp=

(*rezultující poruchová impedanční matice*)
Zrez=;
%//MatrixForm

(*rezultující excitační veličina*)
Urez=

(*dodatkové proudy v branách poruch*)
I1d=
I0d=
I2d=

(*cektove dodatkove proudy ve vsech uzlech*)
I1dc=
I2dc=
I0dc=
(*cekove poruchove proudy ve vsech uzech*)
I1c=
I2c=
I0c=

(*celkova dodatkova napeti ve vsech uzech*)
U1dc=
U2dc=
U0dc=
U1c=
U2c=
U0c=

(*retezeni poruch*)

(*napětí ABC*)

(*fazorak*)
uzel=2;
UABC=napetiABC[uzel]*Uv[[uzel]]
natoceni=0;
roz=120kV;
rozmerOkna={{-roz,roz},{-roz,roz}};
doBodu[Flatten[Prepend[{UABC},0]],{"UA","UB","UC"},Red]