On Aug 5, 2008, at 4:02 AM, matt wrote: > Could you explain how PEC is implemented exactly? Is the large, > negative epsilon a Maxwellian interpretation of a PEC (if so, how?) > or is there some hard-coded check in the code which sets the fields > to zero if the epsilon is less than some value (if so, where in the > code?)
epsilon -> -infinity is equivalent in *effect* to a PEC (which, strictly, should be sigma -> +infinity) in the initial-value problem with E=0 at the start of the simulation. The electric field is forced to be zero inside the material with the PEC boundary conditions --- negative epsilon corresponds to exponentially decaying fields, and epsilon -> -infinity makes this decay length -> 0. Another way of looking at it is that, in the time-evolution equation dE/dt = (1/ epsilon) curl H, it causes E to be a constant (zero, since the initial conditions are E=0). More careful considerations show that the boundary conditions correspond to those of a PEC. Because of this, Meep doesn't need to do anything special or hard- coded in this case (for the most part). In a similar way, mu -> -infinity is functionally equivalent to a PMC in Maxwell's equations. I should qualify the above statements that this equivalence doesn't really hold in the static case. (e.g. if we started with a nonzero static E field as our initial condition, this wouldn't change because dE/dt = 0 in the epsilon->-infinity region.) However, since Meep always is looking at the time-varying problem with E=0 initial conditions, that doesn't matter. (Actually, even epsilon -> +infinity should work. Even though there are propagating waves in an epsilon -> +infinity material, the Fresnel reflection coefficient goes to unity at an interface with finite epsilon, so it acts the same way as a PEC in practice, as long as your sources lie outside the epsilon -> +infinity region. Or, for that matter, even if your sources are inside the region since the group velocity -> 0 and dE/dt -> 0.) > Some unrelated side questions - > > What does the second argument m refer to here?: > > fields::fields(structure *s, double m, bool store_pol_energy) : > S(s->S), v(s->v), user_volume(s->user_volume), gv(s->gv), m(m) m is for cylindrical coordinates, specifying an exp(i*m*phi) angular dependence. See the section of the manual on cylindrical coordinates, or the corresponding "m" input variable in the libctl front-end. It is ignored for non-cylindrical coords. > Also, is it correct that the subdirectory "hsrc" is now vestigial? Yup. It will probably be removed in a release or two. Steven _______________________________________________ meep-discuss mailing list [email protected] http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

