Skip to content

Commit a9c6d7a

Browse files
author
Enrico Di Lorenzo - FastFieldSolvers S.R.L
committed
Initial commitment based on original M.I.T. distribution fasthenry-3.0 12Nov96 with 2003 license
M.I.T. updated the original 1996 distribution in 2003 modifying the license into a more permissive one
0 parents  commit a9c6d7a

File tree

158 files changed

+75496
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

158 files changed

+75496
-0
lines changed

Makefile

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Master makefile for fastcap and related programs and documentation
2+
3+
SRC = src
4+
FASTH = $(SRC)/fasthenry
5+
ZBUF = $(SRC)/zbuf
6+
7+
default:
8+
@echo Specify what to make:
9+
@echo " fasthenry - inductance calculation program"
10+
@echo " zbuf - geometry postscript file program"
11+
@echo " all - all of the above"
12+
@echo " clean - remove object files"
13+
14+
fasthenry:
15+
cd $(FASTH) ; $(MAKE) fasthenry
16+
17+
zbuf:
18+
cd $(ZBUF) ; $(MAKE) zbuf
19+
20+
all: fasthenry zbuf
21+
22+
clean:
23+
cd $(FASTH) ; $(MAKE) clean
24+
cd $(ZBUF) ; $(MAKE) clean

README

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
FastHenry 3.0 information. 10/9/96
2+
3+
FastHenry is a program for the efficient extraction of inductances and
4+
resistances of complex 3-D geometries of conductors.
5+
6+
Configuring for your machine:
7+
8+
1. Change to the fasthenry-3.0 directory
9+
10+
prompt % cd fasthenry-3.0
11+
12+
2. Configure for your machine (sets the compilation flags)
13+
14+
SunOS 4.x, IBM RS 6000's, and other 4.2/3 BSD systems(?):
15+
prompt % config default
16+
17+
DEC 5000s:
18+
prompt % config dec
19+
20+
DEC Alphas:
21+
prompt % config alpha
22+
23+
Silicon Graphics:
24+
prompt % config sgi
25+
and then read the extra instructions in README.sgi
26+
27+
Linux:
28+
prompt % config default
29+
Then see note c. below
30+
31+
System V operating systems:
32+
33+
Sun Solaris:
34+
35+
prompt % config solaris
36+
37+
Hewlett-Packard HP-UX, and other System V operating systems:
38+
This has not been thoroughly tested.
39+
40+
prompt % config sysV
41+
42+
Notes:
43+
44+
a. For Versions of solaris before 2.5, The "ranlib" command is obsolete and
45+
doesn't exist.
46+
Either remove the ranlib command from src/fasthenry/sparse/Makefile
47+
or define a null ranlib command in your path or do "make -k all"
48+
49+
b. In the linking stage, if you get an error that "gethostname"
50+
is undefined, then add "-DNO_GETHOSTNAME" to the CFLAGS line in
51+
src/fasthenry/Makefile and src/zbuf/Makefile after doing config.
52+
For instance
53+
54+
CFLAGS = -O -DFIVE -DNO_GETHOSTNAME
55+
56+
c. I've had problems getting FastHenry to run reliably on Intel based
57+
machines running Linux and compiling with gcc with optimization.
58+
Removing the "-O" option from CFLAGS in the Makefiles (zbuf and fasthenry)
59+
seems to help.
60+
61+
Compiling:
62+
63+
prompt % cd fasthenry-3.0
64+
prompt % make all
65+
66+
produces the executables: fasthenry-3.0/bin/fasthenry
67+
and fasthenry-3.0/bin/zbuf
68+
69+
If you want to save space after "make all",
70+
71+
prompt % make clean
72+
73+
will clean up *.o and *.a files.
74+
75+
Documentation:
76+
The manual is in postscript in three files
77+
78+
fasthenry-3.0/doc/manual_001.ps
79+
fasthenry-3.0/doc/manual_002.ps
80+
fasthenry-3.0/doc/manual_003.ps
81+
82+
The manual for nonuniformly discretized reference planes is
83+
fasthenry-3.0/doc/nonuniform_manual_1.ps
84+
fasthenry-3.0/doc/nonuniform_manual_2.ps
85+
86+
87+
These files contain many detailed postscript images and may take
88+
significant time to print.
89+
90+
-------------------------------------------------------------
91+
Major changes in 3.0 since version 2.5
92+
93+
- Specify a nonuniform discretization of a reference plane to
94+
capture small features in fewer elements.
95+
96+
- Two approaches for generating spice equivalent circuits are available:
97+
98+
1. An equivalent circuit for a single frequency.
99+
100+
2. A circuit which models the frequency
101+
dependent resistances and inductances through a reduced state-space
102+
representation
103+
104+
Comments: Method 1 will not model frequency dependent resistance
105+
and inductance since it gives and R and L at the single specified
106+
frequency. Method 2 will model the full effects up to some frequency.
107+
108+
- Major Bug fix:
109+
For reference planes which form segments with different
110+
widths in the x-direction versus the Y direction, the sizes weren't
111+
computed correctly in version 2.0 and above. This has been fixed.
112+
113+
114+
- The zbuf program now takes the ``-m'' argument to produce a
115+
Matlab file for faster visualization in matlab. This is very beneficial for
116+
large files since producing the postscript file can take $n^2$ time.
117+
The matlab file can be viewed within matlab with the
118+
fasthenry-3.0/bin/plotfastH.m matlab function. The file
119+
zbuffile.mat would be produced with ``zbuf -m zbuffile'' which can
120+
then be viewed in matlab with ``>> plotfastH('zbuffile.mat')''.
121+
Also, you can modify the file src/zbuf/dump_struct.c to output in YOUR own
122+
format instead of matlab.
123+
124+
- Sparse preconditioner. Specify -p shells to use a
125+
preconditioner based on Byron Krauter's sparse inductance technique.
126+
127+
- Regurgitate the input file with -v to see what FastHenry
128+
thinks it has read. Also can translate and reflect geometry before output.
129+
130+
-------------------------------------------------------------
131+
132+
Changes since Version 1.0
133+
134+
Version 1.5:
135+
136+
1. Better filament mutual inductance approximation for very thin segments.
137+
2. Ability to specify ground plane holes. See example hole.inp and
138+
some of the comments toward the end of the file hole.c (I have
139+
not had a chance to update the manual.)
140+
3. Other command line options. (Give an erroneous option at the command line
141+
to see the added options)
142+
4. Some bug fixes.
143+
144+
145+
Version 2.0 - this is a far improvement over the past versions
146+
147+
In summary:
148+
1. A better preconditioner which allows efficient analysis of
149+
reference planes.
150+
2. Accurate modeling with thin filaments.
151+
3. More detailed manual
152+
4. Many, many other features
153+
154+
155+
-----------------------------------------------------------------
156+
Updates:
157+
158+
If small changes are made, a new tar
159+
file will appear from rle-vlsi.mit.edu with a more recent date.
160+

