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
125 stars 50 forks source link

scuff-neq support for surface impedance? #117

Open odmiller opened 7 years ago

odmiller commented 7 years ago

Hi Homer,

I'm wondering if scuff-neq will support bodies described by a surface impedance as thermal sources? It seems that currently they are are not allowed to be thermal sources -- line 309 of WriteFlux.cc in the applications/scuff-neq folder explicitly skips over bodies for which IsPEC returns true. (This harkens back to a previous issue in which we debated whether "imperfect conductors" should be labeled as PECs -- they have the same number of degrees of freedom but this is an example where they need to be differentiated.)

HomerReid commented 7 years ago

Thanks for your interest. I hadn't considered doing heat-transfer calculations for warm impedance surfaces. (Of course impedance surfaces can be present in geometries for heat-transfer calculations, where they will serve as scatterers for the thermal radiation sourced by other bodies, but not as sources of radiation in their own right, as you correctly note.)

I suppose it would be possible to add this extension. Do you have a particular application in mind? Is there a toy-problem version of it that can be solved analytically to lend some intuition? Would the computational cost savings achieved by using the impedance-boundary-condition approximation (instead of just modeling the body in the usual way as a lossy metal) justify the extra work of implementing, testing, and maintaining support for this feature in the code? I'm not saying it wouldn't, just want to hear the argument.

odmiller commented 7 years ago

Application (example): graphene disks/sheets at different temperatures, transferring heat (potentially sitting on a substrate or another 3D body). As verification that there is some interest in this, I'll link to some related papers: paper1, paper2, paper3. I think the last paper emphasizes graphene in a mediation role, but one could easily imagine applying the graphene to the hot side.

Toy problem: two small graphene disks that can be approximated by their (known) polarizabilities, transmitting heat. Happy to send notes offline.

I've noticed a real cost savings in plane-wave scattering from graphene disks modeled as 2D conductors rather than 3D cylinders with very small thicknesses, so I expect the same would be true (perhaps to a larger degree) in the case of heat transfer. Ideally, implementing the feature would mostly consist of skipping half the entries in the ComputeDRMatrix() function, although I realize things are never so easy :). I also realize it may take some effort to skip perfectly-conducting PEC bodies (perhaps not), but I wonder: do you also skip lossless material bodies--e.g., a structure with a real-valued permittivity? Or does a real-valued permittivity automatically lead to the correct zero-valued heat flux, whereas a perfect conductor doesn't?

HomerReid commented 7 years ago

If you have known results for a toy problem I can try to get that working in SCUFF-NEQ.

Ideally, implementing the feature would mostly consist of skipping half the entries in the ComputeDRMatrix() function, although I realize things are never so easy :).

I have in mind a formalism for doing this that would actually be more like a surface-current version of the usual volume-integral-equation formalism: the incident field induces a physical surface current in the graphene, which sources a scattered field and is proportional to the total (incident+scattered) field with proportionality constant given by the local surface conductivity. It's easy to see how that would be implemented for a freestanding graphene sheet.

What is less obvious is how to handle the case of graphene-on-substrate, which I think would be necessary for practical applications. Maybe this could be handled by treating graphene-on-substrate as freestanding graphene but with a modified surface conductivity to account for the effect of the substrate. This would ignore contributions of induced currents in the substrate itself, which may be a good approximation if those contributions are negligible compared to contributions from graphene itself.

I also realize it may take some effort to skip perfectly-conducting PEC bodies (perhaps not).

No, I'm already doing this---the only modification will be a separate branch to handle IPEC bodies.

do you also skip lossless material bodies--e.g., a structure with a real-valued permittivity? Or does a real-valued permittivity automatically lead to the correct zero-valued heat flux, whereas a perfect conductor doesn't?

No and yes. Running the algorithm on lossless dielectrics correctly yields (numerically) zero power absorption/transfer, and I never bothered to check for this explicitly as I never envisioned running calculations with lossless dielectrics, but you're right that such a check could be inserted (the existing check for IsPEC() would just be extended to check for zero imaginary part of Epsilon/Mu) and would improve efficiency for calculations involving lossless dielectrics.