Hi,

I finally installed a new version of Linux and was able to compile MEEP in my old linux-box. Things seem to work fine with 2D structures, but I have a problem when I run a 3D testing structure.

I'm trying (as an exercise) to calculate the reflectance and transmittance of a simple cubic lattice. I have a gaussian source, which is a 1x1 plane perpendicular to the Z direction. The frequency center is 0.5 and the fwidth is 0.8. However, when I plot the flux for the empty space (the reference to divide the flux from structure later), the spectrum that I get shows null intensity up to 0.5 and then it suddenly increases and shows half of a gaussian over 0.5. In other words, there is nothing under 0.5! If I do something similar in 2D with line sources (and flux collectors), I don't see this problem and I get a nice gaussian... What am I doing wrong?

I'm copying my ctl file here:

; transmission and reflectance of a sc structure of touching spheres.

(define-param nl 6) ; number of layers
(define-param pmlt 1) ; thickness of the pml
(define sz (+ 4 (* 2 pmlt) nl)) ; size of cell in Z direction

(set! geometry-lattice (make lattice (size 1 1 sz)))

(define-param no-phc? true) ; if true, have air, otherwise, PhC

(if no-phc?
        (define diel 1.0)
        (define diel (* 1.45 1.45)))

(define silica (make dielectric (epsilon diel)))

(set! geometry
   (geometric-object-duplicates (vector3 0 0 1) 0 (- nl 1)
                 (make sphere
                  (center 0 0 (+ 0.5 (* -0.5 nl)))
                  (radius 0.5)
                (material silica))))       

(define-param fcen 0.5) ; pulse center frequency
(define-param df 0.8)  ; pulse width (in frequency)
(set! sources (list
                (make source
                  (src (make gaussian-src (frequency fcen) (fwidth df)))
                  (component Ex)
                  (center 0 0 (+ pmlt (* -0.5 sz)))
                  (size 1 1 0))))

(set! pml-layers (list (make pml (direction Z) (thickness pmlt))))
(set-param! resolution 10)

(define-param nfreq 400) ; number of frequencies at which to compute flux
(define trans ; transmitted flux
      (add-flux fcen df nfreq
             (make flux-region
                   (center 0 0 (- (/ sz 2) 1 pmlt)) (size 1 1 0))))
(define refl ; reflected flux
      (add-flux fcen df nfreq
                 (make flux-region
                   (center 0 0 (+ 1 pmlt (* -0.5 sz))) (size 1 1 0))))

; for normal run, load negated fields to subtract incident from refl. fields
(if (not no-phc?) (load-minus-flux "refl-flux" refl))

(run-sources+
 (stop-when-fields-decayed 50 Ex
                             (vector3 0 0 (- (/ sz 2) 1 pmlt))
                             1e-3)
 (at-beginning output-epsilon))

; for normalization run, save flux fields for refl. plane
(if no-phc? (save-flux "refl-flux" refl))

(display-fluxes trans refl)


Thanks!,
        Floren

Florencio Garcia-Santamaria, PhD
Postdoctoral Research Associate
Department of Materials Science and Engineering.
University of Illinois at Urbana-Champaign.
Phone #: 217-333-6779
Personal web-page -> users.mrl.uiuc.edu/floren

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

Reply via email to