(define-param dpml 2) (define-param fluxlength 16) (define-param thr 1e-3); threshold of field (define-param mfl 16) ;define the max flux length so that all flux studies start at the same distance from the source (define-param srzj 1.5) (define-param srzn 1.5) (define-param fpmaj 2) (define-param fpmin 2) (define-param sz 30) (define-param dta 10) (define-param gb8_23? false) ;set to true if read in gb9_23.h5 file (define-param gbsg? false) ;set to true if read in gb8_23single.h5 file (define-param ewggb? false) ;set to tru if read in ewg_gb.h5 (define-param cygb? false) ;set to tru if read in cy_gb.h5 (define-param cygw? false) ;set to tru if read in cy_gw.h5 (define-param gw12? false) ;set to true if read in gw12.h5 file (define-param gwsg? false) ; set to true if read in gw12single.h5 file (define-param ewggw? false) ;set to true if read in ewg_gw.h5 (define-param water? false) ;set to true if read in water.h5 file (define-param watergw? false) ;set to true if read in water.h5 file and use gw sx and sy (define-param firefly? false); set to true if read in firefly.h5 file (define-param l17? false) ;set to true if read in loligosilver17.h5 file (define-param gbrsg? false) ;set to true if read in gbrst.h5 (define-param egbrsg? false) ;set to true if read in egbrst.h5 (define-param cgbrsg? false) ;set to true if read in cgbrst.h5 (define-param gs17? false) ;set to true if read in gs17.h5 (define-param egs17? false) ;set to true if read in egs17.h5 (define-param cgs17? false) ;set to true if read in cgs17.h5 (define-param gs17_2? false) ;set to true if read in gs17_2.h5 (define-param egs17_2? false) ;set to true if read in egs17_2.h5 (define-param cgs17_2? false) ;set to true if read in cgs17_2.h5 (define-param EZ? false) ;true for calculate Ez (define-param HZ? false) ;true for calculate Hz (cond (gb8_23? (define-param sx 19.83) (define-param sy 16.11)) (gbsg? (define-param sx 19.83) (define-param sy 16.11)) (gw12? (define-param sx 23.41) (define-param sy 18.99)) (gwsg? (define-param sx 23.41) (define-param sy 18.99)) (firefly? (define-param sx 18.149) (define-param sy 18.185)) (l17? (define-param sx 98) (define-param sy 98)) (ewggb? (define-param sx 19.78) (define-param sy 16.11)) (cygb? (define-param sx 19.78) (define-param sy 16.11)) (ewggw? (define-param sx 23.41) (define-param sy 18.99)) (cygw? (define-param sx 23.41) (define-param sy 18.99)) (gbrsg? (define-param sx 16.73) (define-param sy 14.89)) (egbrsg? (define-param sx 16.73) (define-param sy 14.89)) (cgbrsg? (define-param sx 16.73) (define-param sy 14.89)) (gs17? (define-param sx 17.86) (define-param sy 17.39)) (egs17? (define-param sx 17.86) (define-param sy 17.39)) (cgs17? (define-param sx 17.86) (define-param sy 17.39)) (gs17_2? (define-param sx 17.83) (define-param sy 15.58)) (egs17_2? (define-param sx 17.83) (define-param sy 15.58)) (cgs17_2? (define-param sx 17.83) (define-param sy 15.58)) (water? (define-param sx 19.84) (define-param sy 16.12)) (watergw? (define-param sx 23.41) (define-param sy 18.99)) ) (cond (gb8_23? (set! epsilon-input-file "gb8_23.h5")) (gbsg? (set! epsilon-input-file "gb8_23single.h5")) (firefly? (set! epsilon-input-file "firefly.h5")) (gw12? (set! epsilon-input-file "gw12_2.h5")) (gwsg? (set! epsilon-input-file "gw12single.h5")) (l17? (set! epsilon-input-file "l17.h5")) (ewggw? (set! epsilon-input-file "ewg_gw.h5")) (ewggb? (set! epsilon-input-file "ewg_gb.h5")) (cygw? (set! epsilon-input-file "cy_gw.h5")) (cygb? (set! epsilon-input-file "cy_gb.h5")) (gbrsg? (set! epsilon-input-file "gbrsg.h5")) (egbrsg? (set! epsilon-input-file "egbrsg.h5")) (cgbrsg? (set! epsilon-input-file "cgbrsg.h5")) (gs17? (set! epsilon-input-file "gs17.h5")) (egs17? (set! epsilon-input-file "egs17.h5")) (cgs17? (set! epsilon-input-file "cgs17.h5")) (gs17_2? (set! epsilon-input-file "gs17_2.h5")) (egs17_2? (set! epsilon-input-file "egs17_2.h5")) (cgs17_2? (set! epsilon-input-file "cgs17_2.h5")) (water? (set! epsilon-input-file "water.h5")) (watergw? (set! epsilon-input-file "water.h5")) ) (set! eps-averaging? false) (set! geometry-lattice (make lattice (size sx sy sz))) (set! pml-layers (list (make pml (thickness dpml)))) (set-param! resolution 40) (define-param fcen 1.9) (define-param df 1) (define-param nfreq 500) ;number of frequencies at which to compute flux (set! sources (cond (EZ? (list (make source (src (make gaussian-src (frequency fcen) (fwidth df))) (component Ez) (center 0 0 (+ (* -0.5 sz) dpml)) (size srzj srzn 0)))) (HZ? (list (make source (src (make gaussian-src (frequency fcen) (fwidth df))) (component Hz) (center 0 0 (+ (* -0.5 sz) dpml)) (size srzj srzn 0)))) (else (display "need E/H field direction specified")))) (cond (ewggb? (set! symmetries (cond (EZ? (list (make mirror-sym (direction X)) (make mirror-sym (direction Y)))) (HZ? (list (make mirror-sym (direction X) (phase -1)) (make mirror-sym (direction Y) (phase -1)))) (else (display "need E/H field direction specified"))))) (cygb? (set! symmetries (cond (EZ? (list (make mirror-sym (direction X)) (make mirror-sym (direction Y)))) (HZ? (list (make mirror-sym (direction X) (phase -1)) (make mirror-sym (direction Y) (phase -1)))) (else (display "need E/H field direction specified"))))) (ewggw? (set! symmetries (cond (EZ? (list (make mirror-sym (direction X)) (make mirror-sym (direction Y)))) (HZ? (list (make mirror-sym (direction X) (phase -1)) (make mirror-sym (direction Y) (phase -1)))) (else (display "need E/H field direction specified"))))) (cygw? (set! symmetries (cond (EZ? (list (make mirror-sym (direction X)) (make mirror-sym (direction Y)))) (HZ? (list (make mirror-sym (direction X) (phase -1)) (make mirror-sym (direction Y) (phase -1)))) (else (display "need E/H field direction specified"))))) (egbrsg? (set! symmetries (cond (EZ? (list (make mirror-sym (direction X)) (make mirror-sym (direction Y)))) (HZ? (list (make mirror-sym (direction X) (phase -1)) (make mirror-sym (direction Y) (phase -1)))) (else (display "need E/H field direction specified"))))) (cgbrsg? (set! symmetries (cond (EZ? (list (make mirror-sym (direction X)) (make mirror-sym (direction Y)))) (HZ? (list (make mirror-sym (direction X) (phase -1)) (make mirror-sym (direction Y) (phase -1)))) (else (display "need E/H field direction specified"))))) (egs17? (set! symmetries (cond (EZ? (list (make mirror-sym (direction X)) (make mirror-sym (direction Y)))) (HZ? (list (make mirror-sym (direction X) (phase -1)) (make mirror-sym (direction Y) (phase -1)))) (else (display "need E/H field direction specified"))))) (cgs17? (set! symmetries (cond (EZ? (list (make mirror-sym (direction X)) (make mirror-sym (direction Y)))) (HZ? (list (make mirror-sym (direction X) (phase -1)) (make mirror-sym (direction Y) (phase -1)))) (else (display "need E/H field direction specified"))))) (egs17_2? (set! symmetries (cond (EZ? (list (make mirror-sym (direction X)) (make mirror-sym (direction Y)))) (HZ? (list (make mirror-sym (direction X) (phase -1)) (make mirror-sym (direction Y) (phase -1)))) (else (display "need E/H field direction specified"))))) (cgs17_2? (set! symmetries (cond (EZ? (list (make mirror-sym (direction X)) (make mirror-sym (direction Y)))) (HZ? (list (make mirror-sym (direction X) (phase -1)) (make mirror-sym (direction Y) (phase -1)))) (else (display "need E/H field direction specified"))))) (else (display "no symmetry"))) (define trans1 ;transmitted flux initial plane (add-flux fcen df nfreq (make flux-region (center 0 0 (+ (* -0.5 sz) dpml dta)) (size fpmaj fpmin 0)))) (define trans2 ; transmitted flux final plane (add-flux fcen df nfreq (make flux-region (center 0 0 (+ (* -0.5 sz) dpml (* 2 dta))) (size fpmaj fpmin 0)))) (define trans3 ; transmitted flux final plane (add-flux fcen df nfreq (make flux-region (center 0 0 (+ (* -0.5 sz) dpml (* 3 dta))) (size fpmaj fpmin 0)))) (define trans4 ; transmitted flux final plane (add-flux fcen df nfreq (make flux-region (center 0 0 (+ (* -0.5 sz) dpml (* 4 dta))) (size fpmaj fpmin 0)))) (define trans5 ; transmitted flux final plane (add-flux fcen df nfreq (make flux-region (center 0 0 (+ (* -0.5 sz) dpml (* 5 dta))) (size fpmaj fpmin 0)))) (define trans6 ; transmitted flux final plane (add-flux fcen df nfreq (make flux-region (center 0 0 (+ (* -0.5 sz) dpml (* 6 dta))) (size fpmaj fpmin 0)))) ;(define trans7 ; transmitted flux final plane ; (add-flux fcen df nfreq ; (make flux-region (center 0 0 (+ (* -0.5 sz) dpml (* 7 dta))) (size fpmaj fpmin 0)))) ;(define trans8 ; transmitted flux final plane ; (add-flux fcen df nfreq ; (make flux-region (center 0 0 (+ (* -0.5 sz) dpml (* 8 dta))) (size fpmaj fpmin 0)))) ;(define trans9 ; transmitted flux final plane ; (add-flux fcen df nfreq ; (make flux-region (center 0 0 (+ (* -0.5 sz) dpml (* 9 dta))) (size fpmaj fpmin 0)))) ;(run-sources+ (cond (EZ? (stop-when-fields-decayed 50 Ez (vector3 0 0 (+ (- (/ sz 2) dpml 0.5 mfl) fluxlength)) thr)) ; (HZ? (stop-when-fields-decayed 50 Hz (vector3 0 0 (+ (- (/ sz 2) dpml 0.5 mfl) fluxlength)) thr)) ; (else (display "need E/H field direction specified"))) ;) (run-until 200) (display-fluxes trans1 trans2 trans3 trans4 trans5 trans6) ;print out flux spectrum