FAQ

  • What does 'field solvers' mean?

  • In general, we indicate with the term 'field solver' any piece of software suited for solution of the Maxwell equations.

    However, we are here focusing in particular on those codes (like FastHenry and FastCap, see below) based on algorithms which consent the reduction of arbitrary geometries (preferibly tri- but also bi-bimensional), even complex, in lumped circuit elements (R, L, C) to them electromagnetically equivalent. In the case of FastCap and FastHenry, this equivalence is valid up to a certain frequency of the harmonic content of the signals involved, where the physical dimension of the conductive structures are comparable to the wavelength; this limitation is usually referred to with the 'quasistatic' term, in contrast to the 'full-wave' approach.

    However, a big deal of problems can be treated in this approximation, even real transmission lines, if we model geometrically small impedance discontinuites (like angles) with lumped elements and long, straight paths with distributed models whose parameters are calcuated from a 3D model stretched along one axis. Moreover, the quasistatic approximation not only allows to extract R, L and C parameters in a shorter time than full-wave solvers, but also to get a smaller and simpler SPICE-like model which ease the subsequent circuit simulations.

     

  • What is FastHenry?

  • In simple words, FastHenry is a program capable to compute the frequency-dependant self and mutual inductances, as well as the resistances, of a generic tridimensional conductive structure, in the magnetoquasistatic approximation.

    The input data, describing the geometry and the frequencies of interest, must be provided in a file. This file specifies every conductor as a sequence of rectilinear segments connected between nodes. Every segment has a finite conductivity and the shape of a parallelepiped, whose height and width can be assigned. A node is a point in the 3D space. The section of a segment can be divided, if required, into an arbitrary number of parallel filaments (that is, parallelepipeds with smaller cross section than the original one), the whole of which constitutes the segment itself; it is then assumed that every filament carries a uniform current.

    In this way is possible to model the high-frequency effects on the segments. As a matter of fact, when the frequency increases, the current is no longer uniformly distributed along the cross section of a conductor. Hovever, in limited regions of the section, the current can be reasonably approximated as uniform. Therefore, being able to specify an arbitrary discretization of the volume of the conductors, the accuracy of the results is affected accordingly and in general is better as the discretization is refined.

    The results are provided in form of a Maxwell impedance matrix Z=R+jL, where the bold letters represent matrices. Then, the results can be converted in equivalent, SPICE-like, lumped elements circuit models with an utility provided with FastHenry, MakeLCircuit. The network thus obtained, however, is valid only for a single frequency. Alternatively, is possible to generate directly with FastHenry a SPICE-like circuit capable to model frequency-dependant inductances and resistances. This latter opportunity is very powerful because allows to see how signals in the time domain are degradated by the different response of the conductors at the various frequencies.

    As a matter of fact, the classic approach, from which FastHenry differs, is the following: once the frequency response is calculated in the frequency domain, then a FFT or a Laplace transform is used to obtain a behavioral description in the time domain. Next, a convolution (or similar technique) is applied to get the temporal response of the circuit. The conversion from the frequency domain to the time domain is necessary, as the characterization of the lines in the frequency domain is in term of irrational functions of the frequency variable. Therefore, a generic SPICE-like simulator, being based on the numerical integration of ordinary differential equations, deriving from a lumped elements circuit whose parameters are characterized by rational functions in the frequency domain, in not capable to handle elements characterized by irrational functions.

    However, is possible to find rational approximations of these functions, at least in a fixed range of frequencies; so we can operate only in the time domain. Following a similar approach, FastHenry is capable to generate Reduced Order Models (ROM) for the system valid, in function of the chosen order, up to a certain maximum frequency.

     

  • What is FastCap?

  • FastCap is a software for computing the self and mutual capacitances of a conductive tridimensional structure sunk in a dielectric, possibly discontinuosus, mean.

    The input file specifies the discretizaion of the conductor surfaces and of the discontinuities in form of triangular or quadrangular panels in the 3D space. Since a constant charge density is associated to every panel, the panel dimensions are a key factor to obtain accurate results. Note, by the way, that the FastHenry input file format is not compatible with the FastCap one at all.

    The results are provided as a Maxwell capacitance matrix. No way is currently implemented to automatically generate an equivalent circuit.

     

  • What is ConvertHenry?

  • The FastHenry input file format is not compatible with the FastCap one. Therefore, obtaining both the inductance and the capacitance values associated to a certain structure is in general compex, because two different geometric descriptions are needed.

    To simplify this step, a program has been developed for the data conversion from FastHenry to FastCap, named ConvertHenry. Substantially, ConvertHenry reads the input file for FastHenry and generates a certain number of FastCap input files. More specifically, a different file is generated for every terminal port defined in the FastHenry input file (that is, for every group of conductors whose self and mutual inductance values one was interested in), plus an additional file containing the list of the generated files and some other information, like the dielectric constant values and the geometric offsets. This file is the main one needed by FastCap.

    Every conductor file contains the description of the related FastHenry segments in terms of quadrangular panels. The discretization degree of the segments is specified when ConvertHenry is launched; moreover, the discretization of every face is automatically refined near the segment edges, as the charge will concentrate there because of the edge effect.

    ConvertHenry also provides an option for substitution of any segment with a structure whose description, in FastCap format, is contained in a different file (an example of the use of this option could be for instance to substitute the segments representing the balls of a Ball Grid Array package with better spherical approximations).

     

  • I try to launch FastCap with a list file (.lst) but it doesn't work

  • This error is the most frequent and most trivial: to launch FastCap with a list file, you have to use the -l option, so if your file is called for istance 'tsop.lst', the commnd you should issue is:
    fastcap -ltsop.lst

     

  • Referring to FastCap input files, what is PATRAN and where can I find it?

  • PATRAN is a commercial tool used for structural/thermal analysis; it has a graphical front-end for 3D modelization. You have to buy it, unfortunately, if you want to use it.

     

  • I launch FastCap but I get the message:
    Warning - capacitance matrix is non strictly diagonally dominant due to row xx

  • This error can be frustrating because from the error message no hint is given on the possible cause and of course is impossible to use the resulting matrix to simulate a structure because it lacks physical meaning.

    The suggestion is to check the input file especially for what regards the dielectric interfaces. If conductive panels which should be sunk in a dielectric with, say, dielectric constant e1 are on the side of a dielectric interface which states for that region a different dielectric constant e2 you can expect this kind of error. As the specification of the reference point of the dielectric interface (see FastCap manual) can be difficult to visualize without graphic front end, it is most probable that you could have exchanged the two sides.

    Another case which could arise is when the dielectric interface covers only partially the conductive structures, even when the dielectric constants specification is ok, so it is not clear which part in sunk in which dielectric mean. To find a solution, you can try to delimit the dielectric regions as clearly as possible.

     

  • I launch FastCap/FastHenry on a symmetric structure but I get a non symmetrical matrix

  • Pay attenton on the discretization into panels/filaments of your geometries. Are you sure everything is symmetrical? In FastHenry remember also to use an odd number of filaments on each side, as suggested by the manual; the same trick works for FastCap with the number of panels per side.

     

  • Running out of memory with FastHenry on a small problem

  • This question is taken from Mattan Kamon's FAQ on the MIT ftp site; it requires a bit of knowledge of how FastHenry works, but anyway the problem could arise to someone and the proposed solutions are simple to understand and works ok.

    - The original question was:
    The problem is, I have this geometry which I was able to solve successfully with FastHenry using a 7x7 discretization of the line conductors. But when I changed the discretization to 9x9, I got a segmentation fault (let's say a system error, for Windows users).

    - The answer was:
    I'm not sure why you got a segmentation fault, but I suspect this was caused by a memory problem since it seemed to run fine on our machines. But certainly, Fasthenry should be able to handle such a small problem. Here is an explanation of what is going on.
    The long winded explanation:
    You may say 3000 filaments is not a large problem for the multipole algorithm, but in order for the multipole algorithm to be efficient in execution time and memory, it must be able to divide space into a grid of small enough cubes such that no given cube containing more than a small number of filaments. In addition, for the multipole expansions to be valid, no filament can be larger than the cube it is contained in. This presents a problem for long conductors which are finely discretized, such as 9x9. In this case, from fasthenry's output, you can see that it only decended 3 partitioning levels, which means it divided the domain into an 8x8x8 grid of cubes. This is not very fine and the few cubes toward the center of your geometry will contain most of the filaments. The multipole algorithm would have liked to go down many more levels, however in going down to level 4, many of the filaments would have been longer than the cube. In order to descend, the filaments would have to be cut in half, but this would nearly double the number of filaments. In this case, FastHenry decided the extra cost to compute approximations for the added filaments would be more expensive than descending a level so it stopped at level 3. So now, since a small set of cubes contain most of the filaments, the multipole algorithm isn't really being used and much of the problem is being solved with direct matrix-vector products. This is inefficient in time and memory but not unbearable (65MB). What is really killing you is actually the space required to form the default (cubeL) preconditioner. The preconditioner inverts a sparsified version of the system, but it bases it's sparsification on the multipole cubes. So it is forming and factoring a large part of the problem and there is a lot of fill-in. This consumes a lot of memory and takes a long time to factor. (around 100MB!)
    Cure #1:
    Use a preconditioner that is not so expensive in memory. I ran it with
    fasthenry yipw-bug -psegm
    and it was much faster and the preconditioner only consumbed 20MB.
    Cure #2:
    Instead of increasing the number of filaments from 7x7 to 9x9, consider changing the rh and rw values. The "Discretization Error Analysis" section of the manual describes this in more detail.

    Note that the above discretization problem does not arise for ground planes since the filaments become shorter as the discretization is refined.

     

  • Confusion about partial inductance

  • This question is taken from Mattan Kamon's FAQ on the MIT ftp site. This doubt could arise in case the concept of partial inductance is not clear; see the PhD thesis on Mattan Kamon's home page for further explanations.

    - The original question was:
    Let's assume that there is a line conductor over a ground plane.The two end points of the line conductor are designated A and B. The point on the ground plane directly underneath A is designated C, and that directly underneath B is designated D. In case 1,there is NO electrical connection between the line conductor and the ground plane. The port is defined to go from A to B. In case 2, B is electrically connected to D via the .equiv statement. The port is defined to go from A to C. The two cases would result in slightly different port inductance. If you use the flux linkage definition of inductance, it seems that the two cases are equivalent. Could you explain the difference in inductance?

    - The answer was:
    Flux linkage doesn't make sense when you don't have a complete loop as in case 1. This is where the term 'partial inductance' comes in. The inductance from A to B can be thought of as the partial inductance of the entire loop, A to C. If you define two ports, A to B and C to D, then you will get a 2x2 matrix

    Z11 Z12
    Z21 Z22

    with Z12 = Z21

    The total loop inductance, Zloop, (case 2), is related to the matrix (case 1) by:

    Zloop = Z11 + Z22 - 2 * Z12 (may be +2 Z12 depending on the port definition). So there is your relation.

     

  • I get the following message with FastHenry:
    uh oh, segs don't seem parallel -3.04744e-07

  • This question is taken from Mattan Kamon's FAQ on the MIT ftp site. This is a small bug of FastHenry.

    - The answer was: This warning is an internal warning that doesn't matter in this case (and rarely appears). It results from two filaments being almost parallel. One point of the code considers them parallel, but later, a different 'back up test' thinks they are not. I probably should have taken this message out, but never did. The value can be thought of as (1 - cos(e)) where e is the angle between the filaments. The routine that calls this is for computing the mutual inductance between filaments which are NOT close together, so treating them as non-parallel is even less important.

      

  • Where can I get FastHenry / FastCap example files the manuals talk about?

  • The example files, converted for Windows, are distributed with FastModel, together with FastHenry2 and FastCap2. They can be found in a subdirectory of the install directory you choose when installing FastModel.

      

  • Which files should I download to run the field solvers?

  • In the following, you'll find a short guide about the software you can find on our download page. This explanation will help you in choosing the right product to download.

    FastModel: FastModel is an integrated environment to model, view and simulate 3D structures. It comprises the full version of FastHenry2 and FastCap2. You only need to download FastModel to get everything you need to simulate your structures.

    ConvertHenry: ConvertHenry is an utility which can to some extension convert a FastHenry-format 3D model to a FastCap one. It can be useful when extracting the RLC parameters of a structure.

      

  • Do you have a copy of the original FastHenry FAQ? It can't be found any more on the MIT web site.

  • Yes we do! Just click here.

      

    Tell us what you think of the contents of this page!