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
_______________________________________________
mpb-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/mpb-discuss