Hi all,
I have a following problem, and any clues are much appreciated.
I want to do a simple 1D simulation of normal reflectance from air to a
dielectric of constant epsilon (eps=9). According to Fresnel's equations
reflectance should be 0.25 regardless of frequency.
But, when I send a Gaussian pulse (fmin = 0 fmax =1.0) I get about 4%
discrepancy for f=1.0 (0.238 instead of 0.25, resolution 36). Initially I
assumed that the tails of the Gaussian source produce some numerical errors but
even with fmin=0.5, fmax=1.5, such that fcen=1.0 I still get the same answer.
As
resolution is increased convergence gets better, but even at resolution=52 it's
still not ideal. I know that wavelengths close to lattice spacing cause issues
but f=1 <=> lambda = 1 >> 1/52. Or is it?
Here is my code below:
(define-param norm? true)
(define-param dpml 2)
(define-param sx (* 2 (+ 1 dpml)))
(set-param! resolution 36)
(define-param fmin 1e-3)
(define-param fmax 1.0)
(define-param fcen (* 0.5 (+ fmin fmax)))
(define-param df (- fmax fmin))
(define-param nfreq 100)
(define-param material1
(make dielectric (epsilon 9)))
(define slab
(make block (center (* 0.25 sx))
(size (+ 1 dpml) infinity infinity)
(material material1)))
(set! default-material air)
(set! geometry-lattice (make lattice (size sx no-size no-size)))
(set! geometry (if (not norm?)
(list slab)
'()))
(set! pml-layers (list (make pml (direction X) (thickness dpml))))
(set! sources (list
(make source
(src (make gaussian-src (frequency fcen) (fwidth df)))
(component Ez) (center (- 0.1))
(size 0) (amplitude 1.0) )
))
(define refl
(add-flux fcen df nfreq
(make flux-region
(center 0) (size 0))))
(if (not norm?) (load-minus-flux "refl-flux" refl))
(run-until 1000
)
(if norm? (save-flux "refl-flux" refl))
(display-fluxes refl)
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss