summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2015-08-11 14:17:49 +0200
committerErich Eckner <git@eckner.net>2015-08-11 14:17:49 +0200
commit5eaf0e1928f4024ac5c1935dfecfe7d29f93417c (patch)
treea4d34bd98d8e7152cc822e1b546a7415ff7e1084
parentbf51ca3a16d648c5da41719b06f0f3a598a37ec3 (diff)
downloadPlasmapropagation-5eaf0e1928f4024ac5c1935dfecfe7d29f93417c.tar.xz
lauffaehig, es entstehen aber noch "Ripple" im Phasenraum ...
-rw-r--r--Physikunit.pas228
-rw-r--r--Plasmapropagation.lps141
-rw-r--r--input.epost51
-rw-r--r--input.plap32
4 files changed, 247 insertions, 205 deletions
diff --git a/Physikunit.pas b/Physikunit.pas
index 4861a14..5d8881a 100644
--- a/Physikunit.pas
+++ b/Physikunit.pas
@@ -27,6 +27,7 @@ type
eqRho,eqJX,eqJY
);
tMaterieFeldGroesze = (mfPY);
+ tMaterieSpeicherGroesze = (msPX,msPXSqr,msPY,msVX,msVY,msN,msPXRipple);
tTeilchenSpeziesGroeszen = (tsgMasse,tsgIQdrMasse,tsgLadung);
tEMQuellen = array[tEMQuellGroesze] of extended;
@@ -46,9 +47,11 @@ type
tAusgabeDatei = class
private
ableitung: boolean;
- emFelder: tEMFeldGroesze;
- emQuellen: tEMQuellGroesze;
- teilchen, // -2: EM-Feld; -1: Gesamt-EM-Quelle; sonst: EM-Quelle der entsprechenden Teilchen
+ emFeld: tEMFeldGroesze;
+ emQuelle: tEMQuellGroesze;
+ matFeld: tMaterieSpeicherGroesze;
+ wasSpeichern, // 0: EM-Feld; 1: EM-Quelle; 2: Mat-Feld
+ teilchen, // -1: Gesamt-Feld; sonst: Feld des entsprechenden Teilchen
nNum,tCnt: longint;
pre,suf: string;
datei: file;
@@ -132,7 +135,7 @@ type
{$UNDEF LiKotRaumPunktHeader}
function nichtnegativieren: extended; inline;
function impulsIntegral(teilchen: longint; emQ: tEMQuellGroesze): extended; overload; inline;
- function impulsIntegral(teilchen: longint): extended; overload; inline;
+ function impulsIntegral(teilchen: longint; maF: tMaterieSpeicherGroesze): extended; overload; inline;
procedure initialisiereDichte(teilchen: longint; breite,n: extended); inline;
procedure reflektiereTeilchen(rechts: boolean); inline;
procedure setzeNull; inline;
@@ -211,6 +214,9 @@ const
emQuellNamen: array[tEMQuellGroesze] of string = (
'RHO','JX','JY'
);
+ matSpeicherNamen: array[tMaterieSpeicherGroesze] of string = (
+ 'PX','PXSQR','PY','VX','VY','N','PXRIPPLE'
+ );
minAusgabeBuffer = 1024*1024;
var
@@ -222,6 +228,7 @@ constructor tAusgabeDatei.create(feldName,prefix,suffix: string; prot: tProtokol
var
emF: tEMFeldGroesze;
emQ: tEMQuellGroesze;
+ maF: tMaterieSpeicherGroesze;
num: longint;
abl,gef: boolean;
begin
@@ -238,8 +245,10 @@ begin
else
teilchen:=-1;
- emFelder:=efAX;
- emQuellen:=eqRho;
+ emFeld:=efAX;
+ emQuelle:=eqRho;
+ matFeld:=msN;
+ wasSpeichern:=0;
feldName:=ansiUpperCase(feldName);
nNum:=0; // Header 0 wurde also noch nicht geschrieben
zeitAnz:=-1;
@@ -250,7 +259,8 @@ begin
if not gef then
for emF:=low(tEMFeldGroesze) to high(tEMFeldGroesze) do
if copy('D',1,byte(abl))+emFeldNamen[emF] = feldName then begin
- emFelder:=emF;
+ emFeld:=emF;
+ wasSpeichern:=0;
ableitung:=abl;
teilchen:=-2;
gef:=true;
@@ -261,24 +271,45 @@ begin
for emQ:=low(tEMQuellGroesze) to high(tEMQuellGroesze) do
if emQuellNamen[emQ] = feldName then begin
ableitung:=false;
- emQuellen:=emQ;
+ emQuelle:=emQ;
+ wasSpeichern:=1;
+ gef:=true;
+ break;
+ end;
+ if not gef then
+ for maF:=low(tMaterieSpeicherGroesze) to high(tMaterieSpeicherGroesze) do
+ if matSpeicherNamen[maF] = feldName then begin
+ ableitung:=false;
+ matFeld:=maF;
+ wasSpeichern:=2;
gef:=true;
break;
end;
if not gef then begin
pro.schreibe('tAusgabeDatei.create kennt Größe '''+feldName+''' nicht!',true);
+ nam:='';
+ for abl:=false to true do
+ for emF:=low(tEMFeldGroesze) to high(tEMFeldGroesze) do
+ nam:=nam+', '+copy('D',1,byte(abl))+emFeldNamen[emF];
+ for emQ:=low(tEMQuellGroesze) to high(tEMQuellGroesze) do
+ nam:=nam+', '+emQuellNamen[emQ];
+ for maF:=low(tMaterieSpeicherGroesze) to high(tMaterieSpeicherGroesze) do
+ nam:=nam+', '+matSpeicherNamen[maF];
+ delete(nam,1,2);
+ pro.schreibe('Ich kenne nur: '+nam,true);
+
pro.destroyAll;
halt(1);
end;
- if teilchen=-2 then
- pre:=emFeldNamen[emF]
- else begin
- pre:=emQuellNamen[emQ];
- if teilchen>=0 then
- pre:=pre+inttostr(teilchen+1);
+ case wasSpeichern of
+ 0: pre:=emFeldNamen[emFeld];
+ 1: pre:=emQuellNamen[emQuelle];
+ 2: pre:=matSpeicherNamen[matFeld];
end;
+ if teilchen>=0 then
+ pre:=pre+inttostr(teilchen+1);
if ableitung then
pre:='d'+pre;
@@ -320,13 +351,13 @@ end;
function tAusgabeDatei.dump: string;
begin
- if teilchen=-2 then
- result:=emFeldNamen[emFelder]
- else begin
- result:=emQuellNamen[emQuellen];
- if teilchen>=0 then
- result:=result+inttostr(teilchen);
+ case wasSpeichern of
+ 0: result:=emFeldNamen[emFeld];
+ 1: result:=emQuellNamen[emQuelle];
+ 2: result:=matSpeicherNamen[matFeld];
end;
+ if teilchen>=0 then
+ result:=result+'['+inttostr(teilchen+1)+']';
if ableitung then
result:=result+'''';
result:=result+' -> '+pre+'-$i'+suf;
@@ -385,40 +416,40 @@ begin
inc(bufPos,sizeof(integer));
sX:=cX-Min(gitter.dX,sDX)/2;
- if teilchen=-2 then begin
- for i:=0 to length(gitter.felders[gitter.aktuelleFelder].inhalt)-1 do begin
- while cX>=sX do begin
- dec(cnt);
- move(gitter.felders[gitter.aktuelleFelder].inhalt[i].emFelder[emFelder,ableitung],(buf+bufPos)^,sizeof(extended));
- inc(bufPos,sizeof(extended));
- sX:=sX+sDX;
+ case wasSpeichern of
+ 0: // em-Feld speichern
+ for i:=0 to length(gitter.felders[gitter.aktuelleFelder].inhalt)-1 do begin
+ while cX>=sX do begin
+ dec(cnt);
+ move(gitter.felders[gitter.aktuelleFelder].inhalt[i].emFelder[emFeld,ableitung],(buf+bufPos)^,sizeof(extended));
+ inc(bufPos,sizeof(extended));
+ sX:=sX+sDX;
+ end;
+ cX:=cX+gitter.dX;
end;
- cX:=cX+gitter.dX;
- end;
- end
- else if teilchen=-1 then begin
- for i:=0 to length(gitter.felders[gitter.aktuelleFelder].inhalt)-1 do begin
- while cX>=sX do begin
- dec(cnt);
- move(gitter.felders[gitter.aktuelleFelder].inhalt[i].emQuellen[emQuellen],(buf+bufPos)^,sizeof(extended));
- inc(bufPos,sizeof(extended));
- sX:=sX+sDX;
+ 1: // em-Quelle
+ for i:=0 to length(gitter.felders[gitter.aktuelleFelder].inhalt)-1 do begin
+ while cX>=sX do begin
+ dec(cnt);
+ val:=gitter.felders[gitter.aktuelleFelder].inhalt[i].impulsIntegral(teilchen,emQuelle);
+ move(val,(buf+bufPos)^,sizeof(extended));
+ inc(bufPos,sizeof(extended));
+ sX:=sX+sDX;
+ end;
+ cX:=cX+gitter.dX;
end;
- cX:=cX+gitter.dX;
- end;
- end
- else begin
- for i:=0 to length(gitter.felders[gitter.aktuelleFelder].inhalt)-1 do begin
- while cX>=sX do begin
- dec(cnt);
- val:=gitter.felders[gitter.aktuelleFelder].inhalt[i].impulsIntegral(teilchen,emQuellen);
- move(val,(buf+bufPos)^,sizeof(extended));
- inc(bufPos,sizeof(extended));
- sX:=sX+sDX;
+ 2: // Materiefeld
+ for i:=0 to length(gitter.felders[gitter.aktuelleFelder].inhalt)-1 do begin
+ while cX>=sX do begin
+ dec(cnt);
+ val:=gitter.felders[gitter.aktuelleFelder].inhalt[i].impulsIntegral(teilchen,matFeld);
+ move(val,(buf+bufPos)^,sizeof(extended));
+ inc(bufPos,sizeof(extended));
+ sX:=sX+sDX;
+ end;
+ cX:=cX+gitter.dX;
end;
- cX:=cX+gitter.dX;
- end;
- end;
+ end{of case};
if cnt<>0 then begin
pro.schreibe('Falsche Anzahl an Ortsschritten geschrieben ('+inttostr(cnt)+')!',true);
pro.destroyall;
@@ -590,17 +621,18 @@ end;
function tImpulsPunkt.nichtnegativieren: extended; // Dichten nicht negativ machen
var
- i,richtung,entfernung: longint;
defizit: extended;
+ i: longint;
pro: tProtokollant;
- jemandErreicht,vorZurueck: boolean;
+(* i,richtung,entfernung: longint;
+ jemandErreicht,vorZurueck: boolean; *)
begin
result:=0;
- for i:=0 to length(werte)-1 do
+ for i:=0 to length(werte)-1 do begin
if werte[i,false]<0 then begin
defizit:=-werte[i,false];
result:=result+defizit;
- werte[i,false]:=0;
+ werte[i,false]:=0; (*
entfernung:=1;
jemandErreicht:=true;
while (defizit>0) and jemandErreicht do begin
@@ -616,8 +648,15 @@ begin
pro:=tProtokollant.create(raumpunkt.felder.gitter.prot,'WertePunkt.nichtnegativieren');
pro.schreibe('Ich konnte ein Teilchendefizit der Sorte '+inttostr(i+1)+' nicht auffüllen!',true);
raumpunkt.felder.gitter.abbrechen;
- end;
+ end; *)
end;
+ if werte[i,false]>1E10 then begin
+ pro:=tProtokollant.create(raumpunkt.felder.gitter.prot,'impulsPunkt.nichtnegativieren');
+ pro.schreibe('An einer Stelle im Phasenraum sind bereits mehr als 10^100 Teilchen, ich breche ab!',true);
+ pro.free;
+ raumpunkt.felder.gitter.abbrechen;
+ end;
+ end;
end;
procedure tImpulsPunkt.akkumuliereEMQuellen(var emQuellen: tEMQuellen; pX,dVP: extended);
@@ -688,16 +727,16 @@ begin
+ raumpunkt.matFelder[i,mfPY,false] * iMGamma[i] * raumpunkt.emFelder[efBZ,false]);
werte[i,true]:=
tX * (
- ( nachbarn[0,true].werte[i,false] - nachbarn[0,false].werte[i,false])
- - sign(tX)*raumpunkt.felder.teilchen[i].diffusion[0] * (
+ (nachbarn[0,true].werte[i,false] - nachbarn[0,false].werte[i,false])
+ + sign(tX)*raumpunkt.felder.teilchen[i].diffusion[0] * (
nachbarn[0,true].werte[i,false] +
nachbarn[0,false].werte[i,false] -
2*werte[i,false]
)
) * iDX/2
+ tP * (
- ( nachbarn[1,true].werte[i,false] - nachbarn[1,false].werte[i,false])
- - sign(tP)*raumpunkt.felder.teilchen[i].diffusion[1] * (
+ (nachbarn[1,true].werte[i,false] - nachbarn[1,false].werte[i,false])
+ + sign(tP)*raumpunkt.felder.teilchen[i].diffusion[1] * (
nachbarn[1,true].werte[i,false] +
nachbarn[1,false].werte[i,false] -
2*werte[i,false]
@@ -846,8 +885,6 @@ begin
end;
function tRaumPunkt.impulsIntegral(teilchen: longint; emQ: tEMQuellGroesze): extended;
-var
- i: longint;
begin
if teilchen<0 then begin
result:=emQuellen[emQ]; // das ist leicht :-)
@@ -857,12 +894,50 @@ begin
result:=0;
case emQ of
- eqRho:
+ eqRho: result:=impulsIntegral(teilchen,msN);
+ eqJX: result:=impulsIntegral(teilchen,msVX);
+ eqJY: result:=impulsIntegral(teilchen,msVY);
+ end{of case};
+ result:=result * felder.teilchen[teilchen].eigenschaften[tsgLadung];
+end;
+
+function tRaumPunkt.impulsIntegral(teilchen: longint; maF: tMaterieSpeicherGroesze): extended;
+var
+ i: longint;
+begin
+ if teilchen<0 then begin
+ result:=0;
+ for i:=0 to length(felder.teilchen)-1 do
+ result:=result+impulsIntegral(i,maF);
+ exit;
+ end;
+
+ result:=0;
+
+ case maF of
+ msN:
for i:=0 to aP-1 do
result:=
result +
phasenraum[i].werte[teilchen,false]*dP;
- eqJX: begin
+ msPX:
+ for i:=0 to aP-1 do
+ result:=
+ result +
+ phasenraum[i].werte[teilchen,false]*dP * (i-aP/2)*dP;
+ msPXSqr:
+ for i:=0 to aP-1 do
+ result:=
+ result +
+ phasenraum[i].werte[teilchen,false]*dP * sqr((i-aP/2)*dP);
+ msPY: begin
+ for i:=0 to aP-1 do
+ result:=
+ result +
+ phasenraum[i].werte[teilchen,false]*dP;
+ result:=result * matFelder[teilchen,mfPY,false];
+ end;
+ msVX: begin
for i:=0 to aP-1 do
result:=
result +
@@ -870,7 +945,7 @@ begin
/ sqrt(1 + (sqr((i-aP/2)*dP) + sqr(matFelder[teilchen,mfPY,false]))*felder.teilchen[teilchen].eigenschaften[tsgIQdrMasse]);
result:=result / felder.teilchen[teilchen].eigenschaften[tsgMasse];
end;
- eqJY: begin
+ msVY: begin
for i:=0 to aP-1 do
result:=
result +
@@ -878,24 +953,11 @@ begin
/ sqrt(1 + (sqr((i-aP/2)*dP) + sqr(matFelder[teilchen,mfPY,false]))*felder.teilchen[teilchen].eigenschaften[tsgIQdrMasse]);
result:=result * matFelder[teilchen,mfPY,false] / felder.teilchen[teilchen].eigenschaften[tsgMasse];
end;
+ msPXRipple:
+ for i:=1 to aP-1 do
+ result:=
+ result + abs(phasenraum[i].werte[teilchen,false]-phasenraum[i-1].werte[teilchen,false])*dP;
end{of case};
- result:=result * felder.teilchen[teilchen].eigenschaften[tsgLadung];
-end;
-
-function tRaumPunkt.impulsIntegral(teilchen: longint): extended;
-var
- i,j: longint;
-begin
- result:=0;
-
- if teilchen<0 then begin
- for j:=0 to length(matFelder)-1 do
- for i:=0 to aP-1 do
- result:=result + phasenraum[i].werte[j,false]*dP;
- end
- else
- for i:=0 to aP-1 do
- result:=result + phasenraum[i].werte[teilchen,false]*dP;
end;
procedure tRaumPunkt.initialisiereDichte(teilchen: longint; breite,n: extended);
@@ -1086,7 +1148,7 @@ begin
for i:=0 to length(massen)-1 do begin
dens:=0;
for j:=0 to length(inhalt)-1 do
- dens:=dens+inhalt[j].impulsIntegral(i);
+ dens:=dens+inhalt[j].impulsIntegral(i,msN);
dens:=dens*teilchen[i].eigenschaften[tsgMasse]*gitter.dX;
prot.schreibe('n['+inttostr(i+1)+'] = '+floattostr(dens)+' (relative Abweichung: '+floattostr(dens/massen[i]-1)+')',true);
end;
diff --git a/Plasmapropagation.lps b/Plasmapropagation.lps
index d47f765..9a7b886 100644
--- a/Plasmapropagation.lps
+++ b/Plasmapropagation.lps
@@ -3,25 +3,25 @@
<ProjectSession>
<Version Value="9"/>
<BuildModes Active="Default"/>
- <Units Count="19">
+ <Units Count="20">
<Unit0>
<Filename Value="Plasmapropagation.lpr"/>
<IsPartOfProject Value="True"/>
- <CursorPos Y="5"/>
+ <TopLine Value="27"/>
+ <CursorPos X="15" Y="48"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="Physikunit.pas"/>
<IsPartOfProject Value="True"/>
- <IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="180"/>
- <CursorPos Y="901"/>
- <FoldState Value=" T3m50/5 pjdlc0G[945jZ0N4 piZjP0A2]9Yj90C7]RDjf0E5]IfjW0E[j4Ejg082]93jH031 pp4pD0G2 T0$2Pc071F311K"/>
- <UsageCount Value="167"/>
+ <TopLine Value="1577"/>
+ <CursorPos Y="714"/>
+ <FoldState Value=" T3mB0{F5 pjdmK0G[945jZ0N4]90jX0A2 piYj90C7]9ajL0v5]9fkW0E[j4Ejg082]93jH03013 T0%LPc071F311#"/>
+ <UsageCount Value="176"/>
<Bookmarks Count="1">
- <Item0 Y="1185"/>
+ <Item0 Y="1247"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit1>
@@ -29,15 +29,17 @@
<Filename Value="../units/protokollunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
- <CursorPos X="15" Y="46"/>
- <UsageCount Value="129"/>
+ <CursorPos X="20" Y="8"/>
+ <UsageCount Value="138"/>
</Unit2>
<Unit3>
<Filename Value="input.plap"/>
<IsPartOfProject Value="True"/>
+ <IsVisibleTab Value="True"/>
<EditorIndex Value="2"/>
- <CursorPos X="20" Y="11"/>
- <UsageCount Value="128"/>
+ <TopLine Value="30"/>
+ <CursorPos X="23" Y="62"/>
+ <UsageCount Value="137"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit3>
@@ -45,24 +47,23 @@
<Filename Value="linearkombination.inc"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
- <TopLine Value="286"/>
- <CursorPos Y="324"/>
- <UsageCount Value="76"/>
+ <TopLine Value="285"/>
+ <CursorPos X="20" Y="323"/>
+ <UsageCount Value="85"/>
</Unit4>
<Unit5>
<Filename Value="linearkombinationen.inc"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
- <TopLine Value="40"/>
- <CursorPos X="234" Y="65"/>
- <UsageCount Value="39"/>
+ <TopLine Value="64"/>
+ <UsageCount Value="48"/>
</Unit5>
<Unit6>
<Filename Value="input.epost"/>
<EditorIndex Value="3"/>
- <TopLine Value="22"/>
- <CursorPos X="38" Y="29"/>
- <UsageCount Value="98"/>
+ <TopLine Value="25"/>
+ <CursorPos X="26" Y="29"/>
+ <UsageCount Value="100"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit6>
@@ -77,9 +78,9 @@
<Unit8>
<Filename Value="../units/lowlevelunit.pas"/>
<EditorIndex Value="-1"/>
- <TopLine Value="549"/>
+ <TopLine Value="558"/>
<CursorPos X="41" Y="567"/>
- <UsageCount Value="9"/>
+ <UsageCount Value="10"/>
</Unit8>
<Unit9>
<Filename Value="../units/mystringlistunit.pas"/>
@@ -144,131 +145,93 @@
<Unit18>
<Filename Value="rk3_8.inc"/>
<EditorIndex Value="-1"/>
- <CursorPos X="41" Y="6"/>
- <UsageCount Value="9"/>
+ <UsageCount Value="10"/>
</Unit18>
+ <Unit19>
+ <Filename Value="/usr/lib/fpc/src/rtl/objpas/math.pp"/>
+ <EditorIndex Value="-1"/>
+ <TopLine Value="559"/>
+ <CursorPos X="14" Y="568"/>
+ <UsageCount Value="10"/>
+ </Unit19>
</Units>
- <JumpHistory Count="30" HistoryIndex="29">
+ <JumpHistory Count="19" HistoryIndex="18">
<Position1>
<Filename Value="Physikunit.pas"/>
- <Caret Line="680" TopLine="595"/>
+ <Caret Line="1683" Column="12" TopLine="1135"/>
</Position1>
<Position2>
<Filename Value="Physikunit.pas"/>
- <Caret Line="78" Column="140" TopLine="55"/>
+ <Caret Line="1685" TopLine="1198"/>
</Position2>
<Position3>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1467" Column="88" TopLine="1438"/>
+ <Caret Line="1686" TopLine="1198"/>
</Position3>
<Position4>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1463" Column="37" TopLine="1443"/>
+ <Caret Line="1687" TopLine="1198"/>
</Position4>
<Position5>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1469" Column="22" TopLine="1444"/>
+ <Caret Line="1223" TopLine="1162"/>
</Position5>
<Position6>
<Filename Value="Physikunit.pas"/>
- <Caret Line="554" Column="31" TopLine="220"/>
+ <Caret Line="1227" TopLine="1162"/>
</Position6>
<Position7>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1479" Column="57" TopLine="1457"/>
+ <Caret Line="1217" TopLine="1069"/>
</Position7>
<Position8>
<Filename Value="Physikunit.pas"/>
- <Caret Line="682" TopLine="336"/>
+ <Caret Line="1229" Column="51" TopLine="1217"/>
</Position8>
<Position9>
<Filename Value="Physikunit.pas"/>
- <Caret Line="920" Column="83" TopLine="810"/>
+ <Caret Line="637" Column="74" TopLine="608"/>
</Position9>
<Position10>
<Filename Value="Physikunit.pas"/>
- <Caret Line="912" Column="37" TopLine="855"/>
+ <Caret Line="625" Column="14" TopLine="609"/>
</Position10>
<Position11>
<Filename Value="Physikunit.pas"/>
- <Caret Line="137" Column="61" TopLine="120"/>
+ <Caret Line="972" Column="8" TopLine="204"/>
</Position11>
<Position12>
<Filename Value="Physikunit.pas"/>
- <Caret Line="915" Column="54" TopLine="778"/>
+ <Caret Line="139" Column="3" TopLine="121"/>
</Position12>
<Position13>
<Filename Value="Physikunit.pas"/>
- <Caret Line="908" Column="68" TopLine="821"/>
+ <Caret Line="656" Column="16" TopLine="632"/>
</Position13>
<Position14>
<Filename Value="Physikunit.pas"/>
- <Caret Line="997" Column="52" TopLine="965"/>
+ <Caret Line="1666" TopLine="973"/>
</Position14>
<Position15>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1484" Column="55" TopLine="1458"/>
+ <Caret Line="622" TopLine="713"/>
</Position15>
<Position16>
<Filename Value="Physikunit.pas"/>
- <Caret Line="75" TopLine="49"/>
+ <Caret Line="30" Column="61" TopLine="46"/>
</Position16>
<Position17>
<Filename Value="Physikunit.pas"/>
- <Caret Line="434" TopLine="353"/>
+ <Caret Line="959" Column="74" TopLine="926"/>
</Position17>
<Position18>
<Filename Value="Physikunit.pas"/>
- <Caret Line="464" TopLine="428"/>
+ <Caret Line="956" Column="5" TopLine="936"/>
</Position18>
<Position19>
<Filename Value="Physikunit.pas"/>
- <Caret Line="1521" Column="60" TopLine="1379"/>
+ <Caret Line="30" Column="64" TopLine="75"/>
</Position19>
- <Position20>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="175" TopLine="175"/>
- </Position20>
- <Position21>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="1247" Column="5" TopLine="1234"/>
- </Position21>
- <Position22>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="1269" Column="5" TopLine="1250"/>
- </Position22>
- <Position23>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="1273" Column="17" TopLine="1253"/>
- </Position23>
- <Position24>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="1341" Column="25" TopLine="1320"/>
- </Position24>
- <Position25>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="1517" Column="10" TopLine="1488"/>
- </Position25>
- <Position26>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="1520" Column="59" TopLine="1500"/>
- </Position26>
- <Position27>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="1544" Column="77" TopLine="1522"/>
- </Position27>
- <Position28>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="1546" Column="63" TopLine="1539"/>
- </Position28>
- <Position29>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="1585" Column="51" TopLine="1539"/>
- </Position29>
- <Position30>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="908" Column="67" TopLine="815"/>
- </Position30>
</JumpHistory>
</ProjectSession>
</CONFIG>
diff --git a/input.epost b/input.epost
index 96ec796..6558880 100644
--- a/input.epost
+++ b/input.epost
@@ -26,50 +26,65 @@ Threadanzahl: 11
parallel lesen
-!setze $symFelder: JX1 AY DAYDT # EX
-!setze $asyFelder: RHO1
+!setze $symFelder: VX1 # AY DAYDT # EX
+!setze $asyFelder: N1 PXRIPPLE1
+!setze $reineInputFelder: PX1 PXSQR1
-!Schleife: $Feld: $asyFelder $symFelder
+!Schleife: $Feld: $reineInputFelder $asyFelder $symFelder
Daten einlesen
Name: $Feld
Genauigkeit: extended
xmax: 5
- tmax: 40
+ tmax: 2
SpaceTime-Datei: /home_raid/erich/Dokumente/Prograemmchen/Plasmapropagation/Daten/$Feld-*_test.dat
Ende
!Schleifenende
-!setze $symBerFelder: VX1
+!setze $asyBerFelder: PXBreite
-Teile JX1 durch RHO1
- Name: VX1
+Teile VX1 durch N1 zu VX1
Ende
-!Schleife: $symmetrie: symmetrisch asymmetrisch
+Teile PX1 durch N1 zu PX1
+Ende
+
+Teile PXRIPPLE1 durch N1 zu PXRIPPLE1
+Ende
+
+Teile PXSQR1 durch N1 zu PXSQR1
+Ende
+
+Multipliziere PX1 mal PX1
+ Name: PX1SQR
+Ende
+
+Linearkombination
+ Name: PXBreite
+ PXSQR1 1
+ PX1SQR -1
+Ende
-?$symmetrie = symmetrisch: !Schleife: $Feld: $symFelder $symBerFelder
-?$symmetrie = asymmetrisch: !Schleife: $Feld: $asyFelder
+!Schleife: $Feld: $symFelder $asyFelder $asyBerFelder
lineares Bild $Feld
-?$symmetrie = symmetrisch: Palette: rotblau
-?$symmetrie = symmetrisch: maximale und minimale Dichten bestimmen (symmetrisch)
-?$symmetrie = asymmetrisch: Palette: erweiterter Regenbogen
-?$symmetrie = asymmetrisch: maximale und minimale Dichten bestimmen
+?$Feld in $symFelder $symBerFelder: Palette: rotblau
+?$Feld in $symFelder $symBerFelder: maximale und minimale Dichten bestimmen (symmetrisch)
+?$Feld in $asyFelder $asyBerFelder: Palette: erweiterter Regenbogen
+?$Feld in $asyFelder $asyBerFelder: maximale und minimale Dichten bestimmen
+?$Feld = N1: Nachbearbeitung: Log: 10^-8
Datei: /home_raid/erich/Dokumente/Prograemmchen/Plasmapropagation/Daten/$Feld_test.bmp
Schriftgröße: 60
Achse: oben 10+
- Achse: links 20+
+ Achse: links 2+
Achse: unten 10+
- Achse: rechts 20+
+ Achse: rechts 2+
Rahmen
Ende
externer Befehl: convert /home_raid/erich/Dokumente/Prograemmchen/Plasmapropagation/Daten/$Feld_test.bmp /home_raid/erich/Dokumente/Prograemmchen/Plasmapropagation/Daten/$Feld_test.png&
-?$symmetrie = symmetrisch: !Schleifenende
-?$symmetrie = asymmetrisch: !Schleifenende
!Schleifenende
warte auf externe Befehle
diff --git a/input.plap b/input.plap
index a6905dd..f83acba 100644
--- a/input.plap
+++ b/input.plap
@@ -7,11 +7,11 @@ allgemein
runge-Kutta-3/8
# runge-Kutta-4
# euler-Vorwärts
- ortsschritt 5*10^-3 * λ
- zeitschritt 5*10^-3 * T
- maximalimpuls 10
- impulsschritt 5 * 10^-3
- zeit 40 * T
+ ortsschritt 10^-2 * λ
+ zeitschritt 10^-2 * T
+ maximalimpuls 5
+ impulsschritt 10^-2
+ zeit 2 * T
!setze $breite: (5 * λ)
breite $breite
mit Fortschrittsanzeige
@@ -20,13 +20,13 @@ allgemeinEnde
ausgaben
prefix /home_raid/erich/Dokumente/Prograemmchen/Plasmapropagation/Daten/
suffix _test.dat
- felder AX,AY,dAYDT,EX,BY,BZ,Rho1,Rho2,JX1
+ felder AX,AY,dAYDT,EX,BY,BZ,Rho1,Rho2,VX1,PX1,PXSqr1,N1,PXRipple1
ausgabenEnde
!setze $tFwhm: (2.5 * T)
!setze $tMitte: (1 * T)
-licht von links 2 * 2^(-2*((t-$tMitte)/$tFwhm)^2) * ω * cos(ω*t) # Zeitableitung des A-Feldes
+# licht von links 2 * 2^(-2*((t-$tMitte)/$tFwhm)^2) * ω * cos(ω*t) # Zeitableitung des A-Feldes
!setze $IonenMassenFaktor: (1836.15267245 + 1838.68366158)
@@ -36,7 +36,8 @@ teilchen1
maximaldichte 10
minimaldichte 0 # 10^-2
maximales dLnN/dX 10
- maximales dLnN/dP 10
+ maximales dLnN/dP 2
+ impulsbreite 1/20
!setze $profilbreite: (4 * λ)
!setze $randbreite: (0.1 * λ)
verteilung stückweise
@@ -58,17 +59,18 @@ teilchen2
maximaldichte nmax1
minimaldichte nmin1
maximales dLnN/dX 10
- maximales dLnN/dP 10
+ maximales dLnN/dP 2
+ impulsbreite 1/20
# verteilung wie teilchen1
verteilung stückweise
0
- ($breite-$profilbreite)/2 - $randbreite
- sin((x - ($breite-$profilbreite)/2 - $randbreite)*π/2/$randbreite)^2
- ($breite-$profilbreite)/2
+ (0.1 + $breite-$profilbreite)/2 - $randbreite
+ sin((x - (0.1 + $breite-$profilbreite)/2 - $randbreite)*π/2/$randbreite)^2
+ (0.1 + $breite-$profilbreite)/2
1
- ($breite+$profilbreite)/2
- sin((x - ($breite+$profilbreite)/2 + $randbreite)*π/2/$randbreite)^2
- ($breite+$profilbreite)/2 + $randbreite
+ (0.1 + $breite+$profilbreite)/2
+ sin((x - (0.1 + $breite+$profilbreite)/2 + $randbreite)*π/2/$randbreite)^2
+ (0.1 + $breite+$profilbreite)/2 + $randbreite
0
stückweiseEnde
teilchen2Ende