# Changing geometry scale breaks simulation

I'm trying to find the capacitance matrix for a small array of metal boxes in air using Comsol 5.4. The geometry presented here is a simple geometry that recreates the problem I'm experiencing.

Simulation Settings: What Works

For now I set my geometry length unit to "um". To create my block array I first created a 40 x 40 x 20 unit block and then made a 3 x 3 array of these with 50 spacing in x and y. Meshing this with the default (Free Triangular) mesh gives me the following.

For my simulation I am using the "Electrostatics, Boundary Elements (esbe)" physics. I have my simulation domain selection set to "All voids". I have my materials set to "Air" for "All Voids" and did not define a material for the blocks. I left all the default esbe boundary conditions (Charge Conversion, Zero Charge 1, Zero Charge 2, Initial Values). But then overrode nearly all of these by making all 6 boundaries of each block a voltage terminal.

This simulation works. I'm able to run my stationary source sweep and extract the Maxwell capacitance matrix and it gives me numbers that look reasonable.

What is Broken

I switched the geometry length unit to "nm". The resulting mesh looks identical to this one, but with "nm" as the unit instead of "um". Everything else remains unchanged. I tried running this simulation and got the following error:

There are 1 void equations (empty rows in matrix) for the variable comp1.esbe.term1.V0_ode.
at coordinates:  (0,0,0), ...
There are 1 void equations (empty rows in matrix) for the variable comp1.esbe.term2.V0_ode.
at coordinates:  (0,0,0), ...
There are 1 void equations (empty rows in matrix) for the variable comp1.esbe.term3.V0_ode.
at coordinates:  (0,0,0), ...
There are 1 void equations (empty rows in matrix) for the variable comp1.esbe.term4.V0_ode.
at coordinates:  (0,0,0), ...
There are 1 void equations (empty rows in matrix) for the variable comp1.esbe.term5.V0_ode.
at coordinates:  (0,0,0), ...
There are 1 void equations (empty rows in matrix) for the variable comp1.esbe.term6.V0_ode.
at coordinates:  (0,0,0), ...
There are 1 void equations (empty rows in matrix) for the variable comp1.esbe.term7.V0_ode.
at coordinates:  (0,0,0), ...
There are 1 void equations (empty rows in matrix) for the variable comp1.esbe.term8.V0_ode.
at coordinates:  (0,0,0), ...
There are 1 void equations (empty rows in matrix) for the variable comp1.esbe.term9.V0_ode.
at coordinates:  (0,0,0), ...
and similarly for the degrees of freedom (empty columns in matrix).
Returned solution is not converged.
Not all parameter steps returned.


I have been able to manually extract the capacitance matrix from this geometry on the nm scale by manually setting terminal voltages and running a stationary simulation for each terminal. This is tedious, time consuming, and shouldn't be necessary. It is my understanding that a semi-manual terminal sweep should be possible by following the instructions here, but I have been unable to try this as "PortName" never shows up in my Parametric Sweep as a valid parameter (yes, I enabled "Activate Manual Terminal Sweep"). I'm using esbe instead of the es physics used in the tutorial. Maybe there is something else I have to do?

What can I do to make the stationary source sweep simulation work properly at the nm scale? Or if that is impossible, the parametric terminal sweep.

• Have you thought about writing your problem in dimensionless form? – nicoguaro May 14 '19 at 15:14
• @nicoguaro That sounds like a good idea. I'm not exactly sure how to do that though. I was under the impression that changing the length unit in my geometry didn't actually change anything except scaling of the end result. But given my problems here, I don't feel like I understand what is going on well enough to feel confident in doing something like that without guidance or a reference. – Matt May 14 '19 at 15:31
• If you wouldn't have floating point arithmetic changing the size would be the same. In practice, this might change the conditioning of the system. – nicoguaro May 14 '19 at 16:35