Hi, I fighted with metal definition in meep, too. What I have observed is that 
there is a narrow region between conductivity too high (in Drude model it is 
polarizability at zero frequency) and conductivity too low. If the conductivity 
is too high, the system becomes unstable, usually creating a checkerboard 
pattern near the structure. If the conductivity is about one order of magnitude 
lower, the penetration depth begins to affect my simulation. 

My simulation is easy in that it does not account for any complicated behaviour 
of the metal, which is required just to be a nearly perfect conductor. I just 
realized that it is necessary to make the penetration depth higher or similar 
to size of unit cell. Therefore, for a case similar to mine, I would suggest to 
go along without precise physical behaviour of the metal and compensate for the 
introduced error somewhere. Simulations in the optical regions may be different.

As far as I remember, reducing the Courant factor did never help much; however 
increasing the resolution fights the instability effectively. 

Another sort of instability, manifesting as a low-frequency oscillation, 
occured when the PMLs were close to any resonant structure.

Filip


On Sat, 26 May 2012 18:32:48 +0200
Gwenaelle Vest <gwenaelle.v...@physik.uni-muenchen.de> wrote:

> Dear all,
> 
> I am trying to simulate a gold wire grid polarizer for lambda=850nm,
> i.e at strong resonance. Unfortunately, I always observe a divergence  
> after a few time steps,
> when the light comes out of the structure. The field amplitude goes to
> 10e34 and there are field oscillations much shorter than the
> wavelength in the material.
> 
> At this frequency, n=0.197+5.584i . I have tried to increase the
> resolution, to decrease the Courant factor, to turn off the eps
> averaging function, but until now nothing has worked.
> 
> I used periodic boundary conditions to avoid too large computation
> times. My code is the following:
> 
> - ------------------------
> (reset-meep)
> 
> (define-param per 500) ;period in nm
> (define-param p 1) ;period in meep unit
> (define-param wlgth (/ 850 per )) ;
> (define-param w (/ 150 per )) ; stripe width (150nm)
> (define-param h (/ 285 per )) ; stripe thickness (285nm)
> 
> 
> (define-param slab_position (- 0 3)) ; center of the membrane
> (define-param sz 10) ; cell size along z
> (set! force-complex-fields? true)
> 
> (set! geometry-lattice (make lattice (size 1 1 sz) ))
> 
> (set! eps-averaging? false)
> (set! default-material air)
> (set-param! resolution 20)
> (set-param! Courant 0.01)
> 
> (define gold (make medium (epsilon (- 0 31.15)) (D-conductivity (/ (*
> 2 pi (/ 1 wlgth ) 2.1971) (- 0 31.15)))))
> 
> (set! geometry
>          (append
>                (list
>              (make block (material gold)
>                    (center 0 0 slab_position)
>                    (size  w 1 h)))))
> 
> 
> (set! pml-layers (list (make pml  (direction Z)
>                                  (thickness 1)
>                                  (pml-profile (lambda (u) (* u u u))))))
> 
> (define-param fcen (/ 1 wlgth )) ; pulse center frequency
> (define-param df 0.01)  ; pulse width (in frequency)
> (define-param nfreq 5) ; number of frequencies at which to compute flux
> 
> (set! sources (list
>                 (make source
>                   (src (make continuous-src (frequency fcen)))
>                   (component Ex)
>                   (end-time infinity)
>                   (center 0 0 0)
>                   (size  1 1 0))))
> 
> (set!  k-point (vector3 0 0 0))
> 
> (init-fields)
> 
> (define (detectsource) (begin
>                         (print "source: " (get-field-point Ex (vector3
> 0 0 0)) "\n")))
> 
> (define incidentx ;
>          (add-flux fcen df nfreq
>                    (make flux-region
>                      (center 0 0 (- 0 1.5)) (size 1 1 0))))
> 
> (define outx ;
>          (add-flux fcen df nfreq
>                    (make flux-region
>                       (center 0 0 (- 0 3.5)) (size 1 1 0 ))))
> 
> (run-until 20
>                  (at-beginning output-epsilon)
>                  (at-every 0.5 output-efield-x)
>                  (at-every 0.1 detectsource))
> 
> (display-fluxes incidentx)
> (display-fluxes outx)
> 
> - ------------------------
> 
> Would any of you have an idea about where the problem comes from ?
> 
> Thank you very much for your help!
> 
> Best regards,
> 
> Gwenaelle Vest
> Experimental Quantum Physics,LMU München
> 
> 
> _______________________________________________
> 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