File:Animation Diagramm Carnotprozess.ogv

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search

Original file(Ogg Theora video file, length 1 min 2 s, 2,304 × 1,296 pixels, 353 kbps, file size: 2.61 MB)

Captions

Captions

Add a one-line explanation of what this file represents

Summary

[edit]
Description
Deutsch: Animation zum Carnot-Prozess
Date
Source Own work
Author Menner

Licensing

[edit]
I, the copyright holder of this work, hereby publish it under the following license:
Creative Commons CC-Zero This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication.
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.

Source code

[edit]

Required tools:

  • GNU octave with GNU plot
  • png2yuv
  • unix shell
  • ffmpeg2theora

batch_processing

[edit]
#!/bin/sh

start=`date`;

framerate=20
% framerate=2
name="carnot"

rm ./svg -rf
mkdir ./svg

octave ./carnot_p_V.m

rm ./png -rf
mkdir ./png

cd svg
mogrify -format png *svg
mv *png ../png
cd ..

rm ./yuv
mkdir ./yuv

png2yuv -j ./png/$name-%04d.png -f $framerate -I p -b 0 > ./yuv/out.yuv

rm ./$name.ogv

./ffmpeg2theora-0.29.linux32.bin ./yuv/out.yuv -F $framerate -v 9 -o ./$name.ogv;

end=`date`;
echo Start: $start;
echo End: $end;


carnot.m

[edit]
#!/usr/bin/octave -qf
%
% 2014
%

%
% Hintergrund_Plot
%


function Hintergrund_Plot()

global parameters;

FontSize = parameters.FontSize;

Volumen_1 = parameters.Volumen_1;
Volumen_2 = parameters.Volumen_2;
Volumen_3 = parameters.Volumen_3;
Volumen_4 = parameters.Volumen_4;

Druck_1 = parameters.Druck_1;
Druck_2 = parameters.Druck_2;
Druck_3 = parameters.Druck_3;
Druck_4 = parameters.Druck_4;

kappa = parameters.kappa;
Entropie_2_3 = parameters.Entropie_2_3;
Entropie_4_1 = parameters.Entropie_4_1;

Volumen = 0:0.1:parameters.PlotSize; %  2..4 / 4..9 


% 1 -> 2 Isotherm
Volumen_1_2 = Volumen_a_b(Volumen_1, Volumen_2, 1, 2);
Druck_1_2 = Druck_1 * Volumen_1 ./ Volumen_1_2;
Druck_1_2_iso = Druck_1 * Volumen_1 ./ Volumen;

% 2 -> 3 Isentrop
Volumen_2_3 = Volumen_a_b(Volumen_2, Volumen_3, 1, 2);
Druck_2_3 = Druck_2 * (Volumen_2 ./ Volumen_2_3) .^ kappa;
Druck_2_3_iso = Druck_2 * (Volumen_2 ./ Volumen) .^ kappa;


% 3 -> 4 Isotherm
Volumen_3_4 = Volumen_a_b(Volumen_3, Volumen_4, 1, 2);
Druck_3_4 = Druck_3 * Volumen_3 ./ Volumen_3_4;
Druck_3_4_iso = Druck_3 * Volumen_3 ./ Volumen;


% 4 -> 1 Isentrop
Volumen_4_1 = Volumen_a_b(Volumen_4, Volumen_1, 1, 2);
Druck_4_1 = Druck_4 * (Volumen_4 ./ Volumen_4_1) .^ kappa;
Druck_4_1_iso = Druck_4 * (Volumen_4 ./ Volumen) .^ kappa;


ylim([0,15]);
xlim([0,10]);
xlabel("Volumen", "FontSize", FontSize);
ylabel("Druck", "FontSize", FontSize);

axis("tic", "labeloff");
%axis("square"); % Vermeide ausrücken des y-Beschriftung
plot(Volumen, Druck_1_2_iso/1e5,"color", "b");
plot(Volumen, Druck_2_3_iso/1e5, "color", "k");
plot(Volumen, Druck_3_4_iso/1e5, "color", "r");
plot(Volumen, Druck_4_1_iso/1e5, "color", "k");

plot(Volumen_1_2, Druck_1_2/1e5, ";Isotherm kalt;", "linewidth", 2, "color", "b");
plot(Volumen_3_4, Druck_3_4/1e5, ";Isotherm warm;", "linewidth", 2, "color", "r");
plot(Volumen_2_3, Druck_2_3/1e5, ";Isentrop;", "linewidth", 2, "color", "k");
plot(Volumen_4_1, Druck_4_1/1e5, "linewidth", 2, "color", "k");
legend("location", "NorthEast");
copied_legend = findobj(gcf(),"type","axes","Tag","legend"); % thanks to http://stackoverflow.com/questions/3938348/matlab-how-to-obtain-all-the-axes-handles-in-a-figure-handle
set(copied_legend, "FontSize", FontSize);

outerposition = get(copied_legend, 'OuterPosition'); % thanks to http://stackoverflow.com/questions/9589793/matlab-latex-interpreter-font-spacing
delta_h = 0.25*outerposition(4);
outerposition(2) = outerposition(2) - delta_h;
outerposition(4) = outerposition(4) + delta_h;
set(copied_legend, 'OuterPosition', outerposition)

set (gca(), "linewidth", 1.5);

plot(Volumen_1, Druck_1/1e5, "o", "color", "k"); 
text(Volumen_1, Druck_1/1e5 + 0.25, "1", "color", "k", "FontSize", FontSize);
plot(Volumen_2, Druck_2/1e5, "o", "color", "k"); 
text(Volumen_2, Druck_2/1e5 + 0.25, "2", "color", "k", "FontSize", FontSize);
plot(Volumen_3, Druck_3/1e5, "o", "color", "k"); 
text(Volumen_3, Druck_3/1e5 + 0.25, "3", "color", "k", "FontSize", FontSize);
plot(Volumen_4, Druck_4/1e5, "o", "color", "k"); 
text(Volumen_4, Druck_4/1e5 + 0.25, "4", "color", "k", "FontSize", FontSize);

endfunction

%
% Hintergrund_Plot_T_S
%


function Hintergrund_Plot_T_S()

global parameters;

FrameRate = parameters.FrameRate;
FontSize = parameters.FontSize;

% Entropie
% Temperatur

Volumen_1 = parameters.Volumen_1;
Volumen_2 = parameters.Volumen_2;
Volumen_3 = parameters.Volumen_3;
Volumen_4 = parameters.Volumen_4;

kappa = parameters.kappa;
Entropie_2_3 = parameters.Entropie_2_3;
Entropie_4_1 = parameters.Entropie_4_1;
Temperatur_1_2 = parameters.Temperatur_1_2;
Temperatur_3_4 = parameters.Temperatur_3_4;
Volumen_1 = parameters.Volumen_1;
Temperatur_1_2 = parameters.Temperatur_1_2;
Faktor = parameters.Faktor;

% 1->2 Isotherm
Volumen_1_2 = Volumen_a_b(Volumen_1, Volumen_2, 1, 2);
Entropie_1_2 = Berechne_SpezifischeEntropie(Volumen_1_2/Volumen_1, Temperatur_1_2) * Faktor; 

% 3->4 Isotherm
Volumen_3_4 = Volumen_a_b(Volumen_3, Volumen_4, 1, 2);
Entropie_3_4 = Berechne_SpezifischeEntropie(Volumen_3_4/Volumen_1, Temperatur_3_4) * Faktor; 

ylim([0, 1.15 * Temperatur_3_4]);
xlim([0.95 * Entropie_2_3, 1.025 * Entropie_4_1]);
xlabel("Entropie", "FontSize", FontSize);
ylabel("Temperatur", "FontSize", FontSize);
axis("tic", "labeloff");

Temperatur_1_2_A = ones(size(Entropie_1_2)) * Temperatur_1_2;
Temperatur_3_4_A = ones(size(Entropie_3_4)) * Temperatur_3_4;

plot(Entropie_1_2, Temperatur_1_2_A, ";Isotherm kalt;", "linewidth", 2, "color", "b");
plot(Entropie_3_4, Temperatur_3_4_A, ";Isotherm warm;", "linewidth", 2, "color", "r");
plot([Entropie_2_3, Entropie_2_3], [Temperatur_1_2, Temperatur_3_4], ";Isentrop;", "linewidth", 2, "color", "k");
plot([Entropie_4_1, Entropie_4_1], [Temperatur_3_4, Temperatur_1_2], "linewidth", 2, "color", "k");

legend("location", "NorthEast");
copied_legend = findobj(gcf(),"type","axes","Tag","legend"); % thanks to http://stackoverflow.com/questions/3938348/matlab-how-to-obtain-all-the-axes-handles-in-a-figure-handle
set(copied_legend, "FontSize", FontSize);
set (gca(), "linewidth", 1.5);

plot(Entropie_4_1, Temperatur_1_2, "o", "color", "k"); 
text(Entropie_4_1, Temperatur_1_2 * 1.025, "1", "color", "k", "FontSize", FontSize);
plot(Entropie_2_3, Temperatur_1_2, "o", "color", "k"); 
text(Entropie_2_3, Temperatur_1_2 * 1.025, "2", "color", "k", "FontSize", FontSize);
plot(Entropie_2_3, Temperatur_3_4, "o", "color", "k"); 
text(Entropie_2_3, Temperatur_3_4 * 1.025, "3", "color", "k", "FontSize", FontSize);
plot(Entropie_4_1, Temperatur_3_4, "o", "color", "k"); 
text(Entropie_4_1, Temperatur_3_4 * 1.025, "4", "color", "k", "FontSize", FontSize);

endfunction

%
% Volumen_a_b
%

function ret = Volumen_a_b(Volumen_a, Volumen_b, Zaehler, Laenge)
  Steps = 20;
  Vorzeichen = +1;
  delta = (Volumen_b-Volumen_a)*Zaehler/(Laenge-1);
  if(delta == 0)
    if(Volumen_b > Volumen_a)
      delta = +0.01;
    else
      delta = -0.01;
    endif
  endif
  
  ret = Volumen_a:delta/Steps:Volumen_a+delta;

endfunction

%
% SeqPause
%

function retZaehler = SeqPause(Zaehler)

global parameters;

for Zaehler_Pause = Zaehler:(Zaehler-1+parameters.FrameRate*parameters.Pause)

  filename = ["./svg/carnot-", num2str(Zaehler_Pause, "%04i"), ".svg"]
  print (filename, "-dsvg", parameters.Dimensions);

endfor

retZaehler = Zaehler_Pause + 1;

endfunction

%
% Carnot_Process_1_2
%

function retZaehler = Carnot_Process_1_2(Zaehler)

global parameters;

FrameRate = parameters.FrameRate;
FontSize = parameters.FontSize;

Volumen_1 = parameters.Volumen_1;
Volumen_2 = parameters.Volumen_2;
SequenzLaenge = parameters.SequenzLaenge;
Druck_1 = parameters.Druck_1;
Temperatur_1_2 = parameters.Temperatur_1_2;
Entropie_4_1 = parameters.Entropie_4_1;
Entropie_2_3 = parameters.Entropie_2_3;
Faktor = parameters.Faktor;

% Zaunpfahlproblem 0 - 100% in hundert Schritten
for Zaehler_Seq = Zaehler:(Zaehler+FrameRate*SequenzLaenge-1)

  close();

  Volumen_1_2 = Volumen_a_b(Volumen_1, Volumen_2, Zaehler_Seq-Zaehler, FrameRate*SequenzLaenge);
 
  subplot(1,2,2); % p-V-Diagram
  hold("on");
  Druck_1_2 = Druck_1 * Volumen_1 ./ Volumen_1_2;
  area(Volumen_1_2, Druck_1_2/1e5, "FaceColor", "c");
  Hintergrund_Plot();
  plot(Volumen_1_2(end), Druck_1_2(end)/1e5, "x", "color", "k")
  text(Volumen_2 + (Volumen_1-Volumen_2)/5, Druck_1/(1e5*2), "W₁₂=∫p·dV<0", "color", "k", "FontSize", FontSize);
  hold("off");


  subplot(1,2,1); % T-S-Diagramm
  hold("on");
  Entropie_1_2 = Berechne_SpezifischeEntropie(Volumen_1_2/Volumen_1, Temperatur_1_2) * Faktor;
  Temperatur_1_2_A = ones(size(Entropie_1_2)) * Temperatur_1_2;

  area(Entropie_1_2, Temperatur_1_2_A, "FaceColor", "c");
  Hintergrund_Plot_T_S();
  plot(Entropie_1_2(end), Temperatur_1_2_A(end), "x", "color", "k")
  text(Entropie_2_3 + (Entropie_4_1-Entropie_2_3)/5, Temperatur_1_2/2, "Q₁₂=∫T·dS<0", "color", "k", "FontSize", FontSize);
  
  
  filename = ["./svg/carnot-", num2str(Zaehler_Seq, "%04i"), ".svg"]
  print (filename, "-dsvg", parameters.Dimensions);

  hold("off");

endfor

Zaehler = Zaehler_Seq + 1;

Zaehler = SeqPause(Zaehler);

retZaehler = Zaehler;

close();

endfunction

%
% Carnot_Process_2_3
%

function retZaehler = Carnot_Process_2_3(Zaehler)

global parameters;

SequenzLaenge = parameters.SequenzLaenge;
FontSize = parameters.FontSize;
FrameRate = parameters.FrameRate;

Volumen_1 = parameters.Volumen_1;
Volumen_2 = parameters.Volumen_2;
Volumen_3 = parameters.Volumen_3;
Druck_2 = parameters.Druck_2;
kappa = parameters.kappa;
Temperatur_1_2 = parameters.Temperatur_1_2;
SequenzLaenge = parameters.SequenzLaenge;
Faktor = parameters.Faktor;
Entropie_2_3 = parameters.Entropie_2_3;
Entropie_4_1 = parameters.Entropie_4_1;

% Zaunpfahlproblem 0 - 100% in hundert Schritten
for Zaehler_Seq = Zaehler:(Zaehler+FrameRate*SequenzLaenge-1)
 
  close();

  Volumen_2_3 = Volumen_a_b(Volumen_2, Volumen_3, Zaehler_Seq-Zaehler, FrameRate*SequenzLaenge);
  Druck_2_3 = Druck_2 * (Volumen_2 ./ Volumen_2_3) .^ kappa;
  
  subplot(1,2,2); % p-V-Diagram
  hold("on");
  area(Volumen_2_3, Druck_2_3/1e5, "FaceColor", "c");
  Hintergrund_Plot();
  plot(Volumen_2_3(end), Druck_2_3(end)/1e5, "x", "color", "k")
  text(Volumen_3 + (Volumen_2-Volumen_3)/5, Druck_2/(1e5*2), "W₂₃=∫p·dV<0", "color", "k", "FontSize", FontSize);
  hold("off");
  subplot(1,2,1); % p-V-Diagram
  hold("on");
  Temperatur = Temperatur_1_2 * (Volumen_2 ./ Volumen_2_3).^(kappa - 1); % Isentrop
  Entropie_2_3_A = ones(size(Temperatur)) * Entropie_2_3;

  area(Entropie_2_3_A, Temperatur, "FaceColor", "c");
  Hintergrund_Plot_T_S();
  plot(Entropie_2_3_A(end), Temperatur(end), "x", "color", "k") 
  text(Entropie_2_3 - (Entropie_4_1-Entropie_2_3)/5, Temperatur_1_2/2, "Q₂₃=∫T·dS=0", "color", "k", "FontSize", FontSize);
  hold("off");

  filename = ["./svg/carnot-", num2str(Zaehler_Seq, "%04i"), ".svg"]
  print(filename, "-dsvg", parameters.Dimensions);

  hold("off");

endfor

Zaehler = Zaehler_Seq + 1;

Zaehler = SeqPause(Zaehler);

retZaehler = Zaehler;

close();

endfunction

%
% Carnot_Process_3_4
%

function retZaehler = Carnot_Process_3_4(Zaehler)

global parameters;

SequenzLaenge = parameters.SequenzLaenge;
FontSize = parameters.FontSize;

Volumen_1 = parameters.Volumen_1;
Volumen_3 = parameters.Volumen_3;
Volumen_4 = parameters.Volumen_4;
Druck_3 = parameters.Druck_3;
Druck_4 = parameters.Druck_4;
FrameRate = parameters.FrameRate;
Faktor = parameters.Faktor;
Temperatur_1_2 = parameters.Temperatur_1_2;
Temperatur_3_4 = parameters.Temperatur_3_4;
Entropie_2_3 = parameters.Entropie_2_3;
Entropie_4_1 = parameters.Entropie_4_1;

