diff options
author | Erich Eckner <git@eckner.net> | 2015-12-08 11:34:57 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2015-12-08 11:34:57 +0100 |
commit | 141b43362dcdfe8a456e9dc7d7c2fb2564a64c5a (patch) | |
tree | 647f209b47a4087682976bbd72b14fcef7ac96c7 | |
parent | 34b0a791cc26dd1a6b36fda32b806aeb4d203147 (diff) | |
download | Plasmapropagation-141b43362dcdfe8a456e9dc7d7c2fb2564a64c5a.tar.xz |
Physikunit.pas aufgefrischt
-rw-r--r-- | Physikunit.pas | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/Physikunit.pas b/Physikunit.pas index 680419b..935dcad 100644 --- a/Physikunit.pas +++ b/Physikunit.pas @@ -6,7 +6,6 @@ unit Physikunit; {$ERROR This program can be compiled only on/for Unix/Linux based systems.} {$ENDIF} -{$DEFINE Zeitschrittueberwachung} {$DEFINE Dichteueberwachung} {$DEFINE negativeDichteueberwachung} { $DEFINE exzessiveArrayBereichsTests} @@ -133,7 +132,7 @@ type {$IFDEF exzessiveArrayBereichsTests} procedure pruefeArrayEnden(fehler: string); {$ENDIF} - procedure nichtnegativieren; + procedure nichtnegativieren; inline; procedure berechnePhasenraumAbleitungen; inline; public emFelder: array[tEMFeldGroesze,boolean] of pDouble; // EM-Felder und deren Zeitableitungen @@ -1070,6 +1069,18 @@ begin (impulsraum[i,false]+j+(aX-1)*aP)^:=0; end; + for i:=0 to length(teilchen)-1 do + for j:=0 to aX-1 do begin + if (impulsraum[i,false]+j*aP)^>0 then begin // unterer Rand + (impulsraum[i,false]+1+j*aP)^:=(impulsraum[i,false]+1+j*aP)^+(impulsraum[i,false]+j*aP)^; + (impulsraum[i,false]+j*aP)^:=0; + end; + if (impulsraum[i,false]+aP-1+j*aP)^>0 then begin // oberer Rand + (impulsraum[i,false]+aP-2+j*aP)^:=(impulsraum[i,false]+aP-2+j*aP)^+(impulsraum[i,false]+aP-1+j*aP)^; + (impulsraum[i,false]+aP-1+j*aP)^:=0; + end; + end; + // PY und iMGamma berechnen for i:=0 to length(matFelder)-1 do for j:=0 to aX-1 do begin @@ -1613,8 +1624,9 @@ begin if (felders[aktuelleFelder].impulsraum[i,false]+j)^<0 then begin pro:=tProtokollant.create(prot,'iteriereSchritt'); pro.schreibe('n<0 bei:',true); - pro.schreibe(' t = ' +floattostr(t)+',',true); + pro.schreibe(' t = ' +floattostr(t)+' (aktuelleFelder = '+inttostr(aktuelleFelder)+'),',true); pro.schreibe(' i = ' +inttostr(i)+' (x = '+floattostr(xl+i*dX)+'),',true); + pro.schreibe(' n = ' +floattostr((felders[aktuelleFelder].impulsraum[i,false]+j)^),true); abbrechen; end; {$ENDIF} |