Hello meep users,
I have problems trying to calculate the Q factor of a single defect cavity.
I am using the values given by Harminv as a reference.
Here I send the CTL code. Can anybody tell me what I am doing wrong? Why the
calculation of energies with "Een, f1 and integrate-field-function" does not
agree with the results given using directly "electric-energy-in-box"?
Important things: the code does not have running problems (I mean, I can see
results, "it compiles"), and the results using Een or electric-energy-in-box
differs in factor that goes from 8.00 to 11.00. I have checked of it was the
epsilon, but it doesn't have a relation. Also, from one experience seems to
be pi^2 (=9.86), but finally I found it moves in the mentioned range.
I hope you can help me.
Thank you,
Gerardo.
CTL code:
;*************************************************************************************
(define local_eps 0)
(define (f1 r ez ey ex)
(set! local_eps (get-epsilon-point r))
(* local_eps (+ (* ez (conj ez)) (* ey (conj ey)) (* ex (conj ex)))))
(define Een 0)
(define FieldE00 0)
(define (do-Een)
(set! FieldE00 (get-field-point Hz (vector3 0 0 0)))
(print "Field point E = " FieldE00 "\n")
(set! Een (+ Een (* 0.5 (integrate-field-function (list Ez Ey Ex)
f1 (volume (size wx wy) (center 0 0))) ) ) ))
(define (do-Eendirect)
(print "Een (direct)= " (electric-energy-in-box (volume (size wx wy)
(center 0 0)) ) "\n") )
(define Emaxt 0)
(define Emax 0)
(define (do-Emax)
(set! Emaxt (* 2 (max-abs-field-function (list Ez Ey Ex) f1
(volume (size wx wy) (center 0 0))) ) )
(print "Emaxt = " Emaxt "\n")
(if (> Emaxt Emax) (set! Emax Emaxt) )
)
(define (f2 r hz hy hx)
(+ (* hz (conj hz)) (* hy (conj hy)) (* hx (conj hx))))
(define Hen 0)
(define (do-Hen)
(set! Hen (+ Hen (* 0.5 (integrate-field-function (list Hz Hy Hx) f2
(volume (size wx wy) (center 0 0))) ) ) ))
(define (do-Hendirect)
(print "Hen (direct)= " (magnetic-energy-in-box (volume (size wx wy)
(center 0 0)) ) "\n") )
(define (do-EHendirect)
(print "EHen (direct)= " (field-energy-in-box (volume (size wx wy)
(center 0 0)) ) "\n") )
(define Hmaxt 0)
(define Hmax 0)
(define (do-Hmax)
(set! Hmaxt (* 2 (max-abs-field-function (list Hz Hy Hx) f2
(volume (size wx wy) (center 0 0))) ) )
(print "Hmaxt = " Hmaxt "\n")
(if (> Hmaxt Hmax) (set! Hmax Hmaxt) )
)
(define WandX (/ wx 2) )
(define WandY (/ wy 2) )
(define WandXn (- 0 WandX) )
(define WandYn (- 0 WandY) )
(define Px1 0)
(define (do-Px1)
(set! Px1 (+ Px1 (flux-in-box X (volume (center WandX 0) (size 0 wy)))) ))
(define Px2 0)
(define (do-Px2)
(set! Px2 (+ Px2 (flux-in-box X (volume (center WandXn 0) (size 0 wy))))
))
(define Py1 0)
(define (do-Py1)
(set! Py1 (+ Py1 (flux-in-box Y (volume (center 0 WandY) (size wx 0)))) ))
(define Py2 0)
(define (do-Py2)
(set! Py2 (+ Py2 (flux-in-box Y (volume (center 0 WandYn) (size wx 0))))
))
(define Q2 0)
(define (do-Q2)
(set! Q2 (* fcen (/ 1 (+ (- Px1 Px2) (- Py1 Py2))) (+ Een Hen) ) ) )
(define Veff 0)
(define (do-Veff)
(set! Veff (/ (+ Een Hen) (+ Emax Hmax) ) ) )
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss