Home > fasthenry-3.0wr

fasthenry-3.0wr

Fasthenry-3.0wr is a project mainly written in C and SHELL, it's free.

                   F a s t H e n r y   3 . 0 w r
                   -----------------------------
                             10-21-2001

Modifications by: Stephen R. Whiteley ([email protected]) Whitleley Research Inc.

** This is the fasthenry-3.0-12Nov96 distribution with the following changes:

  1. Support for superconductive elements has been added. This release is the successor to fasthenry-2.0S.

  2. All references to "malloc.h" in the source code have been changed to "stdlib.h" to avoid a cascade of warnings during compilation.

  3. A long expression in mutual.c which triggered a compiler bug in Red Hat Linux 6.0 has been altered to avoid the bug.

  4. This version of fasthenry returns status 0 if there are no errors, nonzero if an error occurs. The original version had undefined return status.

  5. The latex files for the manual have been eliminated, since they are useless without the figures. The master's thesis has been included instead (in the doc directory).

  6. Two superconducting example files, sline1.inp and sline2.inp have been added to the examples directory.

  7. Added declarations of static functions in sparse matrix package to avoid annoying compiler warnings.

  8. Ported to Microsoft Windows using the mingw (www.mingw.org) version of gcc. To build under mingw, use "config mingw". The source code was made sensitive to the following defines, which are all necessary for mingw.

    a) NO_SBRK The library lacks the sbrk() function. b) NO_ATANH Substitute for missing atanh() and asinh() functions. c) NO_ISNAN The library lacks isnan() and finite() functions.

** 4-25-2001 Bug Fix: .default lambda=xxx should work now

** 6-19-2001 Bug Fix: Error in resistance computation fixed

** 10-21-2001 Changes:

  1. For segments with no sigma/rho/lambda defined with no explicit defaults, sigma now defaults to copper (5.8e7). Previously this was a fatal error.

  2. When files are opened for writing, binary files are now opened in "wb" mode rather than "w" mode. This is only important under Microsoft Windows, where binary data can be corrupted if file pointers are not explicitly opened in binary mode.

** 4-27-2004 Changes:

Added #include "sparse/spMatrix" in Preconfig.c for declaration of spGetElement. This is critical when ints and pointers are of different widths.

Commented out redundant spGetElement declaration in newPreconfig.c.

Declaration of umalloc added to mulGlobal.h in zbuf, for int/pointer width difference.

All programs compile without warnings on 64-bit sparc gcc-3.x (Solaris 8) using CC = gcc and CFLAGS = -O -m64 -DFOUR.

** 1-11-2009 Changes:

Misc. code tweeks to avoid compiler warnings when using newer compilers, e.g., gcc-4.2.

--------------------- Superconductivity Support -------------------------

This version of fasthenry has been modified to support superconducting segments and ground planes. The analysis used is based on the London equations and the two-fluid model. Both reactive and lossy components of the superconductor complex conductivity are employed in obtaining the impedance matrix.

Theory

  • In normal metal: (1) del X del X H = -iomegamusigma H
  • In superconductor: (2) del X del X H = (1/lambda)^2 * H
  • In fasthenry, (1) is solved, so the game is to replace sigma in
  • (1) with a complex variable that includes and reduces to (2).
  • We choose
  • sigma_prime = sigma + i/(omegamulambda^2)
  • Then, using sigma_prime in (1) rather than sigma, one obtains
  • an expression that reduces to (2) as omega -> 0, yet retains
  • properties of (1). This is the two-fluid model, where the
  • sigma in sigma_prime represents the conductivity due to unpaired
  • electrons.
  • Since sigma_prime blows up at omega = 0, we work with the
  • impedance, which we take as z = r1 + iomegar2 = i/sigma_prime.
  • The r1 and r2 variables are thus
  • (3) r1 = sigma(omegamu*lambda^2)^2

  • (sigmaomegamu*lambda^2)^2 + 1
  • (4) r2 = mu*lambda^2

  • (sigmaomegamu*lambda^2)^2 + 1

Operation

The input and output formats of fasthenry are unchanged, with the exception of a new input parameter "lambda". The lambda parameter is the London penetration depth specified in the units in use, and can appear in segment or ground plane specification lines, and .default lines. When lambda is given and nonzero, the element is analyzed as a superconductor, and the sigma parameter defaults to zero (not the conductivity of copper, as in the normal case).

If, however, a default sigma is specified, or a sigma specification appears in the segment or ground plane line, that sigma will be used. The proper value for sigma is the sigma 1 from the two-fluid model, which is the normal sigma times the ratio of the quasiparticle and total carrier densities, a temperature dependent quantity. For most applications, the loss is small enough to be considered negligible, so sigma need not be specified.

To obtain accurate results, a sufficient number of filaments must exist in regions of high field gradient. Although the ground plane construct is supported, experience has shown that its use often leads to inaccurate results presumably due to insufficient filamentation. Some of the new fasthenry-3.0 features may solve this problem, but this has not been tested. It may prove necessary to implement ground planes with segments.

The large filament count consumes much memory. This program benefits from cpu power and memory. Despite its name, be prepared to wait for results.

Compilation is as described in the fasthenry documentation. If for some reason the superconductivity support is to be deleted, the mulGlobal.h file should be edited to set "SUPERCON" to "OFF".

Interpretation of Results

Fasthenry computes an impedance matrix, which is written to a file named "Zc.mat" when the run is complete. This gives the inductance values indirectly, through the imaginary parts divided by the radian frequency (2PI times the value given for ".freq"). In order to compute inductance, the specified frequency, i.e., the value provided for the ".freq" parameter in the input file, must be nonzero. For superconductors, with sigma equal to zero, the inductances should be independent of frequency, so the actual frequency chosen is not important. If the frequency is set to zero, FastHenry will compute the resistance of the conductors only, which will be zero for superconductors.