> (make block (center 0 0 0) (size sx pitch infinity)
>        (material (make material-function (epsilon-func f)
>       (polarizations
>             (make polarizability
>               (omega 0.59) (gamma 0.001) (delta-epsilon 0.35)))

This is an error.  (I should probably fix libctl so that it returns an 
error in this case; I hadn't noticed that it didn't.)

When you create a material-function, the *only* property that you should 
specify is the material-func (or the epsilon-func): the function that, 
given a position, returns the material (or the dielectric constant, 
respectively) at that position.

Any additional properties that you pass (like the polarizations, in your 
case) are ignored.  (It should really return an error, grrr.)  (Notice 
that, in the Meep manual, material-function is a subclass of 
material-type, not of dielectric.)

The right thing to do is *not* to use an epsilon-func, which returns the 
dielectric constant epsilon at each point and only allows the dielectric 
constant to vary, but to use a material-func, which can return an 
arbitrary material (including polarizations) at each point.

That is, do something like

(make material-function (material-func my-material-func))

where my-material-func is defined as:

(define (my-material-func p)
   (make dielectric
      (epsilon (f p))
      (polarizations
         (make polarizability
            (omega 0.59) (gamma 0.001) (delta-epsilon 0.35)))))

Steven

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

Reply via email to