summaryrefslogtreecommitdiff
path: root/Plasmapropagation.lpr
diff options
context:
space:
mode:
Diffstat (limited to 'Plasmapropagation.lpr')
-rw-r--r--Plasmapropagation.lpr73
1 files changed, 14 insertions, 59 deletions
diff --git a/Plasmapropagation.lpr b/Plasmapropagation.lpr
index b861d2e..5c914d5 100644
--- a/Plasmapropagation.lpr
+++ b/Plasmapropagation.lpr
@@ -28,13 +28,10 @@ type
procedure TPlasmapropagation.DoRun;
var
- Breite,i,j: longint;
simulation: tSimulation;
- start,zeitDatei,zeitPhysik: extended;
- FI: TFeldInhalt;
- Abl: Boolean;
- Prot: TProtokollant;
- c: char;
+ start,zeitPhysik,zeitDatei: extended;
+ prot: tProtokollant;
+ s,t,u: string;
begin
prot:=tProtokollant.create('error');
@@ -48,71 +45,29 @@ begin
zeitDatei:=0;
zeitPhysik:=0;
- sT:=-Min(deltaT,sDT)/2;
- simulation:=tSimulation.create(paramstr(1));
-// Gitter.Al:=@InputFeld;
- while Gitter.t<Endzeit do begin
- if HasOption('F','Fortschrittsanzeige') then begin
- if errorCode<2 then
- s:=Gitter.gibErhaltungsgroessen;
- if (floor(100*Gitter.t/Endzeit) < floor(100*(Gitter.t+deltaT)/Endzeit)) or keypressed then begin
- if keypressed then c:=readkey
- else c:=#0;
- case c of
- #27,'q': begin
- errorCode:=3;
- break;
- end;
- ' ': begin
- writeln(' ... Pause (beliebige Taste drücken um fortzufahren) ...');
- readkey;
- writeln(' ... weiter geht''s ...');
- end;
- else begin
- Prot.schreibe(inttostr(round(100*Gitter.t/Endzeit))+'% (t='+floattostr(Gitter.t)+'T)',true);
- Prot.schreibe(timetostr(now-start)+' ('+floattostr(zeitPhysik/max(1e-11,zeitPhysik+zeitDatei))+')',true);
- Prot.schreibe('ETA: '+timetostr((now-start)*(Endzeit-Gitter.t)/max(Gitter.t,deltaT)),true);
- Prot.schreibe('aktueller Zeitschritt: '+floattostr(deltaT)+'T',true);
- Prot.schreibe(s);
- end;
- end{of case};
- end;
- end;
-
- zeitPhysik:=zeitPhysik-now;
- if errorCode<2 then
- Gitter.iteriereSchritt(deltaT);
- zeitPhysik:=zeitPhysik+now;
- zeitDatei:=zeitDatei-now;
- while Gitter.t>=sT do begin
- sT:=sT+sDT;
- for j:=0 to length(Ausgabedateien)-1 do
- Gitter.macheAusgabe(Ausgabedateien[j],sDX);
- end;
- zeitDatei:=zeitDatei+now;
- end;
+ simulation:=tSimulation.create(paramstr(1),prot);
+
+ while simulation.iteriereSchritt(start,zeitPhysik,zeitDatei) do ;
case errorCode of
- 2: Prot.schreibe('Simulation wurde auf halbem Wege abgebrochen wegen Überlaufs.',true);
- 3: Prot.schreibe('Simulation wurde auf halbem Wege abgebrochen wegen Benutzereingriffs.',true);
+ 2: prot.schreibe('Simulation wurde auf halbem Wege abgebrochen wegen Überlaufs.',true);
+ 3: prot.schreibe('Simulation wurde auf halbem Wege abgebrochen wegen Benutzereingriffs.',true);
end{of case};
- for i:=0 to length(Ausgabedateien)-1 do
- CloseFile(Ausgabedateien[i].Datei);
+ simulation.free;
+ prot.schreibe('fertig!',true);
- Prot.schreibe('fertig!',true);
s:=timetostr(now-start);
t:=timetostr(zeitDatei);
u:=timetostr(zeitPhysik);
while length(s)<max(length(t),length(u)) do s:=' '+s;
while length(t)<max(length(s),length(u)) do t:=' '+t;
while length(u)<max(length(s),length(t)) do u:=' '+u;
- Prot.schreibe('Das hat '+s+' gedauert,',true);
- Prot.schreibe(' davon '+t+' für Dateizugriffe',true);
- Prot.schreibe('und nur '+u+' für die eigentliche Physik!',true);
+ prot.schreibe('Das hat '+s+' gedauert,',true);
+ prot.schreibe(' davon '+t+' für Dateizugriffe',true);
+ prot.schreibe('und nur '+u+' für die eigentliche Physik!',true);
+ prot.Free;
- Gitter.Free;
- Prot.Free;
// stop program loop
Terminate;
if errorCode=1 then errorCode:=0;