Jack,

Here is an example ctl file for scattering from an infinite conducting wire, just to show how it looks. If you run it and compute absorption and scattering cross sections you'll find the results match analytic solutions. To get data for the "incident" fields, just run it again with the geometry removed.

Parts of the configuration may look a bit strange, as it was generated using our API to have an optimal configuration for studying a certain range of frequencies. The sources listed just make a plane wave source; but appear complicated because they are part of a macro that generates gaussian-pulsed plane wave configurations at arbitrary incidence angles. It does this by mapping a custom source function over a series of points at the planar borders of the simulation, adding correct phase offsets at each point based on the wave vector. You may figure out how to edit and use it yourself.

;########## Meep Geometry Lattice ##########

(set! geometry-lattice

        (make lattice
                (size 502.0 502.0 no-size)))

;########## Meep Symmetries ##########

(set! symmetries

        (list

                (make mirror-sym
                        (direction X)
                        (phase -1))

                (make mirror-sym
                        (direction Z)
                        (phase 1))))

;########## Meep Perfectly-Matched Layers ##########

(set! pml-layers

        (list

                (make pml
                        (direction X)
                        (side Low)
                        (thickness 50)
                        (strength 2.5)
                        (pml-profile

                                (lambda (u) (* u u))))

                (make pml
                        (direction X)
                        (side High)
                        (thickness 50)
                        (strength 2.5)
                        (pml-profile

                                (lambda (u) (* u u))))

                (make pml
                        (direction Y)
                        (side Low)
                        (thickness 50)
                        (strength 2.5)
                        (pml-profile

                                (lambda (u) (* u u))))

                (make pml
                        (direction Y)
                        (side High)
                        (thickness 50)
                        (strength 2.5)
                        (pml-profile

                                (lambda (u) (* u u))))

                (make pml
                        (direction Z)
                        (side Low)
                        (thickness 50)
                        (strength 2.5)
                        (pml-profile

                                (lambda (u) (* u u))))

                (make pml
                        (direction Z)
                        (side High)
                        (thickness 50)
                        (strength 2.5)
                        (pml-profile

                                (lambda (u) (* u u))))))


;########## Meep Geometry ##########

(set! geometry

        (list

                        (make cylinder
                                (axis 0.0 0.0 1.0)
                                (material metal)
                                (radius 100)
                                (center 0.0 0.0 0.0)
                                (height 1))))

;########## Meep Sources ##########

(set! sources

        (fold-left append (list)

                (list (map (lambda (position)
               (make source
                       (amplitude 1.0)
                       (component Ex)
(center (vector3-x position) (vector3-y position) (vector3-z position))
                       (size 502.0 0 0)
                       (src

                                (make custom-src
                                        (src-func
(lambda (t)
    (*
        (make-polar -0.5
            (* 2 pi 0.01025
                (- t
                    (* 5 25.641025641 )
(+ 0 (vector3-dot (vector3- position (vector3 0.0 -251.0 0.0)) (vector3 0.0 1.0 0.0))))))
        (exp
            (-
                (/
                    (expt
                        (- t
                            (* 5 25.641025641)
(+ 0 (vector3-dot (vector3- position (vector3 0.0 -251.0 0.0)) (vector3 0.0 1.0 0.0))))
                        2)
                    (* 2
                        (expt 25.641025641 2 ))) )) ))
)
(start-time (+ 0 (vector3-dot (vector3- position (vector3 0.0 -251.0 0.0)) (vector3 0.0 1.0 0.0)))) (end-time (+ 512.820512821 (vector3-dot (vector3- position (vector3 0.0 -251.0 0.0)) (vector3 0.0 1.0 0.0)))))) ))

(fold-left append (list)
       (map (lambda (position)
(cdr (reverse (cdr (interpolate 1 (list (vector3 -251.0 -201.0 position) (vector3 251.0 -201.0 position))) )) )) (cdr (reverse (cdr (interpolate 1 (list 0.0 0.0)) ))) ))))))

;########## Meep Output Volumes ##########


(define volume_1

        (volume
                (center 0.0 0.0 0.0)
                (size 402.0 402.0 0.0)))


