SIGFPU, geometry modelling, symmetry

Lukas Oliva <[email protected]>
Newsgroups gmane.comp.science.photonic-bands
Message-ID <[email protected]>
  Hi,
I would like to know several things about mpb. 1) I encountered SIGFPU
problem when I tried to model something like a ring (rod inside rod) and
I would like to know if this is my fault or some bug in mpb. I attach
the source file (run on debian unstable).
  2) I would like to know how mpb/meep can hande more complicated
geometry: eg. cones or bodies that intersect in such a way that it is
not possible to model it just by adding from the most base to the top
(covering all others) objects.
  3) I would like to know if mpb is able to use different type of
symmetry than the translational (e.g. mirror, rotational ...)?

  I look forward or your response

  Lukas Oliva


(define-param r1 0.2)
(define-param r2 0.1)
(define-param eps1 5)
(define-param eps2 1)

(set! geometry-lattice (make lattice (size 1 1 no-size)
                         (basis1 0.5 0)
                         (basis2 0 0.5)))

(set! geometry
      (list (make cylinder
	      (center 0 0 0) (radius r1) (height infinity)
	      (material (make dielectric (epsilon eps1))))
	    (make cylinder
	      (center 0 0 0) (radius r2) (height infinity)
	      (material (make dielectric (epsilon eps2))))))

; The k-points list, for the Brillouin zone of a triangular lattice:
(set! k-points (list (vector3 0 0 0)          ; Gamma
                     (vector3 0 0.5 0)        ; M
                     (vector3 0.5 0.5 0) ; K
                     (vector3 0 0 0)))        ; Gamma
(define-param k-interp 4) ; number of k-points to interpolate
(set! k-points (interpolate k-interp k-points))

(set-param! resolution 32)
(set-param! num-bands 8)

(define (tm_gap1 r1 r2 eps1 eps2)
    (set! geometry
      (list (make cylinder
	      (center 0 0 0) (radius r1) (height infinity)
	      (material (make dielectric (epsilon eps1))))
	    (make cylinder
	      (center 0 0 0) (radius r2) (height infinity)
	      (material (make dielectric (epsilon eps2))))))

    (print "Conf: r1 = "r1" r2 = "r2" eps1 = " eps1"eps2 = "eps2"\n")
  (if ( (r1 <= r2)||( eps1<=eps2))
    (print "Chyba: r1 = "r1" r2 = "r2" eps1 = " eps1"eps2 = "eps2"\n"))

    (run-tm)
    (retrieve-gap 1))

(define (te_gap1 r1 r2 eps1 eps2)
    (set! geometry
      (list (make cylinder
	      (center 0 0 0) (radius r1) (height infinity)
	      (material (make dielectric (epsilon eps1))))
	    (make cylinder
	      (center 0 0 0) (radius r2) (height infinity)
	      (material (make dielectric (epsilon eps2))))))

    (print "Conf: r1 = "r1" r2 = "r2" eps1 = " eps1"eps2 = "eps2"\n")
  (if ( (r1 <= r2)||( eps1<=eps2))
    (print "Chyba: r1 = "r1" r2 = "r2" eps1 = " eps1"eps2 = "eps2"\n"))

    (run-te)
    (retrieve-gap 1))

 (run-tm)
 (define-param first_tm (retrieve-gap 1))
 (run-te)
 (define-param first_te (retrieve-gap 1))
(print "First TM maximum: " first_tm"\nFirst TE maximum :" first_te"\n")

(maximize-multiple tm_gap1 0.001)
(maximize-multiple te_gap1 0.001)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.