Dear meep users,
I have a question about dispersive media and resolution.
If I use the attached control-file, the results obtained for a resolution of
100 seems to be ok, whereas for a resolution of 125 - nothing else is
changed - fields diverge. And again for a resolution of 150 results seem to
be ok again. Could someone please tell me what the problem is and/or
cross-check my observations?
Besides, what is an appropriate run time for continous sources?
Thanks
André Siegel
The control-file is called via
(for single processors "mpirun -np2 meep-mpi" should be changed to "meep")
#! /bin/bash
# change to res=125 and results diverge
# mat=0,1,2 stands for perfect-metal, silver and gold resp.
theta=0
res=100
lc=1
mat=0
mpirun -np 2 meep-mpi theta=$theta res=$res lc=$lc mat=$mat eps=0
metal_FPP_periodic.ctl
mat=1
mpirun -np 2 meep-mpi theta=$theta res=$res lc=$lc mat=$mat eps=0
metal_FPP_periodic.ctl
mat=2
mpirun -np 2 meep-mpi theta=$theta res=$res lc=$lc mat=$mat eps=0
metal_FPP_periodic.ctl
mat=0
theta=41.5
mpirun -np 2 meep-mpi theta=$theta res=$res lc=$lc mat=$mat eps=0
metal_FPP_periodic.ctl
mat=1
mpirun -np 2 meep-mpi theta=$theta res=$res lc=$lc mat=$mat eps=0
metal_FPP_periodic.ctl
mat=2
mpirun -np 2 meep-mpi theta=$theta res=$res lc=$lc mat=$mat eps=0
metal_FPP_periodic.ctl
---control-file starts---
(define-param wavel 0.55) ;i.e. 550nm
(define fcen (/ 1 wavel)) ;centre-fequency
(define-param nfreq 1) ;number of frequencies at which
to compute flux
(define-param pulse_width 4)
(define-param pulse_cutoff 12.0)
(define-param upper 1) ;refractive index of upper
medium (air)
(define-param lower 1.57) ;refractive index of
substrate (BK7 glass), here
is the source located
(define fcen_src (* fcen lower)) ;for the periodicity,
the phase-matching
(Floquet-theorem) has to be adopted to the wavelength inside the material
(define-param res 100)
(define-param lc 1)
(define-param widthX lc) ;unit cell dimensions
(define-param widthZ (* lc (sqrt 3)))
(define-param height_upper 0.3) ;upper dielectric
(define-param pml_upper (/ 20 res)) ; pml layer of 20 cells
(define-param height_ag 0.05) ;metal thickness
(define-param height_lower 0.1) ;lower dielectric (with source)
(define-param pml_lower (/ 20 res)) ; pml layer of 20 cells
(define-param theta 41.15) ;desired angle of
incidence in deg (in material
with the source))
(define alpha (deg->rad theta))
(define base (* -0.5 (+ pml_upper height_upper
height_ag
height_lower pml_lower)))
(define-param eps 0) ;whether or not to use
eps-averaging
(if (= eps 0)
(set! eps-averaging? false)
(set! eps-averaging? true))
(set! force-complex-fields? true)
(set! ensure-periodicity true)
(define-param mat 0) ;0 = perfect metal
(cond
((= mat 1) ;1 = silver
(define einf 3.51)
(define w1 4.63e-3)
(define dep1 2.6e6)
(define g1 3.33e-2)
(define w2 3.7)
(define dep2 0.56)
(define g2 0.26))
((= mat 2) ;2 = gold
(define einf 6.4)
(define w1 0.3)
(define dep1 540)
(define g1 0.033)
(define w2 2.35)
(define dep2 1.72)
(define g2 0.7))
(else (define einf 1)
(define w1 0)
(define dep1 0)
(define g1 0)
(define w2 0)
(define dep2 0)
(define g2 0)))
(set! geometry-lattice (make lattice (size widthX (* -2 base) widthZ)))
(set! geometry (list
(make block
(center 0 (+ base (/ (+ height_upper pml_upper) 2) 0))
(material (make dielectric (epsilon (* upper upper))))
(size widthX (+ height_upper pml_upper) widthZ))
(make block
(center 0 (+ base pml_upper height_upper (/ height_ag 2)) 0)
(if (= mat 0)
(material (make perfect-metal))
;perfect metal
(material (make dielectric (epsilon einf)
;Drude-Lorentz dispersive
material
(polarizations
(make polarizability
(omega w1) (gamma g1)
(delta-epsilon dep1))
(make polarizability
(omega w2) (gamma g2)
(delta-epsilon dep2))))))
(size widthX height_ag widthZ))
(make cone
(center 0 (+ base pml_upper height_upper (/ height_ag 2)) 0)
(material (make dielectric (epsilon 1)))
(radius (/ lc 2)) (height height_ag) (axis 0 1 0) (radius2 (/
lc 2.1)))
(make cone
(center (/ widthX 2) (+ base pml_upper height_upper (/
height_ag 2)) (/
widthZ 2))
(material (make dielectric (epsilon 1)))
(radius (/ lc 2)) (height height_ag) (axis 0 1 0) (radius2 (/
lc 2.1)))
(make cone
(center (/ widthX -2) (+ base pml_upper height_upper (/
height_ag 2)) (/
widthZ 2))
(material (make dielectric (epsilon 1)))
(radius (/ lc 2)) (height height_ag) (axis 0 1 0) (radius2 (/
lc 2.1)))
(make cone
(center (/ widthX 2) (+ base pml_upper height_upper (/
height_ag 2)) (/
widthZ -2))
(material (make dielectric (epsilon 1)))
(radius (/ lc 2)) (height height_ag) (axis 0 1 0) (radius2 (/
lc 2.1)))
(make cone
(center (/ widthX -2) (+ base pml_upper height_upper (/
height_ag 2)) (/
widthZ -2))
(material (make dielectric (epsilon 1)))
(radius (/ lc 2)) (height height_ag) (axis 0 1 0) (radius2 (/
lc 2.1)))
(make block
(center 0 (+ base pml_upper height_upper height_ag (/ (+
height_lower
pml_lower) 2)))
(material (make dielectric (epsilon (* lower lower))))
(size widthX (+ height_lower pml_lower) widthZ))))
(set-param! resolution res)
(set! filename-prefix (string-append (number->string lc) "_" (number->string
res) "_" (number->string pml_upper) "_" (number->string mat) "-"
(number->string eps) "_fpp_" (number->string theta)))
(set! pml-layers (list
(make pml (thickness pml_upper) (strength 2.0) (direction Y) (side Low))
(make pml (thickness pml_lower) (strength 0.75) (direction Y) (side
High)
)))
(define kx 0)
(set! k-point (vector3 kx 0 0))
(set! kx (* fcen_src (sin alpha))) ;apply the
Floquet-theorem on the
boundaries
(change-k-point! (vector3 kx 0 0))
(set! sources
(list
(make source
(src (make continuous-src ;monochromatic plane
wave
(wavelength wavel)))
(amp-func (lambda (p) (exp (* 0+2i pi kx (vector3-x p)))))
(component Hz)
(center 0 (+ base pml_upper height_upper height_ag height_lower) 0)
(size widthX 0 widthZ))))
(set! symmetries (list (make mirror-sym (direction Z) (phase 1))))
;exploit
symmetry perpendicularly to the plane of incidence
(run-until 40 ;what is an
appropriate run time? for increasing run time
fields tend to diverge?
(at-beginning output-epsilon)
(at-end output-hpwr)
(at-end output-dpwr)
(at-end output-sfield-y)
)
---control-file finished---
---------
André Siegel
Ulm University
Inst. of Experimental Physics
Albert-Einstein-Allee 11
89069 Ulm
Germany
Tel. +49(0)731 5023015
Fax. +49(0)731 5023036
E-Mail: [EMAIL PROTECTED]
URL: wwwex.physik.uni-ulm.de
---------
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss