summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Physikunit.pas203
-rw-r--r--Plasmapropagation.lps80
2 files changed, 118 insertions, 165 deletions
diff --git a/Physikunit.pas b/Physikunit.pas
index 491c186..727f0dc 100644
--- a/Physikunit.pas
+++ b/Physikunit.pas
@@ -19,18 +19,18 @@ type
tZeitverfahren = (zfEulerVorwaerts,zfRungeKuttaDreiAchtel,zfRungeKuttaVier,zfRungeKuttaZehn,zfRungeKuttaZwoelf,zfRungeKuttaVierzehn);
tVerteilungsfunktion = function(x: extended): extended;
tEMFeldGroesze = (
- efAX,efAY,efAZ,
- efDAXDT,efDAYDT,efDAZDT,
+ efAX,efAY,
+ efDAXDT,efDAYDT,
efEX,efBY,efBZ
);
tEMQuellGroesze = (
- eqRho,eqJX,eqJY,eqJZ
+ eqRho,eqJX,eqJY
);
tEMQuellen = array[tEMQuellGroesze] of extended;
const
erstesEMFMitAbleitung = efAX;
- letztesEMFMitAbleitung = efDAZDT;
+ letztesEMFMitAbleitung = efDAYDT;
type
@@ -85,19 +85,19 @@ type
tImpulsPunkt = class(tObject) // Besetzungsdichten verschiedener Teilchenspezies für ein Paar (r;p)
private
raumpunkt: tRaumPunkt;
- nachbarn: array[0..3,boolean] of tImpulsPunkt; // x-, px-, py-, pz-Nachbarn (jeweil in Richtung - und +)
+ nachbarn: array[0..2,boolean] of tImpulsPunkt; // x-, px-, py-Nachbarn (jeweil in Richtung - und +)
public
werte: array of array[boolean] of extended; // Besetzungsdichten und deren Ableitungen für verschiedene Teilchenspezies
- constructor create(rp: tRaumPunkt; linksRaum,linksImpuls,untenImpuls,vorneImpuls: tImpulsPunkt; anzTeilchen: longint);
+ constructor create(rp: tRaumPunkt; linksRaum,linksImpuls,untenImpuls: tImpulsPunkt; anzTeilchen: longint);
destructor destroy; override;
{$DEFINE LiKotImpulsPunktHeader}
{$INCLUDE linearkombinationen.inc}
{$UNDEF LiKotImpulsPunktHeader}
procedure nichtnegativieren;
- procedure akkumuliereEMQuellen(var emQuellen: tEMQuellen; vx,vy,vz,dVP: extended);
+ procedure akkumuliereEMQuellen(var emQuellen: tEMQuellen; vx,vy,dVP: extended);
function gibMirWas(var defizit: extended; entfernung, teilchen,richtung: longint; positiv: boolean): boolean; // ich habe jemanden erreicht
procedure setzeNull;
- procedure berechneAbleitungen(pX,pY,pZ,iDX,iDPX,iDPY,iDPZ: extended);
+ procedure berechneAbleitungen(pX,pY,iDX,iDPX,iDPY: extended);
end;
{ tRaumPunkt }
@@ -115,12 +115,12 @@ type
// Quellen für die EM-Felder
lN,rN: tRaumPunkt;
// Nachbarpunkte
- dPX,dPY,dPZ: extended;
+ dPX,dPY: extended;
// Impulsdiskretisierung
- aPX,aPY,aPZ: longint;
+ aPX,aPY: longint;
// Anzahl der Impulsbins
- constructor create(linkerNachbar: tRaumPunkt; derBesitzer: tFelder; teilchen,_aPX,_aPY,_aPZ: longint; _dPX,_dPY,_dPZ: extended);
+ constructor create(linkerNachbar: tRaumPunkt; derBesitzer: tFelder; teilchen,_aPX,_aPY: longint; _dPX,_dPY: extended);
destructor destroy; override;
procedure berechneEMFelder(dX: extended; rechts: boolean); overload;
procedure berechneEMFelder(dX,iDX: extended); overload;
@@ -149,7 +149,7 @@ type
inhalt: array of tRaumPunkt;
gitter: tGitter;
- constructor create(groesse: longint; teilchen: array of tTeilchenSpezies; lichter: tMyStringList; parent: tGitter; aPX,aPY,aPZ: longint; dPX,dPY,dPZ: extended);
+ constructor create(groesse: longint; teilchen: array of tTeilchenSpezies; lichter: tMyStringList; parent: tGitter; aPX,aPY: longint; dPX,dPY: extended);
destructor destroy; override;
procedure berechneAbleitungen(dX,iDX: extended);
{$DEFINE LiKotFelderHeader}
@@ -174,7 +174,7 @@ type
aktuelleFelder: longint;
felders: array of tFelder; // mehrere komplette Simulationsboxen von Feldern, benötigt um Zwischenschritte für die Zeitentwicklung zu speichern
- constructor create(derBesitzer: tSimulation; size: longint; deltaX: extended; bekannteWerte: tKnownValues; teilchen: array of tTeilchenSpezies; lichter: tMyStringlist; zv: tZeitverfahren; protokollant: tProtokollant; name: string; aPX,aPY,aPZ: longint; dPX,dPY,dPZ: extended);
+ constructor create(derBesitzer: tSimulation; size: longint; deltaX: extended; bekannteWerte: tKnownValues; teilchen: array of tTeilchenSpezies; lichter: tMyStringlist; zv: tZeitverfahren; protokollant: tProtokollant; name: string; aPX,aPY: longint; dPX,dPY: extended);
destructor destroy; override;
procedure iteriereSchritt(dT: extended);
end;
@@ -201,10 +201,10 @@ implementation
const
emFeldNamen: array[tEMFeldGroesze] of string = (
- 'AX','AY','AZ','DAXDT','DAYDT','DAZDT','EX','BY','BZ'
+ 'AX','AY','DAXDT','DAYDT','EX','BY','BZ'
);
emQuellNamen: array[tEMQuellGroesze] of string = (
- 'RHO','JX','JY','JZ'
+ 'RHO','JX','JY'
);
minAusgabeBuffer = 1024*1024;
@@ -520,7 +520,7 @@ end;
// tImpulsPunkt ****************************************************************
-constructor tImpulsPunkt.create(rp: tRaumPunkt; linksRaum,linksImpuls,untenImpuls,vorneImpuls: tImpulsPunkt; anzTeilchen: longint);
+constructor tImpulsPunkt.create(rp: tRaumPunkt; linksRaum,linksImpuls,untenImpuls: tImpulsPunkt; anzTeilchen: longint);
var
i: longint;
b: boolean;
@@ -538,9 +538,7 @@ begin
nachbarn[1,true]:=nil;
nachbarn[2,false]:=untenImpuls;
nachbarn[2,true]:=nil;
- nachbarn[3,false]:=vorneImpuls;
- nachbarn[3,true]:=nil;
- for i:=0 to 3 do
+ for i:=0 to 2 do
if assigned(nachbarn[i,false]) then
nachbarn[i,false].nachbarn[i,true]:=self;
end;
@@ -588,7 +586,7 @@ begin
end;
end;
-procedure tImpulsPunkt.akkumuliereEMQuellen(var emQuellen: tEMQuellen; vx,vy,vz,dVP: extended);
+procedure tImpulsPunkt.akkumuliereEMQuellen(var emQuellen: tEMQuellen; vx,vy,dVP: extended);
var
i: longint;
tmp: extended;
@@ -598,7 +596,6 @@ begin
emQuellen[eqRho]:=emQuellen[eqRho] + tmp;
emQuellen[eqJX]:= emQuellen[eqJX] + tmp * vx;
emQuellen[eqJY]:= emQuellen[eqJY] + tmp * vy;
- emQuellen[eqJZ]:= emQuellen[eqJZ] + tmp * vz;
end;
end;
@@ -638,39 +635,36 @@ begin
werte[i,abl]:=0;
end;
-procedure tImpulsPunkt.berechneAbleitungen(pX,pY,pZ,iDX,iDPX,iDPY,iDPZ: extended);
+procedure tImpulsPunkt.berechneAbleitungen(pX,pY,iDX,iDPX,iDPY: extended);
var
igam: extended;
i: longint;
begin
- igam:=1/sqrt(1+sqr(pX)+sqr(pY)+sqr(pZ));
+ igam:=1/sqrt(1+sqr(pX)+sqr(pY));
pX:=pX*igam;
pY:=pY*igam;
- pZ:=pZ*igam;
// df/dt = - v Nabla f - q(E + v/c x B) Nabla_p f
for i:=0 to length(werte)-1 do
werte[i,true]:=
- pX * (nachbarn[0,true].werte[i,false] - nachbarn[0,false].werte[i,false]) * iDX/2
- raumpunkt.felder.spezLadungen[i] * (
- (raumpunkt.emFelder[efEX,false] + pY*raumpunkt.emFelder[efBZ,false] - pZ*raumpunkt.emFelder[efBY,false])
+ (raumpunkt.emFelder[efEX,false] + pY*raumpunkt.emFelder[efBZ,false])
* (nachbarn[1,true].werte[i,false] - nachbarn[1,false].werte[i,false]) * iDPX/2
-pX*raumpunkt.emFelder[efBZ,false]
* (nachbarn[2,true].werte[i,false] - nachbarn[2,false].werte[i,false]) * iDPY/2
- +pX*raumpunkt.emFelder[efBY,false]
- * (nachbarn[3,true].werte[i,false] - nachbarn[3,false].werte[i,false]) * iDPZ/2
);
end;
// tRaumPunkt ******************************************************************
-constructor tRaumPunkt.create(linkerNachbar: tRaumPunkt; derBesitzer: tFelder; teilchen,_aPX,_aPY,_aPZ: longint; _dPX,_dPY,_dPZ: extended);
+constructor tRaumPunkt.create(linkerNachbar: tRaumPunkt; derBesitzer: tFelder; teilchen,_aPX,_aPY: longint; _dPX,_dPY: extended);
var
- emF: tEMFeldGroesze;
- emQ: tEMQuellGroesze;
- abl: boolean;
- i,j,k: longint;
- xN,pxN,pyN,pzN: tImpulsPunkt;
+ emF: tEMFeldGroesze;
+ emQ: tEMQuellGroesze;
+ abl: boolean;
+ i,j: longint;
+ xN,pxN,pyN: tImpulsPunkt;
begin
inherited create;
felder:=derBesitzer;
@@ -685,33 +679,26 @@ begin
lN.rN:=self;
aPX:=_aPX+byte(not odd(_aPX));
aPY:=_aPY+byte(not odd(_aPY));
- aPZ:=_aPZ+byte(not odd(_aPZ));
dPX:=_dPX;
dPY:=_dPY;
- dPZ:=_dPZ;
fillchar(phasenraum,sizeof(phasenraum),#0);
- setlength(phasenraum,aPX*aPY*aPZ);
+ setlength(phasenraum,aPX*aPY);
for i:=0 to aPX-1 do
- for j:=0 to aPY-1 do
- for k:=0 to aPZ-1 do begin
- if assigned(linkerNachbar) then
- xN:=linkerNachbar.phasenraum[i+aPX*(j+k*aPY)]
- else
- xN:=nil;
- if i>0 then
- pxN:=phasenraum[i-1+aPX*(j+k*aPY)]
- else
- pxN:=nil;
- if j>0 then
- pyN:=phasenraum[i+aPX*(j-1+k*aPY)]
- else
- pyN:=nil;
- if k>0 then
- pzN:=phasenraum[i+aPX*(j+(k-1)*aPY)]
- else
- pzN:=nil;
- phasenraum[i+aPX*(j+k*aPY)]:=tImpulsPunkt.create(self,xN,pxN,pyN,pzN,teilchen);
- end;
+ for j:=0 to aPY-1 do begin
+ if assigned(linkerNachbar) then
+ xN:=linkerNachbar.phasenraum[i+aPX*j]
+ else
+ xN:=nil;
+ if i>0 then
+ pxN:=phasenraum[i-1+aPX*j]
+ else
+ pxN:=nil;
+ if j>0 then
+ pyN:=phasenraum[i+aPX*(j-1)]
+ else
+ pyN:=nil;
+ phasenraum[i+aPX*j]:=tImpulsPunkt.create(self,xN,pxN,pyN,teilchen);
+ end;
end;
destructor tRaumPunkt.destroy;
@@ -756,23 +743,20 @@ begin
(lN.emQuellen[eqRho] + emQuellen[eqRho]) * dX/2;
// B = rot A
- emFelder[efBY,false]:=
- (lN.emFelder[efAZ,false]-rN.emFelder[efAZ,false])*iDX/2;
emFelder[efBZ,false]:=
(rN.emFelder[efAY,false]-lN.emFelder[efAY,false])*iDX/2;
end;
procedure tRaumPunkt.berechneEMAbleitungen(iDX: extended); // Zeitableitungen der EM-Potentiale berechnen
var
- i,j,k: longint;
- emQ: tEMQuellGroesze;
+ i,j: longint;
+ emQ: tEMQuellGroesze;
begin
for emQ:=low(tEMQuellGroesze) to high(tEMQuellGroesze) do
emQuellen[emQ]:=0;
for i:=0 to aPX-1 do
for j:=0 to aPY-1 do
- for k:=0 to aPZ-1 do
- phasenraum[i+aPX*(j+aPY*k)].akkumuliereEMQuellen(emQuellen,(i-aPX/2)*dPX,(j-aPY/2)*dPY,(k-aPZ/2)*dPZ,dPX*dPY*dPZ);
+ phasenraum[i+aPX*j].akkumuliereEMQuellen(emQuellen,(i-aPX/2)*dPX,(j-aPY/2)*dPY,dPX*dPY);
// d2A/dt2 = Laplace(A) - j ( - dE/dt wird auf dA/dt direkt aufgeschlagen !!! )
emFelder[efDAXDT,true]:=
@@ -781,25 +765,20 @@ begin
emFelder[efDAYDT,true]:=
( rN.emFelder[efAY,false] - 2*emFelder[efAY,false] + lN.emFelder[efAY,false] )*sqr(iDX)
- emQuellen[eqJY];
- emFelder[efDAZDT,true]:=
- ( rN.emFelder[efAZ,false] - 2*emFelder[efAZ,false] + lN.emFelder[efAZ,false] )*sqr(iDX)
- - emQuellen[eqJZ];
// dA/dt = dA/dt - E
emFelder[efAX,true]:=emFelder[efDAXDT,false] - emFelder[efEX,false];
emFelder[efAY,true]:=emFelder[efDAYDT,false];
- emFelder[efAZ,true]:=emFelder[efDAZDT,false];
end;
procedure tRaumPunkt.berechnePhasenraumAbleitungen(iDX: extended);
var
- i,j,k: longint;
+ i,j: longint;
begin
// df/dt = - v Nabla f - q(E + v/c x B) Nabla_p f
for i:=1 to aPX-2 do
for j:=1 to aPY-2 do
- for k:=1 to aPZ-2 do
- phasenraum[i+aPX*(j+aPY*k)].berechneAbleitungen((i-(aPX div 2))*dPX,(j-(aPY div 2))*dPY,(k-(aPZ div 2))*dPZ,iDX,1/dPX,1/dPY,1/dPZ);
+ phasenraum[i+aPX*j].berechneAbleitungen((i-(aPX div 2))*dPX,(j-(aPY div 2))*dPY,iDX,1/dPX,1/dPY);
end;
procedure tRaumPunkt.nichtnegativieren; // Dichten nicht negativ machen
@@ -812,7 +791,7 @@ end;
function tRaumPunkt.impulsIntegral(teilchen: longint; emQ: tEMQuellGroesze): extended;
var
- i,j,k: longint;
+ i,j: longint;
begin
if teilchen<0 then begin
result:=emQuellen[emQ]; // das ist leicht :-)
@@ -825,32 +804,22 @@ begin
eqRho:
for i:=0 to aPX-1 do
for j:=0 to aPY-1 do
- for k:=0 to aPZ-1 do
- result:=
- result +
- phasenraum[i+aPX*(j+aPY*k)].werte[teilchen,false]*dPX*dPY*dPZ;
+ result:=
+ result +
+ phasenraum[i+aPX*j].werte[teilchen,false]*dPX*dPY;
eqJX:
for i:=0 to aPX-1 do
for j:=0 to aPY-1 do
- for k:=0 to aPZ-1 do
- result:=
- result +
- phasenraum[i+aPX*(j+aPY*k)].werte[teilchen,false]*dPX*dPY*dPZ * (i-aPX/2)*dPX;
+ result:=
+ result +
+ phasenraum[i+aPX*j].werte[teilchen,false]*dPX*dPY * (i-aPX/2)*dPX;
eqJY:
for i:=0 to aPX-1 do
for j:=0 to aPY-1 do
- for k:=0 to aPZ-1 do
- result:=
- result +
- phasenraum[i+aPX*(j+aPY*k)].werte[teilchen,false]*dPX*dPY*dPZ * (j-aPY/2)*dPY;
- eqJZ:
- for i:=0 to aPX-1 do
- for j:=0 to aPY-1 do
- for k:=0 to aPZ-1 do
- result:=
- result +
- phasenraum[i+aPX*(j+aPY*k)].werte[teilchen,false]*dPX*dPY*dPZ * (k-aPZ/2)*dPZ;
- end;
+ result:=
+ result +
+ phasenraum[i+aPX*j].werte[teilchen,false]*dPX*dPY * (j-aPY/2)*dPY;
+ end{of case};
end;
procedure tRaumPunkt.initialisiereDichte(teilchen: longint; n: extended);
@@ -858,7 +827,7 @@ var
i: longint;
begin
for i:=0 to length(phasenraum)-1 do
- if (aPX div 2) + aPX*((aPY div 2) + aPY*(aPZ div 2)) = i then
+ if (aPX div 2) + aPX*(aPY div 2) = i then
phasenraum[i].werte[teilchen,false]:=n
else
phasenraum[i].werte[teilchen,false]:=0;
@@ -869,7 +838,7 @@ var
i,j,k: longint;
begin
for i:=(aPX div 2 + 1)*byte(rechts) to (aPX div 2)-1 + (apx-(aPX div 2))*byte(rechts) do
- for j:=0 to aPY*aPZ-1 do
+ for j:=0 to aPY-1 do
for k:=0 to felder.matAnz-1 do
if phasenraum[i+aPX*j].werte[k,false]>0 then begin
phasenraum[aPX-1-i+aPX*j].werte[k,false]:=phasenraum[i+aPX*j].werte[k,false];
@@ -901,7 +870,7 @@ end;
// tFelder *********************************************************************
-constructor tFelder.create(groesse: longint; teilchen: array of tTeilchenSpezies; lichter: tMyStringList; parent: tGitter; aPX,aPY,aPZ: longint; dPX,dPY,dPZ: extended);
+constructor tFelder.create(groesse: longint; teilchen: array of tTeilchenSpezies; lichter: tMyStringList; parent: tGitter; aPX,aPY: longint; dPX,dPY: extended);
var
i,j: longint;
rechts: boolean;
@@ -916,9 +885,9 @@ begin
spezLadungen[i]:=teilchen[i].spezifischeLadung;
fillchar(inhalt,sizeof(inhalt),#0);
setlength(inhalt,groesse+4); // zwei Felder links und rechts extra für Randbedingungen
- inhalt[0]:=tRaumPunkt.create(nil,self,length(teilchen),aPX,aPY,aPZ,dPX,dPY,dPZ);
+ inhalt[0]:=tRaumPunkt.create(nil,self,length(teilchen),aPX,aPY,dPX,dPY);
for i:=1 to length(inhalt)-1 do
- inhalt[i]:=tRaumPunkt.create(inhalt[i-1],self,length(teilchen),aPX,aPY,aPZ,dPX,dPY,dPZ);
+ inhalt[i]:=tRaumPunkt.create(inhalt[i-1],self,length(teilchen),aPX,aPY,dPX,dPY);
fillchar(massen,sizeof(massen),#0);
setlength(massen,length(teilchen));
for i:=0 to length(massen)-1 do
@@ -958,7 +927,7 @@ var
rechts: boolean;
i: longint;
begin
- for emF:=efAX to efAZ do begin // Vakuumrandbedingungen für das A-Feld
+ for emF:=efAX to efAY do begin // Vakuumrandbedingungen für das A-Feld
inhalt[0].emFelder[emF,true]:=
(inhalt[1].emFelder[emF,false] -
inhalt[0].emFelder[emF,false])*iDX;
@@ -1005,7 +974,7 @@ end;
// tGitter *********************************************************************
-constructor tGitter.create(derBesitzer: tSimulation; size: longint; deltaX: extended; bekannteWerte: tKnownValues; teilchen: array of tTeilchenSpezies; lichter: tMyStringlist; zv: tZeitverfahren; protokollant: tProtokollant; name: string; aPX,aPY,aPZ: longint; dPX,dPY,dPZ: extended);
+constructor tGitter.create(derBesitzer: tSimulation; size: longint; deltaX: extended; bekannteWerte: tKnownValues; teilchen: array of tTeilchenSpezies; lichter: tMyStringlist; zv: tZeitverfahren; protokollant: tProtokollant; name: string; aPX,aPY: longint; dPX,dPY: extended);
var
i: longint;
begin
@@ -1032,7 +1001,7 @@ begin
xl:=dX/2;
for i:=0 to length(felders)-1 do
- felders[i]:=tFelder.create(size,teilchen,lichter,self,aPX,aPY,aPZ,dPX,dPY,dPZ);
+ felders[i]:=tFelder.create(size,teilchen,lichter,self,aPX,aPY,dPX,dPY);
aktuelleFelder:=0;
t:=0;
@@ -1146,16 +1115,16 @@ end;
constructor tSimulation.create(inName: string; protokollant: tProtokollant; name: string);
var
- ifile: tMyStringlist;
- zeitverfahren: tZeitverfahren;
- s,t,aSuffix,aPrefix: string;
- deltaX,breite,dPX,dPY,dPZ,pXMax,pYMax,pZMax: extended;
- i: longint;
- kvs: tKnownValues;
- teilchen: array of tTeilchenSpezies;
- lichter: tMyStringlist;
- pro: tProtokollant;
- na: pSigActionRec;
+ ifile: tMyStringlist;
+ zeitverfahren: tZeitverfahren;
+ s,t,aSuffix,aPrefix: string;
+ deltaX,breite,dPX,dPY,pXMax,pYMax: extended;
+ i: longint;
+ kvs: tKnownValues;
+ teilchen: array of tTeilchenSpezies;
+ lichter: tMyStringlist;
+ pro: tProtokollant;
+ na: pSigActionRec;
begin
inherited create;
prot:=tProtokollant.create(protokollant,name);
@@ -1187,10 +1156,8 @@ begin
gotSighup:=false;
dPX:=-1;
dPY:=-1;
- dPZ:=-1;
pXMax:=3;
pYMax:=3;
- pZMax:=3;
// Standardeinstellungen Bereich 'ausgaben'
aPrefix:=extractfilepath(paramstr(0));
@@ -1264,13 +1231,8 @@ begin
dPY:=exprtofloat(false,s,kvs,nil);
continue;
end;
- if startetMit('z ',s) then begin
- dPZ:=exprtofloat(false,s,kvs,nil);
- continue;
- end;
dPX:=exprtofloat(false,s,kvs,nil);
dPY:=dPX;
- dPZ:=dPX;
continue;
end;
if startetMit('maximalimpuls ',s) then begin
@@ -1282,13 +1244,8 @@ begin
pYMax:=exprtofloat(false,s,kvs,nil);
continue;
end;
- if startetMit('z ',s) then begin
- pZMax:=exprtofloat(false,s,kvs,nil);
- continue;
- end;
pXMax:=exprtofloat(false,s,kvs,nil);
pYMax:=pXMax;
- pZMax:=pXMax;
continue;
end;
if startetMit('zeit ',s) then begin
@@ -1436,8 +1393,6 @@ begin
dPX:=deltaX;
if dPY<0 then
dPY:=sqrt(deltaX);
- if dPZ<0 then
- dPZ:=sqrt(deltaX);
pro:=tProtokollant.create(prot,'create');
case zeitverfahren of
@@ -1463,8 +1418,6 @@ begin
pro.schreibe('pXMax = '+floattostr(pXMax));
pro.schreibe('dPY = '+floattostr(dPY));
pro.schreibe('pYMax = '+floattostr(pYMax));
- pro.schreibe('dPZ = '+floattostr(dPZ));
- pro.schreibe('pZMax = '+floattostr(pZMax));
pro.schreibe('bekannte Werte:');
kvs.dump(pro,' ');
if length(teilchen)>0 then begin
@@ -1503,7 +1456,7 @@ begin
setlength(sighupSimulationen,length(sighupSimulationen)+1);
sighupSimulationen[length(sighupSimulationen)-1]:=self;
- gitter:=tGitter.create(self,round(breite/deltaX)+1,deltaX,kvs,teilchen,lichter,zeitverfahren,prot,'gitter',2*round(pXMax/dPX)+1,2*round(pYMax/dPY)+1,2*round(pZMax/dPZ)+1,dPX,dPY,dPZ);
+ gitter:=tGitter.create(self,round(breite/deltaX)+1,deltaX,kvs,teilchen,lichter,zeitverfahren,prot,'gitter',2*round(pXMax/dPX)+1,2*round(pYMax/dPY)+1,dPX,dPY);
for i:=0 to length(teilchen)-1 do
teilchen[i].free;
setlength(teilchen,0);
diff --git a/Plasmapropagation.lps b/Plasmapropagation.lps
index b7f8821..adb0f8b 100644
--- a/Plasmapropagation.lps
+++ b/Plasmapropagation.lps
@@ -17,12 +17,12 @@
<IsPartOfProject Value="True"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="1437"/>
- <CursorPos X="40" Y="1467"/>
- <FoldState Value=" T3m00/5 pjdlc0A[94Cja0B413 piXlT0E115]BckQ0a211122 p0v70G011 T0!QPc07121N"/>
- <UsageCount Value="154"/>
+ <TopLine Value="1376"/>
+ <CursorPos Y="1396"/>
+ <FoldState Value=" T3m00/5 pjdlc0A41212133131112 p0tP0601221[C4a07 T0\QPc07]dL"/>
+ <UsageCount Value="155"/>
<Bookmarks Count="1">
- <Item0 Y="1096"/>
+ <Item0 Y="1065"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit1>
@@ -31,14 +31,14 @@
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<CursorPos X="15" Y="46"/>
- <UsageCount Value="116"/>
+ <UsageCount Value="117"/>
</Unit2>
<Unit3>
<Filename Value="input.plap"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="4"/>
<CursorPos X="44" Y="23"/>
- <UsageCount Value="115"/>
+ <UsageCount Value="116"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit3>
@@ -48,7 +48,7 @@
<EditorIndex Value="3"/>
<TopLine Value="51"/>
<CursorPos X="62" Y="77"/>
- <UsageCount Value="63"/>
+ <UsageCount Value="64"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
@@ -56,7 +56,7 @@
<EditorIndex Value="5"/>
<TopLine Value="22"/>
<CursorPos X="36" Y="29"/>
- <UsageCount Value="91"/>
+ <UsageCount Value="92"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit5>
@@ -147,130 +147,130 @@
<EditorIndex Value="2"/>
<TopLine Value="89"/>
<CursorPos X="77" Y="102"/>
- <UsageCount Value="26"/>
+ <UsageCount Value="27"/>
<Loaded Value="True"/>
</Unit18>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="Physikunit.pas"/>
- <Caret Line="954" Column="69" TopLine="934"/>
+ <Caret Line="33" Column="34"/>
</Position1>
<Position2>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1237" Column="13" TopLine="1202"/>
+ <Caret Line="4" Column="37"/>
</Position2>
<Position3>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1146" Column="30" TopLine="968"/>
+ <Caret Line="207" Column="20" TopLine="184"/>
</Position3>
<Position4>
<Filename Value="Physikunit.pas"/>
- <Caret Line="202" Column="46" TopLine="178"/>
+ <Caret Line="601" TopLine="561"/>
</Position4>
<Position5>
<Filename Value="Physikunit.pas"/>
- <Caret Line="125" Column="25" TopLine="98"/>
+ <Caret Line="100" Column="41" TopLine="75"/>
</Position5>
<Position6>
<Filename Value="Physikunit.pas"/>
- <Caret Line="705" Column="38" TopLine="641"/>
+ <Caret Line="523" Column="82" TopLine="521"/>
</Position6>
<Position7>
<Filename Value="Physikunit.pas"/>
- <Caret Line="715" Column="17" TopLine="691"/>
+ <Caret Line="91" Column="73" TopLine="78"/>
</Position7>
<Position8>
<Filename Value="Physikunit.pas"/>
- <Caret Line="742" Column="23" TopLine="724"/>
+ <Caret Line="597" Column="78" TopLine="559"/>
</Position8>
<Position9>
<Filename Value="Physikunit.pas"/>
- <Caret Line="941" Column="26" TopLine="851"/>
+ <Caret Line="646" TopLine="602"/>
</Position9>
<Position10>
<Filename Value="Physikunit.pas"/>
- <Caret Line="125" TopLine="114"/>
+ <Caret Line="656" TopLine="628"/>
</Position10>
<Position11>
<Filename Value="Physikunit.pas"/>
- <Caret Line="725" Column="41" TopLine="692"/>
+ <Caret Line="707" Column="74" TopLine="687"/>
</Position11>
<Position12>
<Filename Value="Physikunit.pas"/>
- <Caret Line="24" Column="10" TopLine="24"/>
+ <Caret Line="80" TopLine="80"/>
</Position12>
<Position13>
<Filename Value="Physikunit.pas"/>
- <Caret Line="203" Column="50" TopLine="183"/>
+ <Caret Line="685" Column="31" TopLine="654"/>
</Position13>
<Position14>
<Filename Value="Physikunit.pas"/>
- <Caret Line="721" TopLine="692"/>
+ <Caret Line="123" Column="111" TopLine="97"/>
</Position14>
<Position15>
<Filename Value="Physikunit.pas"/>
- <Caret Line="734" TopLine="714"/>
+ <Caret Line="700" Column="60" TopLine="669"/>
</Position15>
<Position16>
<Filename Value="Physikunit.pas"/>
- <Caret Line="731" Column="53" TopLine="714"/>
+ <Caret Line="746" TopLine="658"/>
</Position16>
<Position17>
<Filename Value="Physikunit.pas"/>
- <Caret Line="724" Column="22" TopLine="692"/>
+ <Caret Line="759" Column="93" TopLine="739"/>
</Position17>
<Position18>
<Filename Value="Physikunit.pas"/>
- <Caret Line="124" Column="38" TopLine="89"/>
+ <Caret Line="772" TopLine="748"/>
</Position18>
<Position19>
<Filename Value="Physikunit.pas"/>
- <Caret Line="125" Column="38" TopLine="125"/>
+ <Caret Line="781" Column="102" TopLine="761"/>
</Position19>
<Position20>
<Filename Value="Physikunit.pas"/>
- <Caret Line="957" Column="38" TopLine="925"/>
+ <Caret Line="794" Column="8" TopLine="784"/>
</Position20>
<Position21>
<Filename Value="Physikunit.pas"/>
- <Caret Line="641" TopLine="560"/>
+ <Caret Line="830" Column="37" TopLine="810"/>
</Position21>
<Position22>
<Filename Value="Physikunit.pas"/>
- <Caret Line="101" TopLine="77"/>
+ <Caret Line="841" Column="20" TopLine="821"/>
</Position22>
<Position23>
<Filename Value="Physikunit.pas"/>
- <Caret Line="100" Column="15" TopLine="80"/>
+ <Caret Line="873" Column="149" TopLine="868"/>
</Position23>
<Position24>
<Filename Value="Physikunit.pas"/>
- <Caret Line="661" Column="87" TopLine="520"/>
+ <Caret Line="152" Column="127" TopLine="132"/>
</Position24>
<Position25>
<Filename Value="Physikunit.pas"/>
- <Caret Line="641" Column="52" TopLine="521"/>
+ <Caret Line="890" Column="83" TopLine="870"/>
</Position25>
<Position26>
<Filename Value="Physikunit.pas"/>
- <Caret Line="100" Column="62" TopLine="80"/>
+ <Caret Line="930" Column="24" TopLine="910"/>
</Position26>
<Position27>
<Filename Value="Physikunit.pas"/>
- <Caret Line="802" Column="120" TopLine="765"/>
+ <Caret Line="977" TopLine="966"/>
</Position27>
<Position28>
<Filename Value="Physikunit.pas"/>
- <Caret Line="794" Column="66" TopLine="765"/>
+ <Caret Line="177" Column="243" TopLine="157"/>
</Position28>
<Position29>
<Filename Value="Physikunit.pas"/>
- <Caret Line="128" Column="59" TopLine="110"/>
+ <Caret Line="1127" Column="38" TopLine="1100"/>
</Position29>
<Position30>
<Filename Value="Physikunit.pas"/>
- <Caret Line="995" Column="49" TopLine="1078"/>
+ <Caret Line="1161" TopLine="1139"/>
</Position30>
</JumpHistory>
</ProjectSession>