README.sgi

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
2+
In version 2.0, compiling FastHenry on a Silicon Graphics workstation
3+
proved to cause some problems.
4+
5+
Here are a couple of added steps that are necessary to get it going on
6+
an SGI.
7+
8+
1. Do "config sgi" in the fasthenry-2.0 directory.
9+
10+
2. in src/fasthenry/sparse/Makefile, add the option -cckr to the CFLAGS line:
11+
12+
CFLAGS = -O -cckr
13+
14+
3. go back up to the fasthenry-2.0 directory, do
15+
16+
make -k all
17+
18+
You can ignore the error that ranlib is not found.
19+
20+

bin/plotfastH.m

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
function plotfastH(name);
2+
% Load and plot a 3D fasthenry structure produced with "zbuf -m name"
3+
% where name is without the ".mat"
4+
5+
xt = []; yt = []; zt = [];
6+
xq = []; yq = []; zq = [];
7+
8+
eval(['load ' name]);
9+
fprintf(1, 'loaded %d panels\n', length(xt) + length(xq));
10+
hold off;
11+
if length(xt) > 0,
12+
ht = fill3(xt, yt, zt, 'r');
13+
hold on;
14+
end
15+
X = max([max(xt) max(yt) max(zt)]);
16+
Y = min([min(xt) min(yt) min(zt)]);
17+
18+
if length(xq) > 0,
19+
hq = fill3(xq, yq, zq, 'y');
20+
end;
21+
22+
X = max([X max(xq) max(yq) max(zq)]);
23+
Y = min([Y min(xq) min(yq) min(zq)]);
24+
25+
26+
axis([Y X Y X Y X]);
27+
fprintf(1, 'finished filling polygons\n');
28+
29+
%return;
30+
31+
32+
axis('square');
33+
%return;
34+
35+
36+
set(ht, 'FaceColor', 'w')
37+
set(ht, 'EdgeColor', 'k')
38+
39+
set(hq, 'FaceColor', 'w')
40+
set(hq, 'EdgeColor', 'k')
41+
axis('square');
42+
axis('off');
43+
return;
44+
45+
%g = get(hq(1), 'LineWidth'); set(hq, 'LineWidth', 2*g);
46+
47+
f = gcf;
48+
set(f, 'Color', [1 1 1]);
49+
set(f, 'InvertHardcopy', 'off');
50+
51+
%set(f, 'PaperOrientation', 'landscape');
52+
print -deps panels.ps
53+
54+
return;
55+
56+
fprintf(1, 'printing...\n');
57+
print -dps -Plouvre
58+
!lpq -Plouvre
59+

config

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/sh
2+
3+
if test $1
4+
then
5+
name=$1
6+
else
7+
name="default"
8+
fi
9+
10+
if test "$name" != "default" -a "$name" != "alpha" -a "$name" != "dec" -a "$name" != "sgi" -a "$name" != "sysV" -a "$name" != "solaris"
11+
then
12+
echo config: Unknown type: $1. Choose one of: default, alpha, dec, sgi, sysV, solaris
13+
else
14+
/bin/cp src/fasthenry/Makefile.$name src/fasthenry/Makefile
15+
/bin/cp src/zbuf/Makefile.$name src/zbuf/Makefile
16+
fi

doc/README

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
Print the three files: manual_001.ps, manual_002.ps, and manual_003.ps
3+
to get the complete manual.
4+
5+
The LaTex files are provided for a text version of the manual but
6+
the associated figures are not included so LaTex will fail on these files.
7+
8+
For the documentation on nonuniformly discretized planes, print the two parts
9+
nonuniform_manual_1.ps
10+
nonuniform_manual_2.ps

0 commit comments

Comments
 (0)