Andrea Locatelli | 5 Feb 2003 16:16
Picon

Channel drop filter

I have a question about an application of MPB.
I'm trying to reproduce the results from the paper "Channel drop filters
in photonic crystals" (Joannopoulos et al.), where the authors use a
doubly degenerate hexapole defect
to obtain the full dropping of the single channel.
I have simulated the defect, as described in the MPB tutorial and I have
found the doubly degenerate hexapole defect. Then the paper says that
the presence of the two waveguides in the structure breaks the
degeneracy, thus the authors properly increase the refractive index of
the neighboring rods.
I'd like to know if it is possible to use MPB for the design of the
whole structure according to the guidelines proposed in the paper; I
tried to do it, but the position of the defects is different... moreover
I can't understand how to use MPB  to tune the defects in presence of
the waveguides.

Thanks a lot,

Andrea Locatelli

_______________________________________________
mpb-discuss mailing list  -  mpb-discuss <at> ab-initio.mit.edu
http://ab-initio.mit.edu/mailman/listinfo/mpb-discuss

Navin Bhat | 5 Feb 2003 19:28
Picon
Picon

Input-independent problem with SAFE_FIELD

Hi Steven,

I'm getting an error that is independent of my input to mpb-1.4.1 (see
below for further system info)  

Attached is the file trih-v2.ctl, which calls (load "NL-funcs-v2.ctl"). At
each k-point it calls the band-func beta-iso-fast, which calculates
integrals of functions of d-fields and epsilon.  The point is to do some
calculations for nonlinear pulse propagation, although this file is a
simplified one for debugging purposes.

The problem is that each time I run trih-v2.ctl, the calculation dies at a
different k-point (the 4th and 21st in the attached files).  It always
dies during beta-iso-fast, but at a different point in that calculation
each time (from the .out file it is apparent that (get-epsilon) is called
by beta-iso-fast a varying number of times before failure).  The error is
always this:

CHECK failure on line 173 of ../../../mpb-ctl/field-smob.c: wrong type
argument: expecting field

So somehow, one of the fields I allocate in beta-iso-fast is ceasing to be
a SAFE_FIELD at some k-point.  Anecdotally, I never seem to have a
problem with smaller grid sizes, eg. 32 x 32 x 1.

The result is clearly independent of my input to mpb.  I don't see how the
randomness in the initial fields can matter, since the eigensolver
converges each time.  Furthermore, when beta-iso-fast executes
completely, the result seems reasonable.  The only two other
input-independent things I can think of are the following:
(Continue reading)

Steven G. Johnson | 5 Feb 2003 21:47
Picon

Re: Channel drop filter

Once you have the basic defect structures, it might be easier to use a
time-domain code to tune the defect frequencies in the presence of the
waveguides, since you also need to check that e.g. the Q's are the
same.  That being said, in principle you should be able to do an MPB
calculation with a large supercell to do the side-rod tuning in order to
force the degeneracy.

On Wed, 5 Feb 2003, Andrea Locatelli wrote:

> I have a question about an application of MPB.
> I'm trying to reproduce the results from the paper "Channel drop filters
> in photonic crystals" (Joannopoulos et al.), where the authors use a
> doubly degenerate hexapole defect
> to obtain the full dropping of the single channel.
> I have simulated the defect, as described in the MPB tutorial and I have
> found the doubly degenerate hexapole defect. Then the paper says that
> the presence of the two waveguides in the structure breaks the
> degeneracy, thus the authors properly increase the refractive index of
> the neighboring rods.
> I'd like to know if it is possible to use MPB for the design of the
> whole structure according to the guidelines proposed in the paper; I
> tried to do it, but the position of the defects is different... moreover
> I can't understand how to use MPB  to tune the defects in presence of
> the waveguides.
> 
> Thanks a lot,
> 
> Andrea Locatelli
> 
> 
(Continue reading)

Steven G. Johnson | 6 Feb 2003 22:47
Picon

Re: Input-independent problem with SAFE_FIELD

On Wed, 5 Feb 2003, Navin Bhat wrote:
> 2.  Some problem with garbage collection, which could happen at any time.
> Could one of my fields be prematurely freed during garbage collection?

That shouldn't be possible, unless there is a bug in Guile (if all else
fails, I guess you could try downloading and installing the latest
version).  gc should never free something any variable points to.

I don't see anything obviously wrong with your code; you could try using
"print" to print the value of the fields (it should output their size and
type)...maybe you can find the point where they "go bad" and see which
field is the problem.

Steven

_______________________________________________
mpb-discuss mailing list  -  mpb-discuss <at> ab-initio.mit.edu
http://ab-initio.mit.edu/mailman/listinfo/mpb-discuss

Melanie Ayre | 12 Feb 2003 13:29
Picon
Favicon

changing bases

Hello,

I'm trying to correctly scale the results of a simulation at the moment, 
and rather than try to do geometry I thought I'd get mpb to do it for me.

I define the position of my rods using a triangular basis,

(set! geometry-lattice (make lattice (size 1 wid no-size) ; triangular
	(basis1 (/ (sqrt 3) 2) 0.5)
	(basis2 (/ (sqrt 3) 2) -0.5)))
