Hello,

To compute transmission spectra, I recently tried two approaches that came to two different results.

The first approach is the standard way using flux planes as given in the meep examples on the webpage.

In the second approach, I store the time data for points in a plane in front of the scatterer. I also do the same for a free space simulation. Then, using MATLAB, I analyze the transforms of the time data as follows:

----- Matlab snippet
fstart = 195 * 1e12 / 3e8 / 1e6; % convert to meep units
fstop = 330  * 1e12 / 3e8 / 1e6; % convert to meep units
fcen = (fstart + fstop)/2;
samplerate = 1/fcen/50;          % field sampled at this rate in at-every

dt = samplerate*1e-6/3e8;        % convert time back into physical units

% the following data comes from h5 files outputted by meep
EN = fft(noscat_ez);             % Ez values along plane without scatterer
ES = fft(scat_ez);               % Ez values along plane with scatterer
HN = fft(noscat_hx);             % Hx values along plane without scatterer
HS = fft(scat_hx);               % Hx values along plane with scatterer

POWS = real( sum(conj(ES - EN) .* (HS - HN) , 2));     % Scattered power
POWN = real( sum(conj(EN) .* HN , 2));                 % Incident power
POW  = POWS ./ POWN;                                   % Reflectivity

f = (1/dt)/2*linspace(0,1,length(ES)/2+1);

plot(f,-POW(1:floor(length(POW)/2+1)),'k');
-----


The attached plot shows a comparison of the two reflection spectra. There is an strong frequency shifting/scaling present. This is unrelated to the resolution of the simulation.

This may be related to a previous unresolved discussion:
http://www.mail-archive.com/[email protected]/msg02073.html
http://www.mail-archive.com/[email protected]/msg00456.html


Previously Prof. Johnson wrote

"When the pulse is this wide (in frequency), you can observe a computational detail: Meep's Gaussian pulse is not actually precisely a Guassian, it is the derivative of a Gaussian (this ensures that there is no net charge left in the computational cell after the pulse is gone, which prevents divergences in some cases with periodic boundaries). The difference between the two is small except for very broad Gaussians in frequency (short pulses in time).

Because the main reason to use a short pulse is to get a broad-spectrum response, and you have to normalize such a response by the input spectrum anyway as explained in the manual, the exact shape of the spectrum shouldn't actually matter."

As we can see in my example above, the normalization doesn't cure the problems caused by a shifting in the spectra (at least not in my matlab processing of the time data).

I'm not sure if this is a bug in meep or if there's something I don't understand in the processing of the time data.

Best Regards,
Matt


Attachment: e2.png
Description: Binary data

_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to