On 06/23/2017 05:08 PM, ps13ms039 wrote:
I want to set epsilon diag and offdiag vectors. Can it be done by using epsilon-func? Or do I have to use material func?? Please help!

You have to use the material-function, as shown in the example below. Note that Meep will exit with an error if the anisotropic permittivity tensor is not invertible at any grid point. Also, the epsilon output for an anisotropic tensor is just the average of the diagonal entries, interpolated onto the center of each voxel as always.

(set-param! eps-averaging? false)
(set-param! resolution 50)

(define-param nair 1.0)
(define-param n-xx 2.7)
(define-param n-yy 1.3)
(define-param n-zz 3.2)
(define-param n-xy 0.1)
(define-param n-xz 0.2)
(define-param n-yz 0.3)

(define eps-xx (lambda (p)
 (sqr (+ (* (- n-xx nair) (sqr (sin (* 2 pi (vector3-x p))))) nair))))

(define eps-yy (lambda (p)
 (sqr (+ (* (- n-yy nair) (sqr (sin (* 2 pi (vector3-x p))))) nair))))

(define eps-zz (lambda (p)
 (sqr (+ (* (- n-zz nair) (sqr (sin (* 2 pi (vector3-x p))))) nair))))

(define eps-xy (lambda (p)
 (sqr (* n-xy (sqr (cos (* 2 pi (vector3-x p))))))))

(define eps-xz (lambda (p)
 (sqr (* n-xz (sqr (cos (* 2 pi (vector3-x p))))))))

(define eps-yz (lambda (p)
 (sqr (* n-yz (sqr (cos (* 2 pi (vector3-x p))))))))

(define myeps (lambda (p)
                (make medium
                  (epsilon-diag (eps-xx p) (eps-yy p) (eps-zz p))
                  (epsilon-offdiag (eps-xy p) (eps-xz p) (eps-yz p)))))

(set! geometry-lattice (make lattice (size 5 5 no-size)))

(set! geometry (list
       (make block (size infinity 3 infinity) (center 0 0 0)
       (material (make material-function (material-func myeps))))))

(run-until 0 (at-beginning output-epsilon))

_______________________________________________
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