HomerReid / scuff-em

A comprehensive and full-featured computational physics suite for boundary-element analysis of electromagnetic scattering, fluctuation-induced phenomena (Casimir forces and radiative heat transfer), nanophotonics, RF device engineering, electrostatics, and more. Includes a core library with C++ and python APIs as well as many command-line applications.
http://www.homerreid.com/scuff-em
GNU General Public License v2.0
126 stars 50 forks source link

SCUFF-CAS3D PEC 2D extended geometry hanging #73

Closed psv2 closed 7 years ago

psv2 commented 8 years ago

When considering only PECs and vacuum, SCUFF-CAS3D does one frequency (integrated over all k) and then hangs; there isn't much else to show here, as the log file doesn't output any error per se, instead outputting nothing at all.

HomerReid commented 8 years ago

Thanks for the bug report. I think this and the other bugs you reported should be fixed in the latest commit to the Overhaul201512 branch of the Github repository. (o gIn a perfect world I would be able to commit the fixes to the master branch, but they rely on a couple of new things that I haven't yet been able to commit due to lack of unit tests. This should be resolved and the fixes committed to the master branch in the near future).

For the time being, please pull from the Overhaul201512 branch and rebuild and re-run your examples. If your issues are resolved, I will try to get the fixes into the master branch ASAP.

HomerReid commented 8 years ago

I can confirm that PEC objects in vacuum work fine, at least in the Overhaul201512 branch. Here's a plot of Casimir energy and force vs. distance between two parallel PEC plates, compared to theoretical predictions.

pecplatedata

Here are the files I used for this calculation. (Files not included below may be found in examples/SiliconSlabs folder in your SCUFF-EM installation.)

PECPlates_40.scuffgeo

LATTICE
    VECTOR 2.0 0.0
    VECTOR 0.0 2.0
ENDLATTICE

OBJECT UpperSurface
    MESHFILE Square_L2_40.msh
    DISPLACED 0 0 0.5
ENDOBJECT

OBJECT LowerSurface
    MESHFILE Square_L2_40.msh
ENDOBJECT

Command line:

% scuff-cas3D --geometry PECPlates_L2_40.scuffgeo --transfile Slabs.trans --Energy --ZForce --BZSymmetric"
psv2 commented 8 years ago

Thanks for the response. I do have two questions about the SCUFFGEO file as you have written it though.

  1. Where in the SCUFFGEO file that you have written is it declared that the objects are PECs (as opposed to, say, silicon)?
  2. Why in this periodic SCUFFGEO file are you allowed to use OBJECT declarations instead of REGION/SURFACE declarations, given that the plates are defining interfaces between PEC and vacuum regions?
HomerReid commented 8 years ago

Thanks, good questions. The answers are related to each other:

1) PEC is the default if no MATERIAL is specified. 2) For PEC objects there is no notion of an "interior" region, and instead PEC surfaces are always treated as isolated embeddings living in a single exterior region. So, from the perspective of assembling the BEM matrix, two infinite PEC surfaces have the same topology as two compact PEC surfaces.

In this case, the geometry could be equally well specified using the REGION/SURFACE syntax.

However, things would be different if, for example, there were some other body (say, a third PEC surface, an array of dielectric spheres) living in the region above the upper surface. In that case, defining things using the OBJECT syntax as above would confuse the code into thinking that the uppermost body lived in the same region as the lowermost surface, and thus that their surface currents would have interactions in the BEM matrix, whereas in fact there would be no such interactions because those bodies live in disconnected regions of space (disconnected due to the intermediate surface). So for this and other more complicated geometries one would need to use REGIONS and SURFACES.