% Zaunpfahlproblem 0 - 100% in hundert Schritten
for Zaehler_Seq = Zaehler:(Zaehler+FrameRate*SequenzLaenge-1)
  
  close();
  
  Volumen_3_4 = Volumen_a_b(Volumen_3, Volumen_4, Zaehler_Seq-Zaehler, FrameRate*SequenzLaenge);
  
  %Druck_4 = InnereEnergie_3_4 ./ Volumen_4;
  %Druck_3_4 = InnereEnergie_3_4 ./ Volumen_3_4;
  %Druck_1_2 = Druck_1 * Volumen_1 ./ Volumen_1_2;
  Druck_3_4 = Druck_3 * Volumen_3 ./ Volumen_3_4;


  subplot(1,2,2); % p-V-Diagram
  hold("on");
  area(Volumen_3_4, Druck_3_4/1e5, "FaceColor", "c");
  Hintergrund_Plot();
  plot(Volumen_3_4(end), Druck_3_4(end)/1e5, "x", "color", "k")
  text(Volumen_3 + (Volumen_4-Volumen_3)/5, Druck_4/(1e5*2), "W₃₄=∫p·dV>0", "color", "k", "FontSize", FontSize);
  hold("off");

  subplot(1,2,1); % T-S-Diagram
  hold("on");
  Entropie_3_4 = Berechne_SpezifischeEntropie(Volumen_3_4/Volumen_1, Temperatur_3_4) * Faktor;
  Temperatur_3_4_A = ones(size(Entropie_3_4)) * Temperatur_3_4;

  area(Entropie_3_4, Temperatur_3_4_A, "FaceColor", "c");
  Hintergrund_Plot_T_S();
  plot(Entropie_3_4(end), Temperatur_3_4_A(end), "x", "color", "k")
  text(Entropie_2_3 + (Entropie_4_1-Entropie_2_3)/5, Temperatur_3_4/2, "Q₃₄=∫T·dS>0", "color", "k", "FontSize", FontSize);
  
  
  filename = ["./svg/carnot-", num2str(Zaehler_Seq, "%04i"), ".svg"]
  print (filename, "-dsvg", parameters.Dimensions);

  hold("off");

endfor

Zaehler = Zaehler_Seq + 1;


Zaehler = SeqPause(Zaehler);

retZaehler = Zaehler;

close();

endfunction


%
% Carnot_Process_4_1
%

function retZaehler = Carnot_Process_4_1(Zaehler)

global parameters;

SequenzLaenge = parameters.SequenzLaenge;
FrameRate = parameters.FrameRate;
FontSize = parameters.FontSize;

Volumen_4 = parameters.Volumen_4;
Volumen_1 = parameters.Volumen_1;
Entropie_2_3 = parameters.Entropie_2_3;
Entropie_4_1 = parameters.Entropie_4_1;
kappa = parameters.kappa;
Druck_1 = parameters.Druck_1;
Temperatur_3_4 = parameters.Temperatur_3_4;

% Zaunpfahlproblem 0 - 100% in hundert Schritten
for Zaehler_Seq = Zaehler:(Zaehler+FrameRate*SequenzLaenge-1)

  close();

  Volumen_4_1 = Volumen_a_b(Volumen_4, Volumen_1, Zaehler_Seq-Zaehler, FrameRate*SequenzLaenge);
  
  % ₃
  hold("on");
  subplot(1,2,2); % p-V-Diagram
  hold("on");
  Druck_4_1 = Druck_1 * (Volumen_1 ./ Volumen_4_1) .^ kappa;
  
  area(Volumen_4_1, Druck_4_1/1e5, "FaceColor", "c");
  Hintergrund_Plot();
  plot(Volumen_4_1(end), Druck_4_1(end)/1e5, "x", "color", "k")
  text(Volumen_4 + (Volumen_1-Volumen_4)/5, Druck_1/(1e5*2), "W₄₁=∫p·dV>0", "color", "k", "FontSize", FontSize);
  hold("off");

  subplot(1,2,1); % T-S-Diagram
  hold("on");  
  
  Temperatur = Temperatur_3_4 * (Volumen_4 ./ Volumen_4_1).^(kappa - 1); % Isentrop
  Entropie_4_1_A = ones(size(Temperatur)) * Entropie_4_1;

  area(Entropie_4_1_A, Temperatur, "FaceColor", "c");
  Hintergrund_Plot_T_S();
  plot(Entropie_4_1_A(end), Temperatur(end), "x", "color", "k")   
  text(Entropie_4_1 - (Entropie_4_1-Entropie_2_3)/5, Temperatur_3_4/2, "Q₄₁=∫T·dS=0", "color", "k", "FontSize", FontSize);
  hold("off");
  
  filename = ["./svg/carnot-", num2str(Zaehler_Seq, "%04i"), ".svg"]
  print (filename, "-dsvg", parameters.Dimensions);

  hold("off");

endfor

Zaehler = Zaehler_Seq + 1;


Zaehler = SeqPause(Zaehler);

retZaehler = Zaehler;

