Hi Steven and Meep users,
I would like to implement a loop in Meep in order to calculate the Q,
frequency, etc of a cavity for different values of hole radius for example. In
MPB, I first define the structure in a function such as
(define (structure r) (set! geometry...)) then create a (do loop for different
values of r) in which I call the function (structure r) and call (run-te)
within the loop and it works fine. However in Meep an error is returned:
In procedure new-meep-fields:
No matching method for generic function 'new_meep_fields'
It seems that in meep we can't define the geometry within a function in the
same way as in MPB, so what is the correct procedure?
Below is an example in meep which fails, the run function is just a test (no
source).
Thanks for your help,
Fred
; square lattice
; define cell size
(define-param sx 8)
(define-param sy 6)
(define-param sz 3)
(define-param res 20) ; resolution
(define-param h 0.75) ; thickness of waveguide
(define-param r 0.2) ; radius of holes
(define-param n 3.46) ; index of waveguide
(define rstart 0.2)
(define rstep 0.05)
(define rstop 0.3)
(set! eps-averaging? false)
(set! geometry-lattice (make lattice (size sx sy sz)))
; define periodic array
(define (structure r)
(set! geometry
(append
(list (make block (center 0) (size sx sy h)
(material (make dielectric (index n)))))
(geometric-objects-lattice-duplicates
(list
(make cylinder (center 0) (radius r) (height h)
(material air)))))))
(set! k-point (vector3 0))
(set-param! resolution 20)
; set-up symmetry
(set! symmetries (list (make mirror-sym (direction Y) (phase -1))
(make mirror-sym (direction X) (phase
-1))))
(do ((r rstart (+ r rstep))) ((> r rstop))
(structure r)
(run-until 200 (at-beginning output-epsilon)))
--
Frederic Brossard
Hitachi Cambridge Laboratory
Cavendish Laboratory
J J Thomson Avenue
Cambridge CB3 0HE
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss