Author 
Topic 

spark
2 Posts 
Posted  Jun 21 2019 : 01:35:35

Hi Enrico and other members of the forum,
I am encountering some issues running fastercap with my geometry. I am trying with simplified geometries prior to doing something more complex.
concern 1: non negative offdiagonal elements. concern 2: asymmetric offdiagonal elements.
The input geometry looks like the images in the link below ht*ps://imgur.com/a/OOHFKcF
 The target geometry has dimensions on the order of hundreds or thousands of micrometers, and may have feature as small as tens or hundreds of nanometers.
Since they are too small, the geometry input to the fastercap is scaled up to meters (10^6 times by length), instead of micrometers.
 the .lst file has following .txt inputs
C c1.txt 1.0 0.0 0.0 0.0 C c2.txt 1.0 0.0 0.0 0.0 C c3.txt 1.0 0.0 0.0 0.0 D Substrate.txt 1 11.9 0.0 0.0 0 0.01 0.01 0.01
where the substrate.txt defines the substrate (dielectric), with a
c1.txt defines a thin layer of conductor on top of the substrate, except for the circulr dip in the center,
c2.txt defines a boxedshaped conductor in the center of the circular dip,
and c3.txt defines another boxedshaped conductor in the center of the circular dip.
 I noticed that varying mesh density sometimes negative offdiagonals, but sometimes negative offdiagonals still appear in quite high mesh densities.
 Can you help me troubleshoot the issues please? I can provide the mesh files (.txt) as well


Enrico
435 Posts 
Posted  Jun 27 2019 : 00:09:41

Hi Spark,
your question seems akin to 'tbell' user's question, see tbell's posts.
I suggest you to reduce the geometry to the simplest possible still presenting the issue, and then you can send it to me (see 'contacts' page) if you need some check.
Best Regards, Enrico



spark
2 Posts 
Posted  Jul 16 2019 : 21:57:22

Hi Enrico,
I was looking for your email but I couldn't see your email due to the error: " Send an EMAIL Message Microsoft VBScript runtime error '800a000d' Type mismatch: 'rs' /forum/pop_mail.asp, line 228 "
I sent an email to support@fastfieldsolvers.com instead. I wish you could take a look at it.
In short, I tried changing d parameter to account for high aspect ratio geometry and also used Galerkin scheme. Nonnegative off diagonals are not appearing anymore, but I have other issues regarding the asymmetry of the offdiagonal elements and values being off from other simulation tools. I need some help on how to make it work.
edit: I may have been misinterpreting what the "overlapping panels" are. I got rid of the top panel from my "substrate.txt" in my CPW geometry and assigned different reference points for each panels for my conductors. I had some success but I hope I can still get your feedback.
Thanks,

Edited by  spark on Jul 17 2019 19:32:02 


Enrico
435 Posts 
Posted  Jul 18 2019 : 00:55:13

Hi Sungoh,
I've received your email and answered, but I cannot immediately look at your question. However in the meanwhile I checked the "contact us" form and it seems to work fine on my side. Could you kindly check again if it works for you (possibly after flushing the browser cache)?
Best Regards, Enrico



KSergP
Russia
4 Posts 
Posted  Sep 22 2020 : 12:02:14

Hi Enrico!
I am interested in 2 questions: 1. Why is the FastCap Maxwell capacitance matrix not symmetric (in your example from the setting for the coupled microstrip line)?. From the "physics of the problem" it follows that C21 = C12. 2. Can you somehow customize the use of the direct method for solving linear systems (Gaussian elimination)?
Sergei

Edited by  KSergP on Sep 22 2020 12:02:48 


Enrico
435 Posts 
Posted  Sep 24 2020 : 12:42:45

Hi Sergei,
1. This stems from multiple causes, main ones are the possible difference in the discretizations of the two conductors (even if discretized the same way, they may not be symmetric  imagine you copy and paste the same conductor, left side and right side may have a different arrangement of triangular panels) and numerical accuracies (e.g. GMRES converges to 1% for the residual error). Note that FastCap also has the same behavior, but it forces symmetry by averaging the offdiagonals (i.e. shows (C12+C21)/2). In FasterCap we decide to leave the offdiagonals as they are, as often they are a spy that something is wrong with your simulation (if they are really different, expecially if not very small w.r.t. the diagonal)
2. Yes this is possible. Actually in FastCap this should already be a compile option. We may do the same in FasterCap. But this has N^3 complexity so even small problems become intractable. Why do you want to do that?
Best, Enrico



KSergP
Russia
4 Posts 
Posted  Dec 25 2020 : 06:50:28

Hi, Enrico
Thanks for answers. I apologize for taking a long time to answer. For some reason, the notification about your answer did not come and I thought that you did not answer me. 1. Thank you for writing clearly. (in my program, I do that the symmetric matrix and the error matrix are displayed, by which one can judge the absence of symmetry). However, I misunderstood something:  for specifics, consider the associated microstrip line. So, it has 2 conductors. The system of linear algebraic equations has 2 righthand sides. Do you construct the grid 2 times to calculate the capacitive matrix (like FEM), or do you construct the mesh that you use in the calculations once? AX = B, Amatrix NxN, X and B  matrix Nx2  I don’t understand where GMRES has to do with it? After all, GMRES only solves a linear system similar to the Gauss method. So, if you use the Gaussian method, then your matrix will still not be symmetric. So the whole point here is in the mesh.
2. I want to compare the accuracy and computation time. Is the Gaussian method also weakly applicable for 2D structures? Also tell me how you do the GMRES preconditioner? 
Edited by  KSergP on Dec 25 2020 11:10:16 


Enrico
435 Posts 
Posted  Dec 29 2020 : 21:01:33

Hi Sergei,
quote:  for specifics, consider the associated microstrip line. So, it has 2 conductors. The system of linear algebraic equations has 2 righthand sides. Do you construct the grid 2 times to calculate the capacitive matrix (like FEM), or do you construct the mesh that you use in the calculations once?
The mesh is build only once. It does not mean it is symmetrical, though. The mesh refinement stops when a certain criteria (the ratio between the square of the normalized max dimension of the panels and the distance between the centers of the panels) is matched.
quote:  I don’t understand where GMRES has to do with it? After all, GMRES only solves a linear system similar to the Gauss method. So, if you use the Gaussian method, then your matrix will still not be symmetric. So the whole point here is in the mesh.
Yes but the key point is that GMRES is an iterative solver. It minimizes the Euclidean norm of the residual. So as it works with the norm r = Ax  b, relatively large differences in small specific elements may be masked by small differences of larger elements.
quote: I want to compare the accuracy and computation time. Is the Gaussian method also weakly applicable for 2D structures?
I am not sure about the question. Gaussian method is for sure valid for inverting a matrix but it has a complexity of O(N^3) where N is the number of panels, this is why it is not used in our solvers, that have instead a complexity of O(N).
quote: Also tell me how you do the GMRES preconditioner?
This is different in FastCap and in FasterCap. For FastCap you can refer to the literature in the literature web page of our site. For FasterCap you may use two preconditioner: one is the standard simple Jacobi one (you can google it up), the second is a hierarchical preconditioner derived from the observation that a good preconditioner can be derived by solving the same problem on a coarser mesh. The source code is available on GitHub (see the links on the download page) and well commented, so you can browse it.
Best Regards, Enrico



KSergP
Russia
4 Posts 
Posted  Dec 30 2020 : 03:37:18

Hi Enrico, thank you very much for your answer!
quote:
The mesh is build only once. It does not mean it is symmetrical, though. The mesh refinement stops when a certain criteria (the ratio between the square of the normalized max dimension of the panels and the distance between the centers of the panels) is matched.
if I understand correctly, then the refinement of the mesh occurs only on the basis of the geometry of the panels, i.e. the very amount of charge on these panels is not used to refine the mesh?
A small clarification about Gauss method: O(N^3) for the Gauss method is true, but this will only manifest itself for large N, which for 2D structures are rarely obtained. At the same time, the iterative method also requires the calculation of the preconditioner, so most likely, for small N, the Gauss method will win.
Regards, Sergey

Edited by  KSergP on Dec 30 2020 03:39:19 


Enrico
435 Posts 
Posted  Dec 30 2020 : 11:02:22

quote: the refinement of the mesh occurs only on the basis of the geometry of the panels, i.e. the very amount of charge on these panels is not used to refine the mesh?
Correct. It can be proven that the refinement strategy used leads to convergence even if the actual charge is not directly considered. However if you would consider the charge density, you would get a more precise result for the same number of panels or, if you want, the same precision using a lower number of panels. The cons of this approach is that it requires a complete solve at the previous step to know the charge density on the panels, to be able to use it for the next step of refinement. This makes the solver slower for practical situations. We prefer to have an excessive number of panels but solve explicitly the problem only once (per conductor). Consider that the refinement strategy used builds a hierarchical model and far away interactions are stopped at high level of the hierarchy (the method was originally incepted by Appel for solving the Nbody problem, then applied to radiosity, and then to the electrostatic capacitance problem).
quote: A small clarification about Gauss method: O(N^3) for the Gauss method is true, but this will only manifest itself for large N, which for 2D structures are rarely obtained. At the same time, the iterative method also requires the calculation of the preconditioner, so most likely, for small N, the Gauss method will win.
This is correct. However the time is so short for small problems that the difference is negligible, unless you are applying the solver to thousands of different problems. Also, consider that the preconditioner actually uses a Gauss solve on a problem with a low number of panels. So if your problem has less than say 1000 panels, the preconditioner at this dimension IS the solve, and the solution converges in one step. Of course you may stop with the Gauss solve and save a bit of time. Not sure if it really makes a difference in practical cases.
Best Regards, Enrico




Topic 