close();

endfunction

%
% Carnot_Delta
%

function retZaehler = Carnot_Delta(Zaehler)

  global parameters;
 
  
  SequenzLaenge = parameters.SequenzLaenge;
  FrameRate = parameters.FrameRate;
  FontSize = parameters.FontSize;
  
  

Volumen_1 = parameters.Volumen_1;
Volumen_2 = parameters.Volumen_2;
Volumen_3 = parameters.Volumen_3;
Volumen_4 = parameters.Volumen_4;

Druck_1 = parameters.Druck_1;
Druck_2 = parameters.Druck_2;
Druck_3 = parameters.Druck_3;
Druck_4 = parameters.Druck_4;

kappa = parameters.kappa;
Entropie_4_1 = parameters.Entropie_4_1;
Entropie_2_3 = parameters.Entropie_2_3;
Temperatur_1_2 = parameters.Temperatur_1_2;
Temperatur_3_4 = parameters.Temperatur_3_4;

Volumen = 0:0.1:parameters.PlotSize; %  2..4 / 4..9 


% 1 -> 2 Isotherm
Volumen_1_2 = Volumen_a_b(Volumen_1, Volumen_2, 1, 2);
Druck_1_2 = Druck_1 * Volumen_1 ./ Volumen_1_2;

% 2 -> 3 Isentrop
Volumen_2_3 = Volumen_a_b(Volumen_2, Volumen_3, 1, 2);
Druck_2_3 = Druck_2 * (Volumen_2 ./ Volumen_2_3) .^ kappa;

% 3 -> 4 Isotherm
Volumen_3_4 = Volumen_a_b(Volumen_3, Volumen_4, 1, 2);
Druck_3_4 = Druck_3 * Volumen_3 ./ Volumen_3_4;

% 4 -> 1 Isentrop
Volumen_4_1 = Volumen_a_b(Volumen_4, Volumen_1, 1, 2);
Druck_4_1 = Druck_4 * (Volumen_4 ./ Volumen_4_1) .^ kappa;



subplot(1,2,2); % p-V-Diagram
hold("on");

Volumen = [Volumen_1_2, Volumen_2_3, Volumen_3_4, Volumen_4_1 ];
Druck = [Druck_1_2, Druck_2_3, Druck_3_4, Druck_4_1 ];
fill(Volumen, Druck/1e5, "c");
Hintergrund_Plot();

plot([(Volumen_2+Volumen_4)/2, Volumen_4+0], [(Druck_2+Druck_4)/(1e5*2), Druck_4/1e5+1], "color", "k", "linewidth", 2);

text(Volumen_4+0, Druck_4/1e5+1, "ΔW = ΔQ", "FontSize", FontSize);

subplot(1,2,1); % T-S-Diagram
hold("on");  

Temperatur = [Temperatur_1_2, Temperatur_1_2, Temperatur_3_4, Temperatur_3_4 ];
Entropie = [Entropie_4_1, Entropie_2_3, Entropie_2_3, Entropie_4_1];
fill(Entropie, Temperatur, "c");
Hintergrund_Plot_T_S();
text((Entropie_2_3+Entropie_4_1)/2, (Temperatur_1_2+Temperatur_3_4)/2, "ΔQ", "FontSize", FontSize);
hold("off");
  
for  Zaehler_Final = Zaehler:1:Zaehler + SequenzLaenge*FrameRate - 1

  filename = ["./svg/carnot-", num2str(Zaehler_Final, "%04i"), ".svg"]
  print (filename, "-dsvg", parameters.Dimensions);
endfor

retZaehler = Zaehler_Final + 1;

close();

endfunction

%
% Berechne_Volumen_4
%

function Volumen = Berechne_Volumen_4()

global parameters;

% Volumen = ( parameters.Entropie_4_1 / parameters.InnereEnergie_3_4)^(1/(parameters.kappa-1)); % Schnittpunkt
Volumen_3 = parameters.Volumen_3;
Volumen_1 = parameters.Volumen_1;
Druck_1 = parameters.Druck_1;
Druck_3 = parameters.Druck_3;
kappa = parameters.kappa;

% V_4 / V_3 = p_3 / p_4 % Isotherm
% p_4 = p_1 * (V_1 / V_4) ^ kappa % Isentrop

temp = Volumen_3 / Volumen_1^kappa * (Druck_3 / Druck_1);

Volumen = temp^(1/(1-kappa));


endfunction