(define volume_2_+X_face

        (volume
                (center 133.5 0.0 0.0)
                (size 0.0 267.0 68.0)))

(define volume_2_-X_face

        (volume
                (center -133.5 0.0 0.0)
                (size 0.0 267.0 68.0)))

(define volume_2_+Y_face

        (volume
                (center 0.0 133.5 0.0)
                (size 267.0 0.0 68.0)))

(define volume_2_-Y_face

        (volume
                (center 0.0 -133.5 0.0)
                (size 267.0 0.0 68.0)))


;########## Meep Miscellaneous Settings ##########

(set! k-point false)


(set! ensure-periodicity false)


(set! resolution 1)


(set! eps-averaging? false)


(set! force-complex-fields? false)


(set! dimensions 2)


(use-output-directory "conducting_cylinder_scattering")


(set! Courant 0.5)

;########## Meep Outputs ##########


(run-until 6895.0657186

        (to-appended "volume_1_Ex"

                (in-volume volume_1

                        (after-time 0

                                (before-time 6895.0657186

                                                (at-every 16.8067226891 
output-efield-x)))))

        (to-appended "volume_1_Ey"

                (in-volume volume_1

                        (after-time 0

                                (before-time 6895.0657186

                                                (at-every 16.8067226891 
output-efield-y)))))

        (to-appended "volume_1_Ez"

                (in-volume volume_1

                        (after-time 0

                                (before-time 6895.0657186

                                                (at-every 16.8067226891 
output-efield-z)))))

        (to-appended "volume_1_Bx"

                (in-volume volume_1

                        (after-time 0

                                (before-time 6895.0657186

                                                (at-every 16.8067226891 
output-bfield-x)))))

        (to-appended "volume_1_By"

                (in-volume volume_1

                        (after-time 0

                                (before-time 6895.0657186

                                                (at-every 16.8067226891 
output-bfield-y)))))

        (to-appended "volume_1_Bz"

                (in-volume volume_1

                        (after-time 0

                                (before-time 6895.0657186

                                                (at-every 16.8067226891 
output-bfield-z)))))

        (to-appended "volume_2_+X_face_Ey"

                (in-volume volume_2_+X_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-efield-y)))))

        (to-appended "volume_2_+X_face_Ez"

                (in-volume volume_2_+X_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-efield-z)))))

        (to-appended "volume_2_+X_face_By"

                (in-volume volume_2_+X_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-bfield-y)))))

        (to-appended "volume_2_+X_face_Bz"

                (in-volume volume_2_+X_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-bfield-z)))))

        (to-appended "volume_2_-X_face_Ey"

                (in-volume volume_2_-X_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-efield-y)))))

        (to-appended "volume_2_-X_face_Ez"

                (in-volume volume_2_-X_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-efield-z)))))

        (to-appended "volume_2_-X_face_By"

                (in-volume volume_2_-X_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-bfield-y)))))

        (to-appended "volume_2_-X_face_Bz"

                (in-volume volume_2_-X_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-bfield-z)))))

        (to-appended "volume_2_+Y_face_Ex"

                (in-volume volume_2_+Y_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-efield-x)))))

        (to-appended "volume_2_+Y_face_Ez"

                (in-volume volume_2_+Y_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-efield-z)))))

        (to-appended "volume_2_+Y_face_Bx"

                (in-volume volume_2_+Y_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-bfield-x)))))

        (to-appended "volume_2_+Y_face_Bz"

                (in-volume volume_2_+Y_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-bfield-z)))))

        (to-appended "volume_2_-Y_face_Ex"

                (in-volume volume_2_-Y_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-efield-x)))))

        (to-appended "volume_2_-Y_face_Ez"

                (in-volume volume_2_-Y_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-efield-z)))))

        (to-appended "volume_2_-Y_face_Bx"

                (in-volume volume_2_-Y_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-bfield-x)))))

        (to-appended "volume_2_-Y_face_Bz"

                (in-volume volume_2_-Y_face

                        (after-time 0

                                (before-time 6895.0657186

                                                        (at-every 16.8067226891 
output-bfield-z))))))

_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to