From 597779f1a3e3c0c187ec845c63fae07582c9f7c9 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 9 Dec 2015 12:06:47 +0100 Subject: diverse Compilerschalter eingebaut --- Physikunit.pas | 17 ++++++++++--- Plasmapropagation.lps | 66 +++++++++++++++++++++++++-------------------------- genLikoInc | 2 +- linearkombination.inc | 2 +- 4 files changed, 49 insertions(+), 38 deletions(-) diff --git a/Physikunit.pas b/Physikunit.pas index fc2dcd2..bbd63f1 100644 --- a/Physikunit.pas +++ b/Physikunit.pas @@ -11,11 +11,14 @@ unit Physikunit; // nach einer LiKo negative Dichten entfernen: {$DEFINE DichteNichtnegativieren:=perSkalieren} // insgesamt runter skalieren um negative Dichten aufzufüllen { $DEFINE DichteNichtnegativieren:=perEinzelklau} // negative Dichten aus zufälligen Phasenraumpunkten auffüllen +{ $DEFINE dnZwischenRKSchritten} // nach jeder LiKo Dichten nicht negativ machen { $DEFINE negativeDichteueberwachung} // prüfen, ob die Dichten negativ werden { $DEFINE exzessiveArrayBereichsTests} // zeitaufwändige(!) Array-Bereichstest für fftw +{ $DEFINE laengenSindZweierpotenzen} // Laengen auf Zweierpotenzen runden (ggf. günstiger für fft) + interface uses @@ -1554,6 +1557,7 @@ var begin inherited create; +{$IFDEF laengenSindZweierpotenzen} i:=aP; aP:=round(power(2,ceil(ln(aP-0.5)/ln(2)))); deltaP:=deltaP*(i-1)/(aP-1); @@ -1561,6 +1565,7 @@ begin i:=aX; aX:=round(power(2,ceil(ln(aX+4-0.5)/ln(2)))); // zwei Felder links und rechts extra für Randbedingungen deltaX:=deltaX*(i-1)/(aX-4-1); +{$ENDIF} abbruch:=false; simulation:=besitzer; @@ -1663,7 +1668,13 @@ begin until abbruch; aktuelleFelder:=1-aktuelleFelder; - {$IFDEF negativeDichteueberwachung} +{$IF DEFINED(DichteNichtnegativieren) and not DEFINED(dnZwischenRKSchritten)} + felders[aktuelleFelder].nichtnegativieren; +{$ENDIF} +{$IFDEF negativeDichteueberwachung} +{$IFNDEF DichteNichtnegativieren} + {$WARNING Negative Dichte wird überwacht, aber nicht korrigiert - das führt wahrscheinlich zum Abbruch!} +{$ENDIF} for i:=0 to length(felders[aktuelleFelder].impulsraum)-1 do for j:=0 to felders[aktuelleFelder].aX*felders[aktuelleFelder].aP-1 do if (felders[aktuelleFelder].impulsraum[i,false]+j)^<0 then begin @@ -1674,7 +1685,7 @@ begin pro.schreibe(' n = ' +floattostr((felders[aktuelleFelder].impulsraum[i,false]+j)^),true); abbrechen; end; - {$ENDIF} +{$ENDIF} t:=t+dT; end; @@ -2164,7 +2175,7 @@ end; function fourierWindow(x: extended): extended; begin - result:=exp(-sqr(sqr(sqr(3*x)))); + result:=exp(-sqr(3*x)); end; initialization diff --git a/Plasmapropagation.lps b/Plasmapropagation.lps index 64406c4..cdb7b0d 100644 --- a/Plasmapropagation.lps +++ b/Plasmapropagation.lps @@ -17,9 +17,9 @@ - - - + + + @@ -44,7 +44,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -171,121 +171,121 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + - + - - + - + - + + - + - + + - + - + - + diff --git a/genLikoInc b/genLikoInc index 2a16dcb..8010e44 100755 --- a/genLikoInc +++ b/genLikoInc @@ -101,7 +101,7 @@ do done echo ";" >> ${file} echo >> ${file} -echo " {\$IFDEF DichteNichtnegativieren}" >> ${file} +echo " {\$IF DEFINED(DichteNichtnegativieren) and DEFINED(dnZwischenRKSchritten)}" >> ${file} echo " nichtnegativieren;" >> ${file} echo " {\$ENDIF}" >> ${file} echo >> ${file} diff --git a/linearkombination.inc b/linearkombination.inc index ccfdd41..6036461 100644 --- a/linearkombination.inc +++ b/linearkombination.inc @@ -259,7 +259,7 @@ begin + fak32*(in32.impulsraum[i,true]+j)^ {$ENDIF}; - {$IFDEF DichteNichtnegativieren} + {$IF DEFINED(DichteNichtnegativieren) and DEFINED(dnZwischenRKSchritten)} nichtnegativieren; {$ENDIF} -- cgit v1.2.3-54-g00ecf