%
% Berechne Druck in N / m^2
%

function Druck = Berechne_SpezifischenDruck(Volumen, Temperatur)

global parameters;

R_S = parameters.R_S;

Druck = R_S * 1000. * Temperatur ./ Volumen;

endfunction

%
% Berechne spezifische Entropie in kJ / K
%

function S_spez = Berechne_SpezifischeEntropie(Volumen, Temperatur)

global parameters;


S_Std = parameters.S_Std;
R_S = parameters.R_S;
T_Std = parameters.T_Std;
p_Std = parameters.p_Std;

Druck = Berechne_SpezifischenDruck(Volumen, Temperatur);

C_p = parameters.C_p;
C_V = parameters.C_V;


Delta_Entropie = R_S * (C_p * log(Temperatur/T_Std) - log(Druck/p_Std));

S_spez = S_Std + Delta_Entropie;

endfunction

%
% Berechne spezifische InnereEnergie
%

function InnereEnergie = Berechne_SpezifischeInnereEnergie(Entropie, Temperatur, Volumen)

global parameters;

Druck = Berechne_SpezifischenDruck(Volumen, Temperatur);
InnereEnergie = Entropie * Temperatur - Druck * Volumen/1000; % kJ

endfunction



%
% Testberechnungen
%

function Testberechnungen()

global parameters;

Druck_1 = parameters.InnereEnergie_1_2 ./ parameters.Volumen_1 % Druck der spezifischen Masse
Druck_2 = parameters.InnereEnergie_1_2 ./ parameters.Volumen_2;
Druck_3 = parameters.Entropie_2_3 ./ (parameters.Volumen_3 ^ parameters.kappa);

delta_W_1_2 = Druck_1 * parameters.Volumen_1 * log(parameters.Volumen_1 / parameters.Volumen_2)
delta_S_1_2 = delta_W_1_2 / parameters.Temperatur_1_2

delta_T_2_3  = parameters.Temperatur_1_2 * (Druck_3/Druck_2)^((parameters.kappa - 1)/parameters.kappa)% Isentrop


V_spez = 1;
T_std = 50. + 273.

S_spez = Berechne_SpezifischeEntropie(V_spez, T_std) * 9;
S_spez

U_spez = Berechne_SpezifischeInnereEnergie(S_spez, T_std, V_spez) * 9;
U_spez


endfunction

%
%
% M A I N
%
%

begin_cputime = cputime();

global parameters;

% Arbeitsgas: ARGON

% U_mol = T * S_mol - R * T % molare Innere Energie
% R_S = R / M_Argon % spezifische Gaskonstante Argon
% U_S = T * S_S - R_S * T % spezifische Innere Energie Argon
% S_S = 3,875 % kJ/K pro kg % spezifische Entropie Argon
parameters.M_S = 0.03995; % kg/mol spezifische Masse für Argon
parameters.R_S = 8.3145e-3 / parameters.M_S; % kJ / kg * K spezifische Gaskonstante für Argon
parameters.S_Std = 3.876; % kJ / K spezifische Entropie Argon bei 1 bar und 25°C (siehe Joensson)
parameters.T_Std = 25 + 273; % Temperatur für Standard-Entropie
parameters.p_Std = 1.e5; % Druck für Standard-Entropie


parameters.C_p = 5 / 2; % isobare Wärmekapazität zweiatomiges Gas
parameters.C_V = 3 / 2; % isochore Wäremkapazität zweiatomiges Gas (Wasserstoff)
parameters.kappa = 5 / 3; % C_p / C_V = 7/5 % zweiatomiges Gas

% R = p * V / n * T
% R_S = V * p / T 
% R_S = R / M_Argon

% U = S * T - p * V @ Masse x kg

% spezifische Referenzentropie im Punkt 1
% p * V * T = Const
% p * V = const. % isotherm
% p_1/p_2 = V_2/V_1 % des selben Gases
% p * V^kappa = const.
% p_1/p_2 = ( V_2 / V_1 ) ^ kappa

% PARAMETER

parameters.FrameRate = 20; % pro Sekunde
% parameters.FrameRate = 2; % Debug
parameters.Pause = 3; % in Sekunden
parameters.SequenzLaenge = 10;
parameters.FinalLaenge = 10;

parameters.Dimensions = "-S4800,2700"; % odd scale facotr
parameters.FontSize = 18;
parameters.PlotSize = 20;

% VOLUMEN

