1
2                       F a s t H e n r y   3 . 0 w r
3                       -----------------------------
4                                 10-21-2001
5
6Modifications by:        Stephen R. Whiteley  (stevew@wrcad.com)
7                         Whitleley Research Inc.
8
9** This is the fasthenry-3.0-12Nov96 distribution with the following
10   changes:
11
12  1) Support for superconductive elements has been added.  This release
13     is the successor to fasthenry-2.0S.
14
15  2) All references to "malloc.h" in the source code have been changed
16     to "stdlib.h" to avoid a cascade of warnings during compilation.
17
18  3) A long expression in mutual.c which triggered a compiler bug in
19     Red Hat Linux 6.0 has been altered to avoid the bug.
20
21  4) This version of fasthenry returns status 0 if there are no
22     errors, nonzero if an error occurs.  The original version had
23     undefined return status.
24
25  5) The latex files for the manual have been eliminated, since they
26     are useless without the figures.  The master's thesis has been
27     included instead (in the doc directory).
28
29  6) Two superconducting example files, sline1.inp and sline2.inp
30     have been added to the examples directory.
31
32  7) Added declarations of static functions in sparse matrix package
33     to avoid annoying compiler warnings.
34
35  8) Ported to Microsoft Windows using the mingw (www.mingw.org)
36     version of gcc.  To build under mingw, use "config mingw".  The
37     source code was made sensitive to the following defines, which
38     are all necessary for mingw.
39
40     a) NO_SBRK            The library lacks the sbrk() function.
41     b) NO_ATANH           Substitute for missing atanh() and asinh()
42                           functions.
43     c) NO_ISNAN           The library lacks isnan() and finite()
44                           functions.
45
46** 4-25-2001 Bug Fix:  .default lambda=xxx should work now
47
48** 6-19-2001 Bug Fix:  Error in resistance computation fixed
49
50** 10-21-2001 Changes:
51
52  1) For segments with no sigma/rho/lambda defined with no explicit
53     defaults, sigma now defaults to copper (5.8e7).  Previously this
54     was a fatal error.
55
56  2) When files are opened for writing, binary files are now opened
57     in "wb" mode rather than "w" mode.  This is only important under
58     Microsoft Windows, where binary data can be corrupted if file
59     pointers are not explicitly opened in binary mode.
60
61** 4-27-2004 Changes:
62
63  Added #include "sparse/spMatrix" in Preconfig.c for declaration of
64  spGetElement.  This is critical when ints and pointers are of different
65  widths.
66
67  Commented out redundant spGetElement declaration in newPreconfig.c.
68
69  Declaration of umalloc added to mulGlobal.h in zbuf, for int/pointer
70  width difference.
71
72  All programs compile without warnings on 64-bit sparc gcc-3.x
73  (Solaris 8) using CC = gcc and CFLAGS = -O -m64 -DFOUR.
74
75** 1-11-2009 Changes:
76
77  Misc. code tweeks to avoid compiler warnings when using newer
78  compilers, e.g., gcc-4.2.
79
80** 2-11-2013 Changes:
81
82  Fixed all warnings that issued when building on a OS X 10.6 MacBook
83  Pro, using the default configuration.  The programs should now build
84  cleanly on 64-bit platforms.
85
86
87--------------------- Superconductivity Support -------------------------
88
89This version of fasthenry has been modified to support superconducting
90segments and ground planes.  The analysis used is based on the London
91equations and the two-fluid model.  Both reactive and lossy components
92of the superconductor complex conductivity are employed in obtaining
93the impedance matrix.
94
95Theory
96------
97 *
98 *    In normal metal:     (1)  del X del X H = -i*omega*mu*sigma * H
99 *    In superconductor:   (2)  del X del X H = (1/lambda)^2 * H
100 *
101 *    In fasthenry, (1) is solved, so the game is to replace sigma in
102 *    (1) with a complex variable that includes and reduces to (2).
103 *    We choose
104 *
105 *      sigma_prime = sigma + i/(omega*mu*lambda^2)
106 *
107 *    Then, using sigma_prime in (1) rather than sigma, one obtains
108 *    an expression that reduces to (2) as omega -> 0,  yet retains
109 *    properties of (1).  This is the two-fluid model, where the
110 *    sigma in sigma_prime represents the conductivity due to unpaired
111 *    electrons.
112 *
113 *    Since sigma_prime blows up at omega = 0, we work with the
114 *    impedance, which we take as z = r1 + i*omega*r2 = i/sigma_prime.
115 *    The r1 and r2 variables are thus
116 *
117 *           (3) r1 =    sigma*(omega*mu*lambda^2)^2
118 *                    --------------------------------
119 *                    (sigma*omega*mu*lambda^2)^2 + 1
120 *
121 *           (4) r2 =           mu*lambda^2
122 *                    --------------------------------
123 *                    (sigma*omega*mu*lambda^2)^2 + 1
124
125
126Operation
127---------
128
129The input and output formats of fasthenry are unchanged, with the
130exception of a new input parameter "lambda".  The lambda parameter is
131the London penetration depth specified in the units in use, and can
132appear in segment or ground plane specification lines, and .default
133lines.  When lambda is given and nonzero, the element is analyzed as a
134superconductor, and the sigma parameter defaults to zero (not the
135conductivity of copper, as in the normal case).
136
137If, however, a default sigma is specified, or a sigma specification
138appears in the segment or ground plane line, that sigma will be used.
139The proper value for sigma is the sigma 1 from the two-fluid model,
140which is the normal sigma times the ratio of the quasiparticle and
141total carrier densities, a temperature dependent quantity.  For most
142applications, the loss is small enough to be considered negligible, so
143sigma need not be specified.
144
145To obtain accurate results, a sufficient number of filaments must
146exist in regions of high field gradient.  Although the ground plane
147construct is supported, experience has shown that its use often leads
148to inaccurate results presumably due to insufficient filamentation.
149Some of the new fasthenry-3.0 features may solve this problem, but
150this has not been tested.  It may prove necessary to implement ground
151planes with segments.
152
153The large filament count consumes much memory.  This program benefits
154from cpu power and memory.  Despite its name, be prepared to wait for
155results.
156
157Compilation is as described in the fasthenry documentation.  If for
158some reason the superconductivity support is to be deleted, the
159mulGlobal.h file should be edited to set "SUPERCON" to "OFF".
160
161
162Interpretation of Results
163-------------------------
164
165Fasthenry computes an impedance matrix, which is written to a file
166named "Zc.mat" when the run is complete.  This gives the inductance
167values indirectly, through the imaginary parts divided by the radian
168frequency (2PI times the value given for ".freq").  In order to
169compute inductance, the specified frequency, i.e., the value provided
170for the ".freq" parameter in the input file, must be nonzero.  For
171superconductors, with sigma equal to zero, the inductances should be
172independent of frequency, so the actual frequency chosen is not
173important.  If the frequency is set to zero, FastHenry will compute
174the resistance of the conductors only, which will be zero for
175superconductors.
176
177