; basis3 is kept as z-axis

and then (since I'm looking at a W1 waveguide) define the k-points,

(set! geometry-lattice (make lattice (size 1 wid no-size))) ; square

(define Gamma (vector 0 0 0))
(define K' (lattice->reciprocal (vector3 0.5 0 0))) ; edge of b-zone

(set! k-points (interpolate 32 (list Gamma K')))

and then finally (run).

Are there likely to be problems with this approach?  Particularly, do I 
need to reset the geometry-lattice in terms of the changed lattice basis?

Thanks
Melanie

_______________________________________________
(Continue reading)

Steven G. Johnson | 12 Feb 2003 18:44
Picon

Re: changing bases

I'm not sure I entirely understand your question.  Yes, re-creating the
geometry-lattice in this way will change the lattice from triangular
(hexagonal) to square.  No, you don't need to re-create the geometry.

The only caveat is that you should be careful where you define the K'
point, since the lattice->reciprocal function does its conversion in terms
of the current geometry-lattice.  (So if you change the lattice after
defining K', you probably need to re-define K', or define a new variable
since in the square lattice K' == K.)

Steven

On Wed, 12 Feb 2003, Melanie Ayre wrote:
> I'm trying to correctly scale the results of a simulation at the moment, 
> and rather than try to do geometry I thought I'd get mpb to do it for me.
> 
> I define the position of my rods using a triangular basis,
> 
> (set! geometry-lattice (make lattice (size 1 wid no-size) ; triangular
> 	(basis1 (/ (sqrt 3) 2) 0.5)
> 	(basis2 (/ (sqrt 3) 2) -0.5)))
> ; basis3 is kept as z-axis
> 
> and then (since I'm looking at a W1 waveguide) define the k-points,
> 
> (set! geometry-lattice (make lattice (size 1 wid no-size))) ; square
> 
> (define Gamma (vector 0 0 0))
> (define K' (lattice->reciprocal (vector3 0.5 0 0))) ; edge of b-zone
> 
(Continue reading)

Steven G. Johnson | 12 Feb 2003 22:39
Picon

photonic-crystal tutorial materials

Dear MPB users,

I have placed online the slides and lecture materials from a short (one
week) crash course in photonic crystals that I taught this January at MIT,
and I thought they might be of interest to some of you.  See:

	http://ab-initio.mit.edu/photons/tutorial/

Hopefully, this will be useful in your own educational endeavors.

Cordially,
Steven G. Johnson

_______________________________________________
mpb-discuss mailing list  -  mpb-discuss <at> ab-initio.mit.edu
http://ab-initio.mit.edu/mailman/listinfo/mpb-discuss

Steven G. Johnson | 13 Feb 2003 19:20
Picon

Re: changing bases

On Thu, 13 Feb 2003, Melanie Ayre wrote:
> I guess I was unclear - I want to keep my rods on the triangular basis, 
> then switch to an orthogonal co-ordinate system to define vectors along 
> the guide direction.  Possibly this is a daft thing to be trying to do, 
> but anyway it doesn't appear to work using the procedure I outlined - 
> the epsilon.h5 file shows a nice square lattice.  
> 
> Is there any (simple) way in which this can be done?

Use the cartesian->reciprocal function.

_______________________________________________
mpb-discuss mailing list  -  mpb-discuss <at> ab-initio.mit.edu
http://ab-initio.mit.edu/mailman/listinfo/mpb-discuss

Yang Jiao | 21 Feb 2003 19:55
Picon
Favicon

problem with find-k

Sorry if this is a repost

When I call (find-k) with a k search direction that does not have a 
solution, mpb exits with:
ERROR: failed to bracket the root in find-root-deriv
how could I catch this error in my *.ctl so that I can try another k search 
direction?
Thanks
Yang Jiao

_________________________________________________________________
Protect your PC - get McAfee.com VirusScan Online  
http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963

_______________________________________________
mpb-discuss mailing list  -  mpb-discuss <at> ab-initio.mit.edu
http://ab-initio.mit.edu/mailman/listinfo/mpb-discuss

Steven G. Johnson | 21 Feb 2003 23:28
Picon

Re: problem with find-k

On Fri, 21 Feb 2003, Yang Jiao wrote:
> When I call (find-k) with a k search direction that does not have a 
> solution, mpb exits with:
> ERROR: failed to bracket the root in find-root-deriv
> how could I catch this error in my *.ctl so that I can try another k search 
> direction?

You can define an exception handler to catch the error.  In Guile, this
works by:

(define (error-handler . args)
	... do something in response to error ...
   )

(define (stuff-that-can-cause-error)
    ... do stuff, e.g. call (find-k) ...
   )

(catch true stuff-that-can-cause-error error-handler)

See also:

	http://www.gnu.org/software/guile/docs/guile-ref/Exceptions.html

The arguments (args) of the error-handler function are not very useful in
this case.  Your error-handler could, for example, call (catch ...)
recursively to do find-k with a different search direction (or max/min
values).

Steven
(Continue reading)


Gmane