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

Reply via email to