diff options
Diffstat (limited to 'Physikunit.pas')
-rw-r--r-- | Physikunit.pas | 36 |
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; |