% Idealis Transzformator-t tartalmazo halozat
% lasd ITs2.pdf 

% halozati parameterek
R=0.8; n=2.5; I0=15;

% terhelo ellenallasok meresi sorozata
Rt = 0:0.01:10;
% teljesitmenyek sorozata
Ptv = zeros(size(Rt));

% meresek elvegzese
for idx=1:length(Ptv)
	[pt, ut] = ITs2(Rt(idx), R, n, I0);
	Ptv(idx) = pt;
	utv(idx) = ut;
end

% abrazolas
figure;
plot(Rt,Ptv, 'r-','LineWidth',2);
xlabel('Rt','FontSize',12); 
ylabel('Pt','FontSize',12);
title('Terhelo ellenallas teljesitmenye','FontSize',12);
% megkeressuk es megjeloljuk a maximalis teljesitmenyt 
% kikommentelheto a kovetkezo resz, ha nem akarjuk igy abrazolni
hold on; 
maxP = max(Ptv); 
idx = find(Ptv==maxP);
maxRt = Rt(idx);
stem(maxRt, maxP, 'g--o','MarkerFaceColor','r');
line([min(Rt) max(Rt)], [maxP maxP],'k--');



%% Megoldas helyettesito generatorok alapjan
% szakadasi feszultseg
A = [1 0 0 0 0 0 0 0;-3*R 5*R -2*R 0 -1 0 0 0;...
	0 0 1 0 0 0 0 0;0 0 -R 3*R 1 -1 0 0;...
	0 0 0 0 1 -n 0 0;0 0 0 0 0 0 n 1;0 1 0 -1 0 0 1 0;...
	-1 0 0 1 0 0 0 1];
B = [I0;0;0;0;0;0;0;0];
x = A \ B;
UT = R*(x(4)-x(3))+2*R*(x(2)-x(3))

% rovidzarasi aram
A = [1 0 0 0 0 0 0 0;-3*R 5*R -2*R 0 -1 0 0 0;...
	0 -2*R 3*R -R 0 0 0 0;0 0 -R 3*R 1 -1 0 0;...
	0 0 0 0 1 -n 0 0;0 0 0 0 0 0 n 1;0 1 0 -1 0 0 1 0;...
	-1 0 0 1 0 0 0 1];
B = [I0;0;0;0;0;0;0;0];
x = A \ B;
j3 = x(3);
IN = j3

% bemeneti (belso) ellenallas 
RB = UT/IN
% maximalisan kiveheto teljesitmeny a terhelesen
Pmax = UT^2/(4*RB)


%% Keressuk meg a transzformator attelenek es a terhelo ellenallasnak a fugvenyeben a teljesitmenyt
% Megoldas menete hasonlo, az attetelt es a terhelo ellenallast valtoztatva
% "merunk" a halozaton.
R = 0.8;
I0= 15;

nv = 0:0.1:3;
Rtv = 0:0.01:10; 

Ptv = zeros(length(nv),length(Rtv));
utv = zeros(size(Ptv));

for id1= 1:length(nv)
	for id2 = 1:length(Rtv)
		[pt,ut] = ITs2(Rtv(id2), R, nv(id1), I0);
		Ptv(id1,id2) = pt;
		utv(id1,id2) = ut;
	end
end

%% Feluletkent torteno abrazolas 
% meshgrid az x,y tengelyek skalazasa miatt kell, viszont meg kell
% "forditani" a 
% jobban latszik a mesh-vel mint a surf-val
figure; 
[xx,yy] = meshgrid(nv, Rtv);
% surf(xx,yy,transpose(Ptv))
mesh(xx,yy,transpose(Ptv),'FaceLighting','gouraud')

xlabel('n'); ylabel('Rt')

%% Kontur abrazolas jobban mutatja a dolgokat
figure;
contourf(xx,yy,transpose(Ptv));
xlabel('n'); ylabel('Rt')
