% Aufgabe 2.3
% GSM mit Propeller
clc;
clear;
close all;
%% 2.3
% iG = 1/RG*uG-kG/RG*wG
% xred = [phiG, wG, wP]

syms pGP wG wP;
syms kG RG dvG dcG dGP cGP JG dpP dvP dqP dcP JP;
syms Mext uG;

% Gleichungssystem
eq1 = sym(wG - wP);
eq2 = sym((kG*(1/RG*uG-kG/RG*wG) - dvG*wG - dcG - (wG - wP)*dGP - pGP*cGP)/JG);
eq3 = sym(((wG - wP)*dGP + pGP*cGP - dqP*wP^2 - dvP*wP - Mext - dcP)/JP);
xred = [pGP, wG, wP];
ured = [uG, Mext];
dx = [eq1; eq2; eq3];
sol = solve(dx == [0; 0; 0], [pGP, wG, wP]);

Aredl = jacobian(dx, xred)
Bredl = jacobian(dx, ured)
% trivial
credl = [0 0 1]
dredl = [0 0]

% Auswertung (Werte von GSM_2_2)
LG  = 1.4e-3; % H
RG  = .46; % Ohm
kG  = .1; % N m A^-1
JG  = 12.4e-3; % kg m^2
dcG = .152; % N m
dvG = 1.8e-3; % N m s rad^-1
JP  = 32.5e-3; % kg m^2
dcP = .169; % N m
dvP = 2.7e-3; % N m s rad^-1
dqP = 1e-4; % N m s^2 rad^-2
cGP = .6822; % N m rad^-1
dGP = 1e-5; % N m s rad^-1

uG = 5.6;
Mext = 0;

xredR = [
    double(subs(sol.pGP));
    double(subs(sol.wG));
    double(subs(sol.wP))
]

% erste Ruhelage
xredR1 = [xredR(2), xredR(4), xredR(6)]
% zweite Ruhelage
xredR2 = [xredR(1), xredR(3), xredR(5)]

% die Ruhelage des reduzierten Systems ist gleich, da bei der Ruhelage sich
% weder uG oder wG ändern dürfen