Using a linear array of point sources in 2D, the results can look pretty good:
; ======================================================================
; ======================================================================
; Directional source array
;
; Paul Kinsler / Imperial College London, Sept 2010
;
; based on the directional fields construction described in
;
; Phys. Rev. A72, 063807 (2005) doi:10.1103/PhysRevA.72.063807
; or the newer
; Phys. Rev. A81, 023808 (2010) doi:10.1103/PhysRevA.81.023808
;
; ======================================================================
; Computational resolutions etc
;
(set-param! resolution 10) ; cells per unit size
(define-param pad 2) ; padding between waveguide and edge of PML
(define-param dpml 2) ; thickness of PML
(define sx 30)
(define sy 30)
(set! geometry-lattice (make lattice (size sx sy no-size)))
; ======================================================================
; Refractive index profile functions
; to calculate the local refractive index as it varies with position.
;
; ======================================================================
;
; Create the structure
;
(define-param gx (* sx 0.8))
(define-param ffref (/ 2 gx))
(define-param ffcontrol (/ 1 10)) ; 10um, scaled 1/wavelength
(define-param ffcontro3 (* 3 ffcontrol)) ; THG freq
(define-param ffillumin (/ 2 10)) ;
(set! geometry
(list
(make block
(center 0.0 0.0) (size sx sy infinity)
(material
(make dielectric
(epsilon 1)
)
)
)
)
)
; ======================================================================
; Set up the PML at the simulation boundaries
;
(set! pml-layers (list (make pml (thickness dpml))))
; ======================================================================
;
; SOURCES:
;
;
(define-param ffq 1)
(define-param sangle 0.35)
(define-param dx (* 0.250 (cos sangle)))
(define-param dy (* 0.250 (sin sangle)))
(define-param nsources 50); actually you get 2n+1 sources
(set! sources (list)) ; a null list to start
; (print sources)
(do ((ii (- 0 nsources) (+ ii 1))) ((> ii nsources))
;(print (* ii dx))
;(print (* ii dy))
(set! sources (append sources
(list
(make source
(src (make continuous-src (frequency ffq)))
(amplitude 1)
(component Ez)
(center (* ii dx) (* ii dy) 0.00)
)
(make source
(src (make continuous-src (frequency ffq)))
(amplitude (sin sangle))
(component Hy)
(center (* ii dx) (* ii dy) 0.00)
)
(make source
(src (make continuous-src (frequency ffq)))
(amplitude (cos sangle))
(component Hx)
(center (* ii dx) (* ii dy) 0.00)
)
)
))
)
; (print sources)
; ======================================================================
;
; Run the simulation
;
;
(run-until 60
(to-appended "ez"
(at-every 0.25 output-efield-z))
)
; ======================================================================
; ======================================================================
--
---------------------------------+---------------------------------
Dr. Paul Kinsler
Blackett Laboratory (Photonics) (ph) +44-20-759-47734 (fax) 47714
Imperial College London, [email protected]
SW7 2AZ, United Kingdom. http://www.qols.ph.ic.ac.uk/~kinsle/
_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss