i didn't find the 'cause' of the problem, but if you reduce the strength of the PML down to 0.1 from the default value of 1, it doesn't blow up. it also appears that you need to increase the size of the PML. finally, it appears to be dependent on the actual parameters you use for the dispersive material(s).

perhaps i'll try 0.10.2...


On Mar 7, 2009, at 10:32 PM, JL Liu wrote:

That is exactly the problem I have mentioned in my last post:

http://ab-initio.mit.edu/pipermail/meep-discuss/2008-December/002343.html

And I have tested your scripts in my computer, using both 0.10.2 and 0.20.3.
In 0.10.2 everything is OK, but when using 0.20.3, the problem you
mentioned occured.

Have you found the cause of this problem?


2009/2/23 G.J. Parker <meep-disc...@parker9.com>:
------

below is a 2d calculation. it's simply a metal slab, a point source and a
pml around the entire domain.

if the metal slab is 'metal', there is no problem.

if the metal slab is a dispersive material ('al_mat' below) then only if the source is Ez is the simulation stable. otherwise the energy in the domain
grows without bounds.

if i change it so the x-direction is periodic, i have no problem. therefore, there seems to be a possible stability problem w/ dispersive materials
running into a pml.

a different *.ctl file in 3d is unstable regardless of the source as long as
the slab is dispersive.

thanks for any help/suggestions.

(both meep 0.20.3 and 0.9 tried)

------


(print "starting control file...\n")
(set-param! eps-averaging? false)

(define-param print-epsilon? false)  ;print eps.h5 file?

(define-param pml_h    0.5)
(define-param res    100)   ; resolution

(define-param fcen 1.82) ; center = 550nm
(define-param df 0.33)  ; center = 550nm, width=100nm
(define-param nfreq 201) ;number of frequency sample points

(define x_tot (* 0.76 2))
(define y_tot 0.76)

(set! geometry-lattice (make lattice (size (+ pml_h pml_h x_tot) (+ pml_h
pml_h y_tot) no-size)))

(set! resolution res)

(print "defining materials...\n")
(define al_mat  (make dielectric (epsilon 1)
(polarizations (make polarizability (omega 1.0e-5) (gamma
0.722) (delta-epsilon 1.38E+12)))))


(print "defining geometries...\n")
(set! geometry  (list
       (make block (center 0 -0.12 0)
; (material al_mat) (size (+ pml_h pml_h x_tot) 0.12 infinity)))) (material metal) (size (+ pml_h pml_h x_tot) 0.12 infinity))))

(print "defining pml...\n")
(set! pml-layers (list (make pml (thickness pml_h))))

(print "defining source...\n")
(set! sources (list
  (make source (src (make gaussian-src (frequency fcen) (fwidth df)))
(component Ez) (center 0 -0.02 0))
; (make source (src (make gaussian-src (frequency fcen) (fwidth df)))
(component Ey) (center 0 -0.02 0))
; (make source (src (make gaussian-src (frequency fcen) (fwidth df)))
(component Ex) (center 0 -0.02 0))
))

   ; do the simulation
(define tim 5)  ;time to sample energy in domain
(print "time to sample energy: " tim "\n")
(define tot_energy 0)
(define max_energy -1)
(define ratio 1)
(if print-epsilon? (output-epsilon))
(run-sources+ 60
   (at-every tim (lambda ()
(set! tot_energy (meep-fields-field-energy-in-box fields (volume
(center 0 0 0) (size x_tot y_tot)) ))
       (set! max_energy (max max_energy tot_energy))
       (set! ratio (/ tot_energy max_energy))
       (print "energy decay (t=" (meep-time) "s, " (meep-fields-t-get
fields) " timestep) = " tot_energy " / " max_energy " = " ratio "\n"))
   )
)
(print "done with control file\n")


_______________________________________________
meep-discuss mailing list
meep-discuss@ab-initio.mit.edu
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss



_______________________________________________
meep-discuss mailing list
meep-discuss@ab-initio.mit.edu
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to