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