From 5edd975607b8b0824995b7c44674a535686a60c8 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 30 Sep 2015 15:05:04 +0200 Subject: FFT wird nun eher geplant, sodass die initialiserte Dichte nicht mehr überschrieben wird MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Physikunit.pas | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/Physikunit.pas b/Physikunit.pas index 24e3140..736df34 100644 --- a/Physikunit.pas +++ b/Physikunit.pas @@ -631,25 +631,6 @@ begin (impulsraum[i,abl]+aX*aP)^:=pi; end; - fillchar(massen,sizeof(massen),#0); - setlength(massen,length(teilchen)); - for i:=0 to length(massen)-1 do - massen[i]:=0; - for i:=0 to aX-1 do - for j:=0 to length(teilchen)-1 do begin - dens:=_teilchen[j].gibDichte(gitter.xl+(i-2)*gitter.dX,parent.kvs); - initialisiereDichte(i,j,_teilchen[j].breite,dens); - massen[j]:=massen[j]+dens*gitter.dX*teilchen[j].eigenschaften[tsgMasse]; - end; - for rechts:=false to true do begin - lichters[rechts]:=tMyStringlist.create(nil,''); - lichters[rechts].text:=lichter.text; - end; - lichters[false].grep('^links .*'); - lichters[false].subst('^links *',''); - lichters[true].grep('^rechts .*'); - lichters[true].subst('^rechts *',''); - i:=max((aP div 2 + 1)*aX,(aX div 2 + 1)*aP); fftw_getmem(fftTmp,(i+1)*sizeof(complex_double)); fillchar(fftTmp^,(i+1)*sizeof(complex_double),#0); @@ -658,7 +639,7 @@ begin lFftTmp^.re:=pi; lFftTmp^.im:=sqr(pi); - fillchar(ffts,sizeof(ffts),#0); + fillchar(ffts,sizeof(ffts),#0); // Vorsicht, die Planung der FFTs überschreibt den Input, auch wenn die eigentlichen FFTs das nicht tun! setlength(ffts,length(teilchen)); for i:=0 to length(ffts)-1 do begin ffts[i,0,false]:= // Planung der Hintransformationen über x @@ -687,7 +668,26 @@ begin double *out, const int *onembed, int ostride, int odist, unsigned flags); - *) + *) + + fillchar(massen,sizeof(massen),#0); + setlength(massen,length(teilchen)); + for i:=0 to length(massen)-1 do + massen[i]:=0; + for i:=0 to aX-1 do + for j:=0 to length(teilchen)-1 do begin + dens:=teilchen[j].gibDichte(gitter.xl+(i-2)*gitter.dX,parent.kvs); + initialisiereDichte(i,j,teilchen[j].breite,dens); + massen[j]:=massen[j]+dens*gitter.dX*teilchen[j].eigenschaften[tsgMasse]; + end; + for rechts:=false to true do begin + lichters[rechts]:=tMyStringlist.create(nil,''); + lichters[rechts].text:=lichter.text; + end; + lichters[false].grep('^links .*'); + lichters[false].subst('^links *',''); + lichters[true].grep('^rechts .*'); + lichters[true].subst('^rechts *',''); end; destructor tFelder.destroy; -- cgit v1.2.3-54-g00ecf