Re: output-dpwr-in-objects

"Steven G. Johnson" <[email protected]>
Newsgroups gmane.comp.science.photonic-bands
Message-ID <[email protected]>
On Fri, 22 Jun 2007, F.S.F. Brossard wrote:
> Continuing with the H1 cavity, the additional line below should output 
> the energy density of all the bands, since the condition is "greater 
> than 0" but nothing is generated (no error but no output). What is 
> wrong?
>
> (run-zeven)
>
> (output-dpwr-in-objects output-dpwr 0 (make cylinder (center 0)
> 			(radius (- 1 r)) (height h)
> 			(material (make dielectric (epsilon eps)))))

The result of (output-dpwr-in-objects ...) is a *function* which you have 
to pass to run-zeven.  That is, do

    (run-zeven (output-dpwr-in-objects ....))

The reason is that what you pass to run-zeven, and the other run 
functions, are functions f(band) which are called for each band and let 
you do whatever computations you want.  output-dpwr-in-objects returns a 
function f(band) that, given a band, checks whether the energy in the 
given object is bigger than the threshold, and if so calls the given 
output function.

Your code, above, calls (output-dpwr-in-objects ...) to produce the 
function, but doesn't actually call the function for any bands and hence 
it doesn't do anything.

See the section "Run functions" in the User Reference section of the MPB 
manual.

Regards,
Steven G. Johnson
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.