program Plasmapropagation; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes, SysUtils, CustApp, { you can add units after this } math, Physikunit, crt, protokollunit; var ErrorCode: longint; type { TPlasmapropagation } TPlasmapropagation = class(TCustomApplication) protected procedure DoRun; override; public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; end; { TPlasmapropagation } procedure TPlasmapropagation.DoRun; var Breite,i,j: longint; simulation: tSimulation; start,zeitDatei,zeitPhysik: extended; FI: TFeldInhalt; Abl: Boolean; Prot: TProtokollant; c: char; begin prot:=tProtokollant.create('error'); if paramcount<>1 then begin prot.schreibe('Bitte genau einen Parameter übergeben, nämlich die Parameterdatei!',true); halt(1); end; start:=now; zeitDatei:=0; zeitPhysik:=0; sT:=-Min(deltaT,sDT)/2; simulation:=tSimulation.create(paramstr(1)); // Gitter.Al:=@InputFeld; 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; 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); end{of case}; for i:=0 to length(Ausgabedateien)-1 do CloseFile(Ausgabedateien[i].Datei); Prot.schreibe('fertig!',true); s:=timetostr(now-start); t:=timetostr(zeitDatei); u:=timetostr(zeitPhysik); while length(s)