From 0484afec8922e5ac455b98bcd5516d53443a475c Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Thu, 30 Jul 2015 18:50:29 +0200 Subject: Runge-Kutta 10 und 12 eingefuegt, Algorithmus fuer RK14 ist da, aber noch nicht implementiert --- linearkombination.inc | 186 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 linearkombination.inc (limited to 'linearkombination.inc') diff --git a/linearkombination.inc b/linearkombination.inc new file mode 100644 index 0000000..2d6a27d --- /dev/null +++ b/linearkombination.inc @@ -0,0 +1,186 @@ + +// Werte werden auf (in1 + \sum_i faki * ini') gesetzt + +procedure tWertePunkt.liKo(in1,in2 +{$IFDEF lkA3},in3 +{$IFDEF lkA4},in4 +{$IFDEF lkA5},in5 +{$IFDEF lkA6},in6 +{$IFDEF lkA7},in7 +{$IFDEF lkA8},in8 +{$IFDEF lkA9},in9 +{$IFDEF lkA10},in10 +{$IFDEF lkA11},in11 +{$IFDEF lkA12},in12 +{$IFDEF lkA14},in13,in14 +{$IFDEF lkA15},in15 +{$IFDEF lkA16},in16 +{$IFDEF lkA22},in17,in18,in19,in20,in21,in22 +{$IFDEF lkA23},in23 +{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}: tWertePunkt; +fak2 +{$IFDEF lkA3},fak3 +{$IFDEF lkA4},fak4 +{$IFDEF lkA5},fak5 +{$IFDEF lkA6},fak6 +{$IFDEF lkA7},fak7 +{$IFDEF lkA8},fak8 +{$IFDEF lkA9},fak9 +{$IFDEF lkA10},fak10 +{$IFDEF lkA11},fak11 +{$IFDEF lkA12},fak12 +{$IFDEF lkA14},fak13,fak14 +{$IFDEF lkA15},fak15 +{$IFDEF lkA16},fak16 +{$IFDEF lkA22},fak17,fak18,fak19,fak20,fak21,fak22 +{$IFDEF lkA23},fak23 +{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}: extended); +var + emF: tEMFeldInhalt; + maF: tMaterieFeldInhalt; + i: longint; +begin +(* tEMFeldInhalt = ( + efA,efAX,efAY,efAZ, + efDAXDT,efDAYDT,efDAZDT, + efDPhiDX + ); *) + for emF:=efAX to efDPhiDX do // alles außer efA, welchen Ableitung ja nicht berechnet wurde + emWerte[emF,false]:= + in1.emWerte[emF,false] + + fak2 * in2.emWerte[emF,true] {$IFDEF lkA3} + + fak3 * in3.emWerte[emF,true] {$IFDEF lkA4} + + fak4 * in4.emWerte[emF,true] {$IFDEF lkA5} + + fak5 * in5.emWerte[emF,true] {$IFDEF lkA6} + + fak6 * in6.emWerte[emF,true] {$IFDEF lkA7} + + fak7 * in7.emWerte[emF,true] {$IFDEF lkA8} + + fak8 * in8.emWerte[emF,true] {$IFDEF lkA9} + + fak9 * in9.emWerte[emF,true] {$IFDEF lkA10} + + fak10 * in10.emWerte[emF,true] {$IFDEF lkA11} + + fak11 * in11.emWerte[emF,true] {$IFDEF lkA12} + + fak12 * in12.emWerte[emF,true] {$IFDEF lkA14} + + fak13 * in13.emWerte[emF,true] + + fak14 * in14.emWerte[emF,true] {$IFDEF lkA15} + + fak15 * in15.emWerte[emF,true] {$IFDEF lkA16} + + fak16 * in16.emWerte[emF,true] {$IFDEF lkA22} + + fak17 * in17.emWerte[emF,true] + + fak18 * in18.emWerte[emF,true] + + fak19 * in19.emWerte[emF,true] + + fak20 * in20.emWerte[emF,true] + + fak21 * in21.emWerte[emF,true] + + fak22 * in22.emWerte[emF,true] {$IFDEF lkA23} + + fak23 * in23.emWerte[emF,true] + {$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}; + +(* tMaterieFeldInhalt = ( + mfN,mfDPsiDX, + mfP,mfPX,mfPY,mfPZ, + mfGamma,mfIGamma + ); *) + for i:=0 to length(matWerte)-1 do // siehe oben + for maF:=mfN to mfDPsiDX do + matWerte[i,maF,false]:= + in1.matWerte[i,maF,false] + + fak2 * in2.matWerte[i,maF,true] {$IFDEF lkA3} + + fak3 * in3.matWerte[i,maF,true] {$IFDEF lkA4} + + fak4 * in4.matWerte[i,maF,true] {$IFDEF lkA5} + + fak5 * in5.matWerte[i,maF,true] {$IFDEF lkA6} + + fak6 * in6.matWerte[i,maF,true] {$IFDEF lkA7} + + fak7 * in7.matWerte[i,maF,true] {$IFDEF lkA8} + + fak8 * in8.matWerte[i,maF,true] {$IFDEF lkA9} + + fak9 * in9.matWerte[i,maF,true] {$IFDEF lkA10} + + fak10 * in10.matWerte[i,maF,true] {$IFDEF lkA11} + + fak11 * in11.matWerte[i,maF,true] {$IFDEF lkA12} + + fak12 * in12.matWerte[i,maF,true] {$IFDEF lkA14} + + fak13 * in13.matWerte[i,maF,true] + + fak14 * in14.matWerte[i,maF,true] {$IFDEF lkA15} + + fak15 * in15.matWerte[i,maF,true] {$IFDEF lkA16} + + fak16 * in16.matWerte[i,maF,true] {$IFDEF lkA22} + + fak17 * in17.matWerte[i,maF,true] + + fak18 * in18.matWerte[i,maF,true] + + fak19 * in19.matWerte[i,maF,true] + + fak20 * in20.matWerte[i,maF,true] + + fak21 * in21.matWerte[i,maF,true] + + fak22 * in22.matWerte[i,maF,true] {$IFDEF lkA23} + + fak23 * in23.matWerte[i,maF,true] + {$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}; +end; + +// Werte werden auf (in1 + \sum_i faki * ini') gesetzt + +procedure tFelder.liKo(in1,in2 +{$IFDEF lkA3},in3 +{$IFDEF lkA4},in4 +{$IFDEF lkA5},in5 +{$IFDEF lkA6},in6 +{$IFDEF lkA7},in7 +{$IFDEF lkA8},in8 +{$IFDEF lkA9},in9 +{$IFDEF lkA10},in10 +{$IFDEF lkA11},in11 +{$IFDEF lkA12},in12 +{$IFDEF lkA14},in13,in14 +{$IFDEF lkA15},in15 +{$IFDEF lkA16},in16 +{$IFDEF lkA22},in17,in18,in19,in20,in21,in22 +{$IFDEF lkA23},in23 +{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}: tFelder; +fak2 +{$IFDEF lkA3},fak3 +{$IFDEF lkA4},fak4 +{$IFDEF lkA5},fak5 +{$IFDEF lkA6},fak6 +{$IFDEF lkA7},fak7 +{$IFDEF lkA8},fak8 +{$IFDEF lkA9},fak9 +{$IFDEF lkA10},fak10 +{$IFDEF lkA11},fak11 +{$IFDEF lkA12},fak12 +{$IFDEF lkA14},fak13,fak14 +{$IFDEF lkA15},fak15 +{$IFDEF lkA16},fak16 +{$IFDEF lkA22},fak17,fak18,fak19,fak20,fak21,fak22 +{$IFDEF lkA23},fak23 +{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}: extended); +var + i: longint; +begin + for i:=0 to length(inhalt)-1 do + inhalt[i].liKo( + in1.inhalt[i],in2.inhalt[i] + {$IFDEF lkA3},in3.inhalt[i] + {$IFDEF lkA4},in4.inhalt[i] + {$IFDEF lkA5},in5.inhalt[i] + {$IFDEF lkA6},in6.inhalt[i] + {$IFDEF lkA7},in7.inhalt[i] + {$IFDEF lkA8},in8.inhalt[i] + {$IFDEF lkA9},in9.inhalt[i] + {$IFDEF lkA10},in10.inhalt[i] + {$IFDEF lkA11},in11.inhalt[i] + {$IFDEF lkA12},in12.inhalt[i] + {$IFDEF lkA14},in13.inhalt[i],in14.inhalt[i] + {$IFDEF lkA15},in15.inhalt[i] + {$IFDEF lkA16},in16.inhalt[i] + {$IFDEF lkA22},in17.inhalt[i],in18.inhalt[i],in19.inhalt[i],in20.inhalt[i],in21.inhalt[i],in22.inhalt[i] + {$IFDEF lkA23},in23.inhalt[i] + {$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}, + fak2 + {$IFDEF lkA3},fak3 + {$IFDEF lkA4},fak4 + {$IFDEF lkA5},fak5 + {$IFDEF lkA6},fak6 + {$IFDEF lkA7},fak7 + {$IFDEF lkA8},fak8 + {$IFDEF lkA9},fak9 + {$IFDEF lkA10},fak10 + {$IFDEF lkA11},fak11 + {$IFDEF lkA12},fak12 + {$IFDEF lkA14},fak13,fak14 + {$IFDEF lkA15},fak15 + {$IFDEF lkA16},fak16 + {$IFDEF lkA22},fak17,fak18,fak19,fak20,fak21,fak22 + {$IFDEF lkA23},fak23 + {$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}); +end; + + -- cgit v1.2.3-54-g00ecf