parameters.Faktor = 9.;
parameters.Volumen_1 =  parameters.Faktor; % 9 * V_S spezifisches Volumen
parameters.Volumen_2 =  2.6;
parameters.Volumen_3 = 1.;
% Volumen_4 resultiert aus den anderen drei Werten

parameters.Temperatur_1_2 = 273 + 50; % 50°C


% ENTROPIE

% parameters.InnereEnergie_1_2 = 6.045; % Startwert % spezifische Innere Energie
spez_Entropie_4_1 = Berechne_SpezifischeEntropie(1., parameters.Temperatur_1_2);
parameters.Entropie_4_1 = spez_Entropie_4_1 * parameters.Faktor;
parameters.Druck_1 = Berechne_SpezifischenDruck(1., parameters.Temperatur_1_2);

parameters.Temperatur_3_4 = parameters.Temperatur_1_2 * (parameters.Volumen_2/parameters.Volumen_3)^(parameters.kappa - 1); % Isentrop
spez_Entropie_2_3 = Berechne_SpezifischeEntropie(parameters.Volumen_3/parameters.Volumen_1, parameters.Temperatur_3_4); 
parameters.Entropie_2_3 = parameters.Faktor * spez_Entropie_2_3;


% DRUCK

parameters.Druck_2 = parameters.Druck_1 * parameters.Volumen_1 / parameters.Volumen_2;
parameters.Druck_3 = parameters.Druck_2 * (parameters.Volumen_2 / parameters.Volumen_3) ^ (parameters.kappa);

parameters.Temperatur_3_4 = parameters.Temperatur_1_2 * (parameters.Volumen_2/parameters.Volumen_3)^(parameters.kappa - 1); % Isentrop

parameters.Volumen_4 = Berechne_Volumen_4();

parameters.Druck_4 = parameters.Druck_1 * (parameters.Volumen_1 / parameters.Volumen_4) ^ (parameters.kappa);


spez_Entropie_2_3 = Berechne_SpezifischeEntropie(parameters.Volumen_2/parameters.Volumen_1, parameters.Temperatur_1_2); % Falsifikation
spez_Entropie_2_3 * parameters.Faktor

%Testberechnungen();


parameters

%
% Carnot-Kreisprozess
%

Zaehler = 0;

printf("Carnot_Process_1_2()\n");
Zaehler
Zaehler = Carnot_Process_1_2(Zaehler);
printf("Carnot_Process_2_3()\n");
Zaehler
Zaehler = Carnot_Process_2_3(Zaehler);
printf("Carnot_Process_3_4()\n");
Zaehler
Zaehler = Carnot_Process_3_4(Zaehler);
printf("Carnot_Process_4_1()\n");
Zaehler
Zaehler = Carnot_Process_4_1(Zaehler);
printf("Carnot_Process_Delta()\n");
Zaehler
Zaehler = Carnot_Delta(Zaehler);
Zaehler

%Hintergrund_Plot()

printf("Total cpu time: %f seconds\n", cputime()-begin_cputime);
printf("Finished\n");

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current12:51, 19 June 20141 min 2 s, 2,304 × 1,296 (2.61 MB)Menner (talk | contribs)User created page with UploadWizard

There are no pages that use this file.

Transcode status

Update transcode status
Format Bitrate Download Status Encode time
VP9 1080P 66 kbps Completed 19:25, 17 August 2018 50 s
Streaming 1080p (VP9) 66 kbps Completed 18:52, 16 January 2024 1.0 s
VP9 720P 39 kbps Completed 19:24, 17 August 2018 28 s
Streaming 720p (VP9) 39 kbps Completed 13:10, 25 January 2024 1.0 s
VP9 480P 25 kbps Completed 19:24, 17 August 2018 22 s
Streaming 480p (VP9) 25 kbps Completed 05:24, 18 December 2023 1.0 s
VP9 360P 17 kbps Completed 19:24, 17 August 2018 17 s
Streaming 360p (VP9) 18 kbps Completed 08:48, 2 January 2024 1.0 s
VP9 240P 12 kbps Completed 19:24, 17 August 2018 14 s
Streaming 240p (VP9) 12 kbps Completed 04:24, 12 December 2023 0.0 s
WebM 360P 59 kbps Completed 12:51, 19 June 2014 21 s
Streaming 144p (MJPEG) 501 kbps Completed 07:44, 30 October 2023 3.0 s

File usage on other wikis

The following other wikis use this file:

Metadata