summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2015-12-08 11:34:57 +0100
committerErich Eckner <git@eckner.net>2015-12-08 11:34:57 +0100
commit141b43362dcdfe8a456e9dc7d7c2fb2564a64c5a (patch)
tree647f209b47a4087682976bbd72b14fcef7ac96c7
parent34b0a791cc26dd1a6b36fda32b806aeb4d203147 (diff)
downloadPlasmapropagation-141b43362dcdfe8a456e9dc7d7c2fb2564a64c5a.tar.xz
Physikunit.pas aufgefrischt
-rw-r--r--Physikunit.pas18
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}