From 3012d4ee51fa18d9dae7d54d0ee9fab3f0bb847c Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 4 Aug 2015 12:57:51 +0200 Subject: Untergrenze fuer Zeitschritt konfigurierbar gemacht --- Physikunit.pas | 724 +++++++------------------------------------------- Plasmapropagation.lps | 152 +++++------ input.plap | 12 +- rk108.inc | 32 +-- rk1210.inc | 48 ++-- rk1412.inc | 68 ++--- rktopas | 2 +- 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) + * deltax + // d3Phi/dx2dt = dRho/dt ... hier muss integriert werden: + // d2Phi/dxdt = d2Phi/dxdt(x- deltax) + * 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=sT) and (sT - + - + - - - - - + + + + - + @@ -31,31 +30,31 @@ - + - - - + + + + - - + - + - - - + + + @@ -65,14 +64,14 @@ - + - + @@ -80,175 +79,180 @@ - + - + - + - + - + - + - + - - - + + + - + + + + + + - - + + - + - + - + - - + + - + - + - + - + - - + + - - + + - + - + - + - + - - + - + + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + 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 -- cgit v1.2.3-54-g00ecf