Hi Dr. Johnson and Meep Users,
I have been attempting to realize non-uniform resolution in Meep; however, I
have run
into a few problems (even after consulting the seminal paper by Dr. Pendry and
the 18.369
course paper written by Dr. Johnson).
To simplify the process, I have constructed a two dimensional model. In this
model, I have a background medium of n=1 (default), and a rectangular box (n =
1.8) with a small, square aperture cut into its center. I then launch a plane-
wave whose k-vector is fully along +x, by creating E and H continuous sources
along the -z and +y directions, respectively. The low resolution model (which
I am modifying with the transformation) is defined to have ten samples per
wavelength. I am attempting to introduce a transformation which increases the
resolution such that 100 samples are taken per wavelength - however, I do not
intend to adjust the resolution along z (only along x and y). As a result, I
have done the following:
Set my Jacobian, J = diag(0.1 0.1 1). Therefore, the transpose, J' = diag(0.1
0.1 1) and det(J) = 0.01. Following the methodology proposed in the 18.369
course document I have scaled my epsilon and mu tensors as follows:
e' = JeJ'/det(J) = e*diag(1 1 100) //where e is the orginal epsilon tensor
u' = JuJ'/det(J) = u*diag(1 1 100) //where u is the original mu tensor
Similarly, I have attempted to scale E and H:
E' = E(J')^-1 = E*diag(10 10 1)
H' = H(J')^-1 = H*diag(10 10 1)
Since there are no current densities or free charge, I made no other
alterations to the program. Regardless, when comparing the results of my low-
res model (after being modified with a co-ordinate transform) to a model with
the desired resolution under no transform, I have vastly different results.
Additionally, the Ez field in the former model appears greatly attenuated (not
sure why?). I'm not sure why I am not achieving correct results - are there
some detail(s) I am missing? Or is there some aspect of this process I am
overlooking entirely? I have pasted my code below for your convenience. Thank
you for your time/help - I really do appreciate it immensely!
Best Regards,
Duke Anderson - SMU
-------------------------------------------------------------------------------
;This program performs the following operations:
;
; 1. Defines a two-dimensional system with a small square aperture in the
middle of rectangle with a high refractive index
;
; 2. The wavelength of the system is 1.55 um, while the resolution is 10 data
;points per wavelength, or 6.45162 per um.
; BUT, we introduce a Jacobian to perform a transformation to 100 data
;points per wavelength (and scale the
; the permittivity, permeability, E and H fields accordingly).
;
; 3. The background medium is a vaccuum
;
;------------------------------------------------------------------------------
;The following code defines key geometric parameters which may be changed to
meet desired specifications.
(define RESOLUTION 6.45162) ; (In this model 1 unit = 1 um)
(define CellX 24) ; grid length (um) along the x-axis
(define CellY 16) ; grid length (um) along the y-axis
(define PmlThickness 2.0)
(define BlockX 0.75) ; size of rectangular box (um) along the x-axis
(define BlockY 10) ; size of rectangular box (um) along the y-axis
(define BCenterX 4) ; center of box along the x-axis
(define BCenterY 0) ; center of box along the y-axis
(define ApertureX BlockX) ; size of aperture (um) along the x-axis
(define ApertureY BlockX) ; size of aperture (um) along the y-axis
(define ACenterX BCenterX)
(define ACenterY BCenterY)
;------------------------------------------------------------------------------
;The following code sets resolution of the grid space, the refractive index of
;the background medium, instantiates the
;lattice-size/grid-space, creates the pml layers and all geometric structures
(set! resolution RESOLUTION)
(set! default-material (make dielectric (epsilon-diag 1 1 100) (mu-diag 1 1
100)))
(set! geometry-lattice (make lattice (size CellX CellY no-size)))
(set! pml-layers (list (make pml (thickness PmlThickness))))
(set! geometry (list
(make block (center BCenterX BCenterY) (size BlockX BlockY
infinity)
(material (make dielectric (epsilon-diag 3.24 3.24
324) (mu-diag 1 1 100))))
(make block (center ACenterX ACenterY) (size ApertureX
ApertureY infinity)
(material (make dielectric (epsilon-diag 1 1 100) (mu-
diag 1 1 100))))))
;------------------------------------------------------------------------------
;The following Code Defines a plane-wave whose k-vector points along the +x
;direction
(define WAVELENGTH 1.55)
(define SourceX -8)
(define SourceY 0)
(define tstop 500)
(set! sources (list
(make source
(src (make continuous-src (wavelength WAVELENGTH)))
(component (* -1 Ez))
(center SourceX SourceY)
(amplitude 1)
(size 0 (- CellY PmlThickness PmlThickness)))
(make source
(src (make continuous-src (wavelength WAVELENGTH)))
(component Hy)
(center SourceX SourceY)
(amplitude 10)
(size 0 (- CellY PmlThickness PmlThickness)))))
(use-output-directory)
(run-until tstop
(at-beginning output-epsilon)
(at-beginning output-mu)
(to-appended "ez" (at-every 1.0 output-efield-z)))
;------------------------------------------------------------------------------
------------------------------------------
;END OF PROGRAM
;------------------------------------------------------------------------------
------------------------------------------
Nathan R. Huntoon, Ph.D.
Director Innovatoin Gymnasium
Southern Methodist University
Lyle School of Engineering
Caruth Institute for Engineering Education
[email protected]<mailto:[email protected]>
214-768-1402 (office)
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss