Thursday, November 30, 2006

Meep for developers

If you want to modify the Meep source code, you will want to have a number of additional packages, most importantly:

  • The Darcs ( version-control system.

Once you have Darcs, you can grab the latest development version of Meep with:

darcs get 

This gives you a fresh, up-to-date Meep repository in a directory meep. See for more information on using Darcs; perhaps the most useful command is darcs pull, which you can execute periodically to get any new updates to the development version.

Darcs will give you an absolutely minimal set of sources; to create a usable Meep directory, you should run:


in the meep directory. (And subsequently, if you are editing the sources you should include --enable-maintainer-mode whenever you reconfigure.) To do this, however, you will need a number of additional packages beyond those listed above:

  • GNU autoconf (, automake (, and libtool ( — these are used to create the Makefiles and configure scripts, and to build shared libraries.
  • The Glasgow Haskell Compiler ( — some of Meep's C++ source code files are actually generated by programs (in the hsrc/ subdirectory) written in a programming language called Haskell.
  • SWIG ( — the Scheme/libctl interface to Meep is largely generated by a program called SWIG (Simple Wrapper and Interface Generator). We currently require SWIG version 1.3.25 or later. Moreover, if you are using 1.3.27 or earlier, you must patch the file Source/Modules/guile.cxx with this bug fix (

Wednesday, November 29, 2006


; This example creates an approximate TM planewave in vacuum
; propagating at a 45-degree angle, by using a couple of current sources
; with amplitude exp(ikx) corresponding to the desired planewave.

(define-param s 11) ; the size of the computational cell, not including PML
(define-param dpml 1) ; thickness of PML layers

(define sxy (+ s (* 2 dpml))) ; cell size, including PML
(set! geometry-lattice (make lattice (size sxy sxy no-size)))

(set! pml-layers (list (make pml (thickness dpml))))
(set-param! resolution 10)

; pw-amp is a function that returns the amplitude exp(ik(x+x0)) at a
; given point x. (We need the x0 because current amplitude functions
; in Meep are defined relative to the center of the current source,
; whereas we want a fixed origin.) Actually, it is a function of k
; and x0 that returns a function of x ...
(define ((pw-amp k x0) x)
(exp (* 0+1i (vector3-dot k (vector3+ x x0)))))

(define-param fcen 0.8) ; pulse center frequency
(define-param df 0.02) ; turn-on bandwidth
(define-param kdir (vector3 1 1)) ; direction of k (length is irrelevant)
(define k (vector3-scale (* 2 pi fcen)
(unit-vector3 kdir))) ; k with correct length
(define kxcos (vector3-x (unit-vector3 k))) ; direction cosine of k in x
(define kycos (vector3-y (unit-vector3 k))) ; direction cosine of k in y

(set! sources

; left
(make source
(src (make continuous-src (frequency fcen) (fwidth df)))
(component Ez) (center (* -0.5 s) 0) (size 0 s)
(amp-func (pw-amp k (vector3 (* -0.5 s) 0))))

; bottom
(make source
(src (make continuous-src (frequency fcen) (fwidth df)))
(component Ez) (center 0 (* -0.5 s)) (size s 0)
(amp-func (pw-amp k (vector3 0 (* -0.5 s)))))


(define-param T 400) ; run time
(run-until T (at-end output-efield-z))



a. 提高外延片内量子效率;
b. 提高大尺寸芯片的外量子效率; (我正在做的工作)
c. 提高封装的取光效率;。
(4) 荧光粉的制作和涂敷技术
a. 高性能荧光分的制造技术;
b. 荧光粉的涂敷工艺技术。

Monday, November 13, 2006

Meep Introduction - AbInitio

Meep Introduction - AbInitio: "Units in Meep

You may have noticed the lack of annoying constants like ε0, μ0, c, and 4π — that's because Meep uses 'dimensionless' units where all these constants are unity (you can tell it was written by theorists). As a practical matter, almost everything you might want to compute (transmission spectra, frequencies, etcetera) is expressed as a ratio anyway, so the units end up cancelling.

In particular, because Maxwell's equations are scale invariant (multiplying the sizes of everything by 10 just divides the corresponding solution frequencies by 10), it is convenient in electromagnetic problems to choose scale-invariant units. That means that we pick some characteristic lengthscale in the system, a, and use that as our unit of distance.

Moreover, since c = 1 in Meep units, a (or a / c) is our unit of time as well. In particular, the frequency ω in Meep (corresponding to a time dependence e − iωt) is always specified in units of 2πc / a, which is equivalent to specifying ω as 1 / T: the inverse of the optical period T in units of a / c. This, in turn, is equivalent to specifying ω as a / λ where λ is the vacuum wavelength. (A similar scheme is used in MPB.)

For example, suppose we are describing some nanophotonic structure at infrared frequencies,"

Light-emitting diode - Wikipedia, the free encyclopedia

Light-emitting diode - Wikipedia, the free encyclopedia