diff options
Diffstat (limited to 'Plasmapropagation.lpr')
-rw-r--r-- | Plasmapropagation.lpr | 73 |
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; |