function [P, h] = report(x, d, u, sc)
global Tk
Tgco_air_in = u(1)-Tk;
Tvap_air = u(2)-Tk;
i_com = length(sc.com.x);
i_gco = length(sc.gco.x);
i_val = length(sc.val.x);
i_vap = length(sc.vap.x);
i_ihx = length(sc.ihx.x);
xcom = x(1:i_com).*sc.com.x;
xgco = x(i_com+1:i_com+i_gco).*sc.gco.x;
xval = x(i_com+i_gco+1:i_com+i_gco+i_val).*sc.val.x;
xvap = x(i_com+i_gco+i_val+1:i_com+i_gco+i_val+i_vap).*sc.vap.x;
xihx = x(i_com+i_gco+i_val+i_vap+1:end).*sc.ihx.x;

% Compressor
Ws = xcom(1)*xval(2);


% Gas cooler
Ngco = xgco(1:d.ngco);
Tgco = xgco(d.ngco+1:2*d.ngco)-Tk;
Qgco = sum(xgco(2*d.ngco+1:3*d.ngco));
Tair = xgco(3*d.ngco+1:4*d.ngco)-Tk;
nair = xgco(end-2);
Agco = xgco(end);
Ph = xgco(end-1);


% Valve
z = xval(1);
n = xval(2);

% Evaporator
Tvap = xvap(1)-Tk;
Nvap_l = xvap(2);
Nvap_v = xvap(3);
Vvap_l = xvap(4);
Qvap = xvap(5);
Avap = xvap(end-1);
Pl = xvap(end);

% Internal heat exchanger
Tihx1 = xihx(1:d.nihx)-Tk;
Tihx2 = xihx(3*d.nihx+1:4*d.nihx)-Tk;
Aihx = xihx(end);

disp(sprintf('Pgco               [Pa]     %0.4f', Ph))
disp(sprintf('Vvap_l              [C]     %0.4f', Vvap_l))
disp(sprintf('z                   [-]     %0.4f', z))
disp(sprintf('DTihx1              [C]     %0.4f', Tgco(end)-Tihx1(end)))
disp(sprintf('DTihx2              [C]     %0.4f', Tvap-Tihx2(1)))

for i = 1:d.ngco
  disp(sprintf('Tgco                [C]     %0.4f', Tgco(i)))
end
for i = 1:d.ngco
  disp(sprintf('Tgco_air            [C]     %0.4f', Tair(i)))
end

for i=1:d.nihx
  disp(sprintf('Tihx1               [C]     %0.4f', Tihx1(i)))
end
for i=1:d.nihx
  disp(sprintf('Tihx2               [C]     %0.4f', Tihx2(i)))
end



disp(sprintf('Ws                 [Pa]     %0.0f', Ws))
disp(sprintf('n               [mol/s]     %0.2f', n))
disp(sprintf('Pvap               [Pa]     %0.0f', Pl))
disp(sprintf('Qgco                [W]     %0.0f', Qgco))
disp(sprintf('Agco               [m2]     %0.2f', Agco))
disp(sprintf('Avap               [m2]     %0.2f', Avap))
disp(sprintf('Aihx               [m2]     %0.2f', Aihx))
disp(sprintf('Qvap                [W]     %0.0f', Qvap))
disp(sprintf('Nvap_l            [mol]     %0.2f', Nvap_l))
disp(sprintf('DTmin_vap           [C]     %0.2f', Tvap_air-Tvap(end)))
disp(sprintf('Nvap_v              [C]     %0.2f', Nvap_v))
disp(sprintf('Tvap                [C]     %0.2f', Tvap))
disp(sprintf('nair            [mol/s]     %0.2f', nair));
for i = 1:d.ngco
  disp(sprintf('Ngco              [mol]     %0.2f', Ngco(i)))
end
for i =1:d.ngco
  disp(sprintf('DTmin_gco           [C]     %0.2f', Tgco(i)-Tair(i)))
end

for i=1:d.nihx
  disp(sprintf('DTmin_ihx           [C]     %0.2f', Tihx1(i)-Tihx2(i)))
end
P = [Ph; Ph*ones(d.ngco, 1); Ph*ones(d.nihx, 1); Pl; Pl; Pl*ones(d.nihx, 1); Ph];
h = xcom(2);
for i=1:d.ngco
  h = [h; h_given_TVN([xgco(d.ngco+i); d.Vgco/d.ngco; xgco(i)])];
end
for i=1:d.nihx
  h = [h; h_given_TVN([xihx(i); d.Vihx1/d.nihx; xihx(d.nihx+i)])];
end
h = [h; xval(end); h_given_TVN([xvap(1); d.Vvap-Vvap_l; Nvap_v])];
for i = d.nihx:-1:1
  h = [h; h_given_TVN([xihx(3*d.nihx+i); d.Vihx2/d.nihx; xihx(4*d.nihx+i)])];
end
h = [h; xcom(2)];
