Skip to content

properties: a lossy metal for 3D bodies - #85

Open
unsettledroell404 wants to merge 1 commit into
thliebig:masterfrom
unsettledroell404:lossy-metal
Open

unsettledroell404 wants to merge 1 commit into
thliebig:masterfrom
unsettledroell404:lossy-metal

Conversation

@unsettledroell404

Copy link
Copy Markdown

Full disclosure: this code is entirely generated using Claude Opus 5.5, and my background in numerical EM is limited.

Adds a LossyMetal property: a metal with a finite conductivity and an optional surface roughness, for ordinary 3D bodies. XML attributes Conductivity, RoughnessModel (none | gradient), Rq (rms roughness, m) and Thickness (m, 2D primitives only), all optional; existing XML is untouched. Python and Matlab AddLossyMetal. Type bit LOSSYMETAL = 0x080, the unused one, so ANY is unchanged. The roughness model is the Gradient Model of Gold & Helmreich [1], as suggested by toammann in this discussion.

The solver half, with a full description of the method and its validation, is thliebig/openEMS#.

Is a new property the right choice? In the same discussion, biergaizi suggested extending the existing ConductingSheet instead. Another option would be optional Conductivity / Rq attributes on Metal, which would stay PEC without them. I went with a new property because it leaves Metal and ConductingSheet exactly as they are and makes the different treatment in the solver explicit. Which way to go is up to the maintainer; I am happy to rework it if one of the alternatives is preferred.

[1] G. Gold, K. Helmreich, "A Physical Surface Roughness Model and Its Applications," IEEE Trans. Microw. Theory Techn., 2017, doi:10.1109/TMTT.2017.2695192

LossyMetal is a metal with a finite conductivity and an optional surface
roughness (RoughnessModel "none" or "gradient", rms roughness Rq). It is
meant for ordinary 3D bodies; a solver applies the surface impedance to
the faces of the body. Thickness is only used for 2D primitives. All
attributes are optional, existing XML is untouched.

Python AddLossyMetal() and Matlab AddLossyMetal(). The openEMS half,
which applies the surface impedance, is a separate openEMS commit.

Generated-by: Claude Opus 5.5
Signed-off-by: Roel Budé <roel.bude@proton.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant