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