Hi,

    I used meep to calculate the band diagram of a FCC lattice.
As a starting test, I want to find the modes for a FCC silicon sphere at Gamma point
and compare the result with MPB. The unit cell in meep is a cubic which contain 4 primitive
cells of FCC so I used four related point sources in the cubic. Since I only want to do it for
Gamma k-point, the phase for all the four point sources are the same and their positions are
related by FCC lattice vector.

I compared with MPB and they do not match with each other. Another thing I don't understand is
that if I change the resollution for 16 to 32, the eigenmode value changed also.

Did I do something wrong here then?

THe control file is below:


(define-param eps 12.0) ; the dielectric constant of the spheres
(define-param r 0.2475)    ; the radius of the spheres

(Set! geometry-lattice (make lattice (size 1 1 1)))

(set! geometry (list (make sphere (center 0.5 0 0) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center 0 0.5 0) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center 0 0 0.5) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center -0.5 0 0) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center 0 -0.5 0) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center 0 0 -0.5) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center 0.5 0.5 0.5) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center 0.5 0.5 -0.5) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center 0.5 -0.5 0.5) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center -0.5 0.5 0.5) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center -0.5 -0.5 0.5) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center -0.5 0.5 -0.5) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center 0.5 -0.5 -0.5) (radius r)
               (material (make dielectric (epsilon eps))))
             (make sphere (center -0.5 -0.5 -0.5) (radius r)
               (material (make dielectric (epsilon eps))))))

(define Gamma (vector3 0 0 0))
(define X (vector3 1.0 0 0))
(define U (vector3 1.0 -0.25 0.25))
(define L (vector3 0.5 -0.5 0.5))
(define W (vector3 1.0 0.5 0))
(define K (vector3 0.75 0.75 0))

(set-param! resolution 32)

(define-param fcen 0.5) ; pulse center frequency                           
(define-param df 1.0) ; pulse freq. width: large df = short impulse

(define gauss (make gaussian-src (frequency fcen) (fwidth df)))

(set! sources (list (make source (src gauss) (component Ez) (center 0.25 -0.2 -0.1))
                    (make source (src gauss) (component Ez) (center -0.25 -0.2 0.4))
                                 ;(amplitude (exp (* 0+1i 3.8484))))
                    (make source (src gauss) (component Ez) (center -0.25 0.3 -0.1))
                                 ;(amplitude (exp (* 0+1i 6.1261))))
                    (make source (src gauss) (component Ez) (center 0.25 0.3 0.4))))
                                 ;(amplitude (exp (* 0+1i 2.2777))))))

(define-param k-interp 10) ; # k-points to interpolate, otherwise

(run-k-point 300 Gamma)



when the resolution is 16: I got
harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error
harminv0:, 0.616805707786743, -4.80860297651149e-6, 64135.645092727, 0.0293779449455718, -0.0268372130726619+0.0119510519920881i, 2.30613421161918e-6
harminv0:, 0.759514427576941, -8.58336442811018e-7, 442433.986077511, 0.163473048410443, -0.0243476728915747-0.161649708881172i, 1.69941963772405e-7
harminv0:, 0.790716987312857, -3.30508424203743e-7, 1196213.06055639, 0.122358672650449, -0.110293999648884-0.0529799812592625i, 1.40372486450671e-7
harminv0:, 0.793073462463147, -0.00162812270761397, 243.554573237727, 0.936676610670402, 0.329681205022881-0.876740198708633i, 1.71925003237078e-5
harminv0:, 0.929864152527201, -6.05007189918042e-5, 7684.7363801839, 0.0123979522959266, 0.00859374936061214-0.0089362572175968i, 1.10887915385284e-5
harminv0:, 0.932710717168274, 9.51715887107628e-5, -4900.15313290024 , 0.0113901812214862, 0.00684478211119213-0.00910413016759981i, 1.84081186916431e-5
harminv0:, 0.989734090280072, -1.77177758050525e-6, 279305.399608294, 0.00579217895484645, -0.00499114731261583-0.00293901098139048i, 1.69532609719303e-6


when it is 32:

harminv0:, frequency, imag. freq., Q, |amp|, amplitude, error
harminv0:, 0.632758917988415, 1.39544699596331e-6, -226722.662995741, 0.0257632568402819, -0.0145736257138361+0.0212451132397863i , 2.69810176856384e-7
harminv0:, 0.79957748255391, 1.73647127024654e-7, -2302305.53264607, 0.105262683807294, -0.104815339185766-0.00969418762388466i, 3.36203692855107e-8
harminv0:, 0.820761297128746, -3.07085150290823e-8 , 13363741.2351501, 0.0827642717450183, -0.0696315731325404+0.0447366594704042i, 5.29839249500938e-8
harminv0:, 0.830575555983451, 2.94765230371777e-6, -140887.640468293, 0.00204166038358917, -0.00132311440370543+0.00155491009277858i , 1.3836976222793e-6
harminv0:, 0.992485636083259, 1.46644485481453e-5, -33839.8553762454, 0.00311398711226301, -0.00292681187250405-0.0010633381392151i, 1.77159532105505e-6


regards




On 4/15/06, Steven G. Johnson <[EMAIL PROTECTED]> wrote:
On Sat, 15 Apr 2006, Qi Wu wrote:
> Just a hint I got. The "amplitude()" seems need to be in the exact
> format in your example. I have tried amplitude (a +bi) does not work.

Scheme does not do arithmetic in infix.   i.e. you can't to "3 + 4", you
have to do (+ 3 4).

When you say "3+4i", without spaces, it is not doing arithmetic, it is the
syntax for expressing a complex number...you should think of it as a
single object, not as an arithmetic _expression_, and there cannot be
spaces.  So, for example, you can do
        (+ 3+4i 5+6i)
and it will give you 8.0+10.0i, but you can't do (3 + 4 i).

(The other example of expressions that look like arithmetic but are just
the syntax for a number type are rational numbers: if you type "3/4" or
"1/3" in Scheme, it is not a division operation, it is the _expression_ for
a rational number.  Guile 1.8 supports exact rational arithmetic.)

Steven

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



--
********************************************************************************
wuqi

Department of Electrical & Computer Engineer
University of Colorado -Boulder

Add:    1350 20th St. Apt G-25
           Boulder, CO 80302
Tel:     (303) 786-1580
Cell:    (720) 352-7916
Email:  [EMAIL PROTECTED]   ; [EMAIL PROTECTED]
Msn:    [EMAIL PROTECTED]
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to