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

RF Module Problems #102

Closed akzy closed 7 years ago

akzy commented 8 years ago

Hi Homer,

Just a quick introduction to what im solving for and the issue. I plan to use the RF module to calculate the electric field above the surface of a surface Paul trap for use in ion trap quantum computing. The issue im currently having is the the S and Z parameters seem to be rather unrealistic - mainly with the Z at ~ -10^10-10^17i . For this type of geometry i should be expecting something on the order of 10^4 to 10^5. I've made a github directory here https://github.com/akzy/scuff/tree/akzy-take-3 but first ill give you a brief talk through whats going on.

To simplify for the time being, I'm just simulating the top electrode layer which im creating with two seperate meshes. For simplicity, imagining like a box, one is the top of the box (electrodegold2umtop.msh), and the other is an open top box (electrodegold2um.msh) - stick them together you get a box :). This seems to be the only way i can get the analyse function to see an external boundary so i can assign numerical ports (trap.ports) by using the edges i get off the individual mesh files and define using PSURFACE and MSURFACE for each respective surface. The geometry itself can be split into two separate sections, the RF rail (centre) and the separated ground planes either side.

I believe the issue is to do with the normals of each surface but i cant be sure. The individual meshes have the normals pointing outwards (i.e. to vacuum) and when stitched together in the scuff-geo, this stays consistent (you really have to zoom on gmsh 'trap.pp' to see it but it does). Then labelling the regions in the scuffgeo, it has 'Exterior' first followed by 'electrode' which i have defined as PEC (I have tried flipping these all over in many different combinations to no avail). An insight into this would be greatly appreciated.

For the time being, i have edited out the the other layers i plan to use which will be (from top to bottom) electrode layer, dielectric, ground electrode (so there would be a ground on the top layer AND this layer), dielectric, silicon - can you foresee a problem with this?

Any insight at all into this would be greatly appreciated!

Thanks,

Zak

HomerReid commented 8 years ago

Looking through your files, I see a couple of things:

PORT
    PPOLYGON 0 0 -1 0 0 1
    MPOLYGON 1 0 -1 1 0 1
ENDPORT

This way of defining ports is independent of mesh resolution, so you can just write a single .ports file for use with multiple .msh files obtained from the same GMSH geometry file at different resolutions.

I would encourage you to start with a simpler toy version of your geometry (maybe just a single PEC rectangle with positive/negative port edges on opposite sides) and verify that you get reasonable results for that, then gradually add features to work up to the full complexity of your actual geometry.

Good luck!

akzy commented 8 years ago

Hi Homer,

Thanks for taking the time to look through my work - I really do appreciate it!

We actually do have 3d volumes that are full and not hollow - the top three layers are effectively making a coplanar waveguide. So first question, is this method of definition correct then? However when i activate the other layers i receive nan values for S and Z parameters. From some earlier tests i noticed that increasing the mesh size often deals with this problem.

This nicely brings us to the mesh problem - When i start using finer meshes, i can easily get into large (10s of GB) which is starting to push on my 64GB limit :/ Can you suggest any neat tips for this edge meshing whilst leaving it coarse in the center. Usually i do it by editing the 'cl__1' in the .geo - would you suggest this is a good method?

Finally, i have created a toy version, which is more or less a coplanar waveguide with similar dimensions to our ion traps and implementing the geometry port system (that makes things a lot easier :)). https://github.com/akzy/scuff/tree/akzy-patch-1 Again, i have to use large BEM matrices to get it to work - im concerned this will become a problem when i move to more complex geometries.

Thanks for your time,

Zak