summaryrefslogtreecommitdiff
path: root/Physikunit.pas
diff options
context:
space:
mode:
Diffstat (limited to 'Physikunit.pas')
-rw-r--r--Physikunit.pas36
1 files changed, 28 insertions, 8 deletions
diff --git a/Physikunit.pas b/Physikunit.pas
index 2a87c63..fc2dcd2 100644
--- a/Physikunit.pas
+++ b/Physikunit.pas
@@ -9,8 +9,8 @@ unit Physikunit;
{$MACRO on}
// nach einer LiKo negative Dichten entfernen:
-{ $DEFINE DichteNichtnegativieren:=perSkalieren} // insgesamt runter skalieren um negative Dichten aufzufüllen
-{$DEFINE DichteNichtnegativieren:=perEinzelklau} // negative Dichten aus zufälligen Phasenraumpunkten auffüllen
+{$DEFINE DichteNichtnegativieren:=perSkalieren} // insgesamt runter skalieren um negative Dichten aufzufüllen
+{ $DEFINE DichteNichtnegativieren:=perEinzelklau} // negative Dichten aus zufälligen Phasenraumpunkten auffüllen
{ $DEFINE negativeDichteueberwachung} // prüfen, ob die Dichten negativ werden
@@ -204,16 +204,24 @@ type
prot: tProtokollant;
gitter: tGitter;
dT,tEnde,sT,sDT,sDX: double;
- fortschrittsAnzeige: boolean;
+ fortschrittsAnzeige,
+ _gotSigterm,_gotSigint: boolean;
feldAusgabeDateien: array of tFeldAusgabeDatei;
impulsRaumAusgabeDateien: array of tImpulsRaumAusgabeDatei;
transpTmp: array of double;
+ procedure wGotSigterm(b: boolean);
+ procedure wGotSigint(b: boolean);
public
- gotSigusr1,gotSigterm,
- gotSigint: boolean;
+ gotSigusr1: boolean;
constructor create(inName: string; protokollant: tProtokollant; name: string);
destructor destroy; override;
function iteriereSchritt(start: double; var zeitPhysik,zeitDatei: double): boolean; // noch nicht zu Ende?
+ property gotSigterm: boolean
+ read _gotSigterm
+ write wGotSigterm;
+ property gotSigint: boolean
+ read _gotSigint
+ write wGotSigint;
end;
procedure SignalCapture(signal : longint); cdecl;
@@ -1405,11 +1413,11 @@ begin
end;
end;
end;
- if defizit>0 then begin
+ if defizit>0 then
{$ENDIF}
{$IF dichteNichtnegativieren = perSkalieren}
- if enfizit=0 then begin
- {$ENDIF}
+ if enfizit=0 then
+ {$ENDIF} begin
gitter.prot.schreibe('Kann Defizit der Teilchensorte '+inttostr(i+1)+' nicht ausgleichen, '+floattostr(defizit)+' bleibt übrig!',true);
gitter.prot.schreibe('Kann Defizit der Teilchensorte '+inttostr(i+1)+' nicht ausgleichen, es ist nichts positives mehr übrig!',true);
gitter.abbrechen;
@@ -2077,6 +2085,18 @@ begin
inherited destroy;
end;
+procedure tSimulation.wGotSigterm(b: boolean);
+begin
+ if b and _gotSigterm then halt(127);
+ _gotSigterm:=b;
+end;
+
+procedure tSimulation.wGotSigint(b: boolean);
+begin
+ if b and _gotSigint then halt(127);
+ _gotSigint:=b;
+end;
+
function tSimulation.iteriereSchritt(start: double; var zeitPhysik,zeitDatei: double): boolean; // noch nicht zu Ende?
var
i: longint;