summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2015-08-04 12:57:51 +0200
committerErich Eckner <git@eckner.net>2015-08-04 12:57:51 +0200
commit3012d4ee51fa18d9dae7d54d0ee9fab3f0bb847c (patch)
tree9b193de32b872ee3d0ac137326594551b0aacc67
parentceb028a0bf10eb6a837f6c76b593d030c055e858 (diff)
downloadPlasmapropagation-3012d4ee51fa18d9dae7d54d0ee9fab3f0bb847c.tar.xz
Untergrenze fuer Zeitschritt konfigurierbar gemacht
-rw-r--r--Physikunit.pas724
-rw-r--r--Plasmapropagation.lps152
-rw-r--r--input.plap12
-rw-r--r--rk108.inc32
-rw-r--r--rk1210.inc48
-rw-r--r--rk1412.inc68
-rwxr-xr-xrktopas2
7 files changed, 252 insertions, 786 deletions
diff --git a/Physikunit.pas b/Physikunit.pas
index 2c6b8ce..25a84a5 100644
--- a/Physikunit.pas
+++ b/Physikunit.pas
@@ -23,12 +23,14 @@ type
efDPhiDX
);
tMaterieFeldInhalt = (
- mfN,mfDPsiDX,
- mfP,mfPX,mfPY,mfPZ,
- mfGamma,mfIGamma
+ mfN,mfDPsiDX, // Teilchendichte, Geschwindigkeitsdichte
+ mfRho, // Ladungsdichte
+ mfP,mfPX,mfPY,mfPZ, // Impuls
+ mfGamma,mfIGamma // rel. Gamma-Faktor
);
tGitter = class;
+ tFelder = class;
{ tAusgabeDatei }
@@ -70,6 +72,9 @@ type
{ tWertePunkt }
tWertePunkt = class(tObject) // repräsentiert alle Werte eines Punktes im Gitter und deren Zeitableitungen
+ private
+ besitzer: tFelder;
+ public
matWerte: array of array[tMaterieFeldInhalt,boolean] of extended;
// Materiefelder (getrennt für verschiedene Teilchenspezies) und deren Zeitableitungen
emWerte: array[tEMFeldInhalt,boolean] of extended;
@@ -77,11 +82,12 @@ type
// A, p[xyz]? und i?Gamma haben keine sinnvolle Ableitung hier!
lN,rN: tWertePunkt;
- constructor create(linkerNachbar: tWertePunkt; materien: longint);
+ constructor create(linkerNachbar: tWertePunkt; derBesitzer: tFelder);
destructor destroy; override;
procedure berechneGammaUndP;
procedure berechneNAbleitung(iDX,pDNMax: extended); overload;
procedure berechneNAbleitung(iDX,pDNMax: extended; rechts: boolean); overload;
+ procedure berechneRhoAbleitung;
procedure berechneAbleitungen(dX,iDX: extended);
procedure liKo(in1,in2: tWertePunkt; fak2: extended); overload; // Werte werden auf (in1 + \sum_i faki * ini') gesetzt
procedure liKo(in1,in2,in3: tWertePunkt; fak2,fak3: extended); overload;
@@ -152,11 +158,11 @@ type
private
prot: tProtokollant;
zeitverfahren: tZeitverfahren;
- pDNMaxDynamisch: boolean;
+ pDNMaxDynamisch,abbruch: boolean;
dX,iDX,pDNMax,dTMaximum,xl,t: extended;
kvs: tKnownValues;
procedure diffusionsTermAnpassen(pro: tProtokollant);
- function pruefeMaxDT(aF: longint; var mDT,dT: extended): boolean; // wurde verkleinert?
+ function pruefeMaxDT(aF: longint; var mDT,dT: extended; dTMin: extended): boolean; // wurde verkleinert?
public
aktuelleFelder: longint;
@@ -164,7 +170,7 @@ type
constructor create(size: longint; deltaT,deltaX,pDNMa: extended; bekannteWerte: tKnownValues; teilchen: array of tTeilchenSpezies; lichter: tMyStringlist; zv: tZeitverfahren; protokollant: tProtokollant; name: string);
destructor destroy; override;
- procedure iteriereSchritt(var dT: extended);
+ procedure iteriereSchritt(var dT: extended; dTMin: extended);
function dumpErhaltungsgroessen: boolean;
procedure berechne(was: char; teilchen: longint);
end;
@@ -175,7 +181,7 @@ type
private
prot: tProtokollant;
gitter: tGitter;
- dT,tEnde,sT,sDT,sDX: extended;
+ dT,tEnde,sT,sDT,sDX,dTMin: extended;
fortschrittsAnzeige: boolean;
ausgabeDateien: array of tAusgabeDatei;
public
@@ -194,7 +200,7 @@ const
'A','AX','AY','AZ','DAXDT','DAYDT','DAZDT','DPHIDX'
);
matFeldNamen: array[tMaterieFeldInhalt] of string = (
- 'N','DPSIDX','P','PX','PY','PZ','GAMMA','IGAMMA'
+ 'N','DPSIDX','RHO','P','PX','PY','PZ','GAMMA','IGAMMA'
);
var
@@ -458,7 +464,7 @@ end;
{ tWertePunkt }
-constructor tWertePunkt.create(linkerNachbar: tWertePunkt; materien: longint);
+constructor tWertePunkt.create(linkerNachbar: tWertePunkt; derBesitzer: tFelder);
var
emF: tEMFeldInhalt;
maF: tMaterieFeldInhalt;
@@ -466,15 +472,13 @@ var
i: longint;
begin
inherited create;
+ besitzer:=derBesitzer;
fillchar(matWerte,sizeof(matWerte),#0);
- setlength(matWerte,materien);
- for i:=0 to length(matWerte)-1 do begin
+ setlength(matWerte,length(besitzer.spezLadungen));
+ for i:=0 to length(matWerte)-1 do
for maF:=low(tMaterieFeldInhalt) to high(tMaterieFeldInhalt) do
for abl:=false to true do
matWerte[i,maF,abl]:=0;
- matWerte[i,mfGamma,false]:=0;
- matWerte[i,mfIGamma,false]:=0;
- end;
for emF:=low(tEMFeldInhalt) to high(tEMFeldInhalt) do
for abl:=false to true do
emWerte[emF,abl]:=0;
@@ -499,9 +503,9 @@ var
i: longint;
begin
for i:=0 to length(matWerte)-1 do begin
- matWerte[i,mfPX,false]:= emWerte[efAX,false] + matWerte[i,mfDPsiDX,false];
- matWerte[i,mfPY,false]:= emWerte[efAY,false];
- matWerte[i,mfPZ,false]:= emWerte[efAZ,false];
+ matWerte[i,mfPX,false]:= besitzer.spezLadungen[i] * emWerte[efAX,false] + matWerte[i,mfDPsiDX,false];
+ matWerte[i,mfPY,false]:= besitzer.spezLadungen[i] * emWerte[efAY,false];
+ matWerte[i,mfPZ,false]:= besitzer.spezLadungen[i] * emWerte[efAZ,false];
matWerte[i,mfGamma,false]:=
sqrt(
@@ -535,7 +539,7 @@ begin
+ lN.matWerte[i,mfN,false] * lN.matWerte[i,mfIGamma,false] * (pDNMax + lN.matWerte[i,mfPX,false])
- matWerte[i,mfN,false] * matWerte[i,mfIGamma,false] * 2 * pDNMax) * iDX/2;
// Der zweite Summand entspricht (in etwa) einer thermischen Verschmierung
- // und soll die numerische Stabilität bis zu p * dn/dx / n von 2*pDNMax gewährleisten.
+ // und soll die numerische Stabilität bis zu p * d(ln n)/dx von pDNMax gewährleisten.
// Es handelt sich um einen Diffusionsterm dn/dt = alpha * Laplace n mit
// alpha = pDNMax * dX
end;
@@ -560,6 +564,16 @@ begin
end
end;
+procedure tWertePunkt.berechneRhoAbleitung;
+var
+ i: longint;
+begin
+ for i:=0 to length(matWerte)-1 do
+ // dRho/dt = dN/dT * q_spez
+ matWerte[i,mfRho,true]:=
+ besitzer.spezLadungen[i]*matWerte[i,mfN,true];
+end;
+
procedure tWertePunkt.berechneAbleitungen(dX,iDX: extended); // Zeitableitungen berechnen
var
i: longint;
@@ -567,17 +581,17 @@ begin
// d2Psi/dxdt = dPhi/dx - dGamma/dx
for i:=0 to length(matWerte)-1 do
matWerte[i,mfDPsiDX,true]:=
- emWerte[efDPhiDX,false]
+ besitzer.spezLadungen[i] * emWerte[efDPhiDX,false]
- (rN.matWerte[i,mfGamma,false] - lN.matWerte[i,mfGamma,false]) * iDX/2;
- // d3Phi/dx2dt = dn/dt ... hier muss integriert werden:
- // d2Phi/dxdt = d2Phi/dxdt(x- deltax) + <dn/dt> * deltax
+ // d3Phi/dx2dt = dRho/dt ... hier muss integriert werden:
+ // d2Phi/dxdt = d2Phi/dxdt(x- deltax) + <dRho/dt> * deltax
emWerte[efDPhiDX,true]:=
lN.emWerte[efDPhiDX,true];
for i:=0 to length(matWerte)-1 do
emWerte[efDPhiDX,true]:=
emWerte[efDPhiDX,true]
- + (lN.matWerte[i,mfN,true] + matWerte[i,mfN,true])*dX/2;
+ + (lN.matWerte[i,mfRho,true] + matWerte[i,mfRho,true])*dX/2;
// d2A/dt2 = Laplace(A) - Nabla(phi) ...
emWerte[efDAXDT,true]:=
@@ -587,17 +601,17 @@ begin
( rN.emWerte[efAY,false] - 2*emWerte[efAY,false] + lN.emWerte[efAY,false] )*sqr(iDX);
emWerte[efDAZDT,true]:=
( rN.emWerte[efAZ,false] - 2*emWerte[efAZ,false] + lN.emWerte[efAZ,false] )*sqr(iDX);
- // ... - n/gamma p
+ // ... - Rho/gamma p
for i:=0 to length(matWerte)-1 do begin
emWerte[efDAXDT,true]:=
emWerte[efDAXDT,true]
- - (matWerte[i,mfN,false] * matWerte[i,mfIGamma,false] * matWerte[i,mfPX,false]);
+ - (matWerte[i,mfRho,false] * matWerte[i,mfIGamma,false] * matWerte[i,mfPX,false]);
emWerte[efDAYDT,true]:=
emWerte[efDAYDT,true]
- - (matWerte[i,mfN,false] * matWerte[i,mfIGamma,false] * matWerte[i,mfPY,false]);
+ - (matWerte[i,mfRho,false] * matWerte[i,mfIGamma,false] * matWerte[i,mfPY,false]);
emWerte[efDAZDT,true]:=
emWerte[efDAZDT,true]
- - (matWerte[i,mfN,false] * matWerte[i,mfIGamma,false] * matWerte[i,mfPZ,false]);
+ - (matWerte[i,mfRho,false] * matWerte[i,mfIGamma,false] * matWerte[i,mfPZ,false]);
end;
// dA/dt = dA/dt
@@ -617,7 +631,6 @@ begin
result:=min(result,-matWerte[i,mfN,false]/matWerte[i,mfN,true]);
end;
-
{ linearkombinationsspezifische Methoden von tWertePunkt und tFelder }
{$INCLUDE linearkombination.inc}
@@ -678,12 +691,13 @@ 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]:=tWertePunkt.create(nil,matAnz);
+ inhalt[0]:=tWertePunkt.create(nil,self);
for i:=1 to length(inhalt)-1 do
- inhalt[i]:=tWertePunkt.create(inhalt[i-1],matAnz);
+ inhalt[i]:=tWertePunkt.create(inhalt[i-1],self);
for i:=0 to length(inhalt)-1 do
for j:=0 to length(teilchen)-1 do begin
inhalt[i].matWerte[j,mfN,false]:=teilchen[j].gibDichte(par.xl+(i-2)*par.dX,parent.kvs);
+ inhalt[i].matWerte[j,mfRho,false]:=teilchen[j].spezifischeLadung * inhalt[i].matWerte[j,mfN,false];
inhalt[i].matWerte[j,mfDPsiDX,false]:=0;
end;
for rechts:=false to true do begin
@@ -755,6 +769,9 @@ begin
inhalt[1].berechneNAbleitung(iDX,pDNMax,false);
inhalt[length(inhalt)-2].berechneNAbleitung(iDX,pDNMax,true);
+ for i:=1 to length(inhalt)-1 do
+ inhalt[i].berechneRhoAbleitung;
+
setzeRaender(dT,iDX,iDT);
for i:=1 to length(inhalt)-2 do
@@ -777,7 +794,8 @@ var
i: longint;
begin
inherited create;
- zeitverfahren:=ZV;
+ abbruch:=false;
+ zeitverfahren:=zv;
kvs:=bekannteWerte;
prot:=tProtokollant.create(protokollant,name);
dTMaximum:=deltaT;
@@ -849,7 +867,7 @@ begin
end;
end;
-function tGitter.pruefeMaxDT(aF: longint; var mDT,dT: extended): boolean; // wurde verkleinert?
+function tGitter.pruefeMaxDT(aF: longint; var mDT,dT: extended; dTMin: extended): boolean; // wurde verkleinert?
begin
mDT:=min(mDT,felders[aF].maxDT);
// das maximale dT, welches bei den Momentanen Ableitungen nicht zu
@@ -860,17 +878,18 @@ begin
dT:=mDT/4; // dann machen wir ihn doch kleiner!
{$IFDEF Zeitschrittueberwachung}
prot.schreibe('pruefeMaxDT: dT -> '+floattostr(dT));
- if dT<1E-30 then begin
- prot.schreibe('pruefeMaxDT: Zeitschritt geht gegen Null (ist bereits '+floattostr(dT)+' < 10^-30) - irgendwas scheint grundsätzlich kaputt zu sein!',true);
- prot.destroyall;
- halt(1);
+ if dT<dTMin then begin
+ prot.schreibe('pruefeMaxDT: Zeitschritt geht gegen Null (ist bereits '+floattostr(dT)+' < '+floattostr(dTMin)+') - irgendwas scheint grundsätzlich kaputt zu sein!',true);
+ abbruch:=true;
+// prot.destroyall;
+// halt(1);
end;
{$ENDIF}
exit;
end;
end;
-procedure tGitter.iteriereSchritt(var dT: extended);
+procedure tGitter.iteriereSchritt(var dT: extended; dTMin: extended);
var i: longint;
{$IFDEF Zeitschrittueberwachung}
j: longint;
@@ -880,6 +899,10 @@ var i: longint;
{$ENDIF}
iDT,mDT: extended;
begin
+ if abbruch then begin
+ t:=t+dT;
+ exit;
+ end;
kvs.add('t',t);
diffusionsTermAnpassen(prot);
@@ -889,7 +912,7 @@ begin
iDT:=1/dT;
felders[aktuelleFelder].berechneAbleitungen(dT,dX,iDT,iDX,pDNMax); // y' = y'(t,y(t))
- if pruefeMaxDT(aktuelleFelder,mDT,dT) then
+ if pruefeMaxDT(aktuelleFelder,mDT,dT,dTMin) then
continue;
case zeitverfahren of
@@ -900,19 +923,19 @@ begin
felders[2].liKo(felders[aktuelleFelder],felders[aktuelleFelder],dT/3); // ya = y(t) + y' dt/3
felders[2].berechneAbleitungen(dT/3,dX,iDT,iDX,pDNMax); // ya' = y'(t+dt/3,ya)
- if pruefeMaxDT(2,mDT,dT) then
+ if pruefeMaxDT(2,mDT,dT,dTMin) then
continue;
felders[3].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[2],-dT/3,dT); // yb = y(t) - y' dt/3 + ya' dt
felders[3].berechneAbleitungen(dT/3,dX,iDT,iDX,pDNMax); // yb' = y'(t+2dt/3,yb)
- if pruefeMaxDT(3,mDT,dT) then
+ if pruefeMaxDT(3,mDT,dT,dTMin) then
continue;
felders[4].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[2],felders[3],dT,-dT,dT); // yc = y(t) + a' dt - ya' dt + yb' dt
felders[4].berechneAbleitungen(dT/3,dX,iDT,iDX,pDNMax); // yc' = y'(t+dt,yc)
- if pruefeMaxDT(4,mDT,dT) then
+ if pruefeMaxDT(4,mDT,dT,dTMin) then
continue;
felders[1-aktuelleFelder].liKo(
@@ -932,19 +955,19 @@ begin
felders[2].liKo(felders[aktuelleFelder],felders[aktuelleFelder],dT/2); // ya = y(t) + y' dt/2
felders[2].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax); // ya' = y'(t+dt/2,ya)
- if pruefeMaxDT(2,mDT,dT) then
+ if pruefeMaxDT(2,mDT,dT,dTMin) then
continue;
felders[3].liKo(felders[aktuelleFelder],felders[2],dT/2); // yb = y(t) + ya' dt/2
felders[3].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax); // yb' = y'(t+dt/2,yb)
- if pruefeMaxDT(3,mDT,dT) then
+ if pruefeMaxDT(3,mDT,dT,dTMin) then
continue;
felders[4].liKo(felders[aktuelleFelder],felders[3],dT); // yc = y(t) + yb' dt
felders[4].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax); // yc' = y'(t+dt,yc)
- if pruefeMaxDT(4,mDT,dT) then
+ if pruefeMaxDT(4,mDT,dT,dTMin) then
continue;
felders[1-aktuelleFelder].liKo(
@@ -961,589 +984,9 @@ begin
end;
zfRungeKuttaZehn: begin // Quelle: http://sce.uhcl.edu/rungekutta/rk108.txt
{$INCLUDE rk108.inc}
-(* felders[2].liKo(felders[aktuelleFelder],felders[aktuelleFelder],dT*0.1);
- felders[2].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(2,mDT,dT) then
- continue;
-
- felders[3].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[2],
- -0.915176561375291440520015019275342154318951387664369720564660 * dT,
- 1.45453440217827322805250021715664459117622483736537873607016 * dT);
- felders[3].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(3,mDT,dT) then
- continue;
-
- felders[4].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[3],
- 0.202259190301118170324681949205488413821477543637878380814562 * dT,
- 0.606777570903354510974045847616465241464432630913635142443687 * dT);
- felders[4].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(4,mDT,dT) then
- continue;
-
- felders[5].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[3],felders[4],
- 0.184024714708643575149100693471120664216774047979591417844635 * dT,
- 0.197966831227192369068141770510388793370637287463360401555746 * dT,
- -0.0729547847313632629185146671595558023015011608914382961421311* dT);
- felders[5].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(5,mDT,dT) then
- continue;
-
- felders[6].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[4],felders[5],
- 0.0879007340206681337319777094132125475918886824944548534041378* dT,
- 0.410459702520260645318174895920453426088035325902848695210406 * dT,
- 0.482713753678866489204726942976896106809132737721421333413261 * dT);
- felders[6].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(6,mDT,dT) then
- continue;
-
- felders[7].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[4],felders[5],felders[6],
- 0.0859700504902460302188480225945808401411132615636600222593880* dT,
- 0.330885963040722183948884057658753173648240154838402033448632 * dT,
- 0.489662957309450192844507011135898201178015478433790097210790 * dT,
- -0.0731856375070850736789057580558988816340355615025188195854775* dT);
- felders[7].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(7,mDT,dT) then
- continue;
-
- felders[8].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[5],felders[6],felders[7],
- 0.120930449125333720660378854927668953958938996999703678812621 * dT,
- 0.260124675758295622809007617838335174368108756484693361887839 * dT,
- 0.0325402621549091330158899334391231259332716675992700000776101* dT,
- -0.0595780211817361001560122202563305121444953672762930724538856* dT);
- felders[8].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(8,mDT,dT) then
- continue;
-
- felders[9].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[6],felders[7],felders[8],
- 0.110854379580391483508936171010218441909425780168656559807038 * dT,
- -0.0605761488255005587620924953655516875526344415354339234619466* dT,
- 0.321763705601778390100898799049878904081404368603077129251110 * dT,
- 0.510485725608063031577759012285123416744672137031752354067590 * dT);
- felders[9].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(9,mDT,dT) then
- continue;
-
- felders[10].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[6],felders[7],felders[8],felders[9],
- 0.112054414752879004829715002761802363003717611158172229329393 * dT,
- -0.144942775902865915672349828340980777181668499748506838876185 * dT,
- -0.333269719096256706589705211415746871709467423992115497968724 * dT,
- 0.499269229556880061353316843969978567860276816592673201240332 * dT,
- 0.509504608929686104236098690045386253986643232352989602185060 * dT);
- felders[10].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(10,mDT,dT) then
- continue;
-
- felders[11].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[6],felders[7],felders[8],felders[9],felders[10],
- 0.113976783964185986138004186736901163890724752541486831640341 * dT,
- -0.0768813364203356938586214289120895270821349023390922987406384* dT,
- 0.239527360324390649107711455271882373019741311201004119339563 * dT,
- 0.397774662368094639047830462488952104564716416343454639902613 * dT,
- 0.0107558956873607455550609147441477450257136782823280838547024* dT,
- -0.327769124164018874147061087350233395378262992392394071906457 * dT);
- felders[11].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(11,mDT,dT) then
- continue;
-
- felders[12].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[6],felders[7],felders[8],felders[9],felders[10],felders[11],
- 0.0798314528280196046351426864486400322758737630423413945356284* dT,
- -0.0520329686800603076514949887612959068721311443881683526937298* dT,
- -0.0576954146168548881732784355283433509066159287152968723021864* dT,
- 0.194781915712104164976306262147382871156142921354409364738090 * dT,
- 0.145384923188325069727524825977071194859203467568236523866582 * dT,
- -0.0782942710351670777553986729725692447252077047239160551335016* dT,
- -0.114503299361098912184303164290554670970133218405658122674674 * dT);
- felders[12].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(12,mDT,dT) then
- continue;
-
- felders[13].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[4],felders[5],felders[6],felders[7],felders[8],felders[9],felders[10],felders[11],felders[12],
- 0.985115610164857280120041500306517278413646677314195559520529 * dT,
- 0.330885963040722183948884057658753173648240154838402033448632 * dT,
- 0.489662957309450192844507011135898201178015478433790097210790 * dT,
- -1.37896486574843567582112720930751902353904327148559471526397 * dT,
- -0.861164195027635666673916999665534573351026060987427093314412 * dT,
- 5.78428813637537220022999785486578436006872789689499172601856 * dT,
- 3.28807761985103566890460615937314805477268252903342356581925 * dT,
- -2.38633905093136384013422325215527866148401465975954104585807 * dT,
- -3.25479342483643918654589367587788726747711504674780680269911 * dT,
- -2.16343541686422982353954211300054820889678036420109999154887 * dT);
- felders[13].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(13,mDT,dT) then
- continue;
-
- felders[14].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[3],felders[4],felders[6],felders[7],felders[8],felders[9],felders[10],felders[11],felders[12],felders[13],
- 0.895080295771632891049613132336585138148156279241561345991710 * dT,
- 0.197966831227192369068141770510388793370637287463360401555746 * dT,
- -0.0729547847313632629185146671595558023015011608914382961421311* dT,
- -0.851236239662007619739049371445966793289359722875702227166105 * dT,
- 0.398320112318533301719718614174373643336480918103773904231856 * dT,
- 3.63937263181035606029412920047090044132027387893977804176229 * dT,
- 1.54822877039830322365301663075174564919981736348973496313065 * dT,
- -2.12221714704053716026062427460427261025318461146260124401561 * dT,
- -1.58350398545326172713384349625753212757269188934434237975291 * dT,
- -1.71561608285936264922031819751349098912615880827551992973034 * dT,
- -0.0244036405750127452135415444412216875465593598370910566069132* dT);
- felders[14].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(14,mDT,dT) then
- continue;
-
- felders[15].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[2],felders[5],felders[7],felders[13],felders[14],
- -0.915176561375291440520015019275342154318951387664369720564660 * dT,
- 1.45453440217827322805250021715664459117622483736537873607016 * dT,
- -0.777333643644968233538931228575302137803351053629547286334469 * dT,
- -0.0910895662155176069593203555807484200111889091770101799647985* dT,
- 0.0910895662155176069593203555807484200111889091770101799647985* dT,
- 0.777333643644968233538931228575302137803351053629547286334469 * dT);
- felders[15].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(15,mDT,dT) then
- continue;
-
- felders[16].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[3],felders[15],
- 0.1 * dT,
- -0.157178665799771163367058998273128921867183754126709419409654 * dT,
- 0.157178665799771163367058998273128921867183754126709419409654 * dT);
- felders[16].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(16,mDT,dT) then
- continue;
-
- felders[17].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[2],felders[3],felders[5],felders[6],felders[7],felders[8],felders[9],
- felders[10],felders[11],felders[12],felders[13],felders[14],felders[15],felders[16],
- 0.181781300700095283888472062582262379650443831463199521664945 * dT,
- 0.675 * dT,
- 0.342758159847189839942220553413850871742338734703958919937260 * dT,
- 0.259111214548322744512977076191767379267783684543182428778156 * dT,
- -0.358278966717952089048961276721979397739750634673268802484271 * dT,
- -1.04594895940883306095050068756409905131588123172378489286080 * dT,
- 0.930327845415626983292300564432428777137601651182965794680397 * dT,
- 1.77950959431708102446142106794824453926275743243327790536000 * dT,
- 0.1 * dT,
- -0.282547569539044081612477785222287276408489375976211189952877 * dT,
- -0.159327350119972549169261984373485859278031542127551931461821 * dT,
- -0.145515894647001510860991961081084111308650130578626404945571 * dT,
- -0.259111214548322744512977076191767379267783684543182428778156 * dT,
- -0.342758159847189839942220553413850871742338734703958919937260 * dT,
- -0.675 * dT);
- felders[17].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(17,mDT,dT) then
- continue;
-
- felders[1-aktuelleFelder].liKo(
- felders[aktuelleFelder],
- felders[aktuelleFelder],
- felders[2],
- felders[3],
- felders[5],
- felders[7],
- felders[9],
- felders[10],
- felders[11],
- felders[12],
- felders[13],
- felders[14],
- felders[15],
- felders[16],
- felders[17],
- dT/30,
- dT/40,
- dT/30,
- dT/20,
- dT/25,
- 0.189237478148923490158306404106012326238162346948625830327194 * dT,
- 0.277429188517743176508360262560654340428504319718040836339472 * dT,
- 0.277429188517743176508360262560654340428504319718040836339472 * dT,
- 0.189237478148923490158306404106012326238162346948625830327194 * dT,
- -dT/25,
- -dT/20,
- -dT/30,
- -dT/40,
- -dT/30
- ); *)
end;
zfRungeKuttaZwoelf: begin // Quelle: http://sce.uhcl.edu/rungekutta/rk1210.txt
{$INCLUDE rk1210.inc}
- (*
- felders[2].liKo(felders[aktuelleFelder],felders[aktuelleFelder],dT*0.2);
- felders[2].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(2,mDT,dT) then
- continue;
-
- felders[3].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[2],
- -0.216049382716049382716049382716049382716049382716049382716049 * dT,
- 0.771604938271604938271604938271604938271604938271604938271605 * dT);
- felders[3].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(3,mDT,dT) then
- continue;
-
- felders[4].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[3],
- dT/4.8,
- 0.625 * dT);
- felders[4].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(4,mDT,dT) then
- continue;
-
- felders[5].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[3],felders[4],
- 0.193333333333333333333333333333333333333333333333333333333333 * dT,
- 0.22 * dT,
- -0.08 * dT);
- felders[5].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(5,mDT,dT) then
- continue;
-
- felders[6].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[4],felders[5],
- 0.1 * dT,
- 0.4 * dT,
- 0.5 * dT);
- felders[6].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(6,mDT,dT) then
- continue;
-
- felders[7].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[4],felders[5],felders[6],
- 0.103364471650010477570395435690481791543342708330349879244197 * dT,
- 0.124053094528946761061581889237115328211074784955180298044074 * dT,
- 0.483171167561032899288836480451962508724109257517289177302380 * dT,
- -0.0387530245694763252085681443767620580395733302341368038804290* dT);
- felders[7].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(7,mDT,dT) then
- continue;
-
- felders[8].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[5],felders[6],felders[7],
- 0.124038261431833324081904585980175168140024670698633612292480 * dT,
- 0.217050632197958486317846256953159942875916353757734167684657 * dT,
- 0.0137455792075966759812907801835048190594443990939408530842918* dT,
- -0.0661095317267682844455831341498149531672668252085016565917546* dT);
- felders[8].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(8,mDT,dT) then
- continue;
-
- felders[9].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[6],felders[7],felders[8],
- 0.0914774894856882983144991846980432197088832099976660100090486 * dT,
- -0.00544348523717469689965754944144838611346156873847009178068318* dT,
- 0.0680716801688453518578515120895103863112751730758794372203952 * dT,
- 0.408394315582641046727306852653894780093303185664924644551239 * dT);
- felders[9].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(9,mDT,dT) then
- continue;
-
- felders[10].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[6],felders[7],felders[8],felders[9],
- 0.0890013652502551018954509355423841780143232697403434118692699 * dT,
- 0.00499528226645532360197793408420692800405891149406814091955810* dT,
- 0.397918238819828997341739603001347156083435060931424970826304 * dT,
- 0.427930210752576611068192608300897981558240730580396406312359 * dT,
- -0.0865117637557827005740277475955029103267246394128995965941585 * dT);
- felders[10].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(10,mDT,dT) then
- continue;
-
- felders[11].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[6],felders[7],felders[8],felders[9],felders[10],
- 0.0695087624134907543112693906409809822706021061685544615255758 * dT,
- 0.129146941900176461970759579482746551122871751501482634045487 * dT,
- 1.53073638102311295076342566143214939031177504112433874313011 * dT,
- 0.577874761129140052546751349454576715334892100418571882718036 * dT,
- -0.951294772321088980532340837388859453930924498799228648050949 * dT,
- -0.408276642965631951497484981519757463459627174520978426909934 * dT);
- felders[11].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(11,mDT,dT) then
- continue;
-
- felders[12].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[6],felders[7],felders[8],felders[9],felders[10],felders[11],
- 0.0444861403295135866269453507092463581620165501018684152933313 * dT,
- -0.00380476867056961731984232686574547203016331563626856065717964 * dT,
- 0.0106955064029624200721262602809059154469206077644957399593972 * dT,
- 0.0209616244499904333296674205928919920806734650660039898074652 * dT,
- -0.0233146023259321786648561431551978077665337818756053603898847 * dT,
- 0.00263265981064536974369934736325334761174975280887405725010964 * dT,
- 0.00315472768977025060103545855572111407955208306374459723959783 * dT);
- felders[12].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(12,mDT,dT) then
- continue;
-
- felders[13].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[9],felders[10],felders[11],felders[12],
- 0.0194588815119755475588801096525317761242073762016273186231215 * dT,
- 0.0000678512949171812509306121653452367476194364781259165332321534 * dT,
- -0.0000429795859049273623271005330230162343568863387724883603675550 * dT,
- 0.0000176358982260285155407485928953302139937553442829975734148981 * dT,
- 0.0653866627415027051009595231385181033549511358787382098351924 * dT);
- felders[13].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(13,mDT,dT) then
- continue;
-
- felders[14].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[9],felders[10],felders[11],felders[12],felders[13],
- 0.206836835664277105916828174798272361078909196043446411598231 * dT,
- 0.0166796067104156472828045866664696450306326505094792505215514 * dT,
- -0.00879501563200710214457024178249986591130234990219959208704979 * dT,
- 0.00346675455362463910824462315246379209427513654098596403637231 * dT,
- -0.861264460105717678161432562258351242030270498966891201799225 * dT,
- 0.908651882074050281096239478469262145034957129939256789178785 * dT);
- felders[14].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(14,mDT,dT) then
- continue;
-
- felders[15].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[9],felders[10],felders[11],felders[12],felders[13],felders[14],
- 0.0203926084654484010091511314676925686038504449562413004562382 * dT,
- 0.0869469392016685948675400555583947505833954460930940959577347 * dT,
- -0.0191649630410149842286436611791405053287170076602337673587681 * dT,
- 0.00655629159493663287364871573244244516034828755253746024098838 * dT,
- 0.0987476128127434780903798528674033899738924968006632201445462 * dT,
- 0.00535364695524996055083260173615567408717110247274021056118319 * dT,
- 0.301167864010967916837091303817051676920059229784957479998077 * dT);
- felders[15].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(15,mDT,dT) then
- continue;
-
- felders[16].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[9],felders[10],felders[11],felders[12],felders[13],felders[14],felders[15],
- 0.228410433917778099547115412893004398779136994596948545722283 * dT,
- -0.498707400793025250635016567442511512138603770959682292383042 * dT,
- 0.134841168335724478552596703792570104791700727205981058201689 * dT,
- -0.0387458244055834158439904226924029230935161059142806805674360 * dT,
- -1.27473257473474844240388430824908952380979292713250350199641 * dT,
- 1.43916364462877165201184452437038081875299303577911839630524 * dT,
- -0.214007467967990254219503540827349569639028092344812795499026 * dT,
- 0.958202417754430239892724139109781371059908874605153648768037 * dT);
- felders[16].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(16,mDT,dT) then
- continue;
-
- felders[17].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[9],felders[10],felders[11],felders[12],felders[13],felders[14],felders[15],felders[16],
- 2.00222477655974203614249646012506747121440306225711721209798 * dT,
- 2.06701809961524912091954656438138595825411859673341600679555 * dT,
- 0.623978136086139541957471279831494466155292316167021080663140 * dT,
- -0.0462283685500311430283203554129062069391947101880112723185773 * dT,
- -8.84973288362649614860075246727118949286604835457092701094630 * dT,
- 7.74257707850855976227437225791835589560188590785037197433615 * dT,
- -0.588358519250869210993353314127711745644125882130941202896436 * dT,
- -1.10683733362380649395704708016953056176195769617014899442903 * dT,
- -0.929529037579203999778397238291233214220788057511899747507074 * dT);
- felders[17].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(17,mDT,dT) then
- continue;
-
- felders[18].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[6],felders[7],felders[8],felders[9],
- felders[10],felders[11],felders[12],felders[13],felders[14],felders[15],felders[16],felders[17],
- 3.13789533412073442934451608989888796808161259330322100268310 * dT,
- 0.129146941900176461970759579482746551122871751501482634045487 * dT,
- 1.53073638102311295076342566143214939031177504112433874313011 * dT,
- 0.577874761129140052546751349454576715334892100418571882718036 * dT,
- 5.42088263055126683050056840891857421941300558851862156403363 * dT,
- 0.231546926034829304872663800877643660904880180835945693836936 * dT,
- 0.0759292995578913560162301311785251873561801342333194895292058 * dT,
- -12.3729973380186513287414553402595806591349822617535905976253 * dT,
- 9.85455883464769543935957209317369202080367765721777101906955 * dT,
- 0.0859111431370436529579357709052367772889980495122329601159540 * dT,
- -5.65242752862643921117182090081762761180392602644189218673969 * dT,
- -1.94300935242819610883833776782364287728724899124166920477873 * dT,
- -0.128352601849404542018428714319344620742146491335612353559923 * dT);
- felders[18].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(18,mDT,dT) then
- continue;
-
- felders[19].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[6],felders[7],felders[8],felders[9],
- felders[10],felders[11],felders[12],felders[13],felders[14],felders[15],felders[16],felders[17],felders[18],
- 1.38360054432196014878538118298167716825163268489922519995564 * dT,
- 0.00499528226645532360197793408420692800405891149406814091955810 * dT,
- 0.397918238819828997341739603001347156083435060931424970826304 * dT,
- 0.427930210752576611068192608300897981558240730580396406312359 * dT,
- -1.30299107424475770916551439123047573342071475998399645982146 * dT,
- 0.661292278669377029097112528107513072734573412294008071500699 * dT,
- -0.144559774306954349765969393688703463900585822441545655530145 * dT,
- -6.96576034731798203467853867461083919356792248105919255460819 * dT,
- 6.65808543235991748353408295542210450632193197576935120716437 * dT,
- -1.66997375108841486404695805725510845049807969199236227575796 * dT,
- 2.06413702318035263832289040301832647130604651223986452170089 * dT,
- -0.674743962644306471862958129570837723192079875998405058648892 * dT,
- -0.00115618834794939500490703608435907610059605754935305582045729 * dT,
- -0.00544057908677007389319819914241631024660726585015012485938593 * dT);
- felders[19].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(19,mDT,dT) then
- continue;
-
- felders[20].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[5],felders[6],felders[7],felders[9],
- felders[10],felders[11],felders[12],felders[13],felders[14],felders[15],felders[16],felders[17],felders[18],felders[19],
- 0.951236297048287669474637975894973552166903378983475425758226 * dT,
- 0.217050632197958486317846256953159942875916353757734167684657 * dT,
- 0.0137455792075966759812907801835048190594443990939408530842918 * dT,
- -0.0661095317267682844455831341498149531672668252085016565917546 * dT,
- 0.152281696736414447136604697040747131921486432699422112099617 * dT,
- -0.337741018357599840802300793133998004354643424457539667670080 * dT,
- -0.0192825981633995781534949199286824400469353110630787982121133 * dT,
- -3.68259269696866809932409015535499603576312120746888880201882 * dT,
- 3.16197870406982063541533528419683854018352080342887002331312 * dT,
- -0.370462522106885290716991856022051125477943482284080569177386 * dT,
- -0.0514974200365440434996434456698127984941168616474316871020314 * dT,
- -0.000829625532120152946787043541792848416659382675202720677536554 * dT,
- 0.00000279801041419278598986586589070027583961355402640879503213503 * dT,
- 0.0418603916412360287969841020776788461794119440689356178942252 * dT,
- 0.279084255090877355915660874555379649966282167560126269290222 * dT);
- felders[20].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(20,mDT,dT) then
- continue;
-
- felders[21].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[4],felders[5],felders[6],felders[8],
- felders[10],felders[11],felders[18],felders[19],felders[20],
- 0.103364471650010477570395435690481791543342708330349879244197 * dT,
- 0.124053094528946761061581889237115328211074784955180298044074 * dT,
- 0.483171167561032899288836480451962508724109257517289177302380 * dT,
- -0.0387530245694763252085681443767620580395733302341368038804290 * dT,
- -0.438313820361122420391059788940960176420682836652600698580091 * dT,
- -0.218636633721676647685111485017151199362509373698288330593486 * dT,
- -0.0312334764394719229981634995206440349766174759626578122323015 * dT,
- 0.0312334764394719229981634995206440349766174759626578122323015 * dT,
- 0.218636633721676647685111485017151199362509373698288330593486 * dT,
- 0.438313820361122420391059788940960176420682836652600698580091 * dT);
- felders[21].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(21,mDT,dT) then
- continue;
-
- felders[22].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[3],felders[4],felders[7],felders[8],
- felders[10],felders[11],felders[18],felders[19],felders[20],felders[21],
- 0.193333333333333333333333333333333333333333333333333333333333 * dT,
- 0.22 * dT,
- -0.08 * dT,
- 0.0984256130499315928152900286856048243348202521491288575952143 * dT,
- -0.196410889223054653446526504390100417677539095340135532418849 * dT,
- 0.436457930493068729391826122587949137609670676712525034763317 * dT,
- 0.0652613721675721098560370939805555698350543810708414716730270 * dT,
- -0.0652613721675721098560370939805555698350543810708414716730270 * dT,
- -0.436457930493068729391826122587949137609670676712525034763317 * dT,
- 0.196410889223054653446526504390100417677539095340135532418849 * dT,
- -0.0984256130499315928152900286856048243348202521491288575952143 * dT);
- felders[22].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(22,mDT,dT) then
- continue;
-
- felders[23].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[2],felders[5],felders[7],felders[21],
- felders[22],
- -0.216049382716049382716049382716049382716049382716049382716049 * dT,
- 0.771604938271604938271604938271604938271604938271604938271605 * dT,
- -0.666666666666666666666666666666666666666666666666666666666667 * dT,
- -0.390696469295978451446999802258495981249099665294395945559163 * dT,
- 0.390696469295978451446999802258495981249099665294395945559163 * dT,
- 0.666666666666666666666666666666666666666666666666666666666667 * dT);
- felders[23].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(23,mDT,dT) then
- continue;
-
- felders[24].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[3],felders[23],
- 0.2 * dT,
- -0.164609053497942386831275720164609053497942386831275720164609 * dT,
- 0.164609053497942386831275720164609053497942386831275720164609 * dT);
- felders[24].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(24,mDT,dT) then
- continue;
-
- felders[25].liKo(felders[aktuelleFelder],felders[aktuelleFelder],felders[2],felders[3],felders[5],felders[7],
- felders[8],felders[9],felders[10],felders[11],felders[12],felders[13],felders[14],felders[15],felders[16],
- felders[17],felders[18],felders[19],felders[20],felders[21],felders[22],felders[23],felders[24],
- 1.47178724881110408452949550989023611293535315518571691939396 * dT,
- 0.7875 * dT,
- 0.421296296296296296296296296296296296296296296296296296296296 * dT,
- 0.291666666666666666666666666666666666666666666666666666666667 * dT,
- 0.348600717628329563206854421629657569274689947367847465753757 * dT,
- 0.229499544768994849582890233710555447073823569666506700662510 * dT,
- 5.79046485790481979159831978177003471098279506036722411333192 * dT,
- 0.418587511856506868874073759426596207226461447604248151080016 * dT,
- 0.307039880222474002649653817490106690389251482313213999386651 * dT,
- -4.68700905350603332214256344683853248065574415794742040470287 * dT,
- 3.13571665593802262152038152399873856554395436199962915429076 * dT,
- 1.40134829710965720817510506275620441055845017313930508348898 * dT,
- -5.52931101439499023629010306005764336421276055777658156400910 * dT,
- -0.853138235508063349309546894974784906188927508039552519557498 * dT,
- 0.103575780373610140411804607167772795518293914458500175573749 * dT,
- -0.140474416950600941142546901202132534870665923700034957196546 * dT,
- -0.418587511856506868874073759426596207226461447604248151080016 * dT,
- -0.229499544768994849582890233710555447073823569666506700662510 * dT,
- -0.348600717628329563206854421629657569274689947367847465753757 * dT,
- -0.291666666666666666666666666666666666666666666666666666666667 * dT,
- -0.421296296296296296296296296296296296296296296296296296296296 * dT,
- -0.7875 * dT);
- felders[25].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
-
- if pruefeMaxDT(25,mDT,dT) then
- continue;
-
- felders[1-aktuelleFelder].liKo(
- felders[aktuelleFelder],
- felders[aktuelleFelder],
- felders[2],
- felders[3],
- felders[5],
- felders[7],
- felders[8],
- felders[10],
- felders[11],
- felders[13],
- felders[14],
- felders[15],
- felders[16],
- felders[17],
- felders[18],
- felders[19],
- felders[20],
- felders[21],
- felders[22],
- felders[23],
- felders[24],
- felders[25],
- 0.0238095238095238095238095238095238095238095238095238095238095 * dT,
- 0.0234375 * dT,
- 0.03125 * dT,
- 0.0416666666666666666666666666666666666666666666666666666666667 * dT,
- 0.05 * dT,
- 0.05 * dT,
- 0.1 * dT,
- 0.0714285714285714285714285714285714285714285714285714285714286 * dT,
- 0.138413023680782974005350203145033146748813640089941234591267 * dT,
- 0.215872690604931311708935511140681138965472074195773051123019 * dT,
- 0.243809523809523809523809523809523809523809523809523809523810 * dT,
- 0.215872690604931311708935511140681138965472074195773051123019 * dT,
- 0.138413023680782974005350203145033146748813640089941234591267 * dT,
- -0.0714285714285714285714285714285714285714285714285714285714286 * dT,
- -0.1 * dT,
- -0.05 * dT,
- -0.05 * dT,
- -0.0416666666666666666666666666666666666666666666666666666666667 * dT,
- -0.03125 * dT,
- -0.0234375 * dT,
- 0.0238095238095238095238095238095238095238095238095238095238095 * dT
- ); *)
end;
zfRungeKuttaVierzehn: begin // Quelle: http://sce.uhcl.edu/rungekutta/rk1412.txt
{$INCLUDE rk1412.inc}
@@ -1584,25 +1027,32 @@ begin
end;
function tGitter.dumpErhaltungsgroessen: boolean;
-var i,j: integer;
- ns: tExtendedArray;
- pro: tProtokollant;
- s: string;
+var i,j: integer;
+ ns,rhos: tExtendedArray;
+ pro: tProtokollant;
+ s: string;
begin
pro:=tProtokollant.create(prot,'dumpErhaltungsgroessen');
setlength(ns,felders[aktuelleFelder].matAnz);
+ setlength(rhos,length(ns));
result:=true;
s:='';
- for i:=0 to length(ns)-1 do
+ for i:=0 to length(ns)-1 do begin
ns[i]:=0;
+ rhos[i]:=0;
+ end;
for i:=0 to length(felders[aktuelleFelder].inhalt)-1 do
- for j:=0 to length(ns)-1 do
- ns[j]:=ns[j] + felders[aktuelleFelder].inhalt[i].matWerte[j,mfN,false];
+ for j:=0 to length(ns)-1 do begin
+ ns[j]:= ns[j] + felders[aktuelleFelder].inhalt[i].matWerte[j,mfN,false];
+ rhos[j]:=rhos[j] + felders[aktuelleFelder].inhalt[i].matWerte[j,mfRho,false];
+ end;
for i:=0 to length(ns)-1 do begin
ns[i]:=ns[i]*dX;
+ rhos[i]:=rhos[i]*dX;
s:=s+ ' n['+inttostr(i)+']='+floattostr(ns[i]);
+ s:=s+ ' rho['+inttostr(i)+']='+floattostr(rhos[i]);
{$IFDEF Dichteueberwachung}
if ns[i]>1000 then begin
result:=false;
@@ -1688,6 +1138,7 @@ begin
breite:=10.0;
pDNMax:=-1;
fortschrittsAnzeige:=false;
+ dTMin:=-1;
gotSighup:=false;
// Standardeinstellungen Bereich 'ausgaben'
@@ -1753,6 +1204,10 @@ begin
kvs.add('dT',dT);
continue;
end;
+ if startetMit('minZeitschritt ',s) then begin
+ dTMin:=exprtofloat(false,s,kvs,nil);
+ continue;
+ end;
if startetMit('diffusionsterm ',s) then begin
pDNMax:=exprtofloat(false,s,kvs,nil);
continue;
@@ -1897,6 +1352,8 @@ begin
sT:=sDT/2;
if sDX<0 then
sDX:=deltaX;
+ if dTMin<0 then
+ dTMin:=min(1E-30,dT*1E-5);
pro:=tProtokollant.create(prot,'create');
case zeitverfahren of
@@ -1985,9 +1442,12 @@ var
begin
result:=false;
+ if gitter.abbruch then
+ dT:=sDT;
+
zeitPhysik:=zeitPhysik-now;
if errorCode<2 then
- gitter.iteriereSchritt(dT);
+ gitter.iteriereSchritt(dT,dTMin);
zeitPhysik:=zeitPhysik+now;
zeitDatei:=zeitDatei-now;
while (gitter.t>=sT) and (sT<tEnde) do begin
diff --git a/Plasmapropagation.lps b/Plasmapropagation.lps
index c4b6d2b..98cc3b8 100644
--- a/Plasmapropagation.lps
+++ b/Plasmapropagation.lps
@@ -3,25 +3,24 @@
<ProjectSession>
<Version Value="9"/>
<BuildModes Active="Default"/>
- <Units Count="16">
+ <Units Count="17">
<Unit0>
<Filename Value="Plasmapropagation.lpr"/>
<IsPartOfProject Value="True"/>
<CursorPos X="34" Y="11"/>
- <UsageCount Value="177"/>
+ <UsageCount Value="183"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="Physikunit.pas"/>
<IsPartOfProject Value="True"/>
- <IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="110"/>
- <CursorPos X="179" Y="145"/>
- <FoldState Value=" T3lW0-4 pigkU0A5 pjDjb084]9Ija09[943kQ07[944jN0#nS p0xP0U2 pogpb0D2A"/>
- <UsageCount Value="118"/>
+ <TopLine Value="467"/>
+ <CursorPos X="43" Y="544"/>
+ <FoldState Value=" T3nG083 piYj90A5 pjBjZ08114]KalH0V[K4KkM[c5lAlQ0b113 T0*3Q/0F17121Z"/>
+ <UsageCount Value="124"/>
<Bookmarks Count="1">
- <Item0 Y="1553"/>
+ <Item0 Y="996"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit1>
@@ -31,31 +30,31 @@
<EditorIndex Value="-1"/>
<TopLine Value="20"/>
<CursorPos X="22" Y="31"/>
- <UsageCount Value="80"/>
+ <UsageCount Value="86"/>
</Unit2>
<Unit3>
<Filename Value="input.plap"/>
<IsPartOfProject Value="True"/>
- <EditorIndex Value="4"/>
- <CursorPos X="18" Y="4"/>
- <UsageCount Value="79"/>
+ <IsVisibleTab Value="True"/>
+ <EditorIndex Value="3"/>
+ <CursorPos X="23" Y="12"/>
+ <UsageCount Value="85"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit3>
<Unit4>
<Filename Value="linearkombination.inc"/>
<IsPartOfProject Value="True"/>
- <EditorIndex Value="3"/>
- <TopLine Value="195"/>
+ <EditorIndex Value="2"/>
<CursorPos X="48" Y="220"/>
- <UsageCount Value="27"/>
+ <UsageCount Value="33"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="input.epost"/>
- <EditorIndex Value="5"/>
- <CursorPos X="32" Y="21"/>
- <UsageCount Value="72"/>
+ <EditorIndex Value="4"/>
+ <CursorPos X="33" Y="21"/>
+ <UsageCount Value="75"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit5>
@@ -65,14 +64,14 @@
<TopLine Value="53"/>
<CursorPos Y="53"/>
<FoldState Value=" T3i905B pj0jV034 piaj60U2-"/>
- <UsageCount Value="19"/>
+ <UsageCount Value="18"/>
</Unit6>
<Unit7>
<Filename Value="../units/lowlevelunit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="4"/>
<CursorPos X="86" Y="23"/>
- <UsageCount Value="9"/>
+ <UsageCount Value="8"/>
</Unit7>
<Unit8>
<Filename Value="../units/mystringlistunit.pas"/>
@@ -80,175 +79,180 @@
<TopLine Value="367"/>
<CursorPos X="17" Y="390"/>
<FoldState Value=" T3i3075 piZjD0WQ"/>
- <UsageCount Value="10"/>
+ <UsageCount Value="9"/>
</Unit8>
<Unit9>
<Filename Value="../epost/werteunit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="950"/>
<CursorPos X="30" Y="1054"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit9>
<Unit10>
<Filename Value="../epost/typenunit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="347"/>
<CursorPos X="62" Y="358"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit10>
<Unit11>
<Filename Value="../units/systemunit.pas"/>
<EditorIndex Value="-1"/>
<CursorPos X="3" Y="79"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit11>
<Unit12>
<Filename Value="/usr/lib/fpc/src/rtl/inc/objpash.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="232"/>
<CursorPos X="23" Y="192"/>
- <UsageCount Value="7"/>
+ <UsageCount Value="6"/>
</Unit12>
<Unit13>
<Filename Value="rk14.inc"/>
<EditorIndex Value="-1"/>
- <UsageCount Value="10"/>
+ <UsageCount Value="9"/>
</Unit13>
<Unit14>
<Filename Value="rk1210.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="492"/>
<CursorPos X="28" Y="565"/>
- <UsageCount Value="10"/>
+ <UsageCount Value="9"/>
</Unit14>
<Unit15>
<Filename Value="rk1412.inc"/>
- <EditorIndex Value="2"/>
- <TopLine Value="897"/>
- <CursorPos X="4" Y="917"/>
+ <EditorIndex Value="-1"/>
+ <TopLine Value="945"/>
+ <CursorPos X="5" Y="985"/>
<UsageCount Value="10"/>
- <Loaded Value="True"/>
</Unit15>
+ <Unit16>
+ <Filename Value="rk108.inc"/>
+ <EditorIndex Value="-1"/>
+ <CursorPos X="28" Y="8"/>
+ <UsageCount Value="9"/>
+ </Unit16>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
- <Filename Value="linearkombination.inc"/>
- <Caret Line="140" Column="19" TopLine="108"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="600" Column="53" TopLine="567"/>
</Position1>
<Position2>
<Filename Value="Physikunit.pas"/>
- <Caret Line="616" Column="14" TopLine="523"/>
+ <Caret Line="603" Column="53" TopLine="571"/>
</Position2>
<Position3>
<Filename Value="Physikunit.pas"/>
- <Caret Line="123" Column="105" TopLine="94"/>
+ <Caret Line="606" Column="53" TopLine="574"/>
</Position3>
<Position4>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1299" Column="80" TopLine="1287"/>
+ <Caret Line="999" Column="80" TopLine="967"/>
</Position4>
<Position5>
- <Filename Value="linearkombination.inc"/>
- <Caret Line="146" Column="20" TopLine="114"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="1003" Column="78" TopLine="971"/>
</Position5>
<Position6>
<Filename Value="Physikunit.pas"/>
- <Caret Line="622" Column="15" TopLine="502"/>
+ <Caret Line="881" TopLine="648"/>
</Position6>
<Position7>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1319" Column="80" TopLine="1311"/>
+ <Caret TopLine="664"/>
</Position7>
<Position8>
<Filename Value="Physikunit.pas"/>
- <Caret Line="630" Column="15" TopLine="617"/>
+ <Caret Line="87" Column="38" TopLine="80"/>
</Position8>
<Position9>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1443" Column="79" TopLine="1443"/>
+ <Caret Line="503" Column="46" TopLine="466"/>
</Position9>
<Position10>
- <Filename Value="linearkombination.inc"/>
- <Caret Line="101" Column="39" TopLine="62"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="569" TopLine="387"/>
</Position10>
<Position11>
- <Filename Value="linearkombination.inc"/>
- <Caret Line="18" Column="50"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="90" Column="15" TopLine="79"/>
</Position11>
<Position12>
<Filename Value="Physikunit.pas"/>
- <Caret Line="638" Column="15" TopLine="596"/>
+ <Caret Line="504" Column="23" TopLine="467"/>
</Position12>
<Position13>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1519" TopLine="1497"/>
+ <Caret Line="87" Column="32" TopLine="73"/>
</Position13>
<Position14>
<Filename Value="Physikunit.pas"/>
- <Caret Line="134" Column="248" TopLine="110"/>
+ <Caret Line="572" Column="14" TopLine="550"/>
</Position14>
<Position15>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1526" Column="14" TopLine="1500"/>
+ <Caret Line="684" TopLine="675"/>
</Position15>
<Position16>
<Filename Value="Physikunit.pas"/>
- <Caret Line="2009" TopLine="1969"/>
</Position16>
<Position17>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1526" Column="27" TopLine="1492"/>
+ <Caret Line="26" Column="8"/>
</Position17>
<Position18>
- <Filename Value="rk1412.inc"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="232" Column="17" TopLine="205"/>
</Position18>
<Position19>
- <Filename Value="rk1412.inc"/>
- <Caret Line="292" Column="70" TopLine="277"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="579" Column="4" TopLine="464"/>
</Position19>
<Position20>
- <Filename Value="linearkombination.inc"/>
- <Caret Line="21" Column="33"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="637" TopLine="464"/>
</Position20>
<Position21>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1529" TopLine="1511"/>
+ <Caret Line="715" Column="16" TopLine="678"/>
</Position21>
<Position22>
- <Filename Value="linearkombination.inc"/>
- <Caret Line="4" Column="23"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="872" Column="8" TopLine="728"/>
</Position22>
<Position23>
- <Filename Value="rk1412.inc"/>
- <Caret Line="464" Column="26" TopLine="430"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="1031" Column="18" TopLine="716"/>
</Position23>
<Position24>
<Filename Value="Physikunit.pas"/>
- <Caret Line="644" Column="15" TopLine="618"/>
+ <Caret Line="1070" Column="7" TopLine="728"/>
</Position24>
<Position25>
- <Filename Value="rk1412.inc"/>
- <Caret Line="490" Column="5" TopLine="472"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="577" TopLine="491"/>
</Position25>
<Position26>
- <Filename Value="rk1412.inc"/>
- <Caret Line="580" Column="57" TopLine="567"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="1139" Column="6" TopLine="1106"/>
</Position26>
<Position27>
- <Filename Value="linearkombination.inc"/>
- <Caret Line="134" TopLine="94"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="88" Column="44" TopLine="68"/>
</Position27>
<Position28>
- <Filename Value="linearkombination.inc"/>
- <Caret Line="133" Column="39" TopLine="100"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="89" Column="44" TopLine="68"/>
</Position28>
<Position29>
- <Filename Value="rk1412.inc"/>
- <Caret Line="916" Column="4" TopLine="885"/>
+ <Filename Value="Physikunit.pas"/>
+ <Caret Line="130" Column="55" TopLine="97"/>
</Position29>
<Position30>
<Filename Value="Physikunit.pas"/>
- <Caret Line="658" Column="13" TopLine="621"/>
+ <Caret Line="162" Column="18" TopLine="129"/>
</Position30>
</JumpHistory>
</ProjectSession>
diff --git a/input.plap b/input.plap
index b1adc5f..ab2e416 100644
--- a/input.plap
+++ b/input.plap
@@ -2,14 +2,16 @@
allgemein
# runge-Kutta-14
- runge-Kutta-12
-# runge-Kutta-10
+# runge-Kutta-12
+ runge-Kutta-10
# runge-Kutta-3/8
# runge-Kutta-4
# euler-Vorwärts
- ortsschritt 10^-2 * λ
- zeitschritt 10^-2 * T
+ ortsschritt 10^-4 * λ
+ zeitschritt 10^-4 * T
+ minZeitschritt 10^-7 * T
zeit 20 * T
+ diffusionsterm 1 # max. p/Lp
!setze $breite: (5 * λ)
breite $breite
mit Fortschrittsanzeige
@@ -24,7 +26,7 @@ ausgabenEnde
!setze $tFwhm: (2.5 * T)
!setze $tMitte: (1 * T)
-licht von links 0.5 * 2^(-2*((t-$tMitte)/$tFwhm)^2) * sin(ω*t)
+licht von links 0.1 * 2^(-2*((t-$tMitte)/$tFwhm)^2) * sin(ω*t)
teilchen1
spezifische Ladung -q/me
diff --git a/rk108.inc b/rk108.inc
index de1c24e..7635367 100644
--- a/rk108.inc
+++ b/rk108.inc
@@ -5,7 +5,7 @@
);
felders[2].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(2,mDT,dT) then
+ if pruefeMaxDT(2,mDT,dT,dTMin) then
continue;
felders[3].liKo(
@@ -17,7 +17,7 @@
);
felders[3].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(3,mDT,dT) then
+ if pruefeMaxDT(3,mDT,dT,dTMin) then
continue;
felders[4].liKo(
@@ -29,7 +29,7 @@
);
felders[4].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(4,mDT,dT) then
+ if pruefeMaxDT(4,mDT,dT,dTMin) then
continue;
felders[5].liKo(
@@ -43,7 +43,7 @@
);
felders[5].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(5,mDT,dT) then
+ if pruefeMaxDT(5,mDT,dT,dTMin) then
continue;
felders[6].liKo(
@@ -57,7 +57,7 @@
);
felders[6].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(6,mDT,dT) then
+ if pruefeMaxDT(6,mDT,dT,dTMin) then
continue;
felders[7].liKo(
@@ -73,7 +73,7 @@
);
felders[7].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(7,mDT,dT) then
+ if pruefeMaxDT(7,mDT,dT,dTMin) then
continue;
felders[8].liKo(
@@ -89,7 +89,7 @@
);
felders[8].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(8,mDT,dT) then
+ if pruefeMaxDT(8,mDT,dT,dTMin) then
continue;
felders[9].liKo(
@@ -105,7 +105,7 @@
);
felders[9].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(9,mDT,dT) then
+ if pruefeMaxDT(9,mDT,dT,dTMin) then
continue;
felders[10].liKo(
@@ -123,7 +123,7 @@
);
felders[10].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(10,mDT,dT) then
+ if pruefeMaxDT(10,mDT,dT,dTMin) then
continue;
felders[11].liKo(
@@ -143,7 +143,7 @@
);
felders[11].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(11,mDT,dT) then
+ if pruefeMaxDT(11,mDT,dT,dTMin) then
continue;
felders[12].liKo(
@@ -165,7 +165,7 @@
);
felders[12].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(12,mDT,dT) then
+ if pruefeMaxDT(12,mDT,dT,dTMin) then
continue;
felders[13].liKo(
@@ -193,7 +193,7 @@
);
felders[13].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(13,mDT,dT) then
+ if pruefeMaxDT(13,mDT,dT,dTMin) then
continue;
felders[14].liKo(
@@ -223,7 +223,7 @@
);
felders[14].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(14,mDT,dT) then
+ if pruefeMaxDT(14,mDT,dT,dTMin) then
continue;
felders[15].liKo(
@@ -243,7 +243,7 @@
);
felders[15].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(15,mDT,dT) then
+ if pruefeMaxDT(15,mDT,dT,dTMin) then
continue;
felders[16].liKo(
@@ -257,7 +257,7 @@
);
felders[16].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(16,mDT,dT) then
+ if pruefeMaxDT(16,mDT,dT,dTMin) then
continue;
felders[17].liKo(
@@ -295,7 +295,7 @@
);
felders[17].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(17,mDT,dT) then
+ if pruefeMaxDT(17,mDT,dT,dTMin) then
continue;
felders[1-aktuelleFelder].liKo(
diff --git a/rk1210.inc b/rk1210.inc
index 3410f78..d7ba52c 100644
--- a/rk1210.inc
+++ b/rk1210.inc
@@ -5,7 +5,7 @@
);
felders[2].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(2,mDT,dT) then
+ if pruefeMaxDT(2,mDT,dT,dTMin) then
continue;
felders[3].liKo(
@@ -17,7 +17,7 @@
);
felders[3].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(3,mDT,dT) then
+ if pruefeMaxDT(3,mDT,dT,dTMin) then
continue;
felders[4].liKo(
@@ -29,7 +29,7 @@
);
felders[4].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(4,mDT,dT) then
+ if pruefeMaxDT(4,mDT,dT,dTMin) then
continue;
felders[5].liKo(
@@ -43,7 +43,7 @@
);
felders[5].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(5,mDT,dT) then
+ if pruefeMaxDT(5,mDT,dT,dTMin) then
continue;
felders[6].liKo(
@@ -57,7 +57,7 @@
);
felders[6].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(6,mDT,dT) then
+ if pruefeMaxDT(6,mDT,dT,dTMin) then
continue;
felders[7].liKo(
@@ -73,7 +73,7 @@
);
felders[7].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(7,mDT,dT) then
+ if pruefeMaxDT(7,mDT,dT,dTMin) then
continue;
felders[8].liKo(
@@ -89,7 +89,7 @@
);
felders[8].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(8,mDT,dT) then
+ if pruefeMaxDT(8,mDT,dT,dTMin) then
continue;
felders[9].liKo(
@@ -105,7 +105,7 @@
);
felders[9].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(9,mDT,dT) then
+ if pruefeMaxDT(9,mDT,dT,dTMin) then
continue;
felders[10].liKo(
@@ -123,7 +123,7 @@
);
felders[10].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(10,mDT,dT) then
+ if pruefeMaxDT(10,mDT,dT,dTMin) then
continue;
felders[11].liKo(
@@ -143,7 +143,7 @@
);
felders[11].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(11,mDT,dT) then
+ if pruefeMaxDT(11,mDT,dT,dTMin) then
continue;
felders[12].liKo(
@@ -165,7 +165,7 @@
);
felders[12].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(12,mDT,dT) then
+ if pruefeMaxDT(12,mDT,dT,dTMin) then
continue;
felders[13].liKo(
@@ -183,7 +183,7 @@
);
felders[13].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(13,mDT,dT) then
+ if pruefeMaxDT(13,mDT,dT,dTMin) then
continue;
felders[14].liKo(
@@ -203,7 +203,7 @@
);
felders[14].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(14,mDT,dT) then
+ if pruefeMaxDT(14,mDT,dT,dTMin) then
continue;
felders[15].liKo(
@@ -225,7 +225,7 @@
);
felders[15].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(15,mDT,dT) then
+ if pruefeMaxDT(15,mDT,dT,dTMin) then
continue;
felders[16].liKo(
@@ -249,7 +249,7 @@
);
felders[16].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(16,mDT,dT) then
+ if pruefeMaxDT(16,mDT,dT,dTMin) then
continue;
felders[17].liKo(
@@ -275,7 +275,7 @@
);
felders[17].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(17,mDT,dT) then
+ if pruefeMaxDT(17,mDT,dT,dTMin) then
continue;
felders[18].liKo(
@@ -309,7 +309,7 @@
);
felders[18].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(18,mDT,dT) then
+ if pruefeMaxDT(18,mDT,dT,dTMin) then
continue;
felders[19].liKo(
@@ -345,7 +345,7 @@
);
felders[19].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(19,mDT,dT) then
+ if pruefeMaxDT(19,mDT,dT,dTMin) then
continue;
felders[20].liKo(
@@ -383,7 +383,7 @@
);
felders[20].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(20,mDT,dT) then
+ if pruefeMaxDT(20,mDT,dT,dTMin) then
continue;
felders[21].liKo(
@@ -411,7 +411,7 @@
);
felders[21].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(21,mDT,dT) then
+ if pruefeMaxDT(21,mDT,dT,dTMin) then
continue;
felders[22].liKo(
@@ -441,7 +441,7 @@
);
felders[22].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(22,mDT,dT) then
+ if pruefeMaxDT(22,mDT,dT,dTMin) then
continue;
felders[23].liKo(
@@ -461,7 +461,7 @@
);
felders[23].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(23,mDT,dT) then
+ if pruefeMaxDT(23,mDT,dT,dTMin) then
continue;
felders[24].liKo(
@@ -475,7 +475,7 @@
);
felders[24].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(24,mDT,dT) then
+ if pruefeMaxDT(24,mDT,dT,dTMin) then
continue;
felders[25].liKo(
@@ -527,7 +527,7 @@
);
felders[25].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(25,mDT,dT) then
+ if pruefeMaxDT(25,mDT,dT,dTMin) then
continue;
felders[1-aktuelleFelder].liKo(
diff --git a/rk1412.inc b/rk1412.inc
index c1334c1..89b2e29 100644
--- a/rk1412.inc
+++ b/rk1412.inc
@@ -5,7 +5,7 @@
);
felders[2].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(2,mDT,dT) then
+ if pruefeMaxDT(2,mDT,dT,dTMin) then
continue;
felders[3].liKo(
@@ -17,7 +17,7 @@
);
felders[3].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(3,mDT,dT) then
+ if pruefeMaxDT(3,mDT,dT,dTMin) then
continue;
felders[4].liKo(
@@ -29,7 +29,7 @@
);
felders[4].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(4,mDT,dT) then
+ if pruefeMaxDT(4,mDT,dT,dTMin) then
continue;
felders[5].liKo(
@@ -43,7 +43,7 @@
);
felders[5].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(5,mDT,dT) then
+ if pruefeMaxDT(5,mDT,dT,dTMin) then
continue;
felders[6].liKo(
@@ -57,7 +57,7 @@
);
felders[6].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(6,mDT,dT) then
+ if pruefeMaxDT(6,mDT,dT,dTMin) then
continue;
felders[7].liKo(
@@ -73,7 +73,7 @@
);
felders[7].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(7,mDT,dT) then
+ if pruefeMaxDT(7,mDT,dT,dTMin) then
continue;
felders[8].liKo(
@@ -89,7 +89,7 @@
);
felders[8].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(8,mDT,dT) then
+ if pruefeMaxDT(8,mDT,dT,dTMin) then
continue;
felders[9].liKo(
@@ -105,7 +105,7 @@
);
felders[9].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(9,mDT,dT) then
+ if pruefeMaxDT(9,mDT,dT,dTMin) then
continue;
felders[10].liKo(
@@ -123,7 +123,7 @@
);
felders[10].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(10,mDT,dT) then
+ if pruefeMaxDT(10,mDT,dT,dTMin) then
continue;
felders[11].liKo(
@@ -143,7 +143,7 @@
);
felders[11].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(11,mDT,dT) then
+ if pruefeMaxDT(11,mDT,dT,dTMin) then
continue;
felders[12].liKo(
@@ -165,7 +165,7 @@
);
felders[12].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(12,mDT,dT) then
+ if pruefeMaxDT(12,mDT,dT,dTMin) then
continue;
felders[13].liKo(
@@ -183,7 +183,7 @@
);
felders[13].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(13,mDT,dT) then
+ if pruefeMaxDT(13,mDT,dT,dTMin) then
continue;
felders[14].liKo(
@@ -203,7 +203,7 @@
);
felders[14].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(14,mDT,dT) then
+ if pruefeMaxDT(14,mDT,dT,dTMin) then
continue;
felders[15].liKo(
@@ -225,7 +225,7 @@
);
felders[15].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(15,mDT,dT) then
+ if pruefeMaxDT(15,mDT,dT,dTMin) then
continue;
felders[16].liKo(
@@ -249,7 +249,7 @@
);
felders[16].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(16,mDT,dT) then
+ if pruefeMaxDT(16,mDT,dT,dTMin) then
continue;
felders[17].liKo(
@@ -275,7 +275,7 @@
);
felders[17].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(17,mDT,dT) then
+ if pruefeMaxDT(17,mDT,dT,dTMin) then
continue;
felders[18].liKo(
@@ -295,7 +295,7 @@
);
felders[18].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(18,mDT,dT) then
+ if pruefeMaxDT(18,mDT,dT,dTMin) then
continue;
felders[19].liKo(
@@ -317,7 +317,7 @@
);
felders[19].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(19,mDT,dT) then
+ if pruefeMaxDT(19,mDT,dT,dTMin) then
continue;
felders[20].liKo(
@@ -341,7 +341,7 @@
);
felders[20].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(20,mDT,dT) then
+ if pruefeMaxDT(20,mDT,dT,dTMin) then
continue;
felders[21].liKo(
@@ -367,7 +367,7 @@
);
felders[21].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(21,mDT,dT) then
+ if pruefeMaxDT(21,mDT,dT,dTMin) then
continue;
felders[22].liKo(
@@ -395,7 +395,7 @@
);
felders[22].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(22,mDT,dT) then
+ if pruefeMaxDT(22,mDT,dT,dTMin) then
continue;
felders[23].liKo(
@@ -425,7 +425,7 @@
);
felders[23].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(23,mDT,dT) then
+ if pruefeMaxDT(23,mDT,dT,dTMin) then
continue;
felders[24].liKo(
@@ -465,7 +465,7 @@
);
felders[24].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(24,mDT,dT) then
+ if pruefeMaxDT(24,mDT,dT,dTMin) then
continue;
felders[25].liKo(
@@ -507,7 +507,7 @@
);
felders[25].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(25,mDT,dT) then
+ if pruefeMaxDT(25,mDT,dT,dTMin) then
continue;
felders[26].liKo(
@@ -551,7 +551,7 @@
);
felders[26].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(26,mDT,dT) then
+ if pruefeMaxDT(26,mDT,dT,dTMin) then
continue;
felders[27].liKo(
@@ -601,7 +601,7 @@
);
felders[27].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(27,mDT,dT) then
+ if pruefeMaxDT(27,mDT,dT,dTMin) then
continue;
felders[28].liKo(
@@ -653,7 +653,7 @@
);
felders[28].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(28,mDT,dT) then
+ if pruefeMaxDT(28,mDT,dT,dTMin) then
continue;
felders[29].liKo(
@@ -691,7 +691,7 @@
);
felders[29].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(29,mDT,dT) then
+ if pruefeMaxDT(29,mDT,dT,dTMin) then
continue;
felders[30].liKo(
@@ -731,7 +731,7 @@
);
felders[30].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(30,mDT,dT) then
+ if pruefeMaxDT(30,mDT,dT,dTMin) then
continue;
felders[31].liKo(
@@ -771,7 +771,7 @@
);
felders[31].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(31,mDT,dT) then
+ if pruefeMaxDT(31,mDT,dT,dTMin) then
continue;
felders[32].liKo(
@@ -813,7 +813,7 @@
);
felders[32].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(32,mDT,dT) then
+ if pruefeMaxDT(32,mDT,dT,dTMin) then
continue;
felders[33].liKo(
@@ -833,7 +833,7 @@
);
felders[33].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(33,mDT,dT) then
+ if pruefeMaxDT(33,mDT,dT,dTMin) then
continue;
felders[34].liKo(
@@ -847,7 +847,7 @@
);
felders[34].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(34,mDT,dT) then
+ if pruefeMaxDT(34,mDT,dT,dTMin) then
continue;
felders[35].liKo(
@@ -917,7 +917,7 @@
);
felders[35].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);
- if pruefeMaxDT(35,mDT,dT) then
+ if pruefeMaxDT(35,mDT,dT,dTMin) then
continue;
felders[1-aktuelleFelder].liKo(
diff --git a/rktopas b/rktopas
index 0cd1216..f0900c8 100755
--- a/rktopas
+++ b/rktopas
@@ -17,7 +17,7 @@ do
echo -e "\n );" >> ${outputFile}
echo " felders[${i}].berechneAbleitungen(dT/2,dX,iDT,iDX,pDNMax);" >> ${outputFile}
echo >> ${outputFile}
- echo " if pruefeMaxDT(${i},mDT,dT) then" >> ${outputFile}
+ echo " if pruefeMaxDT(${i},mDT,dT,dTMin) then" >> ${outputFile}
echo " continue;" >> ${outputFile}
echo >> ${outputFile}
done