File: gaussian-beam.ctl

package info (click to toggle)
meep-openmpi 1.25.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 64,556 kB
  • sloc: cpp: 32,214; python: 27,958; lisp: 1,225; makefile: 505; sh: 249; ansic: 131; javascript: 5
file content (32 lines) | stat: -rw-r--r-- 1,190 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
;; generate a titled Gaussian beam profile by defining the amplitude function of the source

(set-param! resolution 40) ; pixels/μm

(set! geometry-lattice (make lattice (size 20 10 no-size)))

(set! pml-layers (list (make pml (thickness 1.0) (direction Y))))

(define-param fcen 1.0) ; center frequency of CW source (wavelength is 1 μm)

(define-param tilt-angle -10)
(set! tilt-angle (deg->rad tilt-angle))

(define k (vector3-scale fcen (rotate-vector3 (vector3 0 0 1) tilt-angle (vector3 0 1 0))))

(define-param beam-sigma 1.5) ; beam width

(define (gaussian-beam sigma k x0)
  (lambda (x)
   (exp (- (* 0+2i pi (vector3-dot k (vector3- x x0)))
           (/ (vector3-dot (vector3- x x0) (vector3- x x0)) (* 2 sigma sigma))))))

(define src-pt (vector3 0 4 0))
(set! sources (list (make source
                      (src (make continuous-src (frequency fcen) (fwidth (* 0.2 fcen))))
                      (component Ez)
                      (center src-pt)
                      (size 20 0 0)
                      (amp-func (gaussian-beam beam-sigma k src-pt)))))

(run-until 50 (in-volume (volume (center 0 0 0) (size 20 8 0))
                         (at-end output-efield-z)))