Umted Slates EPA'600/8~ 85-030
Environmental Protection
A9""cv September 1986
&EPA Research and
Development
AN INTERACTIVE COMPUTER
MODEL FOR CALCULATING
V-I CURVES IN ESPS
VERSION 1. 0
Prepared for
Office of Environmental Engineering and Technology
Prepared by
Air and Energy Engineering Research
Laboratory
Research Triangle Park NC 27711
-------
RESEARCH REPORTING SERIES
Research reports of the Office of Research and Development. U.S. Environmental
Protection Agency, have been grouped into nine series. These nine broad cate-
gories were established to faciiitate further development and application of
environmental technology. Elimination of traditional grouping was consciously
planned to foster technology transfer and a maximum interface in related fields.
The nine series are:
1. Environmental Health Effects Research
2. Environmental Protection Technology
3. Ecological Research
4. Environmental Monitoring
5. .Socioeconomic Environmental Studies
6. Scientific and Technical Assessment Reports (STAR)
7. Interagency Energy-Environment Research and Development
8. ."Special" Reports
9. Miscellaneous Reports
..This report has been assigned to the SPECIAL REPORTS series. This series is
-reserved for reports which are intended to meet the technical information needs
of specifically targeted user groups. Reports in this series include Problem Orient-
ed Reports, Research Application Reports, and Executive Summary Documents.
^Typical of these reports include state-of-the-art analyses, technology assess-
. ments, reports on the results of major research and development efforts, design
;• manuals, and user manuals. .-:._..:..:..
5- ^V K; - :R, EPA REVIEW NOTICE
,This report has been reviewed by the UiS. Environmental Protection Agency, and
:-approved for publication. Approval does not signify that the contents necessarily
- reflect the views and policy of the Agency, nor does mention of trade names or
; commercial products constitute endorsement or recommendation for use.
'
-
This document is available to the public through the National Technical Informa-
tion Service. Springfield, Virginia 22161.
-------
-------
FOREWORD
During the writing of this model and its documentation, the method in
which it would be distributed was not established. It is thought that the
primary method of dissemination will be through the National Technical
Information Service (NTIS). One disk Will contain the BASIC programs
described herein; the other(s) will contain compiled versions of these
programs.
The BASIC program disk should be copied onto a system disk with BASICA
or its equivalent on it, as described in Section II of this document. That
new disk should then be run in Drive A: of the computer. We recommend that
any data files you create be written to Drive B: to avoid filling up the
program disk.
The compiled versions are provided for the user's convenience, because
they run many times faster than the BASIC versions. These" were compiled
with Microsoft's QuickBasic and GW-BASIC compilers and are the same as the
BASIC version. However, there are machine-specific versions for the IBM
and Tandy 2000. Be sure to use the appropriate version, and check the
disks for information files about their use. The graphics for the TANDY
2000 computer are not supported by QuickBasic but are by GW-BASIC. Of
course, the compiled versions cannot be easily modified.
For further information on the compiled programs, please refer to
Appendix E.
-------
TABLE OF CONTENTS
Section Page
Foreword ii
Figures v
Tables vi
I Introduction ..... 1
II User Guide 2
A. Overview 2
B. Hardware Requirements 6
C. Software Requirements 7
D. Starting the First Time 8
E. Running the Program the First Time 8
F. Running the Program 9
G. Menu Descriptions 14
H. Output Information -48
I. Sample Runs 55
Sample Run 1. Three-wire ESP 56
Sample Run 2. Eight-wire ESP 60
Sample Run 3. Two-mast ESP 65
III Theory of the Model 70
A. Starting Voltage Relation for Coaxial Geometry ... 70
B. Single Wire Between Planes 70
C. Effect of One Wire on the Starting Voltage of
Another 71
D. Operation of All Wires at a Common Voltage 72
E. Consequences and Limitations of the Interaction
of Wires 72
F. Constant Space Charge in the Wire Cylinder 73
G. Constant Space Charge in the Wire Plane 73
H. Calculation of Wire V-I Relations 74
I. V-I Curve in Cylindrical Geometry 74
J. Electric Field in the Wire-Cylinder Geometry .... 75
K. Saturation Relations in the Wire Cylinder 75
L. Current Density in Wire-PI ate Geometry for a
Single Wire 76
M. Current Density in Wire-Plate Geometry for
Multiple Wires 78
N. Ca-lculation of Electric Field 79
0. Miscellaneous 80
-------
TABLE OF CONTENTS
Section Page
IV Planned Enhancements ............. 82
References 83
Appendixes
A Program Listing . A-l
B Translating Program to Other Computers B-l
C ESP Performance Model Documentation C-i
D ESP Performance Model (BASIC EPA/SRI Version) .... D-l
E Notes for Advanced User ....... E-l
F Metric Conversion Factors ..... F-l
G Recommended Space Charge Values . G-l
-------
FIGURES
Number Page
1 The module concept 5
2 Opening menu of the model program 10
3 Menu displayed after selecting program configuration
options 12
4 Menu for input options 15
5 Module description input menu 17
6 Data input menu for environment inputs 19
7 Menu for entering module arrangements data 22
8 The screen displayed after selecting calculation
options 25
9 Display options operating choice menu 30
10 Graphic display of a module 31
11 Graphic display of a section ...... 32
12 Graphic display of individual wire current density
curves 34
13 Graphic display of individual wire currents per
1 meter length . 36
14 Graphic display of total section current density
curve 37
15a Graphic display of current density distribution
when Display Painting is OFF 39
15b Graphic display of current density distribution
when Displays is B&W 40
16a Graphic display of electric field distribution
when Display Painting is OFF 42
-------
Figures (continued)
Number
16b Graphic display of electric field distribution
when Displays is B&W ................
17 Screen displayed after selecting calculation outputs.
18 Page one of the output data from the program . . . .
19 Page two of the output data from the program . . . .
20 Page three of the output data from the program . . .
21 Page four of the output data from the program . . . .
TABLES
Number
1 Tandy 2000 Hardware Requirements ..........
2 IBM PC/PC-XT Hardware Requirements .........
3 Configuration Options ................
43
45
52
53
54
55
7
7
13
-------
I. INTRODUCTION
Existing electrostatic precipitator (ESP) models, such as the
EPA/Southern Research Institute (EPA/SRI) model, do an excellent job of
predicting the performance of ESPs if provided with accurate estimates of
the electrical operating conditions in the ESP. These models also, with
laborious calculations, can calculate the voltage-current (V-I) curves and
consequently the electrical operating conditions for normal wire type
discharge electrodes. These models, however, cannot predict the electrical
conditions from novel discharge electrodes or of novel arrangements of
round-wire discharge electrodes of various spacings and diameters. On the
other hand, recent experimental data have shown changes in discharge electrode
diameter to have a significant impact on ESP performance. And most major
vendors of ESPs have begun research to develop new discharge electrode
designs. Thus a method for predicting the electrical operation of various
discharge electrodes is necessary. Such a method should predict the V-I
curve for the electrode design and the distribution of current and electric
field in the inter-electrode space and at the collector plate.
The current project was initiated to develop an interactive computer
model for calculating the necessary predictions. Since the model was to be
interactive and enable the user to evaluate rapidly the electrical performance
of various discharge electrodes, rapid mathematical computation proved
necessary. In the initial design of the model, it became apparent that
high resolution graphics available on microcomputers (e.g., the Tandy 2000)
would enhance the model considerably. As the reliability of the model
became apparent, modifications were made to allow its use on the IBM PC.
This latter development effected a sacrifice in display capabilities.
A decision to use analytic approximations as much as possible was made
to avoid the time required for numerical solution of partial differential
equations. This led to the development of several new approximations for
the electrical conditions in an ESP. These approximations have been checked
against experimental data and the detailed numerical solutions. In all
cases, the answers provided by the approximations are in excellent agreement.
-------
This version of the model, Version 1.0, enables the prediction of the
electrical conditions for round-wire discharge electrodes. The wires in a
given section can have varying diameters and be at various spacings. The
effects of an immobile, constant space charge can be included, and this
component of space charge can decrease by a certain fraction in each wire,
thereby simulating the effects of collection of real particulate space
charge. This version has been verified experimentally for clean wires
operating in positive or negative glow corona. Extensions of the model
(including negative tuft corona, positive streamer corona, dirty wires, and
particulate space^charge) can be made but currently are supported only by
theory. The ability to see the general effects of changes of configuration
quickly makes such extrapolations valuable, even though the model may not
have a fully developed degree of accuracy for the glow corona.
II. USER GUIDE
A. Overview
This complex program assumes a minimum proficiency in the use of
microcomputers. Several operations in manipulating the program are provided
through the use of batch files. The responsibility for their correct use
lies with the user.
The remainder of Section A describes briefly the approach used for
calculating the V-I curves. The theory behind the method is discussed in
Section III. Then the concepts of the data entry process are described.
Finally, the operation of the menu displays is described. Sections B and C
of the User Guide describe hardware requirements for meeting the hardware
and software requirements. Sections D and E are devoted to moving the data
programs to a system diskette for use and operating the program for the
first time, respectively. Section F describes the operation of the program
in detail. The program can be tailored to suit the user and the computer,
as explained in this section. Section G describes both the menus and the
actions resulting from each choice. Section H discusses program outputs.
Finally, Section I contains three examples of use of the V-I program,
giving instructions that exercise most of the options.
-------
1. Prediction of V-I Curves
The first step in predicting the electrical conditions (current density,
electric field) of an ESP is to predict the V-I curve for the ESP. The
round-wire electrode proves advantageous because of the existence of analytic
solutions for the electric field around the wire. The model considers the
perturbations of the field around one wire due to other nearby wires at the
same potential and then determines the corona onset voltage for each wire
electrode.
The next step lies in evaluating the current density on the plate
directly opposite the wire. Both experimental evidence and theoretical
considerations have shown that this current density can be described by the
same relations that predict the current density in wire-cylinder corona
devices.
The third step consists of determining the current density on the
plate at points between the wires. Several useful approximate relations
for the angular dependence of current density and electric field have been
discovered and verified by numerical computations. Experimental evidence
also indicates that the currents emanating from adjacent wires become
truncated at their common boundary. These conditions make it possible to
evaluate the voltage dependence of the current from each wire. This amounts
to prediction of the V-I curve of each wire.
The last step is evaluating the V-I curve characteristic of the whole
electrical section. This depends upon both interpolating the V-I curves of
each wire at a common voltage and then averaging the current over the whole
plate area. Thus, the composite V-I curve extends only from the lowest
corona starting voltage to the lowest maximum wire voltage on the individual
V-I curves. Since the model's results prove similar to those of the wire-
cylinder ESP, several important aspects of the model seek similarities in
the equations governing the voltage, current, and electric fields in the
wire cylinder.
2. Data Input
Even a simple wire-plate ESP section requires many descriptors to
specify its configuration. The program has been designed to allow rapid
-------
entry of these values .clearly and accurately. In addition, several param-
eters are calculated within the program, based upon the best available
theoretical knowledge.
Before entering data, one must understand the distinction between a
wire module and the electrical section. A wire module consists of a group
of wires whose configuration is repeated one or more times throughout a
section. An electrical section comprises a collection of modules with
entrance and exit lengths of the plate, with all operating at the same
voltage. One common design, as seen in Figure 1, has a 12 in.* long module
with two -wires separated by 6 in. Three modules constitute the electrical
section, with the module centers resting 12 in. apart. At the leading and
trailing edges of the section, there is an additional 3 in. of plate. The
program uses the module concept to eliminate repetitive entry of the same
data. The entire electrical section can consist of one module, or a single
wire can occupy one module.
3. Menu Operation
Much of the operation of the program is governed by menus. A menu is
displayed on the screen of the computer with the user selecting actions to
be taken. One uses the cursor positioning keys (arrow keys) to move the
flashing cursor to the desired location. The action that follows depends
on the the type of menu involved.
There are three types of menus: operating menus, single-parameter data
entry menus (or forms), and multiple-parameter data entry menus (or forms).
In an operating menu (once the cursor is positioned), the only possible
actions are to press the key to activate the operation, the
key to abort the operation, or the cursor keys to move to another location.
In a future version, a fourth operation (pressing the or key) will
display a "help" screen. This screen will provide information about the
action designated by the cursor.
In a single-parameter data entry menu, either numbers or letters may
be entered at the cursor location. The entry terminates by pressing the
*Readers more familiar with metric units may refer to the conversion factors
listed in Appendix F.
-------
w
r i
WDULE
12.8 in.-
SECTION
X X
X X
X X
in.-
Figure 1. The module concept.
-------
key. The value entered then replaces the current value (displayed
to the left of the screen) when the replacement operation is indicated
specifically. The present values may be retained by leaving the menu via
the key or an operating choice indicated by the cursor.
In a multiple-parameter data entry menu, the operation proves somewhat
more complex. Here, several parameters of the same type are grouped together.
The aim of this menu is to allow for quick review and modification of all
these values. Although only one set may be displayed on the screen at a
time, cursor operations allow other sets to be displayed easily. New
values may be entered in the same way as a single-parameter data menu.
When values are changed, however, they take effect immediately. The menu
offers the opportunity to copy sets of values either to the left or the
right, thereby increasing the entry's speed.
Further descriptions of these operations follow in more detail.
B. Hardware Requirements
The program was developed on a Tandy 2000 microcomputer and makes full
use of its graphics capabilities. The Tandy 2000 also uses an advanced
microprocessor and high clock rate. Therefore most computations do not
require excessive amounts of time. Because of the great numbers of IBM-PCs
in use, the program was written to include the capability to run on those
machines without modification. Limits have been placed, however, on the
display of results with the operating speed noticeably less.
Tables 1 and 2 present the minimum hardware requirements for running
the program and suggest options that will enhance the use of the programs.
Other computers may be usable with the program, but only these hardware
configurations have been checked. Some of the minor problems that might be
encountered in using other computers are with the flashing rate of the
cursor (due to stroboscopic effects), with the way file operations can be
aborted, and with the proper values to use for cursor keys.
-------
Table 1. Tandy 2000 Hardware Requirements
System Minimum Beneficial
RAM 256K >256K
Disks 1 floppy, 2 floppies, or
double-sided 1 floppy/1 hard
Graphics High resolution
Color Color monitor
Printer Optional Standard, or
Tandy CGP-220 for
graphics
Notes:
1. If high resolution color is not available, the Tandy
2000 can be run as an IBM configured computer.
2. The program is distributed on double-sided, 360KB disks.
The Tandy software can transfer the disks to 730KB disks
beneficially.
Table 2. IBM PC/PC-XT Hardware Requirements
System Minimum Beneficial
RAM 128K >256K
Disks 1 floppy, 2 floppies, or
double-sided 1 floppy/1 hard
Graphics Optional High resolution,
B&W
Color Optional Color monitor
Printer Optional Standard, or
-Screen dump to
graphic printers
C. Software Requirements
The program is written in Microsoft GWBASIC, the standard Tandy BASIC,
and runs under BASICA on the IBM computer. The DOS required is MSDOS 2.11
or higher for the Tandy and PCDOS 2.0 or higher for the IBM. The difference
-------
in size between the Tandy BASIC and IBM's BASICA leads to the differing
minimum memory requirements for the two machines. Be sure to use the BASIC
which was supplied with the DOS version. Experience with the Tandy 2000
indicates that a BASIC program supplied with a later version of DOS will
not work properly with an earlier DOS.
Programs call one another from within BASIC. It is possible for the
user to run them independently, using standard procedures. For the advanced
user with adequate RAM, a program creating a RAMDISK is supplied. This
will enhance the operation of the model program. Its use is described in
Appendix E.
D. Starting the First Time
The disk with the programs is a data diskette, containing no system
files. Therefore, it cannot be used to boot the computer. We recommend
that you format a new diskette as a system disk and include COMMAND.COM and
either BASIC.EXE for the Tandy 2000 or BASICA.COM for the IBM PC. Then you
can copy the files from the program disk to the new system disk. (The
programs expect the program diskette to remain in Drive A: during operation.)
We also recommend that you back up the new system disk for safety. It
proves useful, in running the program, to have disk space available for
storing files. This often means having a data diskette for file storage in
the computer's second drive.
«
E. Running the Program the First Time
Once the new system disk has been prepared, one can run the program.
First, one must boot the computer with the new system disk in Drive A.
When the bootstrap cycle is complete, the command to start the program is:
(for Tandy 2000): STARTTND
(for IBM PC/PC-XT): STARTIBM.
These two commands execute batch files and are necessary for loading
either BASIC or BASICA, respectively. At the same time, other files on the
disk are renamed to match the particular computer being used. The program
also can be executed by entering the shorter command, START, on either
machine.
-------
Issuing the command START loads BASIC (either version) and then runs a
short title program displaying the version, authorship, and copyright
notices. After a short delay, that program calls the actual model program,
ESPVI.BAS, which then begins execution.
The structure of the program REQUIRES that it be initialized in this
fashion at least once. The same method can be used for all subsequent uses
of the model program. An alternate procedure after the initial use of
STARTTND or STARTIBM consists of entering the command BEGIN. When BEGIN is
issued, the program-calling sequence bypasses the title program, thereby
saving the loading and display of that program. The rest of the sequence-
still is required to initialize the workspace properly. The remainder of
the program operation is described under F, below.
F. Running the Program
The general use of the program lies in entering data which describe
the electrical section of interest. Then it calculates the V-I curves of
the electrodes. At this point, one can display the calculated values
graphically or have them output numerically to the screen, printer, or a
file. Optional activities include using the generated V-I curve to run a
BASIC version of the EPA/SRI ESP performance model, configuring the program
to fit the capabilities and limitations of a particular computer, and
exiting to DOS when desired. All of these activities are accessed through
the main menu.
After one has entered START or BEGIN, the programs will end with a
display similar to that of Figure 2. An arrow with flashing arrowhead
points at the first line. This is the operating menu which governs all
activities of the model program. The operation from this point proves
quite simple. The cursor control keys (up- or down-arrow keys on the
keyboard) move the cursor to the desired operation. One then activates the
cursor by pressing the key (also called the key on some
computers). Any of these options can be selected because the program
contains default values.
In several instances, the screen will display a graph or diagram for
viewing purposes. The actual length of time of viewing is determined by
-------
F
V-I MODEL OPERATING OPTIONS
GLOW CORONA
(MAIN MENU)
-) Input Options
Calculation Options
Display Options
Calculation Output
Prograi Configuration Options
Run EPA/SRI ESP Performance Model
Return to MS-DOS
Use the up and down arrows to position the cursor at the selection desired.
Press (Enter) to choose the selection.
, ;.;..„?.&SS&1&&:>x^..i^>' ^ jjftj.^.^^£S. .^v^^ Lol'x^^\.?r.'...?„?.v
Figure 2. Opening menu of the model program.
10
-------
the user since he activates the return to the prior menu by pressing a key.
Several graphs have a bottom line of the display that states this explicitly.
Other graphs have insufficient room for this message. In either case, a
short tone will sound to indicate that the user must decide what is to be
done next.
**********************************************************
IF NO ACTION APPEARS TO BE TAKING PLACE, PRESS THE SPACE BAR ONCE.
This action will be ignored in critical parts of the program but initiates
action when the program awaits the user's response.
The first-time user will find that the program has a minimum configura-
tion suitable for almost all computers on which the program can run. The
user should tailor the configuration to meet the specifications of the
particular computer being used. One does this by selecting the "Program
Configuration Options" choice in the main menu. This action produces the
display in Figure 3. Several values will be displayed in capital letters
to the right of each phrase. For instance, the value "B&W" follows "Displays.
indicating all displays will appear in black and white on the screen. Most
of the values can be changed simply by pressing the key. For
instance, pressing the key with the cursor at line 1 changes the
value "B&W" to "COLOR," the other option. Pressing again returns
it to the value of "B&W." The same holds true for other choices with a few
exceptions. Table 3 enumerates the options and values and describes briefly
the effect of each value.
The configuration can be changed at any time but, generally, you must
return to the main menu for the change to take effect. The Tandy 2000 can
be configured as an IBM, but the IBM cannot be configured as a Tandy and
still work properly. The difference lies in the display capabilities of
the two machines. The CGP-220 color graphics printer theoretically could
be used with an IBM computer. The software which drives the screen dump
(supplied by Tandy), however, is specific to the Tandy 2000 and cannot be
used with the IBM. Configuring the computer as an IBM, therefore, will
define some of the other values. They cannot be changed arbitrarily.
11
-------
\
S»'
F
L
PROGRAM CONFIGURATION OPTIONS
-> Displays BW
Cursor wraparound OFF
Autocalc OFF
Color Printer (CSP-229) NOT AVAILABLE
Cooputer Type IBM
Display Painting ON
Saturation Relations ON
Iiport Configuration File
Save Configuration Permanently
Return to Main Menu (Esc)
Use the up and down arrows to position the cursor at the selection desired.
(Esc) returns directly to the prior menu, taking the changes.
Press (Enter) to choose the selection.
Figure 3. Menu displayed after selecting program configuration optionst
12
-------
Table 3. Configuration Options
Choice Value Alt Value Activity
Displays
Cursor Wraparound
Autocalc
B&W
OFF
OFF
Color Printer (CGP-220) NOT AVAIL
Computer Type
Display Painting
Saturation Relations
Import Configuration File
Save Configuration Permanently
Notes:
1. Makes use of color or
IBM
OFF
OFF
COLOR
ON
ON
READY
TANDY 2000
ON
ON
black and white in
Note 1
Note 2
Note 3
Note 4
Note 5
Note 6
Note 7
Note 8
Note 9
as many displ
as possible. This does not take effect until returning
to the main menu.
Allows the cursor to move continuously from the top line
to the bottom line in one direction, or not. Takes
effect immediately.
When ON, bypasses menus, so that leaving the. Input
Options Menu automatically performs all calculations and
enters the Display Options menu. A time saver for
repetitive calculations.
Allows dumping the screen contents to a Tandy CGP-220
graphics printer. This option is not allowed for IBM
computers, and cannot be forced.
Computer is an IBM/IBM compatible or TANDY 2000/TANDY
2000 compatible computer. Mainly affects the graphics
displays.
For the TANDY, on certain graphics displays, the colored
outlines are filled in ("painted") to form solid colors.
This requires extra time, but may be desirable. For the
IBM, painting is required to distinguish regions.
Displays the saturation current density curves on certain
graphs. See the Theory section (Section III) for defi-
nition of the relations.
Loads values for this menu which were previously stored
in the file ESP.CNF. This is performed automatically
each time the program is started.
Stores the displayed values in the file ESP.CNF for
future loading.
13
-------
*****************************************************************
IT IS THE USER'S RESPONSIBILITY TO CONFIGURE THE PROGRAM
SO AS NOT TO EXCEED HIS MACHINE'S CAPABILITIES.
*****************************************************************
Once the user has either configured the program or chosen the default,
he can use the program. We will describe the menus accessed at each stage
of operation, the way in which they operate, and the function of each
entry. For convenience's sake, we will address one operation of the main
menu at a time. Section I later provides examples showing how all the
operations fit together.
G. Menu Descriptions
1. Input Options Menu
Figure 4 illustrates the operating menu which appears when the Input
Options line is selected from the Main Menu. It is similar to the Main
Menu in that the only actions required are cursor movement ( or )
We will describe briefly the function of each operation before examining
each in detail.
Module Description—this functions as a multiple parameter data input
menu. It contains all the factors needed to describe a module: the number
of wires in the module, the diameter of each wire, each wire's position
with respect to the left edge of the module, and a wire roughness factor.
Environment Description—this is a single parameter input menu for the °
parameters common to the entire electrical section: the plate spacing, the
temperature, pressure, ion mobility, corona polarity, particulate space
charge, and a space charge removal rate.
Module Arrangements—this single parameter input menu allows one to
enter the number of modules in the electrical section, the module length,
and the lengths of the end segments of the plates.
Retrieve Data from a File—this file routine asks for the name of a
file containing previously stored data. Once the name is entered, the data
are read into the program.
14
-------
INPUT OPTIONS
-) Nodule Description
Environoent Description
Nodule ftrrangeeents
Retrieve Data fro* a File
Save Data to a File
Quick Graph of Electrodes
Return to Nain Nenu (Esc)
Use the up and down arrows to position the cursor at the selection desired.
Press (Enter) to choose the selection.
;-
" .HS*.\^^S*AVC •* . ^ ' %^•.^ s *.^
Ni^CwNwu ^\x«h.\ >X-Kto.--%«4«w.-M-X-»«*>i
Figure 4. Menu for input options.
15
-------
Save Data to a File—this consists of a file routine which asks for
the name of a file which may or may not contain previously stored data.
When the name is entered, the data currently in the program are written
into the file, IF THE FILE PREVIOUSLY CONTAINED DATA, THEY ARE LOST
PERMANENTLY.
Quick Graph of Electrodes—this screen display is similar to Figure 1
and shows the current number of wires in the module and the electrical
section. It locates the wire positions approximately to scale but does not
scale the diameters or plate spacing. It also can be accessed at any time
by pressing the key.
Return to Main Menu—the exit from the Input Options menu. The
key also may be used for this purpose.
We will now describe in detail the actions involved in each of these
selections.
Module Description:
This displays a multiple parameter data input menu, as in Figure 5.
This screen contains a large amount of information. The upper left and
center parts of the screen display both the parameters of the module that
can be addressed and their current values. To their right the flashing
cursor is displayed in a blank area. This constitutes the data entry area.
In the middle of the screen, a schematic figure of the module appears in a
format similar to that of Figure 1. This figure shows the wires in the
module. The wire with values currently displayed has an arrow under it.
The length of the module is displayed under the figure.
Three actions are possible in this menu. The user can enter data in
the data area, change the display of values, or permanently enter the new
values in the parameters. The cursor keys or function keys can accomplish
these results. Entering data in the data area requires only that the
flashing cursor be positioned on the proper line with the values then
typed. To complete entry of a value, press the , , , or
key. Otherwise, all keystrokes become part of the value with strange
results occurring. If you have not completed entry of a value, the arrow
will not resume its blinking.
The display of values can be changed by using the left-right arrow
keys to position the pointer under the wire where values are desired. In
16
-------
sJV
t >
1
£
!••
!-
_
t
*/
-^y
/ "°D
Uire t in Module
Uire Diaxeter (in.)
Uire Pos'n (in. fro* left)
Nuiber of Hires
Uire Roughness Factor
Uire under consideration:
0
t
i . .
Use the up and down arrow;
\ Use Ift/rt arrows to
^v^^ The changes for
1T,, ™ ~, ~S«r~~ W ..VnWr^ ..'n.rfi.
x % s •• ? ^ " ^r
~^*j r
ULE DESCRIPTION X f
\
Present Value New Value 1
I
1 -)
1.125
4.5 r
3
1.00
Enter present values
Return to prior Knu (Esc)
0 0
•
. "7 • in ,,,._!
i to position the cursor at the selection desired. f
determine which wire is being viewed/changed. V^'V
each wire take effect imwliately. r^l^l\N
Figure 5. Module description input menu.
17
-------
this way, the user automatically updates the displayed value. One can
enter the wire number on the top line of the data area. When the key
is pressed, the new values are displayed and the data erased.
New values are entered permanently by entering the values in the data
area and then pressing or moving the flashing cursor to the line
"Enter present values" and pressing . Either method transfers the
New Value column to the Present Value column and erases the data area.
Two other options exist which can speed up the entry of repetitive
values. One can use "Copy present to right" or "Copy present to left" by
simply pressing or , respectively, or moving the cursor to the
proper line. Two different actions are involved. If the cursor rests on
the lines indicating "Copy ...," all values currently displayed are copied
into all the wire entries, either to the right or left of the current one.
The current wire position is used to calculate new wire positions linearly
spaced from the current one. This option may be used when all the wires
will be identical and equally spaced. If the user presses the or
key, only the value where the cursor rests will be copied to the left or
right. Therefore, if the cursor lies on the line indicating Wire Diameter,
only the wire diameter of the current position will be copied to the left
or right. The wire roughnesses and wire locations will not change. This
makes it possible to change one parameter without altering the others. If
the cursor rests on a line where there are no copyable parameters (e.g.,
Number of Wires), no action will result from pressing or .
The user can position a wire beyond the right boundary of the module
by either using the copy functions or the data entry functions, or increasing
the number of wires. Once accomplished, either accidentally or intentionally,
it is assumed that the WIRE LOCATION is VALID. The length of the module
then is adjusted to accommodate the new position. The new length appears
on the screen with the scale of the figure changed. The maximum number of
wires is 17 with the program not accepting values any greater.
Environment Description:
The selection of this calls up a single parameter menu for all parameters
common to the entire electrical section, or the "environment." The screen
has an appearance similar to that of Figure 6. The flashing cursor appears
to the right in the data entry area. The parameter names and current
values appear in the upper left and middle sections of the screen.
18
-------
\S^«^
-~1 X;' '>- '••• N •• '"'--•' ' -"• ••'- -''" v <% '• ' ~ ' '. .t[ *«s*i»'jf
ENVIRONMENT INPUTS
Present Value New Value
Plate-plate Spacing (in.) 9.98
Temperature (deg F) 70
Pressure (ati.) 1.80
Ion Mobility (i2/Vs) 1.79E-04
Polarity (Positive)
Space Rarge (uC/i3) 18.8
Spc Chg Decay Rate (/Mire) 8.18
Enter values (Fl)
Return to prior menu (Esc)
Use the up and down arrows to position the cursor at the selection desired.
Use 'Enter values* or (Fl) to enter all the changed values.
Press (Esc) to return vithout making any changes.
Figure 6. Data input menu for environment inputs
19
-------
The parameters accessed with this menu are plate-plate spacing, tempera-
ture, pressure, ion mobility, polarity, and particulate space charge factors.
The first parameters are understood easily while the others require more
explanation. This menu is easier to operate than the Module Description
menu. Values may be entered for only one parameter rather than for a whole
set of similar parameters. To do this, the user moves the flashing cursor
to the appropriate line, types in the value, and then presses .
One short cut is possible with the polarity value toggled to an opposite
value by positioning the cursor on the polarity line and pressing .
That operation will enter both the opposite polarity in the data entry area
and a new value of mobility in the mobility data area. This occurs automa-
tically because ion mobilities typically are different for positive and
negative ions and have different temperature dependencies. (The values
stored in the program have been taken from Reference 1.) The mobility may
be re-entered if you want it to remain unchanged. The value of mobility
used is that appropriate for 0°C and 1 atmosphere pressure, the reduced
mobility. The program calculates an actual mobility, based upon the values
of temperature and pressure input through this menu. If you do not want to
use the key to toggle polarity, you can type "<" followed by the
key. (Any characters following the "<" key are unimportant.)
The space charge parameter represents a first approximation of the
actual interaction of particle charging and ion flow in the ESP. If a
non-zero value is assigned to the space charge while the space charge decay
rate is zero, the space charge value assumedly remains the same throughout
the section. The principal effect of the space charge in this model lies
in modifying the corona starting voltages of the wires. There is also a
significant effect on the electric field distribution in the section.
The program includes the space charge decay rate parameter to simulate
the effects of particle collection (resulting in the removal of space
charge). This parameter removes a fraction of the space charge for each
wire subsequent to the first wire. For example, if the space charge has a
value of 10 pC/m3 and the decay-rate is 0.1 per wire, the first wire would
experience a space charge of 10 (jC/m3. The second would have a value of
9 pC/m3, the third 8.1 pC/m3, and so on. The removal is considered on a
wire-by-wire basis because the model must assume a constant space charge
over the area serviced by a given wire.
20
-------
Although the value of space charge normally will be positive (implying
the same polarity as the ions), it can be given a negative value. This
would imply that the particulate space charge has a value opposite that of
the polarity of the ions. In a similar fashion, a positive value for the
removal rate implies space charge removal while a negative value implies
space charge growth. This last effect can be applied for simulating a
particle-charging process in the section. No limits exist with respect to
the value of space charge that can be entered. Experience has shown,
however, that values between 0 and 20 uC/m3 are most representative of
utility ESP operation. Values lying far outside that range may cause compu-
tational problems in the model (i.e., logarithms of negative numbers). For
just that reason, the space charge removal rate may not equal or exceed 1.
The program allows for those limits.
Module Arrangements:
This menu is another single-parameter input menu and focuses on the
description of the whole section in terms of its modules. Figure 7 illus-
trates the menu display. The values to be entered are for the number of
modules, the length of a module, and the lengths of any additional segments
at the beginning and end of the ESP section. The lower left part of the
screen has an area called "Section Summary." It presents the total number
of wires in the section and the total length of the section. When any of
the numbers in the value area change, this summary area reflects new values.
These data are considered .less important than the module description
data. Therefore, if the number of modules multiplied by the number of
wires in one module exceeds 17, THE NUMBER OF MODULES IS REDUCED until 17
or fewer wires exist in the section. Also, if a change in the length of
the module results in the last wire falling outside the module, THE MODULE
LENGTH IS SET EQUAL TO THE POSITION OF THE LAST WIRE. When these actions
occur, a message appears with the valid values written in the value and
summary areas. This priority system was chosen because the effort required
to position wires within a module proved more difficult than simply entering
a new appropriate length.
Retrieve Data from a File:
The screen clears, and the current file name appears. If you want to
input data from that file, simply press . If you want to input data
21
-------
''- --f'
&\
i*
p
PX
I-
*<>
P
£*
Ik
$«,
P
^
MODULE RRRflNGEHENTS
Present Value Hen Value
Nuaber of Modules 1
Length of Module (in.) 27.•
Plate extension at ends (in.) 4.50
Enter New Values (Fl>
Return to prior •em (Esc)
SECTION SUWflRY:
Section Length (in.)
Total • of Hires (17 ux)
Updated Value
36,8
3
Use the up and down arrows to position the cursor at the selection desired.
Use 'Enter Km Values' or (Fl) to enter all the changed values.
Press (Esc) to return without Baking any changes.
-A ,*
'^^^
Figure 7. Menu for entering module arrangements data.
22
-------
from another file, type in its name and press . The file name may
include a drive specifier (e.g., B:TEST1.ESP) and must include an extension
(e.g., .ESP) if one exists in the original file. If you want to abort the
operation on a Tandy 2000 without inputting any new data, type a space and
then press . This causes an error in the file handling system which
is intercepted in the program. A brief message indicating the operation
was aborted appears briefly on the screen. With an IBM computer, the
leading space is ignored in the file name, and the method does not work.
The only alternative lies in entering the name of a file that does not
exist. This creates a file system error that will be intercepted, thereby
aborting the operation.
Save Data to a File:
The screen clears, and a line displays the current file name. If you
want to save the current data to that file, simply press . If you
want to save data to another file, type in its name and press . The
file name may include a drive specifier (e.g., BrTESTl.ESP), and it must
include an extension (e.g., .ESP) if one exists in the original file.
IF THE FILE PREVIOUSLY CONTAINED DATA, THEY ARE LOST PERMANENTLY.
If you want to abort the operation in the Tandy 2000 without writing
any data, type a space and then press . This causes an error in the
file handling system which is intercepted in the program. Then the words
"Operation Aborted" are displayed briefly on the screen. With the IBM
computer, the leading space is ignored in the file name. Since this method
does not work, the only alternative is to enter a name for a file that has
no worth (e.g., JUNK.ESP). The data will be saved to this file and can be
deleted later.
Quick Graph of Electrodes:
This operation's primary function is to aid in setting the correct
number of wires in the modules and the number of modules. It also provides
a quick way to review the current data values if you deal with a number of
different configurations.
23
-------
Selecting this operation clears the screen, displaying a figure similar
to Figure 1. It represents the current number of wires in the module and
the electrical section and locates the wire positions approximately to
scale. It does not, however, scale the diameters or plate spacing. The
length of the module and the length of the section are provided on the
graph.
The Quick Graph can be accessed at any time, from any menu, by pressing
the key. When the tone sounds, the figure appears, remaining until
the user presses any key. When the figure is called up by pressing the
key, the program resumes at the point where it was interrupted. It
may not have, however, the normal display for that action. For instance,
if the is pressed from the Input Options menu, the graph appears
immediately. When any key is pressed to return, the screen will clear to
reveal only the text and the flashing cursor. The values appearing earlier
on the screen simply disappear. The user must either remember the values
or press and to rewrite the entire text on the screen.
Return to Main Menu:
This is used to leave the input part of the program and proceed to
other parts of the program. The key works the same way. If the
Autocalc parameter has been turned on in the Configuration menu-, returning
to the Main Menu initiates the automatic calculation sequence.
2. Calculation Options
Figure 8 shows the operating menu displayed when the user chooses the
Calculation Options from the Main Menu. This option constitutes an operating
menu since most of the ESP input has been entered in the input section.
It is important to heed the note in the middle of the screen. Certain
actions must be taken in order. The starting voltage calculation initializes
some parameters used in the calculation of the individual wire V-I curves.
If the V-I Curves option is selected before the Starting Voltages option,
the screen will be cleared and rewritten. No calculations, however, occur.
If either the Spark Operating Point or the Back Corona Onset Point is
selected before the V-I Curves have been calculated, the results prove
meaningless. And if the user chooses either one before the Starting Voltages
have been calculated, the program may halt its execution.
24
-------
fc*
«!,
\\»vx XxV 0,1 & viws^s?^ irsr^ir.isywrar^W' \—z* ,VT* Y* ^"~ •• ™ " x*"* 'f^'"v ~?~ '^
^vs,V,^./^\*>>v\^r5^t^^^ - 3?, >; •'
v \X\ i^s A^tt^K^" ^^:^'?"~v-"..^~ <."-.. *-^~ ~ -SS'~^;;>. '
C flL C UL flT I 0 N OPTIONS
Starting Voltages (Vs)
V-I Curves (Vj)
-) Autocalc Vs, Vj, and Ebd
Spark Operating Point (Ebd)
Back Corona Onset Point
Current Density Upper Liiit
Return to Main Menu (Esc)
Starting voltages «ust be calculated before V-I curves; both tust
be calculated before attempting to calculate the operating
point, display results, or print values.
Use the up and down arrows to position the cursor at the selection desired.
Press (Enter) to choose the selection.
(Esc) returns directly to the prior tenu.
s
,
Figure 8. The screen displayed after selecting calculation options.
25
-------
We will now discuss the operation of each option in the menu.
Starting Voltages (Vs):
Selecting this option clears the screen and begins a display indicating
the progress of the starting voltage calculation. First, the starting
voltage of each wire is calculated rapidly. The user can note this by the
row of "+" characters written across the top part of the screen, one for
each wire. Then, as described in the Theory Section (Section III), the
influence on each wire by all the other wires is evaluated. This process
is iterative, with each iteration represented by a new row of "+" characters.
When the iterations meet the convergence criteria, the screen clears with
the calculated starting voltages for each wire displayed.
During the iterations, any wire whose initial starting voltage exceeds
200 kV does not have its starting voltage evaluated iteratively. Instead
of the character "+," a blank space appears. Once a wire's starting voltage
meets the convergence criteria, the iteration ceases with a blank space
written at its location. When all of the wires'meet the convergence criteria,
the calculation is finished. If you want to halt the calculation during
its execution, you simply press the key. This returns control to the
beep/key-press routine, at which point you return to the Calculation Options
menu. The intermediate results lie in the internal array locations at this
point. Therefore, execution of other options is possible, but results
probably have little meaning.
The bottom of the screen displays a voltage, the maximum sparkover
voltage. This represents the voltage at which a 1 in. diameter electrode
would initiate a spark from the plate in the absence of any current. The
presence of current tends to lower this value. Since the electric field at
the plate is not a strong function of the wire (or pipe) diameter, this
should prove a good estimate for all of the larger electrodes in the system.
A beep and message indicate that the user must press a key to continue.
Conventional wire diameters and spacings normally have little interac-
tion with convergence occurring in four or five iterations. If one uses
large diameter wires or closely spaced wires, many more iterations may
prove necessary. The display may even scroll up on the screen to accommodate
the new lines for each iteration. The routine converges for all consistent
values of parameters (i.e., for wire diameters less than the plate-plate
spacing or center-center spacing of wires greater than the sum of their
radi i).
26
-------
V-I Curves (V.I);
Selecting this option clears the screen and initiates a display indicat-
ing the progress of V-I density calculations for each wire. A row of "o"
characters appears across the top of the screen, one for each wire. Then
the program calculates the voltage at increasing steps of current density,
using 20 equal values (usually 10 nA/cm2). Each step in this process is
represented by a new row of "o" characters. As the rows approach the
bottom of the screen, a beep indicates that pressing a key is required to
continue. Any wire whose initial starting voltage exceeds 100 kV does not
have its V-I curve calculated. Instead of writing a "o" character for
these wires, a blank space appears.
If you want to halt the calculation during its execution, you can do
so by pressing the key. This returns control to the beep/key-press
routine, at which point you are returned to the Calculation Options menu.
The intermediate results lie in the internal array locations at this point.
Therefore, the execution of other options.is possible, but the results
probably have little meaing.
Autocalc Vs, Vj, and Ebd:
Selecting this option provides a quick method of calculating the
starting voltages, V-I curves for each wire, and the operating point based
on the sparking criterion (described below). It saves time by not requiring
the operator's attention to move from one step to another and not displaying
all the results of those steps. It is included for convenience.
Spark Operating Point (Ebd):
Selecting this option, only after calculating the starting voltages
and V-I curves, allows the operating point to be determined according to
the sparking criterion. The Theory section (Section III) contains a detailed
description of the sparking criterion. In short, it says that sparking
will occur when the electric field at the plate reaches a critical value.
The algorithm evaluates the sparking threshold for each wire and chooses
the lowest voltage and current density corresponding to that field. If the
sparking threshold voltage lies above the highest value calculated for the
curves, the voltage is set to that highest voltage and does not represent
the sparking potential. The sparking potential uses the same field criterion
as the zero-current breakdown voltage, displayed with the starting voltages.
27
-------
It also takes into account the influence of the ionic space charge on the
electric field. If the algorithm evaluates the sparking potential for a
wire below its corona onset, then the sparking potential should agree
fairly well with the zero-current breakdown potential.
When particulate space charge exists, the minimum value of electric
field may occur in the space between the wire and the plate. The sparking
criterion is interpreted to mean that the lowest value of field between the
wire and plate reaches the critical level. This requires a voltage higher
than that which simply satisfies the criterion at the plate. The location
of the minimum is calculated in an approximate fashion. The sparking
voltage with space charge present may be inexact by several hundred volts.
A resistivity value is calculated along with the breakdown potential.
The value of resistivity is based on the assumption that back corona is
necessary for sparking to occur at the chosen values of critical field.
Therefore, sparking will occur at the potential chosen only if the resisitiv-
ity of the layer exceeds that value calculated, though not by much. If the
resistivity is much higher than the value calculated, sustained high current
density back corona will occur instead of sparking.
Back Corona Onset Point:
Selecting this option clears the screen and asks for a resistivity
value (in ohm-centimeters). Once a value is entered, the algorithm calcu-
lates the current density necessary to cause layer breakdown. From that
current density: it evaluates the operating voltage. The algorithm is
speculative, though. Although breakdown may occur at that level of current
density, the significance of the breakdown at that point is not clear. The
breakdown potential may represent either the knee of the back corona V-I
curve or a place well below the knee. This option is simply a way of
calculating the voltage at which back corona effects may become significant.
We recommend that the user interpret the results carefully.
Current Density Upper Limit:
This option has been included for the user's convenience. Normal use
of the model for ESP V-I relations does not require current densities under
the wire of more than 200 nA/cm2 (the default value). This option permits
modifications of that value.
28
-------
Once selected, the screen clears, and the user is asked for a value
for the upper current density of the V-I curve. Very high values will
result in fewer steps on the V-I curve because the wire voltages will not
be calculated above 100 kV. Lower values may be used with impunity. We
cannot guarantee, however, that the accuracy of the calculation will improve
with the improved resolution of the current density. Whatever value is
used, the display routines will attempt to use it. The numbers, however,
may be extended into the graph area on the display. The normal user will
have little need for this option.
3. Display Options
Figure 9 shows the operating menu displayed when the user chooses the
Display Options from the Main Menu. It basically functions as an operating
menu.
Module Configuration:
Selecting this option clears the screen, displaying a scaled graphic
representation of the module. The display is in color for the Tandy 2000
and black and white for the IBM computer. A scale indicating the actual
size of the module is displayed at the top of the screen. Figure 10 shows
an example of this.
Normally a module will be much longer than it is wide. This assumption
is used to place demarcation lines on the screen at the edges of the module.
If the module is unusual with its width exceeding the screen dimensions (if
it were scaled to fit the demarcation lines), the scaling is based upon the
width of the module rather than its length. Although the components have
been drawn to scale, the wire diameter can be represented only with finite
numbers of pixels. Thus, it cannot be displayed as accurately as desired.
The message at the bottom of the screen and a beep indicate that a key must
be pressed to return to the Display Options menu.
Section Configuration:
Selecting this option clears the screen, and a scaled graphic represen-
tation of the whole section appears. The display is in color for the Tandy
2000 and black and white for the IBM computer. No scale is displayed at
the top of this screen. Figure 11 provides an example of this. The display
proves similar to that of the module though no demarcation line is displayed.
Once again, the user must press a key to return to the Display Options menu.
29
-------
DISPLAY OPTIONS
-} Nodule Configuration
Section Configuration
Individual Uire V-j Curves
Individual Uire I/I Curves
Section V-j Curve
Current Density Distribution
Electric Field Distribution
Quick Sraph of Electrodes
Return to Main Menu (Esc)
Use the up and down arrows to position the cursor at the selection desired.
Press (Enter) to choose the selection.
(Esc) returns directly to the prior Knu.
Figure 9. Display options operating choice menu.
30
-------
MODULE CONFIGURATION
To scale: r - 3.375 '
Press «ny key to continue
Figure 10. Graphic display of a module.
31
-------
SECTION CONFIGURATION
Figure 11. Graphic display of a section.
32
-------
Individual Wire V-j Curves:
Selecting this option clears the screen and draws a graph scale on the
screen. The horizontal axis consists of a voltage range running from 0 to
100 kV, and the vertical axis is a current density axis running from 0 to
half the maximum current density under the wire. The vertical axis normally
goes up to 100 nA/cm2.
This graph plots the current densities for each wire as a function of
voltage. The saturation current density is the maximum current density
that can be achieved at a given voltage for unipolar ions. If the Saturation
Relations switch is ON (Figure 3, Table 3), the first line drawn represents
the saturation current density curve (as described in Section III). At the
same time, the number 0 appears in the upper right corner of the graph. If
the curve is drawn in color, it will be blue, and is always drawn from 0 V.
As each successive wire's characteristic is plotted, its corresponding
wire number appears in the upper right corner. Often curves for many wires
are plotted on top of one another with apparently nothing occurring on the
screen. The changing wire numbers, however, indicate their true status.
If drawn in color, these curves will be green. The current density plotted
for each wire is the total current for the wire divided by the plate area
which the wire serves. If a wire falls at the end of a section, it can be
thought to serve a much larger area of plate than those wires in the middle
of the section. Its average current density therefore may appear low in
comparison with the others.
Once the last wire's curve has been plotted, a vertical line may be
drawn at the voltage corresponding to the breakdown voltage. If drawn in
color, it will be red. If the voltage exceeds 100 kV, it will not be drawn
on this graph. An example of this type of plot is found in Figure 12.
When all the curves have been drawn, a beep sounds to indicate that a key
must be pressed to continue.
Individual Wire I/I Curves:
This option clears the screen and draws a graph scale on the screen.
The horizontal axis consists of a voltage range running from 0 to 100 kV,
while the vertical axis is a current per meter of each wire (microamperes/
meter). The vertical axis normally goes up to 500 uA/m. The scale, however,
has been adjusted along with the maximum current density under the wire.
33
-------
Hire Volttgc-Current Density Relationship
Figure 12. Graphic display of individual wire current density curves,
34
-------
Also plotted are the currents per meter for each wire, as a function
of voltage. If the Saturation Relations switch is ON (Figure 3, Table 3),
the first line drawn represents the saturation current per meter curve
(described in Section III). At the same time, the number 0 appears in the
upper right corner of the graph. If drawn in color, the curve will be
blue. It is drawn always from 0 V. The saturation current per meter
consists of the maximum amount of current that can be achieved for 1 m of
wire at a given voltage for unipolar ions.
As each successive wire's characteristic is plotted, its corresponding
wire number appears in the upper right corner. As in the case of the V-j
curves, the changing wire numbers indicate the otherwise imperceptible
progress in plotting. If drawn in color, these curves will be green. The
current per meter plotted for each wire equals the total current for the
wire and is nearly independent of the plate area the wire serves.
After the last wire's curve is plotted, a vertical line may be drawn
at the voltage corresponding to the breakdown voltage. If drawn in color,
it will be red. If the voltage exceeds 100 kV, it will not be drawn.
Figure 13 provides an example of this type of plot. Once all the curves
have been drawn, a beep signals that a key must be pressed to continue.
Section V-j Curve:
This option clears the screen and draws a graph scale on the screen.
The horizontal axis represents a voltage range running from the first 10 kV
marker below corona onset to the first 10 kV marker, above the maximum
voltage of the composite curve. The vertical axis represents a current
density for the whole section, in nanoamperes per square centimeter. The
vertical axis goes from zero up to the value which includes the maximum
current density calculated.
This graph plots the current density for the whole section, or the
total current from all the wires divided by the total plate area. The
curve is drawn in green, if color is used. After the curve has been plotted,
a vertical line may be drawn at the voltage corresponding to the breakdown
voltage (provided it falls in the voltage range displayed on the graph).
If drawn in color, it will be red. Figure 14 contains an example of this
type of plot. Once the curve has been drawn, a beep signals that a key
must be pressed to continue.
35
-------
Individual Wire Current/teter Relctionchip
a
I
0102030405060708090 100kV
Figure 13. Graphic display of individual wire currents per
1 meter length.
36
-------
60
IB
Section Voltage-Current Density Relationship
50 60
kilovolts
Figure J4. Graphic display of total section current
density curve.
37
-------
Current Density Distribution:
Selecting this option provides a graphical picture that shows the
distribution of current density between each wire and the plate. In order
to do this, the user must specify a voltage at which the current densities
will be calculated.
The screen clears and a message asks for a display voltage while
giving its current value. This value has been either calculated in the
breakdown section or previously entered. If the value proves satisfactory,
pressing will continue its use. Otherwise, enter a new voltage.
Since the current density has meaning only between the corona onset and the
maximum voltage for which it was calculated, the program limits the allow-
able voltages in that range. Entering a voltage below corona onset will
substitute a voltage slightly above corona onset, while entering a voltage
above the maximum value will substitute the maximum value. Once the voltage
has been entered, the screen indicates that the voltage is being used to
interpolate current densities for each wire's characteristic. Then a
figure of the ESP section will be drawn to scale with a bar chart of values
displayed at the bottom of the screen that indicates ranges of values of
current densities.
If the color option is used with the Tandy computer, the bars appear
in different colors. The current density outlines appear in corresponding
colors. If the Display Painting option is ON, the bars appear in solid
colors while the current density outlines are filled in. If the IBM computer
is used (or black and white option with the Tandy) the bars will be drawn
initially in outline. As the current density figures become outlined,
however, alternate areas and corresponding bars are painted to show the
demarcation between areas more clearly-. These two types of displays appear
in Figure 15 which, being black and white, cannot show the color lines that
the Tandy 2000 can display.
The current density boundaries drawn from each wire toward the plate
represent the volume of space in which the component of current density
toward the plate exceeds the value in the bar chart. As stated on the
graph, the current density figure also should extend above the wires toward
the upper plate. They are not included, however, for reasons of clarity
and additional time required to draw them. When the drawing is complete,
the beep sounds to indicate that a key must be pressed to continue.
38
-------
' ORRENT DENSITY DJSTRlflUTICN AT 65400 VOLTS
The distributions are symmetrical about the center axis,
but are shour on one side only lor clarity. Press to abort.
18
20
50
Figure 15a. Graphic display of current density distribution
when Display Painting is OFF.
39
-------
OMtNl DENSITY D1STRIRJTION AT 65480 VCLTS
The distribution* ire symetrietl *bout the center «xis,
but «re shotr on one tide only for cUrity Presj to «bort.
5 10 20 50 100 200 n
-------
Electric Field Distribution:
This option draws a graphical picture showing the distribution of
electric field between each wire and the plate. In order to do this, the
user must specify the voltage at which the electric field will be calculated.
Otherwise, a message of "Calculate First" appears, returning the user to
the Display Menu.
The screen clears, and a message asks for a display voltage while
displaying its current value. This value has been either calculated in the
breakdown section or entered previously. If satisfactory, pressing
will continue its use. Otherwise, you must enter a different voltage.
Since the electric field exists below corona onset, the program limits the
allowable voltages to the range from zero to the maximum voltage. Entering
a voltage above the maximum value will substitute the maximum value. Once
the user has entered the voltage, the screen indicates that the voltage is
being used to interpolate current densities for each wire's characteristic.
The screen clears, and a figure of the ESP section is drawn to scale. You
will see also a bar chart of values at the bottom of the screen indicating
ranges of values of electric field.
If the color option is used (with the Tandy computer), the bars appear
in different colors with the electric field outlines in corresponding
colors. If the Display Painting option is ON, the bars will be solid
colors with the electric field outlines filled in. If the IBM computer is
used (or black and white with the Tandy), the bars appear drawn initially
in outline. As the current density figures become outlined, however,
alternate areas and the corresponding bars will be painted to show the
demarcation between areas more clearly. These two types of displays are
found in Figure 16 which, being black and white, cannot show the color
lines that the Tandy 2000 can display.
The electric field boundaries drawn from each wire toward the plate
represent the volume of space in which the component of the electric field
perpendicular to the plate exceeds the value in the bar chart. As stated
in the-graph, the electric field outlines also should extend above the
wires toward the upper plate. They are not included, however, for reasons
of clarity and the additional time required to draw them. When particulate
41
-------
ELECTRIC FIELD Cy-cooponent) DISTRIBUTE AT 65480 VOLTS
The distributions are symmetrical about the center axis.
but are shoui on one side only for clarity. Press to abort.
e.s
> kV/ctn
Figure 16a. Graphic display of electric field distribution
when Display Painting is OFF.
42
-------
ELECTRIC FIELD (y-coaponent) DISTRIBUTION AT 65430 VDLTS
The distributions are symetrical about the center axis.
but are shoun on one side only for clarity. R-ess to abort.
Figure 16b. Graphic display of electric field distribution
when Displays is B&W.
43
-------
space charge is present, the electric field may have two separate regions
where the field exceeds a certain value. One region falls near the wire,
while the other is near the plate. When these regions are drawn distinctly,
the graph indicates a lower field region between them.
Once all the outlined bar values have been drawn (with the Tandy 2000),
the program draws one final field outline, the breakdown field contour.
Then a message describing its meaning appears on the screen. Due to the
resolution problems stemming from the use of black and white and the IBM
computer, this step is not performed for those situations. When the drawing
is complete., the beep sounds to indicate that a key must be pressed to
continue.
Quick Graph of Electrodes :
Selecting this will provide the same quick look at the electrode
configuration as found in the input options menu or . Once finished,
the operator must press a key to continue.
4. Calculation Outputs
This selection in the Main Menu allows the calculated results to be
printed, stored, or reviewed. It calls up an operating menu (as shown in
Figure 17).
In the first three lines, the output of information remains the same.
Only the output device changes in this menu. When "Output to Printer" is
selected, the screen clears and displays:
Output is directed to: PRN
This message indicates that the program is sending or trying to send
information to the printer (in case it is turned OFF).
When the "Output to a File" option is selected, the screen clears.
Then the user reads a message which requests the file name where the infor-
mation will be stored. By entering a valid file name, the transfer of
information begins. The following message appears:
Output is directed to: FILENAME.
All the normal precautions are needed to specify a file name. The drive
may be necessary, and existing files are overwritten, etc.
44
-------
fx
£"
OUTPUT OPTIONS
Output to Printer
Output to • Fili
-) Output to the Screen
Reset EPA/SRI Model File
Output to EPA/SRI File
Return to Main Menu (Esc)
Use the up and down arrow to position the cursor at the selection desired.
Press (Enter) to choose the selection.
(Esc) returns directly to the prior Knu.
"— — > -
S
rt ^ 1
Figure 17. Screen displayed after selecting calculation outputs.
-------
When the "Output to the Screen" option is selected, the information is
displayed a few lines at a time. These lines represent a group of related
information. A beep sounds when the page becomes filled, prompting the
user to press a key to continue. Pressing after a beep returns the
user to the menu, but any other key will continue the display. The actual
information displayed will be described in detail in Section H.
Reset EPA/SRI Model File:
The choices which mention EPA/SRI refer to a file that communicates
with the EPA/SRI model. This file has the internal name of SRI.DAT. The
file SRI.DAT opens for output, and the file section counter is set to zero.
The file then closes, effectively removing all data from the file. This
operation can require several minutes or even hours, so one must use it
carefully. It might prove worthwhile to exercise the Output to EPA/SRI
File option first to review the data.
Output to EPA/SRI File:
In selecting this option, the operating points (breakdown voltage,
current density, average field at the plate, and name of the file where the
data are) currently stored for each section are displayed. The screen
display includes the question, "Which section is the current operating
point for?" Once the user provides a section number, the current operating
point, average electric field, and data file name are stored internally.
Also the SRI.DAT file becomes rewritten with the new data. This file then
will be available for use with the EPA/SRI model program when necessary.
If the user, on the other hand, entered 0 or simply pressed the key
without any value, no data will be stored. Thus the file will not be
updated. This allows the user to view the current information without
having to change anything.
If the user enters the value of the section currently displayed, the
new information replaces the old information. If the section number entered
proves greater than the highest number displayed, it becomes the highest
section number. For example, if four sections are displayed, and the user
enters "3," all the information for Section 3 will be replaced with the
current operating point data. This new information is stored in SRI.DAT.
If the user responds with an answer of "7," the new information will be
46
-------
stored in Section 7. Sections 5 and 6 will contain zero values, and Sections
1 - 4 will remain the same. Once again, the information will be stored in
SRI.DAT.
By using the Reset option, the number of sections in the model can be
reduced to zero, but using the Output to SRI File option can only increase
the number of sections. In the accompanying EPA/SRI ESP model, if the
number of sections in the file SRI.DAT does not correspond to the number in
the ESP, the program will use the operating point of the last section in
SRI.DAT as the operating point of all successive sections. If any section
is left at 0 volts, the ESP model will assume its voltage is the same as
that of the previous section.
5. Program Configuration Options
This Main Menu option was discussed in Section F- The reader is
referred to that section for discussion.
6. Run EPA/SRI ESP Performance Model
Selecting this option causes the performance model to be loaded into
the BASIC program area and run. It completely writes over all the results
of the V-I model. The only way the two programs can communicate lies in
the file SRI.DAT which stores the operating point for each section.
The EPA/SRI ESP performance model used with this program has been
modified to incorporate information generated by the V-I program. Since we
assume the user has a greater interest in the V-I program, we have subordi-
nated some of the EPA/SRI model's features to the V-I program. Not only
the operating points but also the average electric field at the plate are
determined in the V-I program. The EPA/SRI program reads the environment
data stored in the V-I data files. Appendix D contains a more detailed
description of the performance model. The model can recall the V-I model
when its work has been completed. However, no communication flows from the
performance model to the V-I model.
7. Return to MSDOS
This option allows the user to leave the V-I program. This process
includes sacrificing all the stored data, leaving BASIC, and returning to
the operating system on the current drive.
47
-------
H. Output Information
This section describes in detail the information the user can obtain
from the program in the way of graphics displays and hard copy output.
While much of the information has been alluded to in discussing the program
operation, this section's concerns lie in the interpretation of the results.
Graphical Representation of Information:
The graphics section of the program (besides displays of the modules
and section) focuses on the V-I characteristics and spatial structure of
the electrical operation. Both areas are important in the operation of
ESPs.
V-I Characteristics:
The V-I characteristics are displayed in three types of graphs:
individual characteristics of wires represented as current densities,
individual wires described as current per meter, and the actual composite
V-I curve of the section. The composite curve presents the same information
displayed numerically when the curve is being calculated. The individual
characteristics, however, are available only in a graphic fashion.
Both of the individual characteristics displays show the dramatic
effects that ESP geometry can have on the starting voltage for each corona
wire. When wires are closely spaced, the starting voltages of the outermost
wires prove considerably lower than those of the interior wires. This can
cause substantial currents to flow from the outer wires before ANY current
flows from the interior wires. If this occurs with a high resistivity dust
on the plates, back corona may set in so severely that no current at all
flows from the interior wires.
Particulate space charge also can have a strong effect on the starting
voltages of the wires. If space charges in the range of 5 - 10 uC/m3 are
used in the model, the starting voltages can be increased several kilovolts
above the clean-gas starting potential. If one uses the space charge decay
parameter to remove a portion of space charge at each wire, significant
differences occur in starting voltages among all the wires. This implies
that some wires (usually those at the outlet of the section) carry most of
the section's current since they have the lowest starting voltages.
48
-------
In the display for individual wire current densities, the curves
represent the average current density for the area each wire services.
That area covers the plate from a point halfway between wires to the next
point halfway between wires (or the end of the plate). Thus, wires deliver-
ing the same total current may have very different current densities. This
is simply a result of assumptions about the calculation of average current
density for a wire. On the other hand, if the wires all serve equal areas,
then the curves should all be parallel. Furthermore, if the wire-wire
spacing proves approximately less than the plate-plate spacing, then the
individual curves should have the same shape as the saturation current
density curve. They should be offset considerably in terms of voltage
though. This is due to the relatively uniform distribution of current
density on the plate when the wires are close together.
In the display for current per meter, as long as the wire-wire spacing
is roughly equal to that of the plate-plate spacing, the current per meter
for each wire will be nearly the same. This should occur because the
current density peaks strongly under the wire with the contributions of the
faraway areas relatively small. The curves normally will be parallel both
to one another and to the saturation current/meter curve. If not, the
wires are delivering current to only a small plate area in comparison with
others.
We included the section V-I curve to compare the individual and overall
curves. To improve one's understanding of the calculations involved in
generating this curve, we will describe the curves as a graphic operation.
If the individual wire current/meter curves are being displayed, the
lowest starting voltage forms the minimum voltage of the section curve.
The lowest voltage at the top of the curves (usually on the individual wire
curve with the lowest starting voltage) forms the maximum voltage. This
range then is divided into 20 equal segments. At each voltage value within
this range, a vertical line is drawn that intersects one or more of the
individual curves. The current/meter of each wire at that voltage is
determined, and then all of them are summed. This produces the section's
total current for a plate with a height of 1 m. This result, when divided
by the length of the section, gives the average current density at that
voltage.
49
-------
When only a few wires with distinctly separated onset voltages comprise
the section, the contribution of each wire constitutes a change in the
slope of the curve at the voltage corresponding to each of the onset voltages
The resulting curve resembles the V-I curves of operating ESPs and suggests
that many of the low current characteristics of an ESP are dominated by the
differing onset voltages of all the wires.
Spatial Distributions:
The spatial distributions of current density and electric field (Fig-
ures 15 and 16) represent one of the more important contributions of program-
ing to the V-I modeling effort. The desire to present these distributions
has led to expressing the model in terms of angular distributions. The
basic assumption in both displays is that the quantity in question can be
calculated accurately along the line between the wire and the plate. Then
its value at any horizontal offset from that line, at the same distance
from the plate, is given as a function of the angle between the line and
•
the point of interest. For the current density, the angular function is
cosn, where n is a variable between 2.5 and 4. For the electric field, the
function is cosm, where m is a variable between 2.5 and 2, affecting only
the part of the field not related to particulate space charge.
These assumptions have been verified with numerical computations in
the same geometries and, for our purposes of modeling the ESP section,
prove completely adequate. They tend to be less accurate when the wires
are closely spaced. This occurs because the electric field from adjacent
wires should be additive; whereas, the model assumes they are independent
of one another (except in influencing the corona onset).
The current density distribution display's bar chart values are computed
from the maximum current density, with the parameter accessible from the
Calculation Options menu. That parameter is set normally before the calcula-
tions begin. One can alter its value (following the calculations) in order
to enhance the display. For instance, if the user has an interest in low
current densities, changing the parameter from its normal value of
200 nA/cm2 to a value of 50 nA/cm2 reduces the bar chart values by the same
factor of four. This provides a display of densities four times lower than
their original values. At the same time, all of the higher current density
values would be shifted above the highest range on the chart.
50
-------
The current density display uses an empirical relation to determine
the exponent of the cosine. This relation has been thoroughly evaluated
for current densities at the plate and was applied theoretically to study
the volume of the ESP. While the overall accuracy of these relations still
remains in doubt, generally they are accurate to the degree that the V-I
curves are. This holds true because they are based on the same relations.
One would expect the major inaccuracies to occur at the juncture of the
current density fields between two wires where interaction effects have not
been taken into account.
The electric field display, uses similar relations but with somewhat
more uncertainty. This is due to the problems involved in obtaining electric
field data, especially in the presence of ionic and particulate space
charge. The relations prove consistent with the method used for the V-I
curve calculation. The accuracy, however, of that calculation in the
presence of particulate space charge has not been established. Despite
doubts regarding the accuracy of the method, we assume it is correct in
describing the dependencies of the electric field on parameters such as
wire diameter, current density, and particulate space charge. The criterion
for sparking, namely the electric field at the plate reaching a certain
value, is generally considered correct. The uncertainty lies in what
values to use. This program uses the theoretical/empirical approach des-
cribed in the Theory section (Section III). Again, the region of major
uncertainty for the electric field lies in the region where the fields of
two wires intersect since no interaction is taken into account. This is
certainly a problem when wires are closely spaced, since the results of
Cooperman (2) (in the electrostatic situation) show a strong interaction.
Numerical Output from the Model:
The detailed numerical output from the program is presented in the
next few pages. When sent to a printer or a file, it is sent as a continuous
stream. When displayed on the screen, however, it appears in these page
units.
Page one (Figure 18) presents the information corresponding to the
environmental data supplied for the ESP section. The version number of the
program is supplied as a reference for when later versions become available.
51
-------
ESP V-j CURVE MODEL (Version 1.0) Glow Corona
Environment Data
Temperature = 70 deg F
Pressure = 1 atm
Reduced Mobility = 1.79E-04 m2/Vs
Actual Mobility = 1.90E-04 m2/Vs
Space Charge = 10 uC/m3
Space Charge Decay Rate = 0.1 /wire
Polarity
Data stored in: default.esp
Figure 18. Page one of the output data from the program.
The data for the temperature, pressure, and reduced mobility are the values
entered through the input menu. The actual mobility displayed here is the
value calculated from the reduced mobility and then used in the computation
of the V-I curves. This is the only place where actual mobility is displayed,
The particulate space charge has been given a non-zero value for this case,
and the space charge is forced to decay by 10 percent (its assigned value)
after each wire. Because of space limitations on the screen and printer,
the units of the space charge (micro-Coulombs per cubic meter) appear as
uC/m3.
The data are described as they are stored in the file "default.esp"
(on the distribution disk). This occurs only if the data were read unmodi-
fied from that file or if the data presented here were actually written to
that file. The limitations of the BASIC language make it difficult to know
when the data have been changed.
Page two (Figure 19) of the output describes the module and the section
parameters. The dimensions of the plates appear at the top, and the parame-
ters for each wire, numbered from the left end of the first module, appear
at the bottom. The end length parameter is the extension added to both
ends of the section. No provision exists for unequal segments at the ends.
The section length is computed by adding twice the end lengths to the
product of the module length and the number of modules. The wire locations
are counted from the left edge of the first module, not the section itself.
This is for convenience's sake in describing the module. The wire diameter
and roughness factor are enumerated for all the wires.
52
-------
Mechanical Data
Plate-Plate Spacing = 9 "
Module Length = 27 "
End Lengths = 4.5 "
Number of Modules = 1
Length of Section = 36 "
Wire parameters: Location Diameter Roughness
WIRE 1 4.50" 0.125" 1.00
WIRE 2 13.50" 0.125" 1.00
WIRE 3 22.50" 0.125" 1.00
Figure 19. Page two of the output data from the program.
Page three (Figure 20) presents the first calculated results of the
program which are the starting voltages and breakdown conditions for each
wire. The starting voltages for these three wires differ in that they have
space charge. In this case, the center wire has a higher starting voltage
than the other wires. The space charge raises the starting voltage of the
first wire to the highest value primarily because the space charges at the
second and third wires are reduced by the decay factor. These starting
voltages translate into offsets of the individual wire V-I curves and cause
the composite V-I curve to have a relatively low initial slope until all
the wires become energized.
The zero current spark voltage is the voltage at which sparking between
electrodes would occur in the absence of corona current. It is essentially
an electrostatic value at which the electric field at the plate reaches the
value required to propagate streamers. It is basically independent of the
size of the electrodes but does depend on the wire-plate spacing. If the
high voltage bus goes through either a bushing or other regions with spacing
less than that of the wire-plate spacing, sparking is more likely to occur.
53
-------
Starting Voltages for Each Wire
Wire 1 45421 volts
Wire 2 45406 volts
Wire 3 44018 volts
Zero current spark voltage = 83400 V
Maximum calculated voltage = 58246 V
Calculated breakdown voltage = 58200 V
Current density under wire = 200 nA/cm2
Wire voltage/wire-plate spacing = 5.09 kV/cm
Max electric field under wire = 4.28 kV/cm
Average electric field along plate = 3.07 kV/cm
Breakdown electric field = 4.42 kV/cm
Resistivity = 1.9 ohm-cm
Figure 20. Page three of the output data from the program.
The maximum calculated voltage is the lowest maximum voltage on the
individual wire V-I curves. Often the breakdown criteria will not be
satisfied at that voltage or lower, but the program cannot evaluate current
densities at voltages higher than that of the maximum calculated voltage.
It is included for comparison with the breakdown voltage.
The breakdown voltage is the voltage calculated byjeither the spark
breakdown or the back corona breakdown criteria. The spark breakdown
voltage is that at which the field at the plate reaches the value required
to propagate streamers. That leads to sparking. The back corona breakdown
is the voltage at which the current density reaches a high enough value to
cause layer breakdown. The breakdown voltage is rounded off to the nearest
100 V. If it falls near the maximum calculated voltage, however, the
algorithm probably was limited by the maximum calculated voltage. Another
indication of this limit is the current density at breakdown being equal to
the maximum current density (usually 200 nA/cm2).
The last three lines on the page provide electric field information.
The first value, a commonly used value, is the wire voltage divided by the
wire-plate spacing. It is included for comparison with the field at break-
down (the second value) for the maximum field under the wire. The average
field along the plate consists of a simple average of the space charge and
ionic electric fields at the plate along the direction of flow. It can be
54
-------
used as a value for the precipitating field in the Deutsch-Anderson sense.
This average is crude in that it assumes the average wire-spacing for all
wires.
Page four of the output (Figure 21) is the composite V-I curve for the
section, plotting from the minimum corona onset voltage to the maximum
calculated voltage. This curve is the same as the interpolated curve
displayed during the calculation step, and would be the curve that could be
measured experimentally.
Voltage - Current Density Curve
Step
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
V
44018
44729
45441
46152
46863
47575
48286
48998
49709
50420
51132
51843
52555
53266
53977
54689
55400
56112
56823
57534
58246
nA/cm2
0.0
1.6
3.4
8.4
13.5
18.7
24.1
29.5
35.0
40.7
46.4
52.1
58.0
63.9
69.9
76.0
82.1
88.3
94.5
100.8
107.1
Figure 21. Page four of the output data from the program.
I. Sample Runs
This section presents three sample runs in detail to show how various
features of the program work. Each example includes a full printout of the
values produced and black and white versions of the graphics produced.
The first ESP is a three-wire section that uses one module. The
second is a four-module section with two wires per module and represents a
fairly standard industrial design. The third section represents a two-mast
55
-------
electrode where each mast supports four wires. Through these three examples,
the program can demonstrate most of its capabilities.
Sample Run 1. Three-wire ESP:
Since a three-wire ESP is the default case, setting up the example
proves simple. DEFAULT.ESP contains the default values and is read automati-
cally when the program is run for the first time. The user can store any
ESP configuration in DEFAULT.ESP for convenience. We will assume for now
that it remains the same one supplied with the program.
The following steps should be performed after the program is first
started:
1. Go to the Input Options menu.
2. Activate the Module Description menu.
3. With the display of (default) values set for the first wire,
place the flashing cursor on the line for wire diameter. Type
0.109. The cursor should resume flashing.
4. Press . The new diameter should appear in the Present Value
column, and the data area should be cleared.
5. Using the left/right arrow keys, review the other values to see
that none of them has been changed. Return to the first wire.
6. With the flashing cursor still on the wire-diameter line, press
. This should copy the new wire diameter to the other two
wires. Confirm this by using'the left/right arrow keys to look
at the values for the other two wires.
7. Return to the Input Options menu, and select the Environment
Description option.
8. Move the flashing cursor to the line for Polarity. Press the
key. This should display the opposite polarity and a new
mobility value in the New Value data area.
9. Press . This returns you to the Input Options menu. Press
. This will return you to the Environment Description
menu.
10. Notice that the polarity and mobility have retained their original
values. The key can be used to avoid changing values, even
if new ones have been entered in the data area.
11. Repeat step 8. Press ; this should enter the new polarity
and mobility into the Present Value column and clear the data
area.
56
-------
12. Move the flashing cursor to the Space Charge line. Type 0.
Then move the cursor to the Spc Chg Removal Rate line. Type
0. The cursor will flash with two values displayed on the
two lines.
13. Press to enter the new values in the Present Value column
and clear the data area.
14. Press to return to the Input Options menu.
15. Move the cursor to the line Save Data to a File. Press .
The screen should clear, and you will be told the current file
name (probably "b:"default.esp"). You will be asked for a new
file name.
16. If you press , the data in the program will destroy the
data in "b:default.esp." You may want to do that later but, for
now, type "biexampll.esp" or "B:EXAMPL1.ESP," and press .
The B: drive should activate, indicating that a file is being
stored. When it is completed, you will be returned to the Input
Options menu.
17. ,Move the cursor to the line Retrieve Data from a File, and press
"- You will be told that the current file name is
"b:exampll.esp." The screen then asks for a new name. Enter
"b:default.esp." The B: drive should activate again, and you
will be returned to the Input Options menu.
18. Go to the Module Description or Environment Description menu to
verify that the values you had changed previously have been
restored to the default values.
19. Retrieve the data in "b:exampll.esp," and verify them. This
shows that once the data have been stored, they can be retrieved
quite easily. Another way to verify data is to perform the Quick
Graph of Electrodes function. Either select the Quick Graph
option from the menu or press . This shows you the number
of wires and their approximate spacings. For this case, the
number of wires and their spacings have not been changed. There-
fore no difference appears.
20. Return to the Main Menu, and activate the Display Options.
21. Select the Module Configuration option. This clears the screen
and draws a figure of the module to scale.
22. Select the Section Configuration option. The drawing should be
very similar to the module drawing with a slight change in size.
Notice the difference in the plate extension beyond the wires.
This comes from including the endlengths of plate.
57
-------
23. Try selecting other display options. The message "CALCULATE
FIRST" indicates that the curves must be calculated before they
can be displayed.
24. Return to the Main Menu, and select the Calculation Options menu.
25. Select the Starting Voltages option. The screen clears, and two
rows of "+" characters are drawn, one for each wire. Soon the
actual starting voltages appear on the screen. Press any key to
return to the Calculation Options menu.
26. Select the V-I Curves option. The screen clearsr and 21 rows of
"o" characters are drawn, one for each wire. Then the interpolated
voltage and current density appear on the screen. Press any key
to return to the Calculation Options menu.
27. Select the Spark Operating Point option. The screen clears, and
the voltage, current density, and fields corresponding to sparking
are displayed.
28. Note that, at the maximum voltage and current density, the break-
down field at the plate has not been reached yet. This is indi-
cated by the current density under the wire being equal to the
highest possible value, the breakdown voltage being nearly equal
to the maximum voltage, and the maximum field at the plate not
being equal to the breakdown field.
29. Return to the Main Menu. At this point, you can display the
results graphically or numerically. (We will defer a discussion
of the graphics until a later example.) Enter the Calculation
Output option menu.
30. The cursor is flashing at the screen display line. If you have
no printer, this'provides a way of viewing the results. Press
. The following data should appear on the screen, one
page at a time. Note: if you have a computer other than a
Tandy 2000, slightly different data may appear.
ESP V-j CURVE MODEL (Version 1.0) Glow Corona
Environment Data
Temperature = 70 deg F
Pressure = 1 atm
Reduced mobility = 1.82E-04 m2/Vs
Actual mobility = 2.04E-04 m2/Vs
Space charge = 0 uC/m3
Space charge decay rate = 0 /wire
Polarity
Data stored in: b:exampll.esp
58
-------
Mechanical Data
Plate-plate spacing = 9 "
Module length = 27 "
End lengths =4.5 "
Number of modules = 1
Length of section = 36 "
Wire parameters: Location Diameter Roughness
WIRE 1 4.50" 0.109" 1.00
WIRE 2 13.50" 0.109" 1.00
WIRE 3 22.50" 0.109" 1.00
Starting Voltages for each Wire
Wire 1 37052 volts '
Wire 2 37736 volts
Wire 3 37052 volts
Zero current spark voltage = 103800 V
Maximum calculated voltage = 57470 V
Calculated breakdown voltage = 57500 V
Current density under wire = 200 nA/cm2
Wire voltage/wire-plate spacing = 5.03 kV/cm
Max electric field under wire = 3.72 kV/cm
Average electric field along plate = 2.23 kV/cm
Breakdown field at plate =5.57 kV/cm
Resistivity for breakdown = 1.9E+11 ohm-cm
Voltage - Current Density Curve
Step
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
V
37052
38073
39094
40115
41136
42157
43178
44199
45220
46240
47261
48282
49303
50324
51345
52366
53387
54408
nA/cm2
0.0
3.0
6.9
11.0
15.4
19.9
24.7
29.6
34.7
39.9
45.3
50.9
56.6
62.5
68.5
74.6
80.9
87.4
59
-------
18 55429 94.0
19 56450 100.8
20 57470 107.7
31. (Optional for computers attached to printers.) Move the flashing
cursor to the line for Output to Printer and press . The
message "Output is directed to PRN." should appear on the screen.
This informs the user that attempts are being made to use the
printer. The printer should print the same information above
though it will not be formatted into pages.
Sample Run 2. Eight-wire ESP.
Since the previous three-wire ESP (with its default values) is available,
setting up this run also proves easy. The data from either DEFAULT.ESP or
EXAMPL1.ESP should be read into the program. We will assume EXAMPL1.ESP
provides data. This includes a value, 0.109 in., for the diameter of the
wires.
The following steps should be performed after the data have been
acquired.
1. Go to the Input Options menu.
2. Activate the Module Description menu.
3. With the values for the first wire appearing on the screen, place
the flashing cursor on the line for Number of Wires. Type 2.
The cursor should resume flashing.
4. Press . The new display should show only two wires and a
cleared data area.
5. Place the cursor on the Wire Pos'n line. Enter values so that
wire 1 is 6.0 in. from the left edge of the module, and wire 2 is
15.0 in. from the left. This makes the wires 9 in. apart. Using
the left/right arrow keys, review the other values to see that
none has been changed.
6. Note that the length of the module remains the same. Return to
the Input Options menu and select the Environment Description
menu.
7. Change the Plate-plate Spacing to a value of 11 in. Change the
Temperature to read 300 °F. Give the Space Charge a value of
5 uC/m, and the Spc Chg Decay Rate a value of 0.1.per wire.
These changes may be done one at a time or all together. Make
sure the new values appear in the Present Value column before
leaving the menu.
60
-------
8. Activate the Module Arrangements option. A second menu titled
Module Arrangements will appear with the number of modules equal
to 1.
9. Change the Number of Modules value to 4. When the value is
entered through using either or the proper cursor, note that
the total length in the Section Summary area has increased. The
total number of wires is now eight.
10. Change the value of Plate Extension at Ends to 0 in. and the
Length of Module to 21 in. Enter these new values, and note
again the changes in the Section Summary area.
11. Return to the Module Description option. Note that the display
of the two wires is different. This reflects the changed length
of the module.
12. Return to the Input Options menu and activate the Quick Graph of
Electrodes. The module and the section displays should show two
and eight wires, respectively.
13. Return to the Input Options Menu, and move the cursor to the line
Save Data to a File. Press . The screen clears, and you
will be given the current file name (probably "brexampll.esp").
You will be asked for a new file name.
14. Type "b:exampl2.esp" or "B:EXAMPL2.ESP," and press . The
' B: drive should activate, indicating that a file is being stored.
Once this is completed, you will be returned to the Input Options
menu. The modifications for Sample Run 2 are now complete.
15. Return to the Main Menu, and activate the Display Options.
Select the Module Configuration option. This should clear the
screen and draw a figure of the module to scale. Select the
Section Configuration option. The drawing now shows all eight
wires to scale.
16. Return to the Main Menu, and select the Calculation Options menu.
17. Select the Starting Voltages option. The screen clears, and two
rows of eight "+" characters are drawn. The actual starting
voltages quickly appear on the screen.
18. Note that the starting voltages have the highest values at the
first wire and decrease with wire number. This comes from having
the space charge decrease a certain fraction with each wire. If
the rate of decrease were higher, the differences from wire to
wire would be larger. If a negative value for space charge decay
rate were used (increasing the space charge from wire to wire),
the starting voltages also would increase in the same way. Press
any key to return to the Calculation Options menu.
61
-------
19. Select the V-I curves calculation option. The screen should
clear with 21 rows of eight "o" characters drawn. The inter-
polated voltage and current density then appear. Press any key
to return to the Calculation Options menu.
20. Select the Spark Operating Point option. The screen clears, and
the voltage, current density, and fields corresponding to sparking
will be displayed. The voltage falls below the maximum voltage
so the electric field should reach the critical value from wire
to plate.
21. Return to the Main Menu. At this point, you can display the
results either graphically or numerically. Enter the Display
Options menu.
22. Select either the current density (Individual Wire V-j Curves) or
current per meter (Individual Wire I/£ Curves) graphs for individ-
ual wires. As the graph is drawn, note that the leading wire
starts at the highest voltage with successive wires starting
lower. This is the main effect of the space charge and its
removal.
23. Select the Section V-j Curve. Note that the distribution of
starting voltages for the individual wires produces a fairly long
low-slope portion of the curve at low current densities. It then
rises rapidly above the highest individual starting voltage.
24. Select the Current Density Distribution graph. When the message
asking for voltage appears, press to continue using the
sparking voltage calculated earlier.
25. After the interpolation message disappears, note that the screen
display draws the entire section. It then begins plotting current
density contours for each wire. The plots begin with the lowest
current density and proceed through all the values, up to the
highest current density. Because of the space charge and the
differing starting voltages, the contours will be slightly different
for each wire. If the user selects a display voltage lower than
any of the starting voltages, no current appears for those wires.
26. When the display is finished, return to the Display Options menu.
Select the Electric Field Distribution option.
27. The Electric Field Distribution display proves similar to the
Current Density Distribution display. It begins by asking the
same question about voltage. Press to continue using the
same sparkover'voltage.
28. Note that the Electric Field Distribution contours are produced
in the same way as the Current Density. The Electric Field does
not require a current-to-flow value. The electrostatic voltage
and the space charge both produce electric fields. In particular,
62
-------
the space charge is responsible for extending the field display
in the horizontal direction (as seen by using a display voltage
of 1 V).
29. If you are using a Tandy 2000, the last step of the Electric
Field Distribution display is drawing a line that represents the
critical field strength. For the sparking voltage, this line
should trace a continuous path from one of the wires all the way
to the plate. When no space charge is present, this always
occurs. Since the calculation in the presence of space charge is
only approximate, a somewhat higher display voltage may be required
to see the effect.
30. The displays do not affect the values calculated earlier. Feel
free to enter other display voltages in the current density and
electric field graphs to see how they vary. When finished,
return to the Main Menu.
31. As a comparison with the other sample runs, choose the Calculation
Options menu and then the Output Options. It should present the
following pages of data, on either the screen or the printer.
ESP V-j CURVE MODEL (Version 1.0) Glow Corona
Environment Data
Temperature = 300 deg F
Pressure = 1 atm
Reduced mobility = 1.82E-04 m2/Vs
Actual mobility = 3.50E-04 m2/Vs
Space charge = 5 uC/m3
Space charge decay rate = .1 /wire
Polarity
Data stored in: b:examp!2.esp
Mechanical Data
Plate-plate spacing = 11 "
Module length = 21 "
End lengths = 0 "
Number of modules = 4
Length of section = 84 "
63
-------
Wire Parameters: Location Diameter Roughness
WIRE 1 6.00" 0.109" 1.00
WIRE 2 15.00" 0.109" 1.00
WIRE 3 27.00" 0.109" 1.00
WIRE 4 36.00" 0.109" 1.00
WIRE 5 48.00" 0.109" 1.00
WIRE 6 57.00" 0.109" 1.00
WIRE 7 69.00" 0.109" 1.00
WIRE 8 78.00" 0.109" 1.00
Starting Voltages for Each Wire
Wire
Wire
Wire
Wire
Wire
Wire
Wire
Wire
1
2
3
4
5
6
7
8
35247
35111
34648
34203
33801
33438
33078
32370
volts
volts
volts
volts
volts
volts
volts
volts
Zero current spark voltage = 77100 V
Maximum calculated voltage = 51419 V
Calculated breakdown voltage = 49900 V
Current density under wire = 171 nA/cm2
Wire voltage/wire-plate spacing = 3.57 kV/cm
Max electric field under wire = 3.07 kV/cm
Average electric field along plate = 2.08 kV/cm
Breakdown field at plate = 3.07 kV/cm
Resistivity for breakdown = 1.5E+11 ohm-cm
Voltage - Current Density Curve
Step
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
V
32370
33322
34274
35227
36179
37132
38084
39037
39989
40942
41894
42846
43799
44751
45704
nA/cm2
0.0
0.8
2.9
6.8
12.6
18.6
24.8
31.3
37.9
44.7
51.7
58.9
66.2
73.6
81.2
64
-------
15 46656 88.9
16 47609 96.8
17 48561 104.8
18 49514 113.0
19 50466 121.3
20 51419 129.8
Sample Run 3. Two-mast ESP
The last example demonstrates the approximation of a mast-supported
corona electrode and shows how the ESP performance model interfaces with
the V-I program. The mast is assumed to support four wires, two on each
side.
The following steps should be performed after the data have been
acquired.
1. Go to the Input Options menu.
2. Activate the Module Description menu.
3. With the display of values set for the first wire, place the
flashing cursor on the line for Number of Wires. Type 5.
The cursor should resume flashing.
4. Press . The new display shows five wires and a cleared data
area.
5. Place the cursor on the Wire Pos'n line. Enter values so that
wire 1 is 7.5 in. from the left edge of the module, wire 2 is
17.5 in. from the left, wire 3 (the mast) is 22.5 in., wire 4 is
27.5 in., and wire 5 is 37.5 in. from the left. This makes the
wires 10 in. apart with the mast centered between the second and
fourth wires.
6. Make all wire diameters 0.109 in. Then move to wire 3 and make
its diameter 1.50 in.
7. Be sure the Wire Roughness Factors are all 1.0. Return to the
Input Options menu, and select the Environment Description menu.
8. Change the Plate-plate Spacing value to 12 in. Change the Tempera-
ture value to 300 °F. Make the Space Charge 10 uC/m and the Spc
Chg Decay Rate to 0.05 per wire. These changes may be done one
at a time or all together. Make sure the new values appear in
the Present Value column before leaving the menu.
9. Activate the Module Arrangements option. Make the Length of
Module 45 in. and the Number of Modules 2. Change the Plate
Extensions at Ends to 0 in. if they are not already 0 in.
65
-------
10. Return to the Input Options menu, and activate the Quick Graph of
Electrodes. The Module and Section Configuration displays should
show 5 and 10 wires, respectively.
11. Return to the Input Options menu, and move the cursor to the line
Save Data to a File. Press . The screen should clear,
and you will be told the current file name (probably "b:exampll.esp").
You will be asked for a new file name.
12. Type "b:exampl3.esp" or "B:EXAMPL3.ESP," and press . The
B: drive should activate, indicating that a file is being stored.
When it is completed, you will be returned to the Input Options
menu. The modifications for Sample Run 3 are now complete.
13. Return to the Main Menu, and activate the Display Options.
Select the Module Configuration option. This clears the screen
and draws a figure of the module to scale. Look for the different
diameter of the mast which does not appear in the Quick Graph of
Electrodes. Select the Section Configuration option. The drawing
should now show all 10 wires to scale with a slight gap between
modules.
14. Return to the Main Menu, and select the Calculation Options menu.
Activate the Autocalc option in that menu.
15. Note that the screen clears with 2 rows of 10 "+" characters
drawn. The actual starting voltages appear quickly but will
flash on the screen only as the next calculation occurs. The
screen should clear with 21 rows of 8 "o" characters drawn. (The
masts will never have any current, up to 200,000 V at least.)
Then the interpolated voltage and current density appear. When
the last one appears, the screen clears. Control is returned to
the Main menu. The spark breakdown will have been calculated,
but not displayed.
16. If you re-enter the Calculation Options menu, you can recalculate
the spark breakdown to see the values. You also can review them
in the Output Options menu. You will see that the breakdown
falls close to the maximum voltage, indicating that the critical
level was barely attainable (up to 200 nA/cm2). Return to the
Main menu. Enter the Display Options menu. At this point, you
may display the results either graphically or numerically.
17. Note that the individual wires will have a display similar to
that of Sample Run 2. The one difference is that the curves for
the masts will not be displayed. In the current per meter display,
there are two distinct groupings, corresponding to the wires
adjacent to the mast and the outer wires of each module.
18. Select the Current Density Distribution graph. When the message
asking for voltage appears, enter 42,000 V. This will display a
voltage somewhat above the corona onset for some of the wires.
66
-------
19. Note that, after the interpolation message clears, the screen
display draws the entire section. And then it begins to plot
current density contours for each wire. The plots begin with the
lowest current density and proceed through all the values up to
the highest current density. Because of the space charge and the
close proximity of the masts, contours will not be drawn for some
of the wires. This shows the importance of knowing which wires
produce corona when using the total current to estimate current
densities.
20. When the display is finished, return to the Display Options menu.
Then select the Electric Field Distribution option.
21. The Electric Field Distribution display is similar to the Current
Density Distribution display and initially asks the same question
about voltage. Press to continue using a value of 42,000 V.
22. The Electric Field Distribution contours are produced the same
way that the Current Density's are. The Electric Field, however,
is present even without current. Both the electrostatic voltage
and the space charge produce fields. In this case, the masts
produce rather strong electric fields, especially in comparison
with the wires not generating corona. When corona is produced
(as, seen when using a higher display voltage), the electric
fields created by the ions quickly dominate the mast fields, in
terms of spatial extent and intensity.
23. Return to the Main Menu, and select the Calculation Option.
24. In preparation for using the EPA/SRI performance model, first
activate the Reset EPA/SRI Model File option.
25. Activate the Output to EPA/SRI File option. The screen clears,
and the question "which section?" appears. Several column titles
also appear. Answer the question with the number 1. This will
store the sparking voltage, the average current density, the
average electric field at the plate, and the input file name in
the SRI.DAT transfer file.
26. The storage operation returns the user to the Output Options
menu. Select the same option again to view the data stored.
Then press if you want to exit without changing any
value.
27. To obtain realistic simulations of the V-I behavior of this
section in a multisection ESP, the particulate space charge
should be reduced further in later sections. Therefore, return
to the Environment Inputs menu form (Input Options), and change
the value of the space charge to something smaller. Appendix G
contains a table of suggested space charge values for each section.
67
-------
28. When a new value of space charge has been selected, recalculate
the entire V-I curve and sparking voltage. When that is done,
the new voltage, current density, etc., should be placed in
Section 2 of the SRI.DAT transfer file WITHOUT RESETTING THE
FILE. Thus, that file should contain two different groups of
values for voltage and current densities.
29. Repeat steps 27 and 28 for each section in the ESP. Once you
have done this, you have the best theoretical estimates for
voltage and current density for use with the performance model.
30. Once the performance model has values for all the sections,
activate the Run EPA/SRI ESP Performance Model option from the
Main Menu. This step loads the performance program into the
space occupied by the V-I model, replacing all earlier values.
Be sure you have saved all desired values before doing this.
Appendix C describes the performance model in detail.
31. For comparison with the other sample runs, the output from example-3
should include the following pages of data. This output appears
on either the screen or printer.
ESP V-j CURVE MODEL (Version 1.0) Glow Corona
(Tandy 2000)
Environment Data
Temperature
Pressure
Reduced mobility
Actual mobility
Space charge
Space charge decay rate
Polarity
300 deg F
1 atm
1.82E-04 m2/Vs
3.50E-04 m2/Vs
10 uC/m3
.05 /wi re
(Negative)
Data stored in: b:examp!3.esp
Mechanical Data
Plate-plate spacing
Module length
End lengths
Number of modules
Length of section
12 '
45 '
0 "
2
90 '
68
-------
Wire Parameters: Location Diameter
Roughness
WIRE
WIRE
WIRE
WIRE
WIRE
WIRE
WIRE
WIRE 8
WIRE 9
WIRE 10
1
2
3
4
5
6
7
7.50"
17.50"
22.50"
27.50"
37.50"
52.50"
62.50"
67.50"
72.50"
82.50"
0.109"
0.109"
1.500"
0.109"
0.109"
0.109"
0.109"
1.500"
0.109"
0.109"
00
00
00
00
00
00
00
00
00
1.00
Starting Voltages for Each Wire
Wire
Wire
Wire
Wire
Wire
Wire
Wire
Wire
Wire
Wire
1
2
3
4
5
6
7
8
9
10
43614
Mill
211664
46586
41459
40924
44981
209025
44015
38760
volts
volts
volts
volts
volts
volts
volts
volts
volts
volts
Zero current spark voltage
Maximum calculated voltage
Calculated breakdown voltage
Current density under wire
Wire voltage/wire-plate spacing
Max electric field under wire
Average electric field along plate
Breakdown field at plate
Resistivity for breakdown
= 86200 V
= 55930 V
= 55700 V
= 197 nA/cm2
=3.65 kV/cm
=3.54 kV/cm
=3.15 kV/cm
=3.07 kV/cm
= 1.3E+11 ohm-cm
Voltage - Current Density Curve
Step V
0 38760
1 39618
2 40477
3 41335
4 42194
5 43052
6 43911
7 44769
8 45628
9 46486
10 47345
nA/cm2
0.0
0.7
1.5
2.7
5.1
7.7
10.7
14.9
19.6
24.7
30.4
69
-------
11
12
13
14
15
16
17
18
19
20
48203
49062
49920
50779
51637
52496
53354
54213
55071
55930
36.7
43.4
50.2
57.1
64.2
71.3
78.6
85.9
93.3
100.8
III. THEORY OF THE MODEL
A. Starting Voltage Relation for Coaxial Geometry
In a coaxial ESP, the voltage on a round-wire electrode from the
electric field at the wire surface can be determined by the following
equation (with no space charge present):
Vw=Ew
where
V = the voltage,
W
E = the electric field,
W
r = the wire radius, and
R = the radius of the outer electrode.
It generally is assumed that the electric field at corona onset does not
differ significantly from the electrostatic field just below corona onset.
The corona onset field was first determined by Peek (3) (in the coaxial
geometry, among others) for a wide range of wire and tube radii and environ-
mental conditions. This electric field will be called the Peek field, E .
When it exists at the surface of a clean smooth wire, corona will ensue.
B. Single Wire Between Planes
For a single wire midway between two planes, a conformal mapping of
cylindrical geometry onto the planes results in the following relation for
the starting voltage:
Vc = Ec-rw-ln(d/rw) (2)
where d is the equivalent cylinder radius given by:
70
-------
d = 4-b/n (3)
where b is the wire-plate separation (2).
This relation assumes that the electric field near the wire remains
unaffected by the relatively distant plates. For wire diameters much
smaller than the plate-plate spacing, this does not present a major restric-
tion. This expression for the single wire lends itself to expression in an
infinite series of wires, where the effects of all the other wires can be
calculated (2). When the wire-wire spacing in such a series becomes much
larger than the wire-plate spacing, the terms in the series converge so
rapidly that Equation 2 proves accurate enough for most uses.
C. Effect of One Wire on the Starting Voltage of Another
A wire operating at a given voltage produces an electric field at all
points in space at a given distance from itself. If that electric field is
integrated from the plate to another wire, a potential difference arises.
The resulting potential difference consists of a bias that must be added to
the second wire's single-wire starting potential before the Peek field can
be reached at the surface of the second wire. The integrated potential at
the second wire (due to a potential on the first wire) is expressed by:
V12 = Vl.F12 (4)
where F,2 is a purely geometrical factor, given by:
cosh(7tc12/2b) - cos(nr2/2b)
In
F12 =
cosh(7tc12/2b) + cos(;ir2/2b)_
1 - cos(7ir-L/2b)
T~+
In
where
,« = the distance between wires 1 and 2,
r, = the radius of wire 1,
r? = the radius of wire 2,
b = the wire-plate spacing (as before).
(5)
71
-------
D. Operation of All Wires at a Common Voltage
For a multiwire ESP, a given wire falls at its corona threshold when
the following relation is satisfied:
Vi = Vci + Z Fii'Vi
1 C1 jVi 1J J
where
V. = the corona threshold of the i-th wire in the presence of all the
1 others,
V . = the corona threshold voltage of the i-th wire (given by Equations
cl 2 and 3),
F.. = the geometry factors given by Equation 5 (with i and j substituted
1J for 1 and 2).
Since all wires in this model operate at a common voltage, V. on the
right-hand side can be replaced by V.. Then the equation can be simplified
to:
E. Consequences and Limitations of the Interaction of Wires
One major point becomes apparent when calculating the starting voltages
of an array of equally spaced wires of the same diameter. Namely, the
first and last wires in the array have noticeably lower starting voltages
than the central wires. This results from having fewer strong interactions
with neighboring wires and becomes most apparent when the wire-wire spacing
is less than the wire-plate spacing. This difference in starting voltages
means that attempts to raise the overall corona onset point by grouping
wires close together will fail because the outermost wires of the grouping
will have much lower starting voltages than all the others. On the other
hand, placing a large diameter wire near a small diameter wire will raise
the threshold of the small wire considerably. This effect may be so large
that wires near large-diameter mast supports never reach their corona
threshold during normal operation.
The major limitation for applying the algorithm of Equations 6 and 7
is that it does not include the electric field effects resulting from the
72
-------
presence of the ionic space charge. This ionic space charge develops once
a wire has begun corona generation. The ionic electric field would have
the effect of raising the threshold of the others wires above that which is
calculated electrostatically. The difference would become most apparent
for those wires of equal diameters. Their corona thresholds otherwise
would be quite similar. The amount of shift due to the ion-produced electric
field depends upon the current from each wire at the corona threshold being
calculated. This consideration requires a knowledge of the V-I curve of
each wire.
F. Constant Space Charge in the Wire Cylinder
If a constant space charge is introduced into the wire-cylinder geometry,
the corona onset voltage is modified. Thus, the differential equation for
the current no longer can be solved in a simple fashion. The equation for
the onset voltage becomes:
Vc = Ec«rwln(R/rw) + Sp/(4e) (R2 - rw2) (8)
where
Sp = the constant space charge and
E = the free-space permittivity.
This result derives from either solving the differential equation or inte-
grating the electric field and then adding the resulting voltage to the
corona's starting voltage of the wire cylinder.
G. Constant Space Charge in the Wire Plane
If a constant space charge is introduced into the wire-plane geometry,
one can calculate the corona onset voltage by integrating the electric
field and adding it to the corona starting voltage. The equation for the
onset voltage becomes:
Vc = Ec'rw1n(d/rw) + Sp/(2e) (fa2 " rw2) (9)
We make the same assumption for multiple wires in the wire-plate
geometry. Namely, the corona onset voltage is represented by the sum of
the corona onset voltage and the voltage due to the space charge by itself.
We also assume, for simplicity's sake, that the space charge near one wire
affects only the onset voltage of that wire.
73
-------
H. Calculation of Wire V-I Relations
The V-I relation for a single wire between plates is based on the
solution for a similar case in coaxial geometry. In coaxial geometry,
Poisson's equation for the ionic space charge can be solved if one makes
certain assumptions about the nature of the corona discharge (4,5). These
assumptions focus on understanding the electric field and ion density at
the boundary of the corona. For both the negative glow and positive Hermstein
glow (6), the corona region appears cylindrically uniform around the corona
wire. If the diameter of the bipolar generation region is approximately
equal to the wire radius, then the governing differential equation can be
solved analytically.
In the case of wire-plane geometry, the electric field around the wire
can be shown to be nearly uniform for small wire diameters. Therefore, the
ion generation also should prove uniform. From Cooperman's solution for
the potential around the wire (2), the ratio of the field directed parallel
to the plate to that directed toward the plate (at the wire's surface) is
given by:
En/E = sin(7i-rw/2b)/sinh(n-rw2b) (10)
where all terms remain as before. As r/b moves toward zero, this ratio is
unity. For large-diameter wires, however, the electric field from wire to
plate is stronger than the field in the direction parallel to the plates
(as expected).
Provided r^b is kept at a value less than 0.1, the variation of E
around the wire will be less than approximately 0.003. At this level, the
corona generation should remain nearly uniform as well. It does prove very
sensitive to the electric field variation though.
I. V-I Curve in Cylindrical Geometry
In the cylindrically symmetric coaxial ESP, the voltage can be computed
analytically for a given current/length of wire (4,5). Under the simplifying
assumption that the wire diameter is much smaller than the tube diameter,
an expression for the operating voltage is:
V = V + E -r -|U+B)1/2 -
1/2
- In 1^
74
-------
where
VG = the corona starting voltage,
B = a reduced current/length of wire with the other terms defined as
before.
The reduced current/meter is represented by:
B = I/£.R2/[2-7i-e0.U'(Ecrw)2] (12)
where
I/I = the current per. .length of wire,
S.Q = the free- space permittivity,
u = the ion mobility, and the other terms are defined as before.
The term [R/(E *r )] represents the electrostatic part of the electric
\v W
field at the outer boundary. The current density at any point on the outer
cylinder is related to the current/meter by:
J0 = I/£/[2n-R] . • (13)
Of course, no current flows below the corona onset voltage. Therefore,
Equation 11 becomes inapplicable.
J. Electric Field in the Wire-cylinder Geometry
The electric field is a function of the radius at any current density
in the wire cylinder. This is given by:
E(r) = {(E^yr)2 + J0R/(£nu).[l -(r^r)]} (14)
This can be reduced to the familiar 1/r dependence at zero current density.
When a constant space charge is included, the term E r /r is replaced by:
L> W
Ecrw/r + Sp/(2e0)-r .
This is an exact solution when no current flows.
K. Saturation Relations in the Wire Cylinder
R.S. Sigmond (Ref. 7) introduced the concept of unipolar saturation
current density for corona devices. The saturation current density is the
value of current density where self-repulsion of the ions creates conditions
for movement in the electric field. Thus, no higher current density can be
achieved without introducing other current-carrying species.
75
-------
For most geometries, the saturation current density is given by:
JQ = u eQ V2/L3 (15)
where V is the voltage applied across gap L. This relation remains within
a constant factor of the order of unity in spherical and planar geometries.
It proves exact in cylindrical geometry. In cylindrical geometry, the V-I
relation represented by Equation 11 can derive this result by either allowing
the inner wire radius to approach zero or the total current to become
infinitely large. Under such conditions, the electric field resulting from
the corona onset field becomes insignificant in comparison with the field
resulting from the ionic space charge.
Under saturation conditions, the electric field becomes dominated by
the ionic space charge and, according to Equation 14, becomes independent
of radial position. Thus, the electric field is exactly equal to the wire
voltage divided by the gap length.
Equation 14 demonstrates importantly that the ionic space charge first
dominates the electric field at large radii near the outer cylinder. As
the current further increases, the saturation effect moves inward to the
wire.
L. Current Density in Wire-plate Geometry for a Single Wire
The model assumes that the current density on the plate directly
opposite the wire has almost the same value as in the cylindrical geometry
for the same wire-plate spacing and the same voltage above the corona
onset. This results from the corona saturation's starting at the plate.
The region near the wire essentially remains in a cylindrical geometry
while the ions near the plate move in a constant electric field. The impli-
cation is that the V-I density relation for points directly under the wire
is a universal one. It can be represented by the relations in Equations
11-12 if B is written as:
B = JQ b/[e0u CEeff-reff)2]. (16)
»
Then Equation 11 gives the voltage corresponding to that local current
density. Both the effective electric field and radius, E and r ,f, are
formal parameters representing the 1/r part of the field dependence. That
is:
76
-------
for cylinders,
Eeffreff = EcV
for wire plate,
Eeffreff = Ecac7l/2'
for wire plate with space charge,
Eeffreff = *c*cn/2 + W2' (17c)
To obtain the full current flowing from the wire, an auxiliary condi-
tion which relates the current density under the wire to the current density
at other positions is necessary. Such a relationship is being developed
experimentally and theoretically (1). Most ESP applications, however, can
be represented with sufficient accuracy by:
J(6)/J0 = cos3(6), (18)
where j(9) is the current density at a point on the plate at an angle 6.
It is measured between a normal to the plate which passes through the wire
and a plane passing through the wire and point of interest.
In more accurate terms, the power of the cosine is a function of
current density and has a range between somewhat more than 2.5 at zero to
about 4 at extremely high current densities. The choice of 3 as an average
value gives good results over the conventional range. In the model, the
actual exponent is calculated from two quantities, the electrostatic part
and the ionic part. These are given by:
Fe = (Ecrw) (19)
Fi = J0b/(£0u)-[l - (rw/b)2] (20)
which are then used to obtain the exponent, n, by the relation:
n = 2.58[Fe/(Fe + Fi)]4+ 4.00[Fi/(Fe + Fi)]4 (21)
This relationship was derived from angular distribution measurements
of current density from single wires. The fourth power of the ratio proves
a fitting result, with no theoretical basis at this time.
The current/meter is calculated by integrating over the angles where
current may flow from the wire:
77
-------
2 n"2
el
J0b cosn"(6) d6, (22)
where 6, and 62 are the limiting angles. In the single-wire case, both
will be equal to n/2. A leading factor of 2 is necessary to account for
the current to both plates. The factor b (in the integrand) and the exponent
n-2 derive from integrating equal areas along the plate. For integral
powers of the cosine function, the integral may be written explicitly. For
n = 3, it is:
I/i = 2 J0 b [sinOp + sin(62)] (23)
Thus, the V-I relation for the single wire is obtained on the basis of a
1 m length.
When the exponent is allowed to vary with current density, the integral
must be evaluated numerically for non-integer powers of the cosine. This
is accomplished most simply by computing the cosine integral at all the
integer powers in the range of interest and then interpolating for non-integer
powers. The cosine integral varies slowly with the exponent, and the
interpolation proves very accurate.
M. Current Density in Wire-plate Geometry for Multiple Wires
Similar relations persist in the multiple-wire ESP. The starting
voltages for each wire have been described already. The normalized current
densities for each wire, 8, can be calculated according to Equation 12. No
compensation for the increased electric field at the plate is needed because
of a cancellation in terms (involving E ).
The cosine power law has been found to remain a good representation of
the distribution of current density, even though the currents flowing from
adjacent wires do not overlap (1). If the angles 9, and 0,, are computed
from the points on the plate midway between adjacent wires, then the total
current from a given wire is represented adequately by Equation 22.
The same limitation exists here as with the starting voltage. Namely,
the&e relations do not consider the effects of the ionic space charge on
the currents flowing under adjacent wires. Nonetheless, experimental
results do support the application of these relationships (even for tightly
spaced wires).
78
-------
N. Calculation of Electric Field
In electrostatic precipitation, the local and spatially averaged
values of electric field are important quantities for determining the
effectiveness of the process. The V-I model contains the values of the
electric field implicitly in its calculation. One can calculate these
values through a process similar to that used for calculating current
density.
Here, the electric field near the wire varies as 1/r below the onset
of current, where r is the distance from the center of the wire. This
variation makes it easy to show that the component of the field directed
toward the plate (the precipitating component) obeys the relation:
Ex = E(0) cos2(6) (24)
where
E(0) = the maximum value of the field along the line from wire to
plate
(directly under the wire),
9 = represents the same angle used in the current density relations
(Equations 13-15).
Both E and E(0) are determined at the same distance from the plate.
Although this relation is defined in the region near the wire, it proves
sufficiently accurate to apply at the plate in the case of widely separated
wires. As the wires become more closely spaced, the exponent decreases
slowly.
Numerical studies of the electric field in the presence of corona
current show that Equation 24 remains valid over the normal operating
current density range for ESPs. The maximum electric field, E(0), increases
through the presence of the ionic and constant space charge. The angular
distribution, however, changes only slightly. The value for the electric
field along the normal (from the wire to the plate) is calculated from the
following relation derived for wire-cylinder geometry:
E(x) = {(Ecrw/x-[7t-x/2/sin(7i-x/2b)] + Spx/eQ)2
+ jnb/(eO u)-[l -(r /x)2]}*5 (25)
u w
79
-------
This application of Equation 14 replaces the radial distance, r, with the
distance from the centerline, x, and the cylinder radius, R, with the
wire-plate distance, b.
The field developing from particulate space charge is assumed to be
uniform throughout the volume of the ESP section. It does not obey the cos
relation while the electrostatic and ionic parts do. By algebraic manipula-
tion, the angular dependence of the electric field component (perpendicular
to the plate) is given by the relation:
E(6) = [E(0) - Esp]cos2(6) + Esp[l - cos2(6)] (26)
where
E = the space charge field,
E(0) = the field along the wire-plate normal at any distance, x.
The space charge field at any distance, x, from the center!ine of the ESP
is given by:
Esp(x) = Spx/e0 (27)
The space charge field exists where there are no electrodes and at zero
voltage on the wires.
0. Miscellaneous
In addition to the electrode effects at the heart of this work, there
>
are polarity effects for the corona starting voltage. Since the direction
of movement of the ion-generating free electrons differs for positive and
negative polarity, one would expect differences in the critical field for
self-sustained ionization. Based on V-I curves measured in a small coaxial
ESP, the following expressions for the critical fields have been derived.
These prove similar to the one determined by Peek (3), while distinguishing
clearly between the positive and negative coronas.
Positive:
Er = 3.126E06'[d + 0.0266-(d /a_)] (28a)
w i " C
Negative:
EC = 3.126E06-[dr + 0.0301-(dr/ac)] (28b)
80
-------
where d^ is the gas density relative to its value at a normal temperature
and pressure. The constants were chosen by least square fits, thereby
requiring the leading constant (the critical field at infinite radius) to
be the same for both polarities.
The electric field at breakdown is required for the development and
propagation of positive streamers. In positive corona, the streamers can
form in the high-field region near the corona wires. They will propagate
all the way to the plate in a field of about 5 kV/cm at room temperature
and pressure. In negative corona, the positive streamers must form at the
plate and move toward the wire. This requires a somewhat higher'field for
initiating the streamers (about 6.3 kV/cm), and an initial source of ioniza-
tion at the plate.
For purposes of the model, the following relation was derived to
determine the breakdown field:
Ebd = Ebd0(273/T-P)1-65 , (29)
where
EbdQ = 5 kV/cm for positive corona and 6.3 kV/cm for negative corona.
The temperature/pressure dependence comes from Reference 8. This reference
also describes a dependence on the water vapor content of the gas, but that
dependence was not included in the model. It is a relatively strong depend-
ence, but the values of Ebdn were chosen to account for the moisture present
in industrial ESPs. Besides, the flue gas composition would introduce uncer-
tainties that could make the inclusion of a water vapor content meaningless
in terms of overall accuracy of the breakdown field.
The initial source of negative corona in industrial ESPs is usually
positive back corona. It also can be a local corona from a sharp edge on
the collecting plate. Whatever the source, the streamers grow into a spark
only when the field is high enough (all the way to the wire). Particulate
space charge increases the field near the plate considerably. Even if the
field near the plate proves high enough to move the streamers, a lower
field region can exist between the wire and the plate. We speculate that
sparking will occur only when the field exceeds the critical value (all the
81
-------
way to the wire). If back corona occurs when the field is significantly
lower than that required to propagate streamers, the V-I curve may enter
the steep mode characteristic of back corona for high resisitivity dusts.
This model cannot reproduce that type of behavior but can indicate the
voltage where the back corona will occur.
For positive corona, the sparking criterion requires streamers to
originate from the corona wire. This occurs only in wires of diameters,
roughly larger than 1/8-in. Otherwise, a positive glow (5) may envelop the
wire, suppressing streamer generation. This would lead to a sparking
voltage much higher than the negative corona sparking voltage. The critical
field has been made lower for positive corona than for negative corona to
account for streamers moving.from a high field region into a lower field
region. Therefore, they do not require as high a field to propagate. This
holds true only for positive streamer corona. Back corona in such a case
may help establish the glow mode, thereby reducing the probability of
sparking.
IV. PLANNED ENHANCEMENTS
This program, designed for use with positive and negative glow coronas,
i
comprises the first stage of a complete ESP modeling effort. Since most
-ESPs operate with the negative tuft corona, this program is only approx-
imately valid for them.
The first major enhancement to be added is a program version which
will provide a model for the V-I characteristics of negative tuft corona.
Much of the model will be guided by experimental results, most of which are
already available. The tuft corona model will be made available first for
the multiple-wire cases (similar to the cases possible with this version).
Further planned enhancements allow for the design and use of almost arbitrary
electrode shapes for the corona electrodes. This will require an interactive
drafting program and perhaps the use of auxiliary microcomputer devices,
such as a "mouse" or digitizing device. This version and the tuft corona
version will be translated into FORTRAN or another language to improve
computation speed and allow for larger arrays. The conversion will depend
on the availability of suitable graphics capabilities.
82
-------
REFERENCES
1. Lawless, P. A., McLean, K. J., Sparks, L. E., and Ramsey, G. H.
Negative corona in wire-plate electrostatic precipitators, Parts I and
II, J. Electrostatics, 18, pp. 199-217 and 219-231 (1986).
2. Cooperman P. A theory for space-charge-limited currents with applica-
tion to electrical precipitation. A.I.E.E. Transactions 79, 47-50
(1960).
3. Peek, F. W. "Dielectric Phenomena in High-Voltage Engineering,"
McGraw-Hill, New York (1929).
4. Oglesby S. Jr., and Nichols G. B. "Electrostatic precipitation."
Marcel Dekker, New York (1978).
5. Waters, R. T. , and Stark, W. B. Characteristics of the stabilized
glow discharge in air. Journal of Physics D: Applied Physics 8,
416-426 (1975).
6. Loeb, Leonard B. "Electrical Coronas -- Their Basic Physical Mechanisms,
University of California Press, Berkeley and Los Angeles (1965).
7. Sigmond, R. S. Simple approximate treatment of unipolar space-charge-
dominated coronas: The Warburg law and the saturation current.
J. Appl. Phys. 53, 891-898 (1982).
8. Phelps, C. T., and Griffiths, R. F. Dependence of positive corona
streamer propagation on air pressure and water vapor content. J. Appl.
Phys. 47, 2929 (1976).
83
-------
APPENDIX A
PROGRAM LISTING
The following pages contain the listing of the whole program, ESPVI.BAS,
on the diskette. It may be used either as a reference for the operation of
the program or for reproduction of the program when the disk version is not
available.
A-l
-------
0 REM Copyright 1985 by Research Triangle Institute. In accordance with the ter
ms of its cooperative agreement, the grantee has granted to the Government a roy
alty-free, nonexclusive, and irrevocable license
1 REM throughout the world for Government purposes to publish, translate, reprod
uce, deliver, perform, dispose of, and to authorize other to do so, the copyrigh
ted material contained herein.
2 '
10 REM
20 REM lines 10- 999 are initialization routines and dimensioning statements
30 REM lines 1000-2999 contain short subroutines used often
40 REM lines 3000-3999 contain the main program
50 REM lines 4000-4999 contain the menu for the main program
60 REM lines 5000-5999 contain the input options sub-menu and input routines
70 REM lines 6000-6999 contain the calculation options sub-menu
80 REM lines 7000-7999 contain the display options sub-menu
90 REM lines 8000-8999 contain the output options sub-menu
100 REM lines 9000-9999 contain the program configuration options
110 '
120 REM Get the program configuration, on file in "ESP.CNF"
130 '
140 OPEN "esp.cnf" FOR INPUT AS 1
150 INPUT #1, BURST.WRAP.AUCL.CGP.IBM.PTFLG.ISAT
160 CLOSE 1
170 '
180 NWM=17:REM maximum number of wires
190 '
200 DIM RC(NWM).ACM(NWM).ASY(NWM).MSY(NWM).BSY(NWM),RF(NWM),VC(21),IC(21),RX{12)
,RLY(12),RRY(12),S$(24),T$(24),CD(5),CL(5),VOP(10),JOP(10),EOP(10),OP$(10),PP(10
).PL(10)
210 DIM EC(NWM),LSPCH(NWM)>VS(NWM),V(21,NWM),JO(21,NWM).IL(21,NWM),JI(NWM),LP1(N
WM),VO(NWM),C1(NWM),E1(NWM).JBD(NWM)
220 '
230 CLS
240 FILES="DEFAULT.ESP"
250 ON ERROR GOTO 33020
260 '
270 GOSUB 10050:REM read in the data in DEFAULT.ESP
280 '
290 ON ERROR GOTO 0
300 RY=1:PI=3.14159265*:EPSO=8.845E-12:130=640/10.5
310 IF POL$="" THEN EBDO=630000! ELSE EBDO=500000!
320 C$="-"i-CHR$(16):CB$="- ":BL$=" ":CR$=CHR$(13):CSET =1:DISFLG=0
330 '
340 KEY OFF:SCREEN 0.BURST:WIDTH 80:CLS:CGPDMP = &HFF80
350 IF IBM=0 THEN KEY(12) ON:ON KEY(12) GOSUB 31130:REM screen dump (TANDY ONLY)
360 KEY(IO) ON:ON KEY(IO) GOSUB 2200:REM quick graph on screen
370 '
380 CLCFLG=0:DISFLG=0:JPEAK=200:JSTEP=JPEAK/20
390 '
400 GOTO 3040
410 '
1000 REM +++++-i"t"t"i-+++++++ Up/Dn scanner for entry menus
1010 '
1020 LOCATE CY,CX,0:PRINT BLS::CY=CTY+5
1030 GOSUB 1130 :REM blinks cursor at CX.CY
1040 A=ASC(A$)
1050 IF A=13 THEN RETURN A-2
-------
1060 IF A=30 THEN GOSUB 1340
1070 IF A=31 THEN GOSUB 1370
1080 IF A=27 THEN RETURN
1090 IMY=CTY
1100 GOTO 1020
1110 REM -i"f++++.("i"i"i-+-!.+.(.++++++ Blinking Arrow Head at cx.cy
1120 '
1130 LOCATE CY,CX.0:PRINT C$;
1140 FOR 1=1 TO 40 STEP (1+IBM):A$=INKEY$:IF A$>"" THEN 1190 ELSE NEXT I
1150 LOCATE ,CX:PRINT CBS;
1160 FOR 1=1 TO 40 STEP (1+IBM):A$=INKEY$:IF AS>"" THEN 1190 ELSE NEXT I
1170 GOTO 1130
1180 REM +-i-++-i-+-i-+++++++++-t"i-+-i- pheck for IBM cursor keys -t--»-+-(-
1190. IF LEN(A$)=1 THEN RETURN
1200 A$=RIGHT$(A$,1)
1210 IF AS="H" THEN A$=CHR$(30)
1220 IF A$="K" THEN A$=CHR$(29)
1230 IF A$="P" THEN A$=CHR$(31)
1240 IF A$="M" THEN A$=CHR$(28)
1250 RETURN
1260 '
1270 REM ++-(-(-+-(-++-i-+-i.++-i.+ Color set for B/W or Color screens
1280 '
1290 IF BURSTOO THEN COLOR CSET.O ELSE COLOR 15,0
1300 RETURN
1310 '
1320 REM ++-n--t"t"i"i-++-i-+++ Up/Down arrow setting routines +++++++++++++++++-T+-**-
1330 '
1340 IF WRAP=0 THEN CTY=CTY+(CTY>1) ELSE CTY=-(CTY>1)*CTY-1 -(CTY=1)*(CMY+1)
1350 RETURN
1360 '
1370 IF WRAP=0 THEN CTY=CTY-(CTY
-------
1620 S$(24)=SPACES(20)+" will dump the screen at any time."
1630 GOTO 1560
1640 '
1650 REM ++++++-i-+-i"t-++-i"!-+++-t-++ String Data input routine +++++++-+•»
1660 '
1670 I1=5:TS(CTY)=A$
1680 LOCATE CY.CX-t-Il:PRINT T$(CTY);BL$;
1690 A$=INKEY$
1700 IF A$="" THEN 1690
1710 A1=ASC(AS)
1720 IF Al=13 OR Al=27 OR Al=30 OR Al=31 THEN RETURN
1730 IF AK42 THEN 1760
1740 TS(CTY)=TS(CTY)+A$
1750 GOTO 1680
1760 IF A108 THEN 1690
1770 A1=LEN(T$(CTY))-1:IF AKO THEN 1680
1780 T$(CTY)=LEFT$(T$(CTY),A1)
1790 GOTO 1680
1800 '
1810 REM +-4--H-++-I--I- key redefinitions +++++++++++++
1820 '
1830 KEY 1,CHRS(20):KEY 2.CHRS(21):KEY 3,CHR${22):RETURN
1840 '
1850 REM +++++++++ restore definitions +++-<-+-t-++-n-
1860 '
1870 KEY l."list ":KEY 2."run"+CHRS(13):KEY 3."load "+CHR$(34):RETURN
1880 '
1890 REM ============= module arranging routine =========================
1900 '
1910 INDEX=NW*NMOD:NWFLG=0:MLFLG=0
1920 WHILE INDEX>NWM AND NMOD>1 :REMFIRST REDUCE THE * MODULES. THEN THE # WIRES
1930 NWFLG=1:NMOD=NMOD-1:INDEX=NW*NMOD
1940 WEND
1950 '
1960 IF NW>NWM THEN NW=NWM
1970 '
1980 IF MLEN>=ASY(NW) THEN 2010
1990 MLEN=ASY(NW):MLFLG=1
2000 '
2010 FOR 1=1 TO NMOD-1
2020 FOR J=l TO NW
2030 ASY(I*NW+J)=I*MLEN+ASY(J) :RC( I*NW-i-J )=RC( J ) :RF(I*NW+J)=RF(J)
2040 NEXT J
2050 NEXT I
2060 '
2070 TLEN=MLEN*NMOD+2*ENDLEN
2080 '
2090 RETURN
2100 '
2110 REM +-i--t-+-i-+++++-t-++++-t-press any key, beep and hold routine +++++++++++++++++
2120 '
2130 LOCATE 24.22,0:PRINT " Press any key to continue. ";
2140 SOUND 3000,1
2150 X$=INKEY$
2160 IF X$="" THEN 2150 ELSE RETURN
2170 '
2180 REM +*+++++++++++-t-+++-i"i".- quick draw calling routine +-t-+++++-i-++-i-++++++J.J.J.+J.
A-4
-------
2190 '
2200 GOSUB 28020:REM actual drawing
2210 '
2220 CLS
2230 '
2240 GOSUB 1480:REM reprint the screen
2250 '
2260 LOCATE CY.CX
2270 RETURN
2280 '
3000 REM ******************** Main Operating Choices ************************
3010 '
3020 REM The main subroutine is a menu subroutine, allowing operating choices
3030 '
3040 GOSUB 4030:REM operating choices
3050 '
3060 REM The first choice subroutine is the input routine.
3070 IF RY=1 THEN GOSUB 5020
3080 IF RY=1 AND AUCLOO AND CLCFLG=0 THEN GOSUB 6020
3090 '
3100 REM The second choice subroutine is the calculation routine.
3110 IF RY=2 THEN GOSUB 6020
3120 IF RY<=2 AND AUCLoO AND DISFLG <> 0 THEN GOSUB 7020
3130 '
3140 REM The third choice subroutine is the display option routines.
3150 IF RY=3 THEN GOSUB 7020
3160 '
3170 REM The fourth choice routine is the output option routines.
3180 IF RY=4 THEN GOSUB 8020
3190 '
3200 REM The fifth choice subroutine is the program configuration routines.
3210 IF RY=5 THEN GOSUB 9020:GOTO 340:REM restart the program
3220 '
3230 REM The sixth choice routine is to leave this model and run the SRI model
3240 IF RY=6 THEN RUN"a:espsri.bas"
3250 '
3260 REM The last choice is to exit to the MSDOS system
3270 IF RY=8 THEN SYSTEM
3280 '
3290 REM Return to the menu routine.
3300 GOTO 3040
3310 '
4000 REM ******* Option Menu routine for selecting the task to be done ******
4010 REM This routine only returns a value of RY to the driver program
4020 '
4030 SCREEN 0,BURST:CLS:CTOP=10:CBOT1=2:CBOT2=3:CTY=RY:CMY=8
4040 CY=CTY+5:CX=36:IMY=RY
4050 '
4060 OPEN "main.men" FOR INPUT AS 2
4070 GOSUB 1420:REM read and print menu
4080 CLOSE 2
4090 '
4100 IF CGPOO THEN GOSUB 1620
4110 '
4120 REM This is the routine for moving the cursor up or down
4130 '
4140 CSET=11: GOSUB 1290 A ,.
-------
4150 '
4160 GOSUB 1020:REM scan for up/down arrows
4170 '
4180 RY=IMY
4190 IF RY=7 OR A=27 THEN 4160 ELSE RETURN
4200 '
5000 REM ********** Input Options routine *************
5010 '
5020 IMY=1
5030 SCREEN 0,BURST:CLS:CTOP=11:CBOT1=2:CBOT2=3:CTY=IMY:CMY=8
5040 CY=CTY+5:CX=36
5050 '
5060 OPEN "input.men" FOR INPUT AS 2
5070 GOSUB 1420
5080 CLOSE 2
5090 '
5100 REM This is the routine for moving the cursor up or down
5110 '
5120 CSET=14:GOSUB 1290
5130 '
5140 GOSUB 1020:REM scan for up/dn and enter
5150 '
5160 IF A=27 THEN RETURN
5170 IF IMY=1 THEN GOSUB 13020
5180 IF IMY=2 THEN GOSUB 11020
5190 IF IMY=3 THEN GOSUB 15020
5200 IF IMY=4 THEN GOSUB 10010
5210 IF IMY=5 THEN GOSUB 10230
5220 IF IMY=6 THEN GOSUB 28020
5230 IF IMY=CMY THEN RETURN
5240 GOTO 5030
5250 '
5260 RETURN
5270 '
5280 REM •*•++++++++++++++ data file naming routine
5290 '
5300 SCREEN 0,BURST
5310 CLS
5320 LOCATE 12.25
5330 PRINT "The current file name is: ";FILES
5340 LOCATE 20,25
5350 PRINT" uses the current name."
5360 PRINT TAB(20) "+ will abort the operation"
5370 LOCATE 13,37
5380 LINE INPUT;"New name ? ";A$
5390 '
5400 IF A$<>"" THEN FILE$=AS
5410 RETURN
5420 '
6000 REM ************************ Calculation Overview Routine *****************
6010 '
6020 IMY=3
6030 SCREEN 0,BURST:CLS:CTOP=11:CBOT1=2:CBOT2=3:CTY=IMY:CMY=8
6040 CY=CTY+5:CX=36
6050 '
6060 IF AUCL=1 THEN 6450
6070 '
A-6
-------
6080 OPEN"calc.men" FOR INPUT AS 2
6090 GOSUB 1420
6100 CLOSE 2
6110 '
6120 REM This is the routine for moving the cursor up or down
6130 '
6140 CSET=14:GOSUB 1290
6150 '
6160 GOSUB 1020 :REM scanner for Up/Dn
6170 '
6180 IF A=27 THEN RETURN
6190 '
6200 IF IMY=1 THEN GOSUB 6310
6210 IF IMY=2 THEN GOSUB 6380
6220 IF IMY=3 THEN 6450:REM everything done, go to prior menu
6230 IF IMY=4 THEN GOSUB 6540
6240 IF IMY=5 THEN GOSUB 6830
6250 IF IMY=6 THEN GOSUB 6760
6260 IF IMY=CMY THEN RETURN
6270 GOTO 6030
6280 '
6290 REM ++-H-+ perform start volt calculation
6300 '
6310 CLCFLG=0:DISFL.G=0
6320 GOSUB 17020
6330 CLCFLG=1
6340 GOTO 2130
6350 '
6360 REM +++++ perform v-i calculation ++++-M
6370 '
6380 IF CLCFLG=0 THEN 7600
6390 GOSUB 18040
6400 DISFLG=1
6410 GOTO 2140
6420 '
6430 REM +++++ perform both and spark breakdown
6440 '
6450 GOSUB 17020
6460 GOSUB 18040
6470 CLCFLG=1:DISFLG=1
6480 GOSUB 20270
6490 SOUND 3000,1
6500 RETURN
6510 '
6520 REM +-t-+++-M"M-«"t- get the breakdown point and display it
6530 '
6540 IF DISFLG=0 THEN 7600 ELSE CLS
6550 '
6560 GOSUB 20270
6570 '
6580 CLS:LOCATE 10.1
6590 PRINT USING"* *#.* &";" Sparking resistivity at this voltage is:
";RBDOCM;" ohm-cm, or less."
6600 '
6610 LOCATE 12.10
6620 PRINT TAB(27)"Onset voltage is ";VBD;" V";CHR$(13);TAB(25)"Current density
is ";:PRINT USING "****.*&";JBDMIN*100000!;" nA/cm2 under the wire"
A-7
-------
6630 '
6640 LOCATE 17.21
6650 PRINT USING "*.* &";"Voltage/Wire-plate spacing =";EAVG/100000!;"kV/cm"
6660 LOCATE 18,21
6670 PRINT USING "&**.* &";"Breakdown field at plate =";EBD/100000!;"kV/cm"
6680 LOCATE 19,21
6690 PRINT USING "&**.* 4";"Maximum field at plate =";EMAX/100000!;"kV/cro"
6700 LOCATE 20,21
6710 PRINT USING "*.* &";"Average field at plate =";EPAV/100000!:"kV/cm"
6720 GOTO 2130 :REM beep and hold
6730 '
6740 REM +++++-i"t"i-++-i"i-++-i"i-+-H"t"f+ upper limit on current density +++++++-i-+-r-i-+-i"C+"i"i-
6750 '
6760 CLS:LOCATE 12,4
6770 INPUT"Enter an upper limit for the current density (nA/cm2): ";JPEAK
6780 JSTEP=JPEAK/20
6790 RETURN
6800 '
6810 REM +++•(-+++++++++++++-»•++++ back corona point ++++++++++++++++++++++++++
6820 '
6830 IF DISFLG=0 THEN 7600 ELSE CLS
6840 GOSUB 20710
6850 RETURN
6860 '
7000 REM ******************** Display Option Menu a"***************************
7010 '
7020 VD=VBD:REM set it on entry to the display routines
7030 IMY=1
7040 SCREEN 0,BURST:CLS:CTOP=11:CBOT1=2:CBOT2=3:CTY=IMY:CMY=10
7050 CY=CTY+5:CX=36
7060 '
7070 OPEN"disply.men" FOR INPUT AS 2
7080 GOSUB 1420
7090 CLOSE 2
7100 '
7110 REM This is the routine for moving the cursor up or down
7120 '
7130 CSET=14:GOSUB 1290
7140 '
7150 GOSUB 1020 :REM blinks cursor at CX.CY
7160 '
7170 IF A=27 THEN RETURN
7180 '
7190 IF IMY=CMY THEN RETURN
7200 IF IMY=1 THEN GOSUB 7310
7210 IF IMY=2 THEN GOSUB 7360
7220 IF IMY=3 THEN GOSUB 7410
7230 IF IMY=4 THEN GOSUB 7440
7240 IF IMY=5 THEN GOSUB 7470
7250 IF IMY=6 THEN GOSUB 7500
7260 IF IMY=7 THEN GOSUB 7530
7270 IF IMY=8 THEN GOSUB 28020
7280 '
7290 GOTO 7040
7300 '
7310 IF IBM=0 THEN SCREEN 3,BURST ELSE SCREEN 2,0
7320 GOSUB 29150:REM set palette
A-8
-------
7330 GOSUB 16130:REM module display
7340 RETURN
7350 '
7360 IF IBM=0 THEN SCREEN 3,BURST ELSE SCREEN 2,0
7370 GOSUB 29150:REM set palette
7380 GOSUB 16020:REM section display
7390 RETURN
7400 '
7410 IF DISFLGOO THEN GOSUB 21020 ELSE GOSUB 7600:REM wire v-j
7420 RETURN
7430 '
7440 IF DISFLGOO THEN GOSUB 22020 ELSE GOSUB 7600:REM wire v-i/1
7450 RETURN
7460 '
7470 IF DISFLGOO THEN GOSUB 23020 ELSE GOSUB 7600:REM section v-j
7480 RETURN
7490 '
7500 IF DISFLGOO THEN GOSUB 24020 ELSE GOSUB 7600 :REM current density
7510 RETURN
7520 '
7530 IF DISFLGOO THEN GOSUB 25040 ELSE GOSUB 7600:REM electric field
7540 RETURN
7550 '
7560 RETURN
7570 '
7580 REM ++-i-++++++-t-++++-i-+-t-+ flash message +++++++++++++++++++++++++++-I-++
7590 '
7600 PRINT " CALCULATE FIRST ";
7610 FOR 1=1 TO 1000:NEXT I
7620 '
7630 RETURN
7640 '
8000 REM *************** Print options menu *****************************
8010 '
8020 IMY=3
8030 SCREEN 0,BURST:CLS:CTOP=11:CBOT1=2:CBOT2=3:CTY=IMY:CMY=8
8040 CY=CTY+5:CX=36
8050 '
8060 OPEN"prt.men" FOR INPUT AS 2
8070 GOSUB 1420
8080 CLOSE 2
8090 '
8100 REM This is the routine for moving the cursor up or down
8110 '
8120 CSET=14:GOSUB 1290
8130 '
8140 GOSUB 1020 :REM scanner for Up/Dn
8150 '
8160 IF A=27 THEN RETURN
8170 '
8180 IF IMY=1 THEN GOSUB 8300
8190 IF IMY=2 THEN GOSUB 8380
8200 IF IMY=3 THEN GOSUB 8330
8210 IF IMY=4 THEN 8140
8220 IF IMY=5 THEN GOSUB 8470
8230 IF IMY=6 THEN GOSUB 8550
8240 IF IMY=7 THEN 8140
A-9
-------
8250 IF IMY-CMY THEN RETURN
8260 GOTO 8030
8270 '
8280 REM ++++++++++-I-+++++ Printer
8290 '
8300 OUTDEV$="PRN"
8310 GOTO 30020
8320 '
8330 REM +-4-++++++++++++++-I- Screen
8340 '
8350 OUTDEVS="SCRN:"
8360 GOTO 30020
8370 '
8380 REM ++++++++++++++++J- File
8390 '
8400 CLS:LOCATE 12,25
8410 LINE INPUT "File name for output? ";AS
8420 IF A$="" THEN RETURN ELSE OUTDEV$=A$
8430 GOTO 30020
8440 '
8460 '
8470 OPEN"SRI.DAT" FOR OUTPUT AS 2
8480 CLOSE 2 :REM erase the file
8490 '
8500 SECCNT=0:FOR 1=0 TO 10:VOP(I)=0:JOP(I)=0:EOP(I)=0:OPS(I)="":PP(I)=0:PL(I)=0
:NEXT I
8510 RETURN
8520 '
8530 REM •*•+++•*•+-(--*••*•+++-!••»• SRI file update +++++++++-t-+++++-t-+-t-+++-t-+-i-+++-*-++++++++
8540 '
8550 CLS:LOCATE 2.26:PRINT "SRI Model Section Output Data"
8560 LOCATE 4,20:PRINT "Section Voltage CD E plate File";
8570 LOCATE 5,20:PRINT " (V) (nA/cm2) (kV/cm)";
8580 FOR 1=1 TO SECCNT
8590 LOCATE 6+1,22:PRINT USING"** **##### *#**#.# #*##.*# &";I.VOP(I)
.JOP(I),EOP(I),OP$(I);
8600 NEXT I
8610 '
8620 LOCATE 24,21:PRINT"A section number of 0 will abort any update.";
8630 '
8640 LOCATE 8+SECCNT,20:INPUT "What is the section number"; SECNO
8650 IF SECNO=0 THEN RETURN ELSE IF SECNO>10 THEN SECNO=10
8660 GOSUB 32180:REM interpolate average current density
8670 VOP(SECNO)=VBD:JOP(SECNO)=JAV*100000!:EOP(SECNO)=EPAV*.00001:OPS(SECNO)=FIL
ES:PP(SECNO)=2*SX:PL(SECNO)=TLEN/12
8680 IF SECNO>SECCNT THEN SECCNT=SECNO
8690 '
8700 OPEN "SRI.DAT" FOR OUTPUT AS 2
8710 WRITE *2, TEMP.PR.MU
8720 FOR 1=1 TO SECCNT:WRITE *2. VOP(I),JOP(I),EOP(I),OP$(I),PP(I),PL(I):NEXT I
8730 CLOSE 2
8740 '
8750 RETURN
8760 '
9000 REM ***** Configuration nenu for selecting the task to be done *********
9010 '
A-10
-------
9020 IMY=1
9030 SCREEN 0 .BURST:CLS:CTOP=11 :CBOT1=3: CBOT2=3:CTY=IMY:CMY=11
9040 CY=CTY+5:CX=36
9050 '
9060 OPEN "config.men" FOR INPUT AS 2
9070 GOSUB 1420
9080 CLOSE 2
9090 '
9100 REM This is the routine for moving the cursor up or down
9110 '
9120 CSET=14:GOSUB 1290
9130 '
9140 GOSUB 9390
9150 GOSUB 9440
9160 GOSUB 9480
9170 GOSUB 9520
9180 GOSUB 9560
9190 GOSUB 9630
9200 GOSUB 9670
9210 '
9220 GOSUB 1020 :REM scanner for Up/Dn
9230 '
9240 IF A=27 THEN RETURN
9250 '
9260 IF IMY=1 THEN BURST=(BURST-*-1 )MOD 2
9270 IF IMY=2 THEN WRAP=(WRAP+1) MOD 2
9280 IF IMY=3 THEN AUCL=(AUCL+1) MOD 2
9290 IF IMY=4 THEN CGP=(CGP+1) MOD 2
9300 IF IMY=5 THEN IBM=(IBM+1) MOD 2
9310 IF IMY=6 THEN PTFLG=(PTFLG+1) MOD 2
9320 IF IMY=7 THEN ISAT=(ISAT+1) MOD 2
9330 IF IMY=8 THEN GOSUB 9710
9340 IF IMY=9 THEN GOSUB 9760
9350 IF IMY=CMY THEN RETURN
9360 '
9370 GOTO 9140
9380 '
9390 LOCATE 6.50
9400 IF BURST=0 THEN PRINT"B&W "; ELSE PRINT"COLOR";
9410 IF BURST=0 THEN PTFLG=0
9420 RETURN
9430 '
9440 LOCATE 7.59
9450 IF WRAPOO THEN PRINT"ON ";ELSE PRINT"OFF" :
9460 RETURN
9470 '
9480 LOCATE 8,59
9490 IF AUCLOO THEN PRINT"ON " ; ELSE PRINT"OFF" ;
9500 RETURN
9510 '
9520 LOCATE 9,65
9530 IF CGPOO THEN PRINT"READY "; ELSE PRINT"NOT AVAILABLE"
9540 RETURN
9550 '
9560 LOCATE 10.63
9570 IF IBM=0 THEN PRINT"TANDY 2000"; ELSE PRINT"IBM ";
9580 IF IBM 00 THEN CGP=0
A-ll
-------
9590 IF IBMOO THEN PTFLG=0
9600 GOSUB 9520
9610 RETURN
9620 '
9630 LOCATE 11.63
9640 IF PTFLG=0 THEN PRINT"ON "; ELSE PRINT"OFF";
9650 RETURN
9660 '
9670 LOCATE 12,63
9680 IF ISAT=0 THEN PRINT"ON "; ELSE PRINT"OFF";
9690 RETURN
9700 '
9710 OPEN "esp.cnf" FOR INPUT AS 1
9720 INPUT fl. BURST.WRAP.AUCL.CGP.IBM.PTFLG.ISAT
9730 CLOSE 1
9740 RETURN
9750 '
9760 OPEN "esp.cnf" FOR OUTPUT AS 1
9770 WRITE #1.BURST.WRAP,AUCL,CGP,IBM,PTFLG,ISAT
9780 CLOSE 1
9790 RETURN
9800 '
10000 REM +++-i"i-++++++-t- Data Loading Routine
10010 ON ERROR GOTO 10410
10020 '
10030 GOSUB 5300
10040 '
10050 OPEN FILES FOR INPUT AS #3
10060 '
10070 INPUT #3.TEMP.PR.MUO,SPCH.SPCINC.POL$
10080 FOR 1=0 TO NWM
10090 INPUT #3.DUMMY.RC(I),RF(I),ASY(I)
10100 NEXT I
10110 PNPUT #3.NW,NMOD,INDEX
10120 INPUT *3,RENG.SX,MLEN,ENDLEN,FILES
10130 '
10140 CLOSE 3
10150 CLCFLG=0:DISFLG=0
10160 '
10170 GOSUB 1910:REM module arranger
10180 '
10190 ON ERROR GOTO 0
10200 RETURN
10210 '
10220 REM ++++++++++++ Data Saving Routine
10230 ON ERROR GOTO 10410
10240 '
10250 GOSUB 5300
10260 '
10270 OPEN FILES FOR OUTPUT AS #3
10280 '
10290 WRITE *3.TEMP,PR,MUO,SPCH,SPCINC.POLS
10300 FOR 1=0 TO NWM
10310 WRITE *3,I.RC(I),RF(I),ASY(I)
10320 NEXT I
10330 WRITE *3.NW.NMOD,INDEX
10340 WRITE *3,RENG,SX,MLEN.ENDLEN,FILES
A-12
-------
10350 '
10360 CLOSE 3
10370 '
10380 ON ERROR GOTO 0
10390 RETURN
10400 '
10410 LOCATE 15,32:PRINT "Operation Aborted."
10420 CLOSE 3
10430 RESUME 10390
10440 '
11000 REM ************** Numerical input of environment data *******************
11010 '
11020 SCREEN 0,BURST
«11030 GOSUB 1830-.REM redefine keys
11040 NY=1:CLS:CTOP=14:CBOT1=2:CBOT2=2:CMY=10:CDY=8:CTY=NY
11050 '
11060 OPEN"numenv.men" FOR INPUT AS 2
11070 GOSUB 1420:REM read the screen text
11080 CLOSE 2
11090 '
11100 CSET=14:GOSUB 1290
11110 '
11120 LOCATE 6,34
11130 PRINT USING"**.**";2*SX
11140 LOCATE 7.32
11150 PRINT USING"***#";TEMP
11160 LOCATE 8,34
11170 PRINT USING"##.##";PR
11180 LOCATE -9,34
11190 PRINT USING"**.** ";MUO
11200 LOCATE 10,35
11210 PRINT POLS
11220 LOCATE 11.33
11230 PRINT USING "***.*";SPCH*1000000!
11240 LOCATE 12.34
11250 PRINT USING "**.**";SPCINC
11260 '
11270 GOSUB 15820:REM blank out string arrays for data input
11280 '
11290 REM This is the routine for moving the cursor up or down
11300 '
11310 CSET=11:GOSUB 1290
11320 '
11330 LOCATE CY.48.0
11340 PRINT BLS:
11350 CY=CTY^5
11360 CX=48
11370 '
11380 GOSUB 1130:REM cursor blink routine
11390 '
11400 A=ASC(A$)
11410 IF A=27 THEN 1870 ELSE IF A>12 AND A<23 THEN 11490
11420 IF A=30 THEN GOSUB 1340
11430 IF A=31 THEN GOSUB 1370
11440 NY=CTY
11450 '
11460 IF A>42 THEN GOSUB 1670:REM string input
A-13
-------
11470 GOTO 11330
11480 '
11490 IF NY=5 THEN GOSUB 11960:REM toggle polarity and mobility
11500 '
11510 IF A=20 OR NY=9 THEN GOSUB 11550:REM reset values but stay in menu
11520 IF NY=CMY THEN 1870:REM reset all keys and return
11530 IF A=20 OR NY=9 THEN 11120 ELSE GOTO 11330
11540 '
11550 REM setting routine and exit
11560 '
11570 IF T$(l)="" THEN 11620
11580 '
11590 REM Wire-plate spacing
11600 SX=VAL(T$(l))/2
11610 '
11620 IF T$(2)="" THEN 11670
11630 '
11640 REM Temperature
11650 TEMP=VAL(T$(2 ) )
11660 '
11670 IF TS(3)="" THEN 11720
11680 '
11690 REM Pressure
11700 PR=VAL(T$(3))
11710 '
11720 IF T$(4)="" THEN 11770
11730 '
11740 REM mobility
11750 MUO=VAL(TS(4))
11760 '
11770 IF T$(5)="" THEN 11830
11780 '
11790 REM polarity
11800 IF LEFT$(T$(5),!)<>"<" THEN 11830
11810 IF POL$="" THEN POL$="" ELSE IF POL$="" THEN
POLS=""
11820 '
11830 IF T$(6)="" THEN 11880
11840 '
11850 REM space charge
11860 SPCH=VAL(T$(6))/1000000!
11870 '
11880 IF T$(7)="" THEN 11930
11890 '
11900 SPCINC=VAL(T$(7))
11910 IF SPCINC>=1 THEN SPCINC=.99
11920 '
11930 CLCFLG=0:DISFLG=0
11940 RETURN
11950 '
11960 IF POLS="" THEN TS(5)="" ELSE IF POLS="" THE
N T$(5)=""
11970 '
11980 LOCATE 10.53:PRINT T$(5)
11990 IF T$(5)="" THEN TS(4) ="1.82E-04" ELSE IF TS(5)="" TH
EN TS(4) ="1.79E-04"
12000 LOCATE 9,53:PRINT T$(4)
A-14
-------
12010
12020
13000
13010
13020
13030
13040
13050
13060
13070
13080
13090
13100
13110
13120
13130
13140
13150
13160
13170
13180
13190
13200
13210
13220
13230
13240
13250
13260
13270
13280
13290
13300
13310
13320
13330
13340
13350
13360
13370
13380
13390
13400
13410
13420
13430
13440
13450
13460
13470
13480
13490
13500
13510
13520
13530
13540
RETURN
t
REM ************** Numerical input of module data **********************
1
SCREEN 0.BURST
GOSUB 1830:REM redefine keys
NY=1:NGW=1:CLS:CTOP=14:CBOT1=2:CBOT2=2:CMY=9:CDY=5:CTY=NY
1
OPEN"numinp.men" FOR INPUT AS 2
GOSUB 1420
CLOSE 2
t
CSET=14:GOSUB 1290
1
GOSUB 13510:REM print the wire # dependent data
I
GOSUB 13580:REM draw wires at bottom of screen
I
GOSUB 15820:REM blank out arrays for data input
l
REM This is the routine for moving the cursor up or down
i
CSET=11:GOSUB 1290
I
LOCATE CY.48.0
PRINT BLS;
CY=CTY+4:CX=48
GOSUB 1130:REM cursor blink routine (we need to check for several keys)
I
A=ASC(A$)
IF A=27 THEN 1870 ELSE IF A>12 AND A<23 THEN 13410
IF A=30 THEN GOSUB 1340
IF A=31 THEN GOSUB 1370
NY=CTY
I
IF A=28 THEN NGW=(NGW MOD NW)+ 1
IF A=29 THEN NGW=NGW-1-(NW*(NGW=1))
IF A=28 OR A=29 THEN GOSUB 13730
I
IF A>42 THEN GOSUB 1670
GOTO 13220
I
CLCFLG=0:DISFLG=0
IF A=20 THEN GOSUB 13800
IF NY=6 THEN GOSUB 13800:REM enter new values
IF A=21 THEN GOSUB 13990
IF NY=7 THEN GOSUB 13990:REM copy right
IF A=22 THEN GOSUB 14100
IF NY=8 THEN GOSUB 14100:REM copy left
IF NY=CMY THEN 1870:REM restore keys and exit
GOTO 13120:REM print the new values
1
LOCATE 5,34:PRINT USING"*#";NGW
LOCATE 6,35:PRINT USING"*.*#*";2*RC(NGW)
LOCATE 7,33: PRINT USING"***.*";ASY(NGW)
LOCATE 8,34:PRINT USING"**";NW
A-15
-------
13550 LOCATE 9,35:PRINT USING"*.**";RF(NGW)
13560 RETURN
13570 '
13580 REM wire drawing routine for indexing
13590 '
13600 LOCATE 20.1
13610 PRINT USING"&*#*.*&";"<"+STRING$(33,"-")+" ";MLEN;" in."+STRING$(33,"-")+"
>"
13620 '
13630 LOCATE 17.1
13640 PRINT TAB(80);
13650 FOR 1=1 TO NW
13660 ATEMP=ASY(I)*78/MLEN+1
13670 IF ATEMP<79 THEN LOCATE .ATEMP ELSE LOCATE .79
13680 PRINT "o";
13690 NEXT I
13700 '
13710 REM entry point for just moving arrow
13720 '
13730 LOCATE 18,1
13740 ATEMP=ASY(NGW)*78/MLEN+1
13750 IF ATEMP<79 THEN PRINT TAB(ATEMP) CHR$(24);TAB(80); ELSE PRINT TAB(79) CHR
$(24);TAB(80);
13760 '
13770 GOSUB 13510:REM update values
13780 RETURN
13790 '
13800 REM reset the currently displayed wire # variables
13810 '
13820 IF TS(1)="" THEN 13860
13830 NGW=VAL(T${1))
13840 IF NGW>NWM THEN NGVNNWM
13850 IF NGW>NW THEN NW=NGW
13860 IF T$(2)="" THEN 13890
13870 RENG=VAL(T$(2J)/2
13880 RC(NGW)=RENG
13890 IF TS(3)="" THEN 13910
13900 ASY(NGW)=VAL(T$(3))
13910 IF T$(4)="" THEN 13940
13920 NW=VAL(T$(4))
13930 IF NGW>NW THEN NGW=NW
13940 IF T$(5)="" THEN 13970
13950 RF(NGW)=VAL(T$(5))
13960 '
13970 GOTO 1910:REM reset number of modules if needed
13980 '
13990 REM copy all the present values to the right
14000 '
14010 AVGSY=ASY(NGW)/NGW
14020 FOR I=NGW«-1 TO NW
14030 IF NY=2 OR NY=7 THEN RC(I)=RC(NGW)
14040 IF NY=5 OR NY=7 THEN RF(I)=RF(NGW)
14050 IF NY=3 OR NY=7 THEN ASY(I)=I*AVGSY
14060 NEXT I
14070 '
14080 GOTO 1910
14090 '
A-16
-------
14100 REM copy all present values to the left
14110 '
14120 AVGSY=ASY(NGW)/NGW
14130 FOR 1=1 TO NGW-1
14140 IF NY=2 OR NY=8 THEN RC(I)=RC(NGW)
14150 IF NY=5 OR NY=8 THEN RF(I)=RF(NGW)
14160 IF NY=3 OR NY=8 THEN ASY(I)=I*AVGSY
14170 NEXT I
14180 '
14190 GOTO 1910
14200 '
15000 REM ************ Arrangement of modules input ****************************
15010 '
15020 SCREEN 0,BURST
15030 GOSUB 1830:REM redefine keys
15040 GOSUB 1910:REM reset number of modules if necessary
15050 NMY=1:CLS:CTOP=14:CBOT1=2:CBOT2=12:CMY=6:CDY=5:CTY=NMY
15060 '
15070 OPEN"mod.men" FOR INPUT AS 2
15080 GOSUB 1420:REM read the screen text
15090 CLOSE 2
15100 '
15110 CSET=14:GOSUB 1290
15120 '
15130 LOCATE 6,34
15140 PRINT USING"**";NMOD
15150 LOCATE 7,33
15160 PRINT USING"***.*";MLEN;
15170 LOCATE 8,34
15180 PRINT USING "*#.#*"jENDLEN
15190 LOCATE 9,10
15200 IF MLFLG>0 THEN PRINT " module length set by wire spacing "; ELSE PRINT
TAB(79)
15210 LOCATE 16,32
15220 PRINT USING"****.*";TLEN
15230 LOCATE 17.34
15240 PRINT USING"**";INDEX;
15250 IF NWFLG>0 THEN PRINT " * modules truncated " ELSE PRINT "
15260 '
15270 GOSUB 15820:REM blank out string arrays for data input
15280 '
15290 REM This is the routine for moving the cursor up or down
15300 '
15310 CSET=11:GOSUB 1290
15320 '
15330 LOCATE CY.48.0
15340 PRINT BLS;
15350 CY=CTY-t-5
15360 CX=48
15370 '
15380 GOSUB 1130:REM cursor blink routine
15390 '
15400 A=ASC(A$)
15410 IF A>42 THEN GOSUB 1670:REM string input
15420 IF A=13 THEN 15510
15430 IF A=27 THEN 1870 :REM reset keys and exit
A-17
-------
15440 IF A=20 THEN 15540:REM pressed
15450 IF A=30 THEN GOSUB 1340
15460 IF A=31 THEN GOSUB 1370
15470 NMY=CTY
15480 '
15490 GOTO 15330
15500 '
15510 IF NMY=5 THEN 15540
15520 IF NMY=CMY THEN 1870:REM reset all the keys and return
15530 '
15540 GOSUB 15610
15550 GOTO 15130:REM re-display the numbers
15560 '
15570 REM setting routine and exit
15580 '
15590 GOSUB 1870:REM reset the soft keys
15600 '
15610 IF T$(l)="" THEN 15660
15620 '
15630 REM * of modules
15640 NMOD=VAL(T$(1))
15650 '
15660 IF TS(2)="" THEN 15710
15670 '
15680 REM module length
15690 MLEN=VAL(T$(2))
15700 '
15710 IF T$(3)="" THEN 15760
15720 '
15730 REM end length
15740 ENDLEN=VAL(T$(3))
15750 '
15760 CLCFLG=0:DISFLG=0
15770 GOTO 1910
15780 '
15790 REM «<««««««« blanking routines »»»»»»»>»»»»»»»»
15800 REM blank out the temporary string array for data input
15810 '
15820 FOR 1=1 TO 24:T$(I)="":NEXT I
15830 '
15840 REM blank out the input area
15850 '
15860 FOR 1=1 TO CDY:LOCATE 1+4.51:PRINT TAB(80);:NEXT I
15870 '
15880 RETURN
15890 '
16000 REM ***************** Display routine for whole section **************
16010 '
16020 CLS:LOCATE 1,19
16030 PRINT"S ECTION CONFIGURATION";
16040 '
16050 XLEN=TLEN:DLEN=9:IM=1:IN=INDEX
16060 '
16070 GOSUB 29480:REM put up the section
16080 '
16090 GOTO 2130:REM press any key
16100 '
A-18
-------
16110 REM +++++++•(-++•»•++•»-+ nodule drawing routine
16120 '
16130 CLS:XLEN=MLEN:DLEN=8
16140 '
16150 LOCATE 1.20
16160 PRINT"M ODULE CONFIGURATION"
16170 '
16180 FOR 1=5 TO 21 :LOCATE 1,10:PRINT" I " ; :LOCATE,71 -.PRINT" I " ; :NEXT I
16190 '
16200 IN=NW:IM=0:REM set to module wires
16210 '
16220 GOSUB 29480:REM put up display
16230 '
16240 LOCATE 3,5
16250 PRINT "To scale: 1";CHR$(34);" =";ISO/IS;CHRS(34)
16260 '
16270 GOSUB 16590:REM scale at top
16280 '
16290 GOTO 2130:REM press any key
16300 '
16310 REM ++++++++++++++++++-I- wire-plate drawing routine
16320 '
16330 REM This is the plate drawing routine.
16340 YMO=200/(1+IBM):REM IBM=0 for tandy, 1 for ibm computers
16350 CYN=YMO-SX*ISY:PLTH=8*ISY/ISO:CXN=320+FLEN*ISO/2
16360 Y=-ABS(YMO-CYN)+YMO:PLSR=Y-1-PLTH:PLSP=PLSR+PLTH
16370 LINE (640-CXN,PLSR}-(CXN,PLSP),GRCOL.BF
16380 PLSR=PLSP+1
16390 LINE(640-CXN,PLSR)-(CXN-1,PLSR),WCOL
16400 PLSR=2*YMO-PLSR +1:PLSP=PLSR+PLTH
16410 LINE(640-CXN,PLSR)-(CXN.PLSP),GRCOL,BF
16420 PLSR=PLSR-1
16430 LINE(640-CXN,PLSR)-(CXN-1.PLSR),WCOL
16440 RETURN
16450 '
16460 REM This is the circle drawing routine. Set IN to the number of wires draw
n
16470 REM set IM=0 for module display. IM=1 for section display
16480 '
16490 LB=LBOUND*ISO
16500 FOR 1=1 TO IN
16510 TCX=LB+(ASY(I)+(ENDLEN*IM))*IS
16520 TCY=200/(1+IBM)
16530 CIRCLE(TCX.TCY),RC(I)*IS,YCOL
16540 NEXT I
16550 RETURN
16560 '
16570 REM This is the drawer for the scale at the top.
16580 '
16590 YMO=60/(1+IBM):YM1=55/(1+IBM)
16600 LB=LBOUND*ISO:RB=LB+FLEN*ISO
16610 LINE (LB.YMO)-(RB.YMO),CYCOL
16620 FOR I=LB TO RB STEP IS
16630 LINE(I.YMO)-(I,YM1),CYCOL
16640 NEXT I
16650 YM1=37/(1+IBM)
16660 LINE(580-IS,YM1)-(580,YM1).CYCOL
A-19
-------
16670 LOCATE 3.74,0
16680 PRINT "=1"+CHR$(34);
16690 RETURN
16700 '
17000 REM ++-I-++-I-++++-H-++++ starting voltage calculation +++++
17010 '
17020 CLS: LOCATE 1.11
17030 PRINT'C ALCULATING STARTING VOLT
17040 PL$="+"
17050 '
17060 GOSUB 29020:REM convert quantities to metric
17070 '
17080 REM cycle through all the wires to get the single wire
17090 '
17100 VMIN=200000!
+ + -1- + + + + + + •+• •+• -4- •+• + 4- + + + -t-
AGES"
starting voltages
17110 IF POL$="" THEN ACONST=.0301 ELSE IF POL$="" THEN ACON
ST=.0266
17120 IF POLS="" THEN EBDO=630000! ELSE EBDO=500000
17130 '
17140 FOR 1=1 TO INDEX
17150 '
17160 LOCATE 3 ,40+4*(-INDEX/2+( 1-1 ) ) :PRINT PL$
17170 EC ( I ) =3126000 ! *RF ( I ) * ( RELD+ACONST*SQR( RELD/ACM( I ) ) ) : REM
d at wire
17180 CA=PI*ACM(I)/(2*SXM) :C1 ( I )=COS(CA) :REM ratio of radius
17190 IF CA>.1 THEN Pl=( 1+C1 ( I ) )/(l-Cl( I ) ) ELSE P1=(4/(CA*CA)
17200 LP1(I)=LOG(P1):VO(I)=EC(I)*ACM(I)/2*LP1(I) :REM wire by
17210 VS(I)=VO(I)
17220 NEXT I
17230 '
17240 FOR 1=1 TO INDEX
17250 LOCATE , 40+4* ( -INDEX/2 +(1-1))
17260 PRINT PLS;
17270 VSUM=0
17280 SO=MSY(I)
17290 '
17300 FOR J=l TO INDEX
17310 IF J=I THEN 17380 :REM skip the current wire
17320 S1=MSY(J)
17330 SYM=ABS(Sl-SO)/2
17340 IF SYM>4*SXM THEN 17380: REM skip far away wires
17350 C2=PI*SYM/SXM:CXO=EXP(C2):CXl=(CXO-i-(l/CXO))/2
17360 T=C1(J)/CX1:P2=(1+T)/(1-T)
17370 VSUM=VSUM+LOG(P2)/LP1(I)
17380 NEXT J
17390 '
17400 VS(I)=VO(I)/(1-VSUM):IF VS(I )>200000! THEN VS(I)=200000
17410 NEXT I
17420 '
17430 REM space charge influence on starting voltage
17440 '
17450 FOR 1=1 TO INDEX
1 7460 LSPCH ( I ) =SPCH* ( 1 ! -SPCINC )'(!-!)
17470 VS ( I ) =VS ( I ) +LSPCH ( I ) /EPSO* ( SXM" 2-ACM ( I ) '2 ) /2
17480 IF VMIN>VS(I) THEN VMIN=VS(I)
17490 NEXT I
17500 '
t
Peek electric fiel
to plate spacing
)-l
itself
1
A-20
-------
17510 GOSUB 17680:REM get the sparkover voltage
17520 '
17530 IF AUCL=1 THEN RETURN
17540 '
17550 CLS:SCREEN 0.BURST:LOCATE 1,24
17560 PRINT"S TARTING VOLTAGES"
17570 PRINT:PRINT TAB(10)"From the leftmost wire:":LOCATE 5.1
17580 '
17590 FOR 1=1 TO INDEX:PRINT TAB(25)I;TAB(35)VS(I):NEXT I:REM print
17600 '
17610 LOCATE 22,19
17620 PRINT USING "& *###**";"Maximum sparkover voltage =";VSPARK;
17630 '
17640 RETURN
17650 '
17660 REM -i"t-++++.i-+-r+++.t»t"t.+ sparkover at zero current +++++++++++++++++•<-+++++++
17670 '
17680 EBD=EBDO*(273/TDK*PR)'1.65 :REM Phelps and Griffiths, JAP 47,2929 (July 19
76)
17690 VSPARK=EBD*SXM*2/PI*LOG(4*SXM/(PI*.0127))
17700 VSPARK=INT(VSPARK/100+50)*100:VBD=VSPARK:REM set it now
17710 '
17720 RETURN
17730 '
18000 REM ******************** v-j curve calculation **************************
18010 '
18020 REM this routine calculates a full V-j curve'for each wire and then interp
olates at the voltage increments between the lowest V start and the lowest V(200
nA/cm2).
18030 '
18040 CLS:IJMIN=1:IJMAX=INDEX:VMAX=100000!
18050 '
18060 GOSUB 20100:REM calculate saturation curve
18070 '
18080 LOCATE 1,7
18090 PRINT"C ALCULATING VOLTAGES AND CURRENTS"
18100 LOCATE 24,23
18110 PRINT"Press to abort calculation.":
18120 Z$=CHR$(248)
18130 '
18140 REM set up boundary array in inches for later use
18150 '
18160 BSY(0)=-ENDLEN:BSY(INDEX)=(MLEN*NMOD+ENDLEN)
18170 '
18180 FOR 1 = 1 TO INDEX-l:BSY(I) = (ASY(I)-i-ASY(I-i-l))/2:NEXT I
18190 '
18200 GF=SXM/(EPSO*MU)
18210 '
18220 FOR KJ=0 TO 20 :REM 20 steps of JPEAK/20 current density under the wire'
18230 JO=KJ*JSTEP*.00001
18240 JGF=JO*GF
18250 '
18260 REM Compute voltage for cylinder geometry, and get VMAX for later interp.
18270 '
18280 FOR 1=1 TO INDEX
18290 IF KJ>0 THEN 18310
18300 El(I)=(EC(I)*ACM(I)*PI/2+LSPCH(I)/EPSO*SXM*SXM)
A-21
-------
18310 IF VS(I)VMAX THEN 18900
18830 FOR J=l TO 20
18840 '
18850 A$=INKEY$:IF A$=CHR${27) THEN RETURN
18860 '
A-22
-------
18870 IF VC(K)>V(J.I) OR VC(K)<=V(J-l.I) THEN 18890
18880 IC(K)=IC(K)+IL(J-1.I) + ((VC(K)-V(J-l,I))/(V(J,I)-V(J-l.I)))*(IL(J,I)-IL(J-
18890 NEXT J
18900 NEXT I
18910 '
18920 IC(K)=IC(K)/(2*SYL):REM divide by plate length for current density
18930 '
18940 IF VC(K)>=VSPARK THEN CSET=12:GOSUB 1290
18950 LOCATE K-f-4,25,0
18960 PRINT USING "*# *##### **####.*";K.VC(K),IC(K)*100000!:
18970 NEXT K
18980 LOCATE 24,55,0:CSET=14:GOSUB 1290
18990 '
19000 RETURN
19010 '
20000 REM ++++++-i-++++-("i-i-+ exponent calculation
20010 '
20020 EW=E1(I)
20030 SP=LSPCH(I)/EPSO*SXM*SXM
20040 ESAT=JGF*SXM*SXM
20050 ESEW=(ESAT/(ESAT-«-EW*EW))-4
20060 ESSP=(SP/EW)
20070 JEXP=(l-ESEW)*2.58t-ESEW*4+ESSP*l!
20080 RETURN
20090 '
20100 REM ++ saturation current density routine
20110 '
20120 IF ISAT>0 THEN RETURN
20130 VS(0)=0:THETA=PI/2:CEXP=2
20140 GOSUB 32020
20150 FACTOR=2*INTTH:REM symmetric distribution
20160 FOR KJ=0 TO 20
20170 J=KJ*JSTEP*.00001
20180 V(KJ.O)=SQR(SXM"3/(MU*EPSO)*J)
20190 IL(KJ,0)=2*J*FACTOR*SXM :REM maximum current from a wire
20200 JO(KJ,0)=J - :REM maximum current density on plate
20210 NEXT KJ
20220 '
20230 RETURN
20240 '
20250 REM ++++++++++++++-i-++++ breakdown operating point
20260 '
20270 EBD=EBDO*(273/TDK*PR)"1.65 :REM Phelps and Griffiths, JAP 47,2929 (July 19
76)
20280 '
20290 REM find the JO at ebd under each wire, the voltage for each wire, and min
V
20300 '
20310 VTST=VMAX:VBD=INT(INT(VMAX/100)*100)
20320 JP=JPEAK*.00001:JBDMIN=JP:IMAX=1
20330 '
20340 FOR 1=1 TO INDEX
20350 JBD(I)=0
20360 IF VMAX
-------
/EPSO*RXM)*2)/(1-(ACM(I)/SXM)"2)*(SXM/RXM)
20390 IF JBD(I)<0 THEN JBD(I)=0 ELSE IF JBD(I)>JP THEN JBD(I)=JP
20400 K=INT(JBD(I)*100000!/JSTEP):REM get the proper nA/cm2 interval
20410 IF K<20 THEN VTST=V(K. I ) + ( ( JBD( I )*100000!-K*JSTEP) /JSTEP)*(V(K+1 . 1 )-V(K. I )
)
20420 GOTO 20460
20430 '
20440 IF VSPARKJPEAK*. 00001 THEN JBDMIN=JPEAK* .00001
20760 '
20770 VTST=VMAX
20780 VBD=INT(INT(VMAX/100)*100)
20790 K=INT((JBDMIN*100000! )/JSTEP):REM get proper nA/cm2 interval
20800 IMAX=1
20810 '
20820 FOR 1 = 1 TO INDEX
20830 IF VS(I)
-------
20920 GOTO 6610:REM print voltages, currents, fields, and hold
20930 '
20940 REM ++++++•*-++++++++++++ minimum field position
20950 '
20960 RXM=SQR(EC(I)*ACM(I)*PI*EPSO/(2*LSPCH(I)))
20970 IF RXM>SXM THEN RXM=SXM
20980 RETURN
20990 '
21000 REM ******************* Display V-j curves for individual wires **********
21010 '
21020 IF IBM=0 THEN SCREEN 3.BURST ELSE SCREEN 2,0
21030 GOSUB 29150:REM set palette
21040 '
21050 CLS
21060 LOCATE 1.14
21070 PRINT"Individual Wire Voltage-Current Density Relationship"
21080 LOCATE 2.1
21090 PRINT"nA/cm2"
21100 '
21110 GOSUB 21430
21120 '
21130 FOR 1=0 TO 10
21140 LOCATE 1*2+3.1.0
21150 PRINT INT(JPEAK/2-I*JSTEP);
21160 NEXT I
21170 '
21180 GOSUB 21550
21190 '
21200 IF ISAT=0 THEN IL=0 ELSE IL=1
21210 '
21220 FOR I=IL TO INDEX
21230 IF I>0 THEN COL=GCOL ELSE COL=BCOL
21240 LOCATE 3,74
21250 PRINT USING "##";!
21260 YO=360/(1+IBM)
21270 XO=VS(I)*560/100000!+50
21280 CIRCLE(XO.YO),2,COL
21290 FOR J=0 TO 20
21300 IF V(J.I)>100000! THEN 21380
21310 IF JO(J,I)>JPEAK».000005 THEN 21380
21320 X=V(J,I)*560/100000!+50
21330 Y=360/(1+IBM)-JO(J.I)*2000000!/JPEAK*33/(1+IBM)
21340 '
21350 LINE(XO,YO)-(X,Y).COL
21360 XO=X:YO=Y
21370 NEXT J
21380 NEXT I
21390 GOTO 21630
21400 '
21410 REM +++++++++++++++ drawing subroutines
21420 '
21430 Y1=30/(1+IBM):Y2=360/(1+IBM)
21440 IF IBMoO THEN GRCOL = 1
21450 LINE(50,Y1)-(50.Y2),YCOL
21460 LINE -(610.Y2),YCOL
21470 FOR 1=106 TO 610 STEP 56
21480 LINE(I.Y1)-(I.Y2-1),GRCOL
A-25
-------
21490 NEXT I
21500 FOR I=30/(1+IBM) TO 327/(l+IBM) STEP 33/fl+IBM)
21510 LINE(50,I)-(610,I),GRCOL
21520 NEXT I
21530 RETURN
21540 '
21550 FOR 1=0 TO 100 STEP 10
21560 LOCATE 24.1/1.45-1-5.5
21570 PRINT I;
21580 NEXT I
21590 LOCATE 24,78
21600 PRINT"kV";
21610 RETURN
21620 '
21630 IF VBD>100000! THEN 21660 ELSE X=VBD*560/100000!+50 •
21640 IF IBMOO THEN RCOL=1
21650 LINE(X.31/(1+IBM))-(X,358/(1+IBM)).RCOL
21660 '
21670 GOTO 2140:REM beep and hold
21680 '
22000 REM ******************* Display I/I curves for individual wires **********
22010 '
22020 IF IBM=0 THEN SCREEN 3.BURST ELSE SCREEN 2,0
22030 GOSUB 29150:REM set palette
22040 '
22050 CLS
22060 LOCATE 1,19
22070 PRINT"Individual Wire Current/meter Relationship"
22080 LOCATE 2,2
22090 PRINT"uA/m"
22100 '
22110 GOSUB 21430
22120 '
22130 FOR 1=0 TO 10
22140 LOCATE 1*2-1-3,1,0
22150 PRINT 5*(JPEAK*.5-I*JSTEP)
22160 NEXT I
22170 '
22180 GOSUB 21550
22190 '
22200 IF ISAT=0 THEN IL=0 ELSE IL=1
22210 '
22220 FOR I=IL TO INDEX
22230 IF I>0 THEN COL=GCOL ELSE COL=BCOL
22240 LOCATE 3,74
22250 PRINT USING "**";!
22260 YO=360/(1+IBM)
22270 XO=VS(I)*560/100000!+50
22280 CIRCLE(XO,YO).2,COL
22290 FOR J=0 TO 20
22300 IF V(J,I)>100000! THEN 22380
22310 IF IL(J,I)>.0000025*JPEAK THEN 22380
22320 X=V(J,I)*560/100000!+50
22330 Y=360/(1+IBM)-IL(J.I)«4000000!/JPEAK*33/(1+IBM)
22340 '
22350 LINE(XO,YO)-(X.Y),COL
22360 XO=X:YO=Y
A-26
-------
22370 NEXT J
22380 NEXT I
22390 GOTO 21630
22400 '
23000 REM +++++•*•++++++++ Display V-j curve for composite of wires
23010 '
23020 IF IBM=0 THEN SCREEN 3.BURST ELSE SCREEN 2.0
23030 GOSUB 29150:REM set palette
23040 '
23050 IF IBMOO THEN GRCOL=1
23060 CLS
23070 LOCATE 1,18
23080 PRINT"Section Voltage-Current Density Relationship"
23090 LOCATE 3,1
23100 PRINT"nA/cni2"
23110 VXMIN=INT(VMIN/10000)*10
23120 VXMAX=(INT(VMAX/10000)+1)*10
23130 IYMIN=0:IYMAX=(INT(IC(20)/.0001)+1)
23140 IF IYMAX<7 THEN YST=48 ELSE IF IYMAX<10 THEN YST=32 ELSE IF IYMAX<19 THEN
YST=16 ELSE IF IYMAX<37 THEN YST=8 ELSE IF IYMAX<73 THEN YST=4 ELSE RETURN'
23150 YL=IYMAX*YST/(1+IBM) :YLO=55/(1+IBM):XLO=50:XL=550
23160 XST=XL*10/(VXMAX-VXMIN):XSTO=XST/11
23170 LINE(XLO,YLO)-(XLO,YLO+YL).YCOL
23180 LINE -(XLO+XL.YLO+YL),YCOL
23190 FOR I=XLO+XST/2 TO XLO+XL STEP XST/2
23200 LINE(I,YLO)-(I,YLO-i-YL-l) .GRCOL
23210 NEXT I
23220 FOR I=YLO ID YLO+YL-YST/2 STEP YST/{1+IBM)*(1-(YST<9)-2*(YST=4))
23230 LINE(XLO,I)-(XLO+XL,I),GRCOL
23240 NEXT I
23250 '
23260 FOR 1=0 TO IYMAX STEP (1-(YST<9)-2*(YST=4))
23270 LOCATE I*YST/16+4.1
23280 PRINT (IYMAX-I)*10
23290 NEXT I
23300 LI=IYMAX*YST/16
23310 FOR I=VXMIN TO VXMAX STEP 10
23320 LOCATE LI+5,(I-VXMIN)*(XST-XSTO)772+4.5
23330 PRINT I;
23340 NEXT I
23350 LOCATE LI+6,36
23360 PRINT"kilovo]ts";
23370 '
23380 XSCALE=(VXMAX-VXMIN)*1000:YSCALE=IYMAX«.0001
23390 X0=(VC(0)-VXMIN*1000)*550/XSCALE+XLO:YO=YLO+YL
23400 CIRCLE(XO,YO),2,GCOL
23410 '
23420 FOR K=l TO 20
23430 X=(VC(K)-VXMIN*1000)*550/XSCALE+XLO
23440 Y=YL*(l-IC(K)/YSCALE)-t-YLO
23450 LINE(XO,YO)-(X,Y),GCOL
23460 XO=X
23470 YO=Y
23480 NEXT K
23490 IF VBD>VMAX THEN 23530 ELSE X=(VBD-VXMIN*1000)*550/XSCALE
23500 IF IBMOO THEN RCOL = 1
23510 LINE(X+XLO.YLO+l)-(X+XLO.YLO+YL-2).RCOL
A-27
-------
23520 '
23530 GOTO 2130 :REM press any key
23540 '
24000 REM ++++++++-M-++++ display current density distribution
24010 '
24020 SCREEN 0,1
24030 CSET=15:GOSUB 1290
24040 CLS:LOCATE 11,1
24050 JWEXP=2
24060 '
24070 PRINT"Enter the voltage at which you want the current density displayed."
24080 '
24090 GOSUB 27240:REM get the display voltage, VD
24100 '
24110 IF VD to a
bort."
24220 '
24230 XLEN=TLEN:DLEN=10:IN=INDEX:IM=1
24240 GOSUB 29480:REM display section
24250 '
24260 REM set up array with iso-current density values.
24270 CD(0) = INT(JPEAK/40):CD(1) = INT(JPEAK/20):CD(2)=INT(JPEAK/10)
24280 CD(3)=INT(JPEAK/4):CD(4)=INT(JPEAK/2)
24290 '
24300 LOCATE 24,23
24310 PRINT CD(0);TAB(29)CD(1);TAB(36)CD(2);TAB(43)CD(3);TAB(49)CD(4);TAB(56)JPE
AK;" nA/cm2";
24320 '
24330 REM set up array with colors in order
24340 CL(0)=DBCOL:CL(1)=BCOL:CL(2)=CYCOL:CL(3)=WCOL:CL(4)=PCOL
24350 CL(5)=BLKCOL
24360 '
24370 REM display bar chart of current density ranges
24380 GOSUB 29360
24390 '
24400 REM figure the local current density for each wire
24410 FOR K=0 TO 4 :REM for each boundary of interest
24420 '
24430 FOR 1=1 TO INDEX :REM for each wire position
24440 YLMAX=BSY(I-1)
24450 YRMAX=BSY(I)
24460 '
24470 A$=INKEY$:IF AS=CHR$(27) THEN 24900
24480 '
24490 JO=JI(I)*.00001:REM save JO for determing exponent
24500 JS=JI(I)*SX:REM factor for scaling with distance from wire
24510 PSX=RC(I)+.02*SX
A-28
-------
24520 '
24530 GOSUB 20020:REM get the current distribution exponent
24540 '
24550 JPEXP=JEXP
24560 '
24570 REM calculate the relative points of the envelopes
24580 '
24590 XMAX=JS/CD(K):REM distance at which the max CD will equal CD(K)
24600 IF XMAX>SX THEN XMAX=SX
24610 XMIN=PSX*1.2
24620 JMIN=0
24630 JMAX=INT(XMAX/SX*6)+6
24640 XSTEP=(XMAX-XMIN)/(JMAX-JMIN)-.001
24650 IF XMAX<=XMIN*2! THEN 24860
24660 '
24670 FOR J=JMIN TO JMAX:REM for determining the Y values, step X
24680 X=XMIN+J*XSTEP
24690 JX=JS/X
24700 CEXP=(X*JWEXP*(SX-X)*JPEXP)/SX
24710 XR=X/(CD(K)/JX)"(1/CEXP):REM cos'cexp relation
24720 RX(J)=X
24730 Y=SQR((XR*XR-X*X)):REM right triangle
24740 YR=ASY(I)+Y
24750 YL=ASY(I)-Y
24760 IF YR>YRMAX THEN RRY(J)=YRMAX ELSE RRY(J)=YR
24770 IF YIXYLMAX THEN RLY(J)=YLMAX ELSE RLY(J)=YL
24780 A$=INKEYS:IF A$=CHR$(27) THEN 24900
24790 NEXT J
24800 '
24810 REM plot the boundary curves and fill in
24820 '
24830 GOSUB 27500
24840 '
24850 A$=INKEY$:IF A$=CHR$(27) THEN 24900
24860 NEXT I
24870 NEXT K
24880 '
24890 GOSUB 2140:REM beep and hold
24900 CLS
24910 RETURN
24920 '
25000 REM +++++++++++++++++ electric field display ++-n-+++++++-i-+-i-+4.4.-i.++++++
25010 '
25020 REM display assuming the field configuration is a function of the operatin
g voltage and current. Ex/ExO=cos(theta)~2
25030 '
25040 EEXP=2.58:REM electric field exponent
25050 JEXP=2!:REM current density field exponent
25060 JMIN=0
25070 '
25080 SCREEN 0,1
25090 CSET=15:GOSUB 1290
25100 CLS:LOCATE 12,20
25110 '
25120 PRINT"Enter the voltage at which you want the electric field displayed."
25130 '
25140 GOSUB 27240:REM get the display voltage, VD
A-29
-------
25150 '
25160 GOSUB 27350:REM interpolate JO at VD
25170 '
25180 GOSUB 29250:REM set palette
25190 '
25200 LOCATE 1.12,0
25210 PRINT"ELECTRIC FIELD (y-component) DISTRIBUTION AT";VD;" VOLTS"
25220 LOCATE 3.12,0
25230 PRINT"The distributions are symmetrical about the center axis,"
25240 PRINT TAB(9)"but are shown on one side only for clarity. Press to ab
ort."
25250 '
25260 XLEN=TLEN:DLEN=10:IN=INDEX:IM=1
25270 GOSUB 29480:REM display section
25280 '
25290 REM display bar chart of current density ranges
25300 '
25310 LOCATE 24,23
25320 PRINT"0.5 1 2 4 8 > kV/cm";
25330 LOCATE 1.1
25340 '
25350 REM set up array with iso-electric field values:cd(5) is the sparking limi
t
25360 '
25370 CD(0)=.5:CD(1)=1:CD(2)=2:CD(3)=4:CD(4)=8
25380 CD(5)=EBDO/100000!*(273/TDK*PR)"1.65 :REM Phelps and Griffiths, JAP 47.292
9 (July 1976)
25390 '
25400 REM set up array with colors in order
25410 CL (0 ) =DBCOL : CL (1) =BCOL: CL (2) =CYCOL : CL (3) =WCOL: CL (4 ) =YCOL
25420 IF PTFLG=0 THEN CL(5)=BLKCOL ELSE CL(5)=GRCOL
25430 '
25440 GOSUB 29360:REM display bar chart
25450 '
25460 REM display each boundary for each wire
25470 '
25480 FOR K=0 TO (6-(1+IBM)):REM 5 for Tandy. 4 for IBM
25490 '
25500 FOR 1=1 TO INDEX
25510 '
25520 YLMAX=BSY{I-1)
25530 YRMAX=BSY(I)
25540 PSX=RC(I)+.02*SX
25550 '
25560 REM find the field at the wire below corona onset
25570 '
25580 FZ=PI/2
25590 IF VD
-------
25690 REM from here down, all distances are in inches, fields in kV/cm
25700 '
25710 XMIN=PSX*1.2
25720 '
25730 IF SPM>.01*ECD/SXM THEN 25780
25740 XMAXM2=AC2*(JGF-EO*EO)/(JGF-ECD*ECD)
25750 IF XMAXM2>0 THEN XMAXM=SQR(XMAXM2) ELSE XMAXM=SXM
25760 GOTO 25940
25770 '
25780 FA=SPM*SPM
25790 FB=EW*SPM+JGF-ECD*ECD
25800 FC=EW*EW-JGF*AC2
25810 FD=FB*FB-4*FA*FC
25820 IF FD>0 THEN 25870
25830 X2=SXM
25840 X1=SXM
25850 GOTO 25920
25860 '
25870 FS=SQR(FD)
25880 F1=-FB+FS
25890" F2=-FB-FS
25900 IF Fl>=0 THEN X1=SQR(F1/(2*FA)) ELSE X1=SXM
25910 IF F2>=0 THEN X2=SQR(F2/(2*FA)) ELSE X2=SXM
25920 XMAXM=X2
25930 '
25940 IF XMAXM>SXM THEN XMAXM=SXM
25950 XMAX=XMAXM*39.37
25960 IF XMAX<=XMI,N*2! THEN 26010
25970 JMAX=INT(XMAX/SX*6)i-6
25980 '
25990 GOSUB 27020
26000 '
26010 IF XKO OR SP=0 THEN 26110
26020 XMINM=X1
26030 '
26040 XMIN=XMINM*39.37
26050 IF XMIN>=SX-1/ISY THEN 26110
26060 XMAX=SX
26070 JMAX=INT((XMAX-XMIN)/SX»6)+6
26080 '
26090 GOSUB 27020
26100 '
26110 A$=INKEY$
26120 IF A$=CHR$(27) THEN 26230:REM DO NOT shorten line
26130 NEXT I
26140 NEXT K
26150 '
26160 IF IBM>0 THEN 26210
26170 LOCATE 3,1
26180 PRINT TAB(15)"The dark (gray) line represents the sparkover field.";TAB(79
)
26190 PRINT TAB(18)"If it reaches the plate, sparking is likely.";TAB(79)
26200 '
26210 GOSUB 2140
26220 '
26230 CLS
26240 RETURN
-------
26250 '
27000 REM <«««««««« routine for calc and plot E boundaries >»»»»»»
27010 '
27020 XSTEP=(XMAX-XMIN)/(JMAX-JMIN)-.001
27030 '
27040 FOR J=JMIN TO JMAX
27050 X=XMIN-"-J*XSTEP:XM=X/39.37:XM2=XM*XM: ESPX=SP*X
27060 EW2=(EW/XM+SPM*XM)~2
27070 ESATX=JGF*(1!-AC2/XM2)
27080 CEXP=(EW2*EEXP+ESATX*JEXP)/(EW2+ESATX)
27090 EATX=SQR(EW2+ESATX)/100000!
27100 ER=(CD(K)-ESPX)/(EATX-ESPX)
27110 IF ER>0 THEN XR=X/(ER~(1/CEXP)) ELSE XR=100*SX:REM cos'cexp relationship
27120 RX(J)=X
27130 IF XR>X THEN Y=SQR((XR*XR-X*X)) ELSE Y=0
27140 YR=ASY(I)+Y:YL=ASY(I)-Y
27150 IF YR>YRMAX THEN RRY(J)=YRMAX ELSE RRY(J)=YR
27160 IF YL gives the current voltage, (which is ";VD;")"
27250 PRINT TAB(38) ;
27260 INPUT X
27270 IF X=0 THEN 27290 ELSE VD=X
27280 '
27290 IF VD>VMAX THEN VD=VC(20)
27300 '
27310 RETURN
27320 '
27330 REM «««««««««««« interpolate J at VD
27340 '
27350 LOCATE 17.7
27360 PRINT "INTERPOLATING AT ";VD;" VOLTS"
27370 '
27380 FOR 1=1 TO INDEX
27390 JI(I)=0
27400 FOR J=0 TO 19
27410 IF VD<=V(J.I) OR VD>V(J+1.I) THEN 27430
27420 JI(I)=JSTEP*(J+(VD-V(J.I))/(V(J+l.I)-V(J.I)))
27430 NEXT J
27440 NEXT I
27450 '
27460 RETURN
27470 '
27480 REM <««««««««««« plot envelopes
27490 '
27500 CYO=200/(1*IBM)
27510 CXO=LB+ENDLEN*IS
27520 IF IBM=0 AND BURST>0 THEN COL=CL(K) ELSE COL=(K+1) MOD
27530 PSET(CXO+RLY(JMIN)*IS.CYO+RX(JMIN)*ISY),COL
27540 ' . ,„
-------
27550 FOR J=JMIN+1 TO JMAX
27560 LINE-(CXO+RLY(J)*IS,CYO+RX(J)*ISY).COL
27570 NEXT J
27580 '
27590 FOR J=JMAX TO JMIN STEP -1
27600 LINE-(CXO+RRY(J)*IS,CYO+RX(J)*ISY),COL
27610 NEXT J
27620 '
27630 LINE- (CXO+RLY( JMIN)*IS,CYO+RX( JMIN )*ISY), COL :REM close the loop
27640 '
27650 IF PTFLG=0 AND K<>5 THEN PAINT(CXO+ASY(I)*IS,CYO+RX(JMAX)*ISY-1),COL
27660 '
27670 IF IBM=0 AND BURST>0 THEN RETURN
27680 '
27690 IF K MOD 2=0 THEN PAINT(191+K*55.196*(2-IBM)),1
27700 '
27710 RETURN
27720 '
28000 REM ++++++++++++-I-++ Quick display routine +++++++++++++++++++++++++++++++
28010 '
28020 CLS
28030 '
28040 REM set up nodule at enlarged scale.
28050 '
28060 STLN=1
28070 LOCATE STLN+1,37 : PRINT "MODULE";
28080 X$=STRING$(40,"-")
28090 LOCATE STLN+3,20:PRINT XS
28100 LOCATE STLN+7 , 20-.PRINT X$
28110 FOR 1=3 TO 7
28120 LOCATE STLN+I,19:PRINT "I";
28130 LOCATE ,60:PRINT "I";
28140 NEXT I
28150 '
28160 LOCATE STLN+8,20
28170 PRINT USING"##.#&";"<"+STRINGS(14,"-")+" ";MLEN;" in."+STRING$(14,"-")*"
>"
28180 '
28190 LOCATE STLN+5,20
28200 FOR 1=1 TO NW:LOCATE ,(ASY(I)*39/MLEN)+20:PRINT "o";:NEXT I
28210 '
28220 REM set up section at reduced scale.
28230 '
28240 STLN=13
28250 LOCATE STLN+1.37:PRINT "SECTION"
28260 X$=STRINGS(60,"-")
28270 LOCATE STLN+3,10:PRINT X$
28280 LOCATE STLN+7,10:PRINT X$
28290 '
28300 X$=CHR$(248)
28310 LOCATE STLN-t-5,20
28320 FOR 1 = 1 TO INDEX:LOCATE , ( (ENDLEN+ASY( I) )*59/TLEN)+10:PRINT X$::NEXT I
28330 '
28340 LOCATE STLN+8,10
28350 PRINT USING"##.#&" ; "<"-i-STRINGS (24 ,"-")+" ";TLEN:" in. "+STRING$(24 ,"-") + "
>"
28360 '
-------
28370 LOCATE 23,19:PRINT "Wire diameters and plate spacing not to scale."
28380 '
28390 GOTO 2130:REM press any key
28400 '
29000 REM -i-+++-t--i"i-++-("t-+++-f"i-+-t-+++++ Conversion routine +++++++++++++++++++++++++
29010 '
29020 FOR 1=0 TO INDEX:ACM(I)=RC(I)/39.37:MSY(I)=ASY(I)/39.37:NEXT I
29030 '
29040 SXM=SX/39.37:REM wire-plate separation
29050 TDK=273+5*(TEMP-32)/9
29060 RELD=293/TDK*PR
29070 IF POL$="" THEN MEXP=1.5 ELSE IF POL$="" THEN MEXP=.81
29080 MU=MUO*(TDK/273)"MEXP/PR
29090 '
29100 RETURN
29110 '
29120 REM -i-++-(-+++-t-+-i-+++-4-++-("i-++ Graph drawing routines ++++++-*•++++++•»"'"!•+++•»"»"'•
29130 '
29140 REM Set up palette routine for most displays
29150 YCOL=7:BCOL=6:CYCOL=1:GCOL=5:GRCOL=2:WCOL=3:RCOL=4
29160 IF IBM=0 THEN 29210
29170 '
29180 RCOL=WCOL:BCOL=WCOL
29190 RETURN
29200 '
29210 PALETTE 2,7
29220 RETURN
29230 '
29240 REM +++++4.+++++-H-++++++++++ palette routine for distributions +++++•>•+-<••>•+++
29250 IF IBM=0 AND BURST=1 THEN 29300
29260 IF IBM=1 THEN SCREEN 2,0 ELSE SCREEN 4,0
29270 YCOL=1:BCOL=1:CYCOL=1:DBCOL=1:GRCOL=1:WCOL=1:PCOL=1:BLKCOL=0
29280 RETURN
29290 '
29300 YCOL=7:BCOL=6:CYCOL=5:DBCOL=2:GRCOL=4:WCOL=3:PCOL=1:BLKCOL=0
29310 SCREEN 3,1
29320 PALETTE 1,13:PALETTE 2.1:PALETTE 4,7:PALETTE 5,11:PALETTE 7,14
29330 RETURN
29340 '
29350 REM ++++-t--t"*-++-t-++-t"t-+-i-+++ bar chart of values +++++++-t-++++++++++++-r++++
29360 X=190:Y=388/(1+IBM):DY=10/(1+IBM)
29370 FLG=(PTFLG=0 AND IBM=0 AND BURST>0)
29380 '
29390 FOR 1=0 TO 4
29400 IF FLG THEN LINE(X.Y)-(X+50,Y+DY).CL(I),BF ELSE LINE(X, Y)-(X-t-50, Y+DY) , CL( I
).B
29410 X=X+55
29420 NEXT I
29430 '
29440 RETURN
29450 '
29460 REM +++++++++++++++ put up section/module at width DLEN -t-++-(-(-i-++-r-^+-r++-(.++
29470 '
29480 FLEN=XLEN/ISO*28/25*(1+IBM)*120/SX
29490 IF FLEN>DLEN THEN FLEN=DLEN
29500 LBOUND=(10.5-FLEN)/2
29510 IS=FLEN/XLEN*ISO „ „„
A-34
-------
RETURN
I
REM
i
SCREEN 0.BURST:CLS
CSET=11:GOSUB 1290
29520 ISY=IS*25/28/(l+IBM)
29530 '
29540 GOSUB 16330:REM draw plates
29550 GOSUB 16460:REM draw wires
29560 '
29570
29580
30000
30010
30020
30030
30040
30050
30060
30070
30080
30090
30100
30110
30120
30130
30140
30150
30160
30170
30180
30190
30200
30210
30220
30230
30240
30250
30260
30270
30280
30290
30300
30310
30320
30330
30340
30350
30360
30370
30380
30390
30400
30410
30420
30430
30440
30450
30460
30470
30480
print routine
FOR OUTPUT AS # 2!
SCRN:" THEN PRINT"Output is directed to ";OUTDEV$;"
CURVE MODEL (Version 1.0) Glow Corona"
OPEN OUTDEVS
LOCATE 14.25
IF OUTDEVSO'
LOCATE 1.1
I
REM heading
A$=STRING$(15," ")
PRINT #2,AS;"ESP V-J
PRINT *2,A$
»
REM environment data
AS=SPACES(32)
PRINT #2.A$+"Environment Data"
PRINT *2,A$
t
A$=SPACE$(20)
PRINT #2.A$+"Temperature =";TEMP;" deg
PRINT #2,A$+"Pressure =";PR;" atm"
USING "#.*# &";A$+"Reduced Mobility
USING "#.## 4";A$+"Actual Mobility
*2,
*2,
#2.A$+"Space Charge
*2,AS+"Space charge decay rate=
*2.A$+"Polarity
*2.AS
*2,A$+"Data stored in: ";FILE$
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT *2,A$
IF OUTDEVS="SCRN:" THEN GOSUB 31020
I
REM mechanical data
i
A$=SPACE$(31)
PRINT *2,A$
PRINT *2,A$+"Mechanical Data"
PRINT *2,A$
A$=SPACE$(23)
;SPCH*1000000!;"
;SPCINC;" /wire'
";POLS
=",MUO," m2/Vs"
=".MU." m2/Vs"
uC/m3"
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
;2*SX;CHR$(34)
;MLEN;CHR$(34)
;ENDLEN;CHRS(34;
;NMOD
;TLEN;CHR$(34)
#2,A$+"Plate-plate spacing
*2.A$+"Module length
*2,AS-t-"End lengths
#2,A$+"Number of modules
*2,A$+"Length of section
*2. " "
*2.TAB(8)"Wire parameters:";TAB(26)"Location";TAB(41)"Diameter";TAB(
54)"Roughness"
A-35
-------
30490 PRINT *2." "
30500 FOR 1=1 TO INDEX
30510 PRINT *2.USING" &*###.#*& *.*##& #.*#";"WIRE
";!;" ";ASY(I);CHR$(34);2*RC(I);CHR$(34);RF(I)
30520 NEXT I
30530 PRINT *2.AS
30540 '
30550 IF OUTDEV$="SCRN:" THEN GOSUB 31020
30560 '
30570 REM electrical results
30580 '
30590 PRINT *2,A$
30600 PRINT *2,TAB(24)"Starting Voltages for each Wire"
30610 PRINT #2,'" "
30620 FOR 1=1 TO INDEX
30630 PRINT #2,USING "&*##*###&";" Wire ".I," ".VS
(I)." volts"
30640 NEXT I
30650 '
30660 PRINT #2,AS
30670 PRINT *2,USING "#####&";" Zero current Spark Voltage
=";VSPARK:" V"
30680 PRINT #2,USING "##*##&";" Maximum calculated voltage
=";VMAX;" V"
30690 PRINT *2.USING "&*###*#&";" Calculated breakdown voltage
=";VBD:" V"
30700 PRINT #2,USING "###&";" Current density under wire
=";JBDMIN*100000!;" nA/cm2"
30710 PRINT *2,USING "&*#.#*&";" Wire voltage/ wire-plate spacing
="; EAVG/100000!;" kV/cm"
30720 PRINT *2,USING "#.##&";" Max electric field under wire
="; EMAX/100000!;" kV/cm"
30730 PRINT *2,USING "*.*#&";" Average electric field along plate
="; EPAV/100000!;" kV/cm"
30740 PRINT #2,USING "#.*#&";" Breakdown field at plate
="; EBD/100000!;" kV/cm"
30750 PRINT *2,USING "#.# &";" Resistivity for breakdown
="; RBDOCM:" ohm-cm"
30760 PRINT A$
30770 '
30780 IF OUTDEV$="SCRN:" THEN GOSUB 31020
30790 '
30800 PRINT*2,A$
30810 A$=SPACES(25)
30820 PRINT#2.A$-t-"Voltage-Current density Curve"
30830 PRINT *2,A$
30840 PRINT *2.TAB(29)"Step V nA/cm2"
30850 FOR K=0 TO* 20
30860 PRINT #2,USING " ## ###### ###.#";K,VC(K),1C(
K)*100000!
30870 NEXT K
30880 '
30890 IF OUTDEVS="SCRN:" THEN GOSUB 31020
30900 '
30910 REM separate from next print
30920 '
30930 A$=STRINGS(4.10)
A-36
-------
30940 PRINT#2,A$:REM line feed characters
30950 '
30960 CLOSE 2
30970 '
30980 RETURN
30990 '
31000 REM ++++++++++++.(..(..(.++ screen print hold
31010 '
31020 GOSUB 2140
31030 '
31040 IF XS=CHR$(27) THEN RETURN 30960
31050 CLS:LOCATE 1,1
31060 '
31070 RETURN
31080 '
31090 REM «<««««««««««« Screen dump routine »»»»»»»»»»»»
31100 '
31110 REM set palette so screen and print match
31120 '
31130 IF CGP=0 THEN RETURN
31140 PALETTE 0,0:PALETTE 1,12:PALETTE 6,2
31150 '
31160 CALL CGPDMP(ER%)
31170 RETURN
31180 '
32000 REM ++++++ cos'cexp integration routine (interpolation) -»-+-i-++-t-+-i-++*++
32010 '
32020 CTH=COS(THETA):STH=SIN(THETA)
32030 INT2=.5*(STH*CTH+THETA)
32040 IF CEXP>2 THEN 32090
32050 INTO=THETA:INT1=STH
32060 INTTH=(CEXP-l)*(CEXP-2)*INTl/2- (CEXP-0)*(CEXP-2)*INT1+ (CEXP-0)*(CEXP-1)*
INT2/2
32070 RETURN
32080 '
32090 CTH2=CTH*CTH:CTH3=CTH2*CTH
32100 INT3=.333333*(STH*(CTH2+2))
32110 INT4=.25*(STH*CTH3+3*INT2)
32120 INTTH=(CEXP-2)*(CEXP-3)*INT4/2- (CEXP-2)*(CEXP-4)*INT3+ (CEXP-3)*(CEXP-4)*
INT2/2
32130 '
32140 RETURN
32150 '
32160 REM +++++++++ interpolate average current density
32170 '
32180 JAV = 0
32190 '
32200 FOR K = 0 TO 19
32210 IF VBD>VC(K) AND VBD<=VC(K+1) THEN 32270
32220 NEXT K
32230 '
32240 IF VBD>VC(K) THEN JAV = (JPEAK/100000!+IC(K))/2
32250 RETURN
32260 '
32270 JAV = IC(K)+(IC(K+1)-IC(K))*(VBD-VC(K))/(VC(K+1)-VC(K))
32280 RETURN
32290 '
-------
33000 REM «*****«****« internal Default Settings *************************
33010 '
33020 CLOSE 3:LOCATE 12,20
33030 PRINT "DEFAULT.ESP not found; intializing configuration"
33040 FOR 1=1 TO 1000:NEXT I
33050 '
33060 RC(0) =.125/2:RF(0)=l:SX=9/2:ASY(0)=-4.5
33070 '
33080 FOR 1=1 TO NWM:RF(I)=RF(0):RC(I)=RC(0):ASY(I)=ASY(1-1)+9:NEXT I
33090 '
33100 TEMP=70:PR=1:INDEX=3:NW=3:MUO=.000182:MLEN=27:NMOD=1
33110 ENDLEN=SX:SPCH=.00001:SPCINC=.1:POL$=""
33120 FILES="DEFAULT.ESP"
33130 '
33140 GOSUB 1910:REM temporarily arrange the modules
33150 '
33160 RESUME 290
33170 END
A-38
-------
APPENDIX B
TRANSLATING PROGRAM TO OTHER COMPUTERS
Because this program was written to accommodate both the Tandy 2000
and IBM-PC microcomputers, it should be fairly easy to modify it for other
computers running Microsoft GWBASIC or something equivalent under the MSDOS
2.0 or higher operating system. If using a highly IBM-compatible computer
(e.g., a Tandy 1000 or 1200), the only changes necessary might be in the
batch files used to run'the program. For instance, calling up BASICA
activates a short program which then loads GW-BASIC. If the default drive
does not contain that file, then the program loading fails. One can make
the proper correction in the batch files by calling the BASIC directly from
the drive where it resides.
If the user decides to sacrifice all the pixel graphics displays
(accessible through the Display Options menu), then the program can be
translated to other languages and operating systems. Languages with character-
string handling routines would prove easier to convert than those without
them. The main difficulty in such a translation involves the menu displays
and operation. Those routines require the ability to identify certain
keys—the cursor keys—by number and then position the cursor (for writing)
at a particular location on the screen. These abilities are not available
in standard FORTRAN but must be programmed as assembly language subroutines.
Note that the ESPVI program will interpret the cursor keys for either the
IBM or Tandy computer, while the ESPSRI program requires identification of
the key codes in the file TYPE.CNF.
One secondary difficulty in a translation is that 10 extra Function
Keys may not be available. In this case, other keys would have to be
substituted. This substitution might require additional logic testing to
allow for correct data entry in the input menus. Another possible difficulty
lies in the file-handling routines. Depending on the particular operating
system, the user might have to place all the programs on one disk. Such a
situation might not allow a drive specifier in the file name (as allowed
under MSDOS 2.0).
B-l
-------
This BASIC program has been written in a fashion appropriate for
conversion to FORTRAN. All the variables are global with a value set in
one part of the program available for use in another part of the program.
This makes a direct translation into FORTRAN possible if all variables are
declared in COMMON blocks and made accessible in all subroutines. Further-
more, the logic statements are written in a manner compatible with FORTRAN
77 logic, using the IF...THEN...ELSE structure. Because of the size of the
program, we do not recommend its use on an 8 bit microcomputer. Such a
conversion is possible, however, by sacrificing parts of the program and
reducing the array sizes.
B-2
-------
APPENDIX C
ESP PERFORMANCE MODEL DOCUMENTATION
Documentation for BASIC Version of the EPA/SRI
Electrostatic Precipitator Model
C-i
-------
Appendix C
TABLE OF CONTENTS
Page
Introduction C-l
User Instructions C-3
Main Menu . C-4
Change Type of Computer C-6
Enter General Data C-7
Enter Particle Size Data C-12
Get V-I Data from V-I Model File C-17
Enter Sectional Data C-20
Enter Non-ideal Data C-22
Store Data in File C-24
Read Data from File C-24
Run Program. C-24
Run V-I Calculation C-24
Quit and Return to MS-DOS C-24
Configure a New Printer • C-24
Program Execution C-25
Output Data. . C-25
Errors C-27
Example. ..... C-27
Solution C-28
Notes on Configuring the Program C-42
C-ii
-------
FIGURES
Number
C-l Main menu C-5
C-2 Menu displayed after selecting "Change type
of computer" C-8
C-3 Menu displayed after selecting "Enter general
data" C-10
C-4a Menu displayed after selecting "Enter particle
size data" C-13
C-4b Menu displayed after selecting "Select type of
size distribution" C-14
C-4c Menu displayed after selecting "Enter log
normal parameters" C-15
C-4d Menu displayed after selecting "Enter end points". . . . C-16
C-4e Menu displayed after selecting "Select type of
size distribution" for histogram C-18
C-4f Menu displayed after selecting "Enter histogram
size distribution" C-19.
C-5 Menu displayed after selecting "Enter sectional
data" C-21
C-6 Menu displayed after selecting "Enter non-ideal
data" C-23
C-7 Example of summary output data for first set
of non-ideal conditions C-26
C-8 Data entry form for general ESP data C-29
C-9 Menu displayed after selecting "Enter log
normal parameters" C-30
C-10 Menu displayed after selecting "Enter end points". . . . C-32
C-ll Menu displayed after selecting "Enter sectional
data" C-33
C-12a Menu for Section 1 data entry C-34
C-12b Menu for Section 2 data entry C-35
C-12c Menu for Section 3 data entry C-36
C-12d Menu for Section 4 data entry C-37
C-13a Entry form for first non-ideal data set C-38
C-13b Entry form for second non-ideal data set C-39
C-14a Results of the model calculations for the first
- non-ideal data set C-40
C-14b Results of the model calculations for the second
non-ideal data set C-41
C-iii
-------
INTRODUCTION
The program is intended to provide useful estimates of the performance
of ESPs under various conditions. It interfaces by means of a data file
with the V-I predictor model. The combination of the V-I predictor model
and the performance model provides estimates of the particle collection
efficiency of an ESP with various electrode configurations. The BASIC
version is an implementation of the estimation procedure developed as part
of revision 2 of the ESP model. The original estimation procedure was
written in FORTRAN and designed to run on a mainframe computer. The BASIC
version also allows for use on microcomputers, specifically the Tandy 2000
and the IBM-PC. It also should run with minimal changes on computers
compatible with the Tandy and IBM-PC.
THEORY
Since one can find a description of the entire theory in several EPA
reports, only a brief summary of the theory is presented here.
The ESP model is based on the Deutch-Anderson equation which predicts
particle collection in an ESP:
Pt(d) = exp[-w(d)SCA] (C-l)
where
Pt(d) = the penetration of particles of diameter d,
w(d) = the electrical migration velocity of particles of diameter d,
and
SCA = the ratio of collector plate area to actual gas volumetric flow.
Equation C-l states that if the electrical migration velocity is constant,
the particle concentration across any cross section remains constant. The
requirement of constant electrical migration velocity can be met if the ESP
is divided into several increments in the direction of gas flow. The
increments are small enough so that the electrical conditions of current
density and electric field in the increment remain constant. The increments
are also small enough so that the particle charge for particles of diameter
d does not change as the particle passes through the increment.
C-l
-------
The particle penetration through increment i is given by:
Pt(d). = exp[-w(d)1 SCA-] . (C-2)
The collection efficiency for particles of diameter d for the entire ESP is
given by:
Pt(d) = Pt(d). (C-3)
The overall particle collection in the ESP is found by integrating Equation
(C-3) over the entire particle size distribution:
Pt = f(d)Pt(d)dd (C-4)
where f(d) is the fraction of particles with diameters between d and d +
dd.
The problem of calculating the ideal performance thus can be reduced
to calculating the particle charge on each increment's particle diameter,
calculating electrical migration velocity for each particle diameter,
calculating penetration of each particle diameter, and then integrating the
individual particle penetrations across the particle size distribution. To
perform these calculations, the model must calculate each increment's
average electric field and current and electric field at the plate. In the
estimation procedure, the average electric field is given by:
Eav = V/b (C-5)
where
V = the applied voltage, and
b = the wire-to-plate spacing.
The electric field at the plate can be calculated from the relationships
given earlier. It also can be estimated from:
E = Eav/1.75 (C-6)
The electric charge on a particle is calculated by summing the charge
resulting from diffusion-charging and the charge resulting from field-charging,
C-2
-------
Although little justification exists for this method, the method gives
results that agree well with experimental data. The particle migration
velocity for each increment is calculated from:
w(d). = C'q(d). Ep (C-7)
where
C1 = the Cunningham correction for slip and
q(d). = the charge on particles with diameter d in the ith increment.
The equations above are used to calculate the ideal performance. This
ideal performance must be corrected to include effects of non-uniform gas
flow distribution, gas sneakage, reentrainment, and various unmodeled
factors. These corrections are achieved by using empirical correction
factors verified for coal-fired fly ash. While these corrections apparently
are also appropriate for dusts other than fly ash, the data on these other
•dusts are very limited.
USER INSTRUCTIONS
The model is written in Microsoft BASIC for MS-DOS computers. It
requires BASICA for the IBM-PC or GWBASIC for the Tandy 2000 and other-
MS-DOS machines. The minimum memory to use the model is 128K for the
IBM-PC and 192K for the Tandy 2000. One must have at least one disk drive,
«
and a printer, although not required, is useful.
The program requires the following files:
I. ESPSRI.BAS (can be on any drive).
2. COMPUTER.CNF (must be on the default drive).
3. PRINTER.CNF (must be on the default drive).
4. DEFAULT.DAT (must be on the default drive).
The file SRI. DAT also must reside on the default drive if results calculated
by the V-I model are to be used by the performance model. If the batch
file SRI.BAT runs the program, then it and BASIC must be on the default
drive. •
The discussion that follows assumes that: the computer screen shows
the DOS prompt >A; the program and all files are on drive A; and BASIC is
on drive A. If the file SRI.BAT is on drive A, then type SRI and press
C-3
-------
to run the program. The batch file will load BASIC and run the
program ESPSRI. If you do not have the file SRI.BAT, then you must execute
the following steps:
1. Type BASIC and press to load BASIC.
2. When you get the BASIC prompt, type RUN"ESPSRI"
and press .
The third way to run the program is to select the Run SRI Model option from
the V-I Calculator menu. Note that loading the program requires more time
than any other selection.
Once loaded and executing, the program should present the Main Menu
(Figure C-l). This menu controls both data entry and program execution
steps. The model is menu-driven to make the processes of data entry,
storage, and display as simple as possible. Each menu is designed to
perform a certain function with all menus behaving in much the same way.
For example, the cursor control keys move the cursor around the menu with
the key always returning you to the previous menu. Each menu is
discussed below.
Main Menu
The Main Menu moves you from one data entry menu to the next and
instructs the computer how to run the program. The Main Menu will only
accept use of the following keys:
Up Arrow
Down Arrow
ENTER
If you press any other key, the computer will beep and ignore your selection,
Press and to move the cursor up and down the menu.
Press to instruct the computer to perform the function designated
by the cursor. The Main Menu is shown in Figure C-l. Each option is
discussed briefly below with detailed discussions found in the sections
devoted to the various options.
The first menu selection is Change Type of Computer. This option
reads in a data file to define the cursor control keys for your computer.
The default is set for the IBM-PC.
C-4
-------
$, ys^w« »^'*sr.
ESP HQDEL DflTfl INPUT. WIN ffiflJ. SELECT ITEM TO ENTER
-> Change type of cocputer and save net* file KM :TfiNDY
Enter general data eg overall SCA, gas tea?
Enter particle size data
Get VI data from VI lodel file
Enter sectional data
Enter non-ideal data
Store data in file
Read data fron file
Run prograi.
Run VI Calculation (Note be sure to save info first)
Quit and return to MS-DOS
Configure a new printer.
ftrrows aove cursor up and down. Press (ENTER} to perfor* function.
<&&*** i»'^^^a;^'scjass^i^^
Figure C-l. Main menu.
C-5
-------
The second menu selection is Enter General Data. This option allows
you to enter general data on the ESP being modeled. The data include
variables such as overall SCA, gas temperature, and gas pressure applied to
all electrical sections.
The third selection is Enter Particle Size Data. This option activates
the particle size distribution data entry module. Particle size distribution
information can be entered either as a log normal size distribution or as a
histogram particle size distribution.
The fourth selection is Get V-I Data from V-I Model file. This selec-
tion allows you to use the V-I information calculated from the V-I predictor
model in the performance calculations. You must have created the V-I file
before you run the ESP performance model.
The fifth selection is Enter Sectional Data. This option is selected
for entry of data such as sectional SCA, applied voltage, current density,
and wire-to-plate spacing that are specific to a given section.
The sixth selection is Enter Non-ideal Data. This selection enters
the Non-ideal data.
The seventh and eighth options allow you to store data in a disk file
or to read data from a disk file.
The ninth option runs the ESP model, and the tenth option returns you.
to the V-I predictor model. Note that the program expects to find the V-I
predictor model on drive A. If the V-I program is not on drive A, the
program will look on the current drive.
The eleventh option returns you to MS-DOS.
The twelth option allows you to configure the program for your printer.
Each menu option is discussed in detail in the following sections.
Change Type of Computer
The program has been written to operate with either the Tandy 2000 or
the IBM-PC. When the program first executes, the program displays its
default value for configuration (either IBM-PC or Tandy 2000). This same
information also appears in the Main Menu. This option allows you to
change the program configuration from one configuration to the other. If
you want to do this, make sure that the cursor points to Change Type of
C-6
-------
Computer. When you press , the screen will clear and the message in
Figure C-2 will be displayed. You will be asked if you want to reconfigure
the computer. If you answer No (or N), the program will return you to the
Main Menu. If you answer Yes (or Y), the program automatically will load
the configuration file for the new computer. Once the new configuration
•
file is read, the program will return to the Main Menu with the cursor at
the Change Type of Computer option. If you discover that you have changed
computer types by mistake, press and reconfigure the program to the
original value.
Note that the program expects to find the file COMPUTER.CNF on the
default drive. If it does not find this file, the program will display a
message indicating that file COMPUTER.CNF is missing. The program then
will return to the IBM-PC (default) configuration and write the file
COMPUTER.CNF to the default drive. Program control will be returned to the
Main Menu at the Change Type of Computer option. Now if you want to change
from the IBM-PC to the Tandy 2000,'you may do so by pressing . This
allows the computer to write a new COMPUTER.CNF file for the Tandy 2000.
The program can be configured for computers besides the Tandy 2000 and
the IBM-PC. Appendix E contains instructions for doing this. Note that
many MS-DOS computers (e.g., the Tandy 1200) can be treated as IBM-PCs as
far as the program is concerned. Thus, if your computer is not a Tandy
2000, you should try to run the program in the IBM-PC configuration. If
the program works normally, you do not have to write your own configuration
files. If the program is not properly configured, the cursor will not
respond to use of the arrow keys.
Enter General Data
The Enter General Data option transfers program control to the Data
Entry Form for General ESP Data. This is the longest menu in the program
and is used to enter data relevant to the ESP as a whole. While you work
with this form, the computer will respond to the up and down arrow keys as
well as the number and letter keys. The key will return you to the
Main Menu.
C-7
-------
Are you sure you want to charge the configuration?
Enter Y or N. You wist press (ENTER).
The configuration is currently for the TflNDY
Figure C-2. Menu displayed after selecting "Change type of computer."
C-8
-------
The form is displayed in Figure C-3. Each item is discussed below.
Title. Title is used to enter a title for the data being calculated.
You may enter any combination of letters and numbers as the title with a
maximum length of 40 characters. If you enter more than 40 characters, the
computer will truncate it to 40.
Inlet dust loading. This is the inlet dust loading.in units of grains
per actual cubic foot.
Particle density. This is the particle bulk density in grams per
cubic centimeter.
Dielectric constant. This is the dielectric constant of the particu-
late matter. The dielectric constant must be greater than or equal to 1.
In most industrial applications, the flue gas has a high enough humidity
for the particle surface to become conductive. A value of 100 may be used
here.
Ion mobility. This is the reduced ion mobility (i.e., the value of
the ion mobility at 273 K and 1 atm). The required units are square meters
per volt second. Values for flue gases range from 2 to 5 x 10 m2/Vs.
The value of 2.2 x 10 m2/Vs is satisfactory for the model.
Total SCA. This is the overall specific collector area in units of
square feet per 1000 actual cubic feet per minute. One can calculate its
value by dividing the total plate area (in square feet) by the gas volumetric
flow rate (in 1000 actual cubic feet per minute). Note that the program
checks to see if the SCA entered here agrees with the sum of the individual
sectional SCAs.
Total length of ESP. This is the length of all electrically active
zones (in feet).
Gas flow rate. This is the total volumetric flow rate of the gas
through the ESP (in actual cubic feet per minute).
Gas velocity in ESP. This is the average superficial gas velocity
through the ESP (in feet per second).
Gas temperature. This is the gas temperature in the ESP (in degrees
Fahrenheit).
Gas pressure. The pressure of the gas in the ESP (in atmospheres).
Gas viscosity. This is the viscosity of the gas (in centipoise). For
most flue gases viscosity can be estimated with adequate accuracy from
C-9
-------
Data entry fora for general ESP data.
s
•) Title EXflHPLE 12 FRCK
Inlet duit loading
Particle density
Dielectric constant
Ion lobility
Total SCfl
Total length of ESP
Gas flow rate
Gas velocity in EEP
Gas teiperature
Gas pressure
Gas viscosity
-------
u = 1.74xl04 + 3.62xl07T - 6.997Water
where
u = the viscosity (in centipoise),
T = the temperature (in degrees Centigrade), and
Water = the percent water vapor by volume.
-4
Values of typical flue gas conditions are in the range of 2.2x10 cp.
old side or ot side. This indicates whether the ESP is a cold-side
or a hot-side ESP. The indicator allows the program to select the appropriate
factors for the rapping reentrainment correction.
Number of electrical sections. This is the number of independent
electrical sections in the direction of gas flow.
Estimated efficiency. This is an estimate of the overall collection
efficiency. This is necessary and allows the program to handle estimates
of the effects of particulate space charge. The calculations usually are
not very sensitive to this number, especially if two iterations are used.
Number of iterations. This is the number of iterations the program
should use to calculate the overall efficiency. Two is usually sufficient.
Resistivity. This is the electrical resistivity of the fly ash (in
ohm-centimeters). Resistivity is not used currently in the calculations.
The information entered here does help identify the specific problem posed.
No. of non-ideal conditions. This is the number of different non-ideal
situations you want to model. In general, three conditions should be
modeled—an ideal ESP with rapping reentrainment, an ESP with current good
practice gas flow distribution and sneakage, and an ESP with pre-1970 good
practice gas flow distribution and sneakage. (Appropriate numerical values
of sneakage and gas flow distribution are discussed later in this section.)
The Data Entry form is completed by moving the cursor to the line
whose value you want to change. As you enter the data, you can backspace
to make corrections. Use the back space key rather than the left arrow
key. After you have entered the data, press . Then line up the
cursor with any other line whose value you want to change. When you have
entered all the data, you can return to the Main Menu either by pressing
or lining up the cursor with "RETURN TO MAIN PROGRAM " and
pressing .
C-ll
-------
Enter Particle Size Data
This menu is used to select the forms used for entering data on the
particle size distribution. The information on size distribution consists
of the type of size distribution (log normal or histogram), the log normal
parameters and end points for a log normal size distribution, and the
histogram size distribution for the histogram. The first particle size
menu appears in Figure C-4a.
The first option is the type of size distribution Log normal or Histogram
with the current type of size distribution shown in the menu. If you want
to change the type of size distribution, move the cursor to the first line
of the menu and press . Figure C-4b shows the form used to make
this change. In using the form, press if you want a log normal distribu-
tion or if you want a histogram size distribution. (Note that the
computer also will accept either 1 or h but no other keys). Once you have
selected the type of size distribution, you will be returned the to main
size distribution menu.
If you want to enter a log normal distribution, the next item in the
main size distribution menu is Enter log normal parameters. If you select-
this option, the program will display the log normal parameter form (Figure
C-4c). A log normal size distribution has a mass mean diameter and a
geometric standard deviation. For fly ash from coal combustion, typical
values are mass mean diameter of 15 urn and geometric standard deviation of
3.54. Enter the mass mean diameter by moving the cursor to the line, Mass
mean diameter, and then entering the new value. You must press
when you have completed typing the new value. If you make a mistake while
doing this, you can use the back space key to back up and correct the
entry. If you want to enter a new value for the geometric standard deviation,
you must move the cursor to the line, Geometric standard deviation, and
enter the new value. When you are ready to return to the main size distribu-
tion menu, either move the cursor to the last line or press .
The final step in entering a log normal size distribution is entering
the end points where you want the calculations performed. Move the cursor
to "Enter end points" and press . The screen will clear, and the
form in Figure C-4d will be displayed. Enter the end points one at a time.
C-12
-------
EKTER SIZE DISTRIBUTION DFDRHRTION.
Select type of size distribution (Dog nonal (Wistojrai now H
Enter histograi size distribution.
Return to Min nenu.
Press (ENTER) to execute option.
USE flRRQUS TO KJVE -). PRESS (ESD TO RETURN.
Figure C-Aa. Menu displayed after selecting "Enter particle size data."
C-13
-------
Enter type of size distribution: L for loj nonal, H for histograa i
^ ~,w-;«; ^x o,j
..w^
Figure C-4b. Menu displayed after selecting "Select type of size distribution.
C-14
-------
Enter log norul parameters
-> Mass aean diaceter ticrons 0
Geoeetric standard deviation 8
Return to size distribution senu (Esc)
Figure C-4c. Menu displayed after selecting "Enter log normal parameters."
C-15
-------
Dimeter (aicrons)
.3
.4
.7
1
1.5
2
3
4
S
7
10
15
25
38
180
21 end points
ARROU KEYS TO MOVE ->. PRESS
-------
You can move up and down the screen with the up and down arrow keys. The
cursor moves automatically to the next line after you press . When
you have entered the final end point, enter -99 for the next end point.
Control will be returned to the main size distribution menu.
If you want to use a histogram size distribution, first select the
"Select type of size distribution" option from the main particle size
distribution menu. Then press to select the histogram option. You
will be returned to the main particle size distribution menu for the histo-
gram size distribution (Figure C-4e). -Move the cursor to the "Enter histo-
gram size distribution" option, and press . The screen will clear,
and you will see the histogram size distribution data entry form (Figure C-4f).
Note that this form has two columns: one for particle diameter and one for
the cumulative percent less than the stated diameter. You can move the
cursor up and down and right or left on this form. Data entry consists of
completing the form. The cursor automatically moves from one column to the
other to make rapid d,ata entry possible.
The particle diameters must be entered in increasing order. The value
of "cumulative percent less than" must be 0 for the first particle diameter.
The value of "cumulative percent less than" must be 100 for the last diameter.
After you have entered the last diameter and its cumulative percent (100),
enter -99 for the particle diameter. You must press to return to the
main size distribution menu. The -99 is never stored; it only serves as a
switch.
Get V-I Data from V-I Model File
This option allows you to use the results calculated by the V-I predictor
model in the performance model. If this option is selected, the program
looks for the file SRI.DAT on the default drive. If the file is not found,
an error message is printed to inform you that the V-I file is not available.
If the file is found, the applied voltage, current density, electric field
at the plate, plate-to-plate distance, and length of section for each
section are read from the file. The temperature, pressure, and mobility
from the V-I program also are used. If the file does not contain data for
all the sections, the model assumes that the data for the previous section
can be used. For example, if you have a four-section ESP and have used the
C-17
-------
I.
%• •
ENTER SIZE DISTRIBUTION I^iWflTION.
Select type of size distribution (Dog norwl istograi row H
Enter histograi size distribution.
Return to Hin wnu.
Press (ENTER) to execute option.
USE flRRCWS TO HOVE ->. PRESS
-------
x*
f#\
1
L
C -
lx *
1,
N
1
1 -
1
f
f
I
(:
^
t
^
•£•
^
'^
I •'"•
'>•.-> s
* .
*S
V
Jr Diameter (iierons)
/ -) .2
.4
.7
1
1.5
2
3
4
5
7
10
15
25
30
100
\
VARROW KEYS TO MOVE ->. PRESS (ESD
J^rfE*'t •• •-
. , „- , „ ^-^
"•"N^Xjf
Cui < less than 21 end points X &
e \i
.1479 I
.5742 |
1.0092 \
1.722& |
2.7493 ' \
6.S251 1
9.4B32 §
11. 1363 f
13.0503 :
15. ££56
20.1844 ;
30.9727
35.4960 >
100 i
• i
A ' k'
™ !•
0 i
0 E
0 I
e 1
jp /
JK V^
TO RETURN. Enter -99 for diameter to end ^*I^V ^
- -; -r ' , .«?**!#^.- >^
S^^-i™, VVX~*ii™«^-SS£ -, V,w ~S , ^, ,~ >v, ^
Figure C-4f. Menu displayed after selecting "Enter histogram size distribution."
C-19
-------
V-I model to calculate V-I information for two sections, the performance
model will assign the two calculated results to sections 1 and 2, and the
V-I data for section 2 to sections 3 and 4. As soon as the file has been
read, program control is returned to the Main Menu.
Enter Sectional Data
This loads the menu used for entering data (applied voltage, current
density, etc.) specific to a given electrical section. If this option is
selected, the sectional data form (Figure C-5) is displayed.
The first line in the "Data entry form for sections" displays the
section number. The sections are numbered from 1 to N, beginning at the
inlet of the ESP. Thus, section 1 is the inlet section, and section N is
the outlet section. The section number can be changed by entering another
value.
SCA of section. This is the specific collector area (in square feet
per 1000 actual cubic feet per minute) for the section. The default value
is the total SCA divided by the number of sections.
Voltage kV. This is the applied voltage (in kilovolts). If data are
read in from the V-I predictor file, the value appears here.
Average electric field. This is the voltage divided by the wire-to-
plate spacing (in kilovolts per centimeter). You cannot enter data here
since the program calculates the value from the applied voltage.
Field at the plate. This is the electric field at the plate (in
kilovolts per centimeter). If the V-I predictor file is used, the field at
the plate from the V-I model will be used. If either the V-I predictor
file is not used or the applied voltage or wire-to-plate spacing is changed,
the field at the plate will be calculated by dividing the average field by
1.75.
Current density. This is the average current density (in nanoamperes
per square centimeter) for the section. If the V-I predictor file is used,
the value from the file will be used.
Wire-to-plate spacing. This is the distance between the wires and the
plate (in inches).
Number of length increments. This is the number of increments into
which you decide to divide the section. Nine or 10 is a good value for
inlet fields, and 2 or 4 is a good value for outlet fields.
C-20
-------
Data entry for* for sections. Total nuiber of sections 4
-) SECTION
SCA of section ft£/kacf«
Voltage kV
Average electric field kV/a
Field'at the plate kV/ci
Current density nfl/nS
Uire to plate spacing in.
Length of section ft.
Nutber of lencth increments
Length of each increment ft.
Return to Rain semi (Esc)
1
97.5
35.9
114
1.79
31.1
4.5
9.0
9
1.8
USE ARROWS TO ROVE CURSOR. ENTER NEW VALUE.
Figure C-5. Menu displayed after selecting "Enter sectional data."
C-21
-------
Length of each increment. This is the length (in feet) of the direction
of gas flow for the increments. You cannot enter data here. Note that the
product of the number of length increments and each increment's length must
equal the total sectional length. This is used to determine the increment
length.
Length of section. This is the total length of the section (in feet).
The length of each section is the product of the number of increments and
each increment's length.
Return to Main Menu. This returns you to the Main Menu.
Enter Non-ideal Data.
This option in the Main Menu allows you to enter the data for the non-
ideal correction factors. If you select this option, the non-ideal factor
form is displayed (in Figure C-6).
Non-ideal data set. This is the particular data set consisting of the
data you enter. If you attempt to enter more non-ideal data sets than
specified in the general .data entry form, an error message will be printed.
Mass mean diameter of rapping. This is the value of the mass mean
diameter of the rapping reentrainment size distribution. Field measure-
ments for fly ash ESPs show that the average rapping size distribution has
a mass mean diameter of 6 urn. Unless you have specific data on the rapping
reentrainment size distribution, you should use 6 urn.
Geometric std deviation of rapping. This is the geometric standard
deviation of the rapping reentrainment size distribution. A value of 2.5
is recommended unless you have specific data. (The ESP model assumes that
the rapping reentrainment has a log normal size distribution.)
Gas sneakage fraction. This is the fraction of the gas that bypasses
(or sneaks past) each baffled section. Data from several ESPs show that an
ESP designed for high efficiency (>99%) should have a sneakage fraction of
0.05. This value is typical of modern (post-mid-1970s) ESPs. The same
data indicate that a sneakage fraction of 0.1 should be used for moderate
efficiency and pre-1970 ESPs.
Velocity distribution. This is the standard deviation of the gas flow
distribution: 0.15 should be used for modern ESPs and 0.25 for older ESPs.
C-22
-------
Entry fon for non-ideal factors. Nuabcr of data sets £
-) Non-ideal data set t 1
Mass aean diameter of raooing tw £
Geometric std deviation of raooinc 2.5
Sas sneakage fraction 0
Velocity distribution 0
Nuiber of baffled sections 4
Return to main aenu (Esc)
Figure C-6. Menu displayed after selecting "Enter non-ideal data."
C-23
-------
Number of baffled sections. This is the number of baffled sections in
the direction of gas flow. Note that the number of baffled sections does
not have to equal the number of electrical sections. A high efficiency ESP
should have at least four baffled sections. The minimum value is the
number of electrical sections.
m
When you have entered all the data for one set of non-ideal factors,
move the cursor to the top of the form. Then enter the number of the next
non-ideal data set. When all non-ideal data have been entered, move the
cursor to the bottom of the form. Then press or from any
location in the form.
Store Data in File
This option in the main data entry menu allows you to store the ESP
data in a disk file. If you select this option, you will be prompted for a
file name. Any legal MS-DOS file name may be used.
Read Data from File
This option in the Main Menu allows the program to read previously
stored data! If you select this option, you will be prompted for a file
name. If the program cannot find the file, an error message is printed.
Run Program
This option allows you to run the program.
Run V-I Calculation
This option loads and runs the V-I predictor model. Note that if you
select this option, all your data in the memory will be lost. Thus you
should not select this option until you have stored your data on disk.
Quit and Return to MS-DOS
This option allows you to exit the program and returns control of the
computer to MS-DOS.
Configure a New Printer
This option allows you to configure a printer for use with the program.
The printer configuration option asks for all the data necessary to configure
a printer. See Appendix C notes for further details.
C-24
-------
Program Execution
As soon as you select the Run program option, the program begins to
calculate the performance. First, the program checks that the total SCA
and the total length of the ESP (specified in the general data entry form)
agree with the sum of the sectional SCAs and the sectional lengths (from
the sectional data entry form). If not, an error message is printed with
three options offered. You may: continue the calculations using the
sectional data, return to the data entry menu and re-enter data as necessary,
or quit.
If the SCAs and lengths all agree, the program begins calculating the
ESP's performance. A message indicating the section number currently used
for calculations is displayed. This keeps you informed of the progress.
If a run-time error is encountered, an error message will be displayed.
The error message both identifies the line number where the error occurred
and gives the error number. You then have the option of stopping or return-
ing to the data entry section for correction of the input data. In general,
most run-time errors occur because of errors in the input data. Thus, you
will generally want to re-enter the data.
Output Data
As soon as the calculations are completed, the screen will clear with
a summary of the results for the first set of non-ideal conditions displayed.
Figure C-7 is an example of these summary data. Press any key to move to
the summary results for the next set of outputs.
Once the summary results for the last set of non-ideal conditions are
displayed, you will be asked if you want a hard copy. If so, or if you
want to save the results on a disk file, you must press . Once you
press , you will be asked if you want to: print the results, direct the
results to the screen, or save the results in a file. Press to print
the results, to direct the results to the screen, or to save the
results in a file. If you press , the results of the run will be printed
on the line printer. The output consists of the input data, summary results
for each set of non-ideal factors, and particle size specific results for
each set of non-ideal factors. If you press , you will be asked for a
file name. You must use any legal MS-DOS file name. If you do not want to
C-25
-------
i ^ >WA.-L^ > ^X^XA ^x^v^j-jw-^wN^vssw v-3t$s*&xy-<.r? %•«.»¥^-s <™*^^t^~t^y§'7*s-4^~*x~f't"^f^z~-yftt'''?*^
SuHury output data for non-ideal correction set No. 1
Stated efficiency = 99.8573* Ideal calculation * 99.8572*
Inlet M) » 51.7 Herons with signa = 5.5
Gas velocity sign = 8.80 nith 8.80 * sneakage over 4. stages
Hot side ESP
SCfl = 398. ft2/1000acfi
Rapping size distribution - mti 12.0 Herons with signa 2.5
Adjusted no-rap efficiency * 99.9766*
No rap emissions 0.80059 SR/ftCF OR 8.8822 U/WBTU
No-rap outlet WD « 1.6 •icrons
No-rap outlet signa * 1.8
Buality of fit ,« 8.9919
Efficiency with rapping = 99.9025*
Eiissions with rapping 8.002 SR/fiCF OR 8.0091 LB/WBTU
Corrected outlet 190) = 4.5 aicrons
Corrected outlet sigM » 2.7
Quality of fit > 8.9982
PRESS flNY KEY TD CONTINUE
>
v -. -,
$•
Figure C-7. Example of summary output data for first set of non-ideal conditions,
C-26
-------
obtain a hard copy or save the results, you must press . If you do
this, you will be returned to the Main Menu. After all the results are
printed, control is returned to the Main Menu. An example of the detailed
output appears in Figure C-7.
Errors
The ESP model program is designed to catch most errors. There are two
general types of errors. The first is "wrong key pressed" (e.g., if the
program expects numeric data, and you press a letter key). The computer
first will beep to inform you that an error was made and then ignore the
data. The second type of common error is caused by failure of the program
to find a disk file. The program expects to find various files in either
the current directory or the Drive A root^directory. If the file is not
found, the computer will beep to inform you of an error. A third type of
error is a run-time error, usually caused by failure to enter correct data.
When an error is encountered, the computer beeps and displays a message,
You either can re-enter data or quit. Since most errors (both run-time and
other) occur because of errors made in data entry, you usually will want to
select the option for re-entering data.
The program also catches logic errors (overall SCA and ESP lengths not
agreeing with the overall SCA and length calculated from the sectional
data).
Listed below is a sample set of data for a proposed ESP. We then
explain how you can use the performance model to calculate the efficiency
of this ESP.
Examp1e
The following ESP is proposed.
SCA 360 ftVkacfm
Length 36 ft
Four electrical sections and four baffled sections
Each section is 9 ft long and has an SCA of 90 ftVkacfm
Gas temperature 300°F
Water vapor by volume 9%
Gas flow rate 500,000 acfm
Gas velocity in ESP 4 ft/s
Gas pressure 1 atm
C-27
-------
Particle loading 3 gr/acf
Particle density 2.56 g/cm3
Particle size distribution mass mean diameter 15 urn
Particle size distribution standard deviation 3.56
Dust resistivity 2xl010 ohm-cm
Desired efficiency 99.0%
Estimated electrical conditions
Section V_ current density, nA/cm2
1 34 10
2 32 12
3 34 15
4 29 20
Solution
The following discussion assumes that the ESP program and BASIC are on
drive A, along with all necessary files and that the computer is at the
MS-DOS prompt >A. From the MS-DOS prompt, type BASIC ESPSRI (BASICA ESPSRI
for the IBM) and press . The screen will clear, displaying the Main
Menu. Since the program is not to be reconfigured, press the arrow
once to move the cursor to Enter General Data. Now press .
The General Data Entry form will be displayed. Move the cursor to the
first line, enter title, type "Example 1" (no quote marks), and press
. Press the arrow key once to move the cursor down one line
to inlet loading. Enter 3.0 and press . Press the arrow key
to particle density and type 2.56. Press . Move the cursor down
one line with the arrow key and type 100 for the dielectric constant.
Press . Move the cursor down one line with the arrow key and
type 2.2E-4 for the ion mobility. Press . Continue down the form
until all the data are entered. Figure C-8 shows the completed form.
Press to return to the Main Menu. Use the arrow key to
move the cursor down one line to enter particle size data. Press .
The screen will clear, displaying the General Particle Size Data menu.
Move the cursor to select "Enter Type of Size Distribution," and press
. After the computer displays the prompt to change the type of
particle size distribution, press for log normal. As soon as you do
this, program control returns to the Main Size Distribution menu. Now move
the cursor down to "Enter log normal parameters," and press . The
screen will clear, displaying the log normal parameter menu (Figure C-9).
C-28
-------
Data entry form for general ESP data.
-)
Title DWPLE 12 FROM
Inlet dust loading
Particle density
Dielectric constant
Ion mobility
Total SCfl
Total length of ESP
Gas flow rate
Gas velocity in ESP
Gas temperature
Gas pressure
Gas viscosity
(Dold side or (Wot side
Number of electrical sections
Estimated efficiency
Number of iterations
Resistivity
No. of non ideal conditions
RETURN TO KflIN PRCSRAM (Esc)
REV 3 (10 FRQK REV 1)
3.W gr/acf
2.56 ;a/ca3
in
358.8 ft2/kacfm
3£.8 ft
50«l rvV 3C:8
4.08 ft/s
30e deg F
1.00 atm
2.S0E-04CP
C
4
99.08 X
2
2.WE+10 ohm-en
2
flRROU KEYS ORE flCTIVE. PRESS (ESC) TO RETURN. ENTER ITEM.
Figure C-8. Data entry form for general ESP data.
C-29
-------
Enter log norwl par meters
Mass Kan diareter licrons
Gecwetric standard deviation
Return to size distribution cenu
-------
Fill in the form. After entering values for the mass mean diameter and
geometric standard deviation, return to the size distribution menu by
pressing . From the size distribution menu, move the cursor down one
line to "Enter end points," and press . The screen will clear, and
the end point form (Figure C-10) will be displayed. Fill in this form with
the data shown. Be sure to enter -99 after entering the last diameter.
Now press to return to the Size Distribution menu.
Press one more time to return to the Main Menu. From here, move
the cursor down to "Enter sectional data," and press . (We will not
read a file from.the V-I curve program at this time.) The screen will
clear and display the section data entry form (Figure C-ll). With the
cursor at "Section," enter 1. Now complete the form for section 1. Then
move the cursor to the top of the form, and enter 2. Now enter data for
section 2 and so on for all the sections. The completed forms for all the
sections are shown in Figure C-12 (a-d). Once you have entered all the
data for all the sections, press to return to the Main Menu.
The default data set for the EPA/SRI performance model is the data set
used in example 12 in "A Mathematical Model of Electrostatic Precipitation
(Revision 3): Volume II User's Manual," EPA-600/7-84-069b (NTIS PB84-212689).
This particular data set is used to allow direct comparison of the results
of the BASIC version of the model with the FORTRAN version. The BASIC
version of the model is in excellent agreement with the FORTRAN approximation
version.
The non-ideal factors for the example are shown in Figures 13a and
13b. Note that two non-ideal data sets are used. The first is for zero
sneakage and gas flow distribution. This data set represents a perfect
ESP. The second data set is for sneakage and gas flow distribution factors
typical of industrial ESPs installed before 1970.
The results of the model calculations are shown in Figures 14a and
14b. Note that the ESP does meet the required emission standards.
C-31
-------
r
Dianeter dicrons)
.2
.4
.7
1
1.5
2
3
4
S
7
II
IS
25
38
100
-95
21 end points
ARROW KEYS TO MOVE -). PRESS
-------
Data entry for* for sections. Total nuiber of sections 4
-> SECTION
SCA of section ftSAacfi
Voltage kV
Average electric field kV/n
Field at the plate kV/n
Current density nA/ca2
Uire to plate spacing in.
Length of section ft.
Nuiber of length increments
Length of each increment ft.
Return to win aenu (Esc)
1
82.5
35.9
3.14
1.75
31.1
4.5
9.8
9
i.e
USE ARROWS TO MOVE CURSOR. ENTER NEU VAUE.
Figure C-ll. Menu displayed after selecting "Enter sectional data."
C-33
-------
Data entry fore for sections. Total nuitber of sections 4
-> SECTION
SCfl of section ftS/kacfn
Voltage kV
Average electric field kV/ca
Field at the plate kV/a
Current density nfl/cnS
Wire to plate spacing in.
Length of section ft.
Nuaber of length increments
Length of each increnent ft.
Return to uin nenu
1
98.8
1.78
10.9
4.5
9. a
9
l.i
USE ARROWS TO MOVE CURSOR. EVTER NEW VflLUL
Figure C-12a. Menu for Section 1 data entry.
C-34
-------
Data entry fort for sections. Total nunber of sections
t
" i
SECTION
SCfl of section ft2/kacfi
Voltage kV
Average electric field kV/n
Field at the plate kV/ci
-) Current density nfl/ci2
Uire to plate spacing in.
Length of section ft.
Nuiber of length ircreoents
Length of each increment ft.
Return to uin Knu (Esc)
2
90.0
32.0
2.80
1.60
4.5
9.0
9
USE ftRROUS TO MOVE CURSOR. ENTER NEW VflUJL
Figure C-12b. Menu for Section 2 data entry.
C-35
-------
-
*
Data entry fora for sections. Total nunber of sections 4
SECTION
SCfl of section ft2/kacfa
-> Voltage kV
ftverage electric field kV/ct
Field at the plate kV/ca
Current density nfl/cn2
Hire to plate spacing in.
Length of section ft.
Number of length i no-wents
Length of each increment ft.
Return to tain «enu (Esc)
£.97
1.70
15.0
4.5
9.0
9
1.1
USE fiRROWS TO MOVE CURSOR. ENTER SEW VRLLC.
Figure C-12c. Menu for Section 3 data entry.
C-36
-------
Data entry fora for sections. Total nunber of sections 4
SECTION
SO) of section ftS/kacf*
Voltage kV
ftverage electric field kV/ci
Field at the plate kV/n
-> Current density nfl/caS
Wire to plate spacing in.
Length of section ft.
Nuiber of length increnents
Length" of each increaent ft.
Return to main wnu (Esc)
90.8
29. 0
2.54
1.45
28.0
4.5
9.0
9
1.0
USE flflROWS TO MOW CURSOR. ENTER NEW VflLUL
Figure C-12d. Menu for Section 4 data entry.
C-37
-------
1 *xx«
Entry fora for non-ideal factors. Nuaber of data sets 2
Non-ideal data set I 1
-) Mass Kan diameter of rapping ui £
Geonetric std deviation of rapping 2.5
Gas sneakage fraction I
Velocity distribution 0
Nuaber of baffled sections 4
Return to lain nenu (Esc)
Figure C-13a. Entry form for first non-ideal data set.
C-38
-------
ji?
Entry fora for non-ideal factors. Nuiber of data sets 2
Non-ideal data set * 2
Mass Kan diaoeter of rapping ui 6
Seonetric std deviation of rapping 2.5
Sas sneakage fraction .1
-> Velocity distribution .25
Nuiber of baffled sections 4
feturn to uin oenu (Esc)
Figure C-13b. Entry form for second non-ideal data set.
C-39
-------
Stwary output data for non-ideal correction set No. 1
Stated efficiency « 99.2256* Ideal calculation * 99.2127%
Inlet W =15.8 licrons with signa = 3.6
Gas velocity signa = 0.00 Mith 0.00 X sneakage over 4. stages
Cold side ESP
SCfl « 360. ft2/10e0aefn
Rapping size distribution - vd 6.1 ticrons with sigiu 2.5
Adjusted no-rap efficiency = 99.7595%
No rap Missions 0.00722 SR/flCF OR .0.0188 LB/WBTU
No-rap outlet M) * 1.5 •ierons
No-rap outlet signa * 1.9
Quality of fit * 0.9962
Efficiency with rapping * 99.674W
Emissions Mith rapping 1.010 SR/ftCF OR 0.0255 Lfi/WBTU
Corrected outlet WD > 1.9 licrons
Corrected outlet sign = 2.3
Quality of fit > 0.9965
PRESS ANY KEY TD CONTINUE
. " vw&v -.w.^X" (MOW3*- SKvA«**JC<
Figure C-14a. Results of the model calculations for the first non-ideal data set.
C-40
-------
SuBury output data for non-ideal correction set No. 2
Stated efficiency * 99.2256% Ideal calculation = 99.2127%
Inlet M> =15.8 licrons with sigaa = 3.6
Gas velocity sigu • 8.25 with 10.88 % sneakage over 4. stages
Cold side ESP
SCfl « 368. ft2/1888acfn
Rapping size distribution - mti 6.8 licrons with signa 2.5
Adjusted no-rap efficiency = 99.2*23%
No rap Missions 8.82273 GR/RCF OR 8.8593 LB/lttBTU
No-rap outlet WD « 2.2 licrons
No-rap outlet sign * 2.2
Quality of fit -8.9971
Efficiency with rapping = 99.8720%
Emissions with rapping 8.828 Sfi/flCF tW 8.8727 LB/IWTIJ
Corrected outlet Wffl > 2.3 licrons
Corrected outlet sigia = 2.2
Quality of fit « 8.9975
flNY KEY TO CONTINUE
Figure C-14b. Results of the model calculations for the second non-ideal data set.
C-41
-------
Appendix C Notes on Configuring the Program.
The program expects to find the file COMPUTER.CNF which contains the
information necessary for translating the cursor keys into actions. The
keys' values are assigned to the following strings:
String key Tandy Value IBM Value
U$ up arrow CHR$(31) CHR$(0)+CHR$(80)
D$ down arrow CHR$(30) CHR$(0)+CHR$(72)
RT$ right arrow CHR$(29) CHR$(0)+CHR$(77)
LT$ left arrow CHR$(28) CHR$(0)+CHR$(75)
Note that the value of the cursor control keys is a one-character string
for the Tandy 2000 and a two-byte string for the IBM-PC. Also note that
the first character of the byte for all the IBM cursor control keys is
CHR$(0). If you need to write a configuration file for your computer, you
must determine the value that your version of BASIC assigns to the cursor
control keys. The following program will do this:
10 REM Cursor control program
20 CIS 'clear screen
30 DEF STR A
40 A = INKEY$ : IF A = "" THEN 40 ELSE PRINT LEN(.A)
50 J = LEN(A)
50 WHILE J>0
60 PRINT ASC(MID$(A,1,J))
70 WEND
80 GOTO 40
This program will print the ASCII values returned by the cursor control
keys.
As soon as you know the ASCII values returned by the cursor keys, you
can write the configuration file. The following program will help you
write it:
10 REM Write new configuration file
20 DEF STR A
30 DIM A(4),B(4,10),A1(4)
40 Al(l) = "UP":A1(2)="DOWN":A1(3)="LEFT":A1(4)="RIGHT"
50 CLS
60 FOR J = 1 TO 4
70 PRINT "DEFINE ";A1(J);" ARROW"
80 INPUT "ENTER LENGTH OF STRING ";JS
90 FOR Jl = 1 TO JS
100 PRINT "ENTER ASCII VALUE OF CHARACTER # ";J1;
110 INPUT B(J,J1):A(J) = A(J) +CHR$(B(J,J1))
C-42
-------
120 NEXT Jl
130 NEXT J
140 INPUT "ENTER NAME OF COMPUTER ";COMP$
150 OPEN "0",1,"COMPUTER. CNF"
160 PRINT #1,COMP$
170 FOR J = 1 TO 4
180 PRINT #1,A(J)
190 NEXT.J
200 CLOSE
After you have written this file, you must change line 220 of ESPSRI.BAS to
add your computer to the list. Also note that the chr$(0) is not stored in
the file. Thus, if your computer requires chr$(0) as part of the string,
you must add it in line 250 of ESPSRI.BAS for the IBM-PC. You can write a
configuration file that allows any key to be used for moving the cursor;
e.g., you might use U, D, L, and R.
C-43
-------
APPENDIX D
ESP PERFORMANCE MODEL (BASIC EPA/SRI VERSION)
The following pages contain the listing of the EPA/SRI ESP performance
model. The V-I program can be used with this version of the performance
model program to predict the ESP performance at operating points determined
by the V-I program.
D-l
-------
10 REM last change 3 July 1986 by PAL Addition of SRI.DAT spacing and length
20 REM last change 2 July 1986 by PAL Text changes for consistency.
30 REM last change 21 October 1985 by LES Corrected for compiler
40 REM last change 24 June 1985 by LES Modified printer configuration routine.
50 REM last change 15 March 1985 by LES Modified blink subroutine
60 REM SRI ESP Computer Model approximation version 2.1
70 REM written in MS-BASIC for the Tandy 2000 and IBM-PC
80 REM version by Leslie E. Sparks Particulate Technology Branch AEERL
90 REM Environmental Protection Agency.
100 REM This version can be compiled with the IBM Basic compiler and the
110 REM Microsoft GWBASIC Compiler for the Tandy 2000.
120 REM Interpreter answer is in good agreement with the FORTRAN version.
130 REM Note if the program is compiled the E switch on the compiler must be set
140 REM to allow the compiler to deal with the on error statements.
150 KEY OFF
160 SCREEN 0:WIDTH 80:CLS
170 DIM CTL(5)
180 ON ERROR GOTO 10500
190 EFLAG=1
200 OPEN "i",l,"COMPUTER.CNF" 'get configuration file
210 INPUT #1, COMPS
220 INPUT #1,US:INPUT #1,D$:INPUT #1,RT$:INPUT #1.LT$
230 CLOSE 1
240 IF COMPS="IBM" OR COMP$= "TANDY" THEN 250 ELSE PRINT "ERROR. ERROR":PRINT "
Do not recognize computer ";COMPS:STOP
250 ESCS=CHRS(27) :REM THESE ARE FOR THE TANDY 2000
260 IF COMP$="TANDY" THEN GOSUB 10790
270 IF COMPS="IBM" THEN IBM=5 ELSE IBM=0
280 IF COMP$="IBM" THEN U$=CHR$(0)+U$:D$=CHR$(0)+D$:RTS=CHR$(0)+RT$:LT$=CHR$(0)+
LTS
290 EFLAG=2
300 CHS=US+D$+RTS-LT$
310 NUM$="Ee0123456789.t--"
320 OPEN " I'M. "Print, cnf"
330 INPUT #1.PRNT$:INPUT #1.LENC:
340 CTL$="":FOR J=l TO LENC:INPUT #1,CTL(J):CTL$=CTL$+CHR$(CTL(J) ) :NEXT J:CLOSE
350 AS="****.**** **.####*# #*.*#***# #f.####*# #*.###### ##.####* **.#####"
360 QQ=0
370 LOCATE 10,10:PRINT "EPA/SRI ESP Model Estimation Procedure"
380 LOCATE 12.10:PRINT "Basic Version for the ";COMPS
390 LOCATE 14.10:PRINT "Printer is set up for ";PRNT$
400 DIM CHK(20),NO(20),XNO(20),DXS(20),XMV(20),PCNT(20),RAD(20),IDENT$(2 )
410 DIM CCF(20),PRCU(21),EFF(20),ESF(5.20),ERF(5.20).EAVG(IO),EE(10)
420 DIM VOL(20),Q(20),WS(20),DW(45),QSAT(20),XDC(45,20)
430 DIM ENPT(21),WY(5.20),PACT(20),PBCT(5,20),PDCT(5,20)
440 DIM FQ(20),TQ(20),Y(20).AA(20),DIAM(20).L3(21),L4(20).VOLT(20),CUR(20 )
450 DIM SCA(IO).CDEN(IO),AZM(10),BSM(10).AZ(10).VS(10),TCS(10),BS(10)
460 DIM LENGTH.SEC(IO).LINCM(IO),LSECT(10),LINC(10)
470 DIM SSF(5),SRF(5),MR(5),YR(5),GR(5).MS(5),YS(5),GS(5),RMMD(5),RSIG(5 ) .ZIG(5 )
,ZNUM(5).SNK(5)
480 JSECT=1
490 IDENT$(1)="C":IDENT$(2)="H"
500 E=l.6E-19:BC=1.38E-23:E0=8.85E-12:CMKS=1.112E-10
510 REM GET DEFAULT DATA FROM FILE. NOTE REQUIRES THAT FILE DEFAULT.DAT BE PRES
ENT
D-2
-------
520 EFLAG=3
530 F$="default.dat":GOSUB 7840:
540 GOSUB 4030
550 CLS
560 TA=SCA*VGACFM/1000:ACHECK=0:FOR J=l TO NUMS:ACHECK=ACHECK+AZ(J):SCA(J)=AZ(J)
/VGACFM*1000:NEXT J
570 LCHECK=0:FOR J=l TO NUMS:LCHECK=LENGTH.SEC(J)+LCHECK:NEXT J
580 IF ABS((PLFT-LCHECK)/PLFTX.01 THEN 670 ELSE PRINT "Error in length. Overa
11 length and sum of sectional lengths do not agree.":PRINT "What do you want to
do?"
590 PRINT "1. Reenter data."
600 PRINT "2. Use sectional lengths"
610 PRINT "3. Quit"
620 PRINT "Press the number corresponding to your choice."
630 Y$=INKEYS:IF Y$="" THEN 630 ELSE JY=INSTR("123",YS)
640 IF JY=0 THEN 630 ELSE IF JY=3 THEN STOP
650 IF JY=1 THEN 540 ELSE PLFT=LCHECK
660 CLS
670 IF ABS((TA-ACHECK)/TA) <.01 THEN 770 ELSE PRINT "Error in SCA. Overall SCA a
nd sum of sectional SCAs do not agree." :PRINT "What do you want to do?"
680 PRINT "1. Reenter data."
690 PRINT "2. Use sectional SCA."
700 PRINT "3. Use total SCA and divide equally among sections."
710 PRINT "4. Quit.":PRINT "Press the key corresponding to your choice."
720 Y$=INKEYS:IF Y$="" THEN 720 ELSE JY=INSTR("1234",Y$):IF JY=0 THEN 720
730 ON JY GOTO 540.740,750,760
740 TA=ACHECK :GOTO 770
750 FOR J=l TO NUMS:AZ(J)=TA/NUMS:NEXT J:GOTO 770
760 STOP
770 CLS
780 LOCATE 5,20:PRINT "WORKING"
790 GOSUB 10420:REM check size distribution
800 FOR J=l TO NUMS:BSM(J)=BS(J)*.0254:IF EAVG(J)<>0 THEN 810 ELSE EAVG(J)=VS(J)
/BSM(J):EE(J)=EAVG(J)/1.75
810 NEXT J
820 FOR J=l TO NUMS :TCS(J)=CDEN(J)*AZ(J)*.305*.305*100*100*1E-09:NEXT J
830 NS=NE-1
840 FOR 1=0 TO NE-1
850 IF I>0 THEN RAD(1-1)=(ENPT(I)+ENPT(1-1))/2*.000001/2
860 NEXT I
870 PI=3.14159
880 IF ND=1 THEN 960
890 L1=D50
900 L2=SIG
910 GOSUB 2940
920 FOR J=0 TO NS
930 PCNT(J)=L4(J)
940 NEXT J
950 GOTO 1030
960 FOR 1=0 TO NE-1
970 IF I>0 THEN PCNT(1-1)=(PRCU(I)-PRCU(1-1))/100
980 L3(I)=PRCU(I)
990 NEXT I
1000 GOSUB 3380
1010 D50=L1
1020 SIG=L2
1030 DL=DLGR*.00229
-------
1040 PL=PLFT*.305
1050 VIS=VISCP/10
1060 DD=DDGM»1000
1070 DV=DL/DD
1080 VG=VGACFM«.000473
1090 VEL=VELFTSEC*.305
1100 ZMFP=(8.205E-05*TDK)/(1.414*PI»E*6.02E+23*P)
1110 VAVC=SQR(6619000!*TDK)/100
1120 VC=E'2/BC/TDK
1130 U=TDK/273.16*US/P
1140 W=DL*VG
1150 PRINT
1160 NF=0
1170 FOR 1=1 TO NUMS
1180 NF=NF+LSECT(I)
1190 LINCM(I)=LINC(I)«.305
1200 NEXT I
1210 TAM=TA*.093
1220 CLS
1230 IC=1
1240 FOR 1=0 TO NS-1
1250 VOL(I)=PCNT(I)*DV
1260 NO(I)=VOL(.I)/(4/3*PI*RAD(I)~3)
1270 XNO(I)=NO(I)
1280 CCF(I)=1+ZMFP/RAD(I)*(1.257+.4*EXP(-1.1*RAD(I)/ZMFP) )
1290 NEXT I
1300 INDEX=0
1310 NN=1
1320 NC=0
1330 CLS
1340 FOR 1=1 TO NF
1350 INDEX=INDEX+1
1360 IF 1=1 THEN 1400
1370 IF INDEX-LSECT(NN)<=0 THEN 1420
1380 NN=NN+1
1390 INDEX=1
1400 NC=1
1410 LOCATE 15,30:PRINT STRINGS(30." "):LOCATE 15,30:PRINT"PROCESSING SECTION" ;N
N
1420 IF NCXl THEN 1540
1430 IF IC=1 THEN AZM(NN)=AZ(NN)«.093
1440 IF IC=1 THEN BSM(NN)=BS(NN)*.0254
1450 EAVG=EAVG(NN)
1460 TINC=LINCM(NN)/VEL
1470 LOCATE 17.1:PRINT STRINGS(80." "):LOCATE 18.1:PRINT STRINGS (240," ")
1480 FOR L=0 TO NS-1
1490 LOCATE 17,1:PRINT".";
1500 QSAT(L)=(4*PI*EO*(RAD(L)+ZMFP)~2)*EAVG*(1+2*(EPS-1)/(EPS+2)»(RAD(L)/(RAD(L)
t-ZMFP))'3)*1.2
1510 NEXT L
1520 NC=0
1530 CD=TCS(NN)/AZM(NN)
1540 GOSUB 3660
1550 FOR J=0 TO NS -1
1560 PRINT ".";
1570 SCH=QSAT(J)/E
1580 V=VC/RAD(J)/CMKS
D-4
-------
1590 IF I<3 THEN 1700
1600 IF 1=3 THEN 1640
1610 IF NN=1 THEN 1630
1620 IF INDEX=1 AND VS(NN)>VS(NN-1) THEN 1700
1630 IF CHK(J)<=.005 THEN 1680
1640 CHK(J)=(XDC(I-1.J)-XDC(I-2.J))/XDC(1-1,J)
1650 IF NN=1 THEN 1670
1660 IF INDEX=1 AND VS(NN)>VS(NN-1) THEN 1700
1670 IF CHK(J)>.005 THEN 1700
1680 Q(J)=XDC(I-1.J)
1690 GOTO 1730
1700 GOSUB 3860
1710 Q(J)=CNUM*E
1720 IF 1=1 AND CNUM>SCH THEN Q(J)=SCH*E
1730 XDC(I.J)=Q(J)
1740 NEXT J
1750 IF UEQ<.0001 THEN UEQ=.0001
1760 IF INDEX=1 THEN 1810
1770 IF UEQ0.0001 THEN 1800
1780 EE=SKIP
1790 GOTO 1830
1800 IF ABS(RVO-ROV)<.01 THEN 1830
1810 EE=EE(NN)
1820 SKIP=EE
1830 RVO=ROV
1840 FOR J=0 TO NS-1
1850 XMV(J)=CCF(J)»Q(J)*EE/6/PI/RAD(J)/VIS
1860 XNO(J)=XNO(J)*EXP(-AZM(NN)*XMV(J)/VG/LSECT(NN))
1870 NEXT J
1880 PRINT " + ";
1890 NEXT I
1900 PRINT
1910 TMO=0
1920 TPM=0
1930 FOR J=0 TO NS-1
1940 PRINT ".";
1950 EFF(J)=1-XNO(J)/NO(J)
1960 DIAM(J)=2*RAD(J)*1000000!
1970 OMASS=NO(J)»DD*4/3*PI*RAD(Jr3*VG
1980 PMASS=XNO(J)*DD*4/3*PI*RAD(J)~3*VG
1990 TMO=TMO+OMASS
2000 TPM=TPM+PMASS
2010 NEXT J
2020 TEFF=(1-TPM/TMO)*100
2030 CLS
2040 PRINT:PRINT"IDEAL Calculated Efficiency=";TEFF:PRINT
2050 IF ABS(TEFF-ETAO)>.1 AND ICXITER THEN IC = IO1 :ETAO=TEFF: PRINT"Start 2nd ite
ration on IDEAL Efficiency":GOTO 1240
2060 PRINT:PRINT"NON-IDEAL Corrections'
2070 FOR KN=1 TO NID
2080 L1=RMMD(KN)
2090 L2=RSIG(KN)
2100 GOSUB 2940
2110 CVRT=TDK*3670/P
2120 TT=.999999
2130 TSM=0
2140 TRM=0
D-5
-------
2150 FOR J=0 TO NS-1
2160 PACT(J)=L4(J)
2170 IF EFF(J)>TT THEN EFF(J)=TT
2180 WY(KN,J)=LOG(1/(1-EFF(J)))
2190 PN=1-EFF(J)
2200 IF EFF(J)=TT THEN 2230
2210 IF ZIG(KN)=0 THEN 2230
2220 WY(KN,J)=WY(KNfJ)/(l*.0755*ZIG(KN)*LOG(l/PN)+.766*EFF(J)*ZIG(KN)"1.786)/(LO
G(PN)/ZNUM(KN)/LOG(SNK(KN)+(1!-SNK(KN))*PN-(1/ZNUM(KN))))
2230 IF DIAM(J)< 4.4 THEN WY(KN.J)=WY(KN,J)*{-4.668-.46*LOG(2*RAD{J)))
2240 ESF(KN,J)=1-EXP(-WY(KN.J))
2250 IF EFF(J)>=TT THEN ESF(KN.J)=TT
2260 TSM=TSM+ESF(KN,J)*PCNT(J)*W
2270 NEXT J
2280 CLS
2290 SSF(KN)=TSM/TMO
2300 XR=LOG(1/(1-SSF(KN)))
2310 PTL=LINCM(NUMS)*LSECT(NUMS)
2320 XRM=CVRT*DL*EXP(-XR*(PL-PTL)/PL)*(1-EXP(-XR*PTL/PL))
2330 IF NT=1 THEN RLOS= . 155*XRM" . 905 ELSE RLOS=.618*XRM".894
2340 FOR J=0 TO NS-1
2350 ERF(KN,J)=(PCNT(J)*(1-EXP(-WY(KN,J)))-PACT(J)*RLOS/CVRT/DL)/PCNT(J)
2360 IF ERF(KN.J)<0 THEN ERF(KN.J)=0
2370 TRM=TRM+ERF(KN,J)*PCNT(J)*W
2380 NEXT J
2390 SRF(KN)=TRM/TMO
2400 Tl=0
2410 T2=0
2420 FOR J=0 TO NS-1
2430 T1=T1+PCNT(J)*(1-ESF(KN,J))
2440 T2=T2+PCNT(J)*(1-ERF(KN,J) )
2450 NEXT J
2460 L3(0)=0
2470 FOR J=0 TO NS
2480 PBCT(KN.J)=PCNT(J)*(1-ESF(KN,J) )/Tl
2490 L3(J+l)=PBCT(KN,J)*100+L3(J )
2500 NEXT J
2510 L3(NE)=100
2520 GOSUB 3380
2530 MS(KN)=L1
2540 YS(KN)=L2
2550 GS(KN)=L5
2560 FOR J=0 TO NS -1
2570 PDCT(KN,J)=PCNT(J)*(1-ERF(KN,J))/T2
2580 L3(J+1)=PDCT(KN,J)*100 -»-L3(J)
2590 NEXT J
2600 L3(NE)=100
2610 GOSUB 3380
2620 MR(KN)=L1
2630 YR(KN)=L2
2640 GR(KN)=L5
2650 CLS:Y$=INKEY$:Y$=INKEY$:Y$=INKEY$
2660 PRINT:PRINT"Summary output data for non-ideal correction set No.";KN
2670 PRINT:PRINT USING "Stated efficiency = ##.####* Ideal calculation = ** #
###V; ETAO;TEFF:PRINT
2680 PRINT USING "Inlet MMD = ##.* microns with sigma = *#.# ":D50;SIG
2690 PRINT USING"Gas velocity sigma = *#.*# with ##.** * sneakage over ###. s
D-6
-------
tages";ZIG(KN);SNK(KN)*100;ZNUM(KN)
2700 IF NT=1 THEN TY$="Cold side" ELSE TY$="Hot side"
2710 PRINT TY$;" ESP"
2720 PRINT USING "SCA = ###*. ft2/1000acfm";SCA
2730 PRINT USING "Rapping size distribution - nmd **.# microns with sigma ##.#
11 ;RMMD(KN)*2;RSIG(KN)-.PRINT
2740 PRINT USING "Adjusted no-rap efficiency = **.*###*";SSF(KN)*100
2750 PRINT USING"No rap emissions *#.*###* GR/ACF OR ##.#### LB/MMBTU "; DLGR*(1
-SSF(KN));DLGR*(1-SSF(KN))*1.69*TDK/273
2760 PRINT USING " No-rap outlet MMD = *#.# microns";MS(KN)
2770 PRINT USING " No-rap outlet sigma = #*.* ";YS(KN)
2780 PRINT USING " Quality of fit = #f.***#";GS(KN) :PRINT
2790 PRINT USING "Efficiency with rapping = ##.#**#%";SRF(KN)*100
2800 PRINT USING "Emissions with rapping #*#.##* GR/ACF OR ##.#### LB/MMBTU";(1-
SRF (KN))*DLGR;DLGR*(1-SRF(KN))*1.69*TDK/273
2810 PRINT USING " Corrected outlet MMD = *#.# macrons";MR(KN)
2820 PRINT USING " Corrected outlet sigma = **.* ";YR(KN)
2830 PRINT USING " Quality of fit = *#.####";GR(KN)
2840 LOCATE 24,1:PRINT"PRESS ANY KEY TO CONTINUE ";
2850 SOUND 2200,3:
2860 Y$= INKEYS:IF Y$="" THEN 2B60
2870 CLS
2880 NEXT KN
2890 PRINT"Do you want hardcopy Y or N (also allows write to file)"
2900 Y$=INKEY$: IF Y$="" THEN 2900 ELSE IF INSTR("YyNn",Y$)= 0 THEN 2900
2910 IF INSTR("YyNn",Y$)<3 THEN GOSUB 8670
2920 GOTO 540 'BACK TO DATA ENTRY
2930 END
2940 REM SUBROUTINE LNDIST (LI,L2,L3,L4 ) *****
2950 PRINT"FITTING A SIZE DISTRIBUTION"
2960 L2=LOG(L2)
2970 NK=19
2980 AM=0
2990 K=0
3000 FOR J=0 TO NS
3010 IF J=0 THEN 3060
3020 IF J=NS THEN 3090
3030 X2=LOG(ENPT(J))
3040 X1=LOG(ENPT(J-D)
3050 GOTO 3110
3060 X1=LOG(.01)
3070 X2=LOG(ENPT(J))
3080 GOTO 3110
3090 X1=LOG(ENPT(J-1) )
3100 X2=LOG(1000)
3110 DSX=(X2-X1)/19
3120 D=X1
3130 FOR 1=0 TO NK
3140 Y(I)=EXP(-(D-LOG(L1))'2/2/L2"2)/L2/SQR(2*PI)
3150 D=D+DSX
3160 NEXT I
3170 REM SUBROUTINE QTFE NEXT 4 LINES
3180 S2=0
3190 FOR 1=1 TO NK
3200 S2=S2+DSX*(Y(I)+Y(I-l))/2
3210 NEXT I
3220 AM=AM+S2
-------
3230 IF J= 99 THEN 3510
3450 J=J+1
3460 IF L3(I)>50 THEN X2=1-X2
3470 X1=SQR(LOG(1/X2~2) )
3480 Y(J)=Xl-(2.51552+.802853*X1+.010328*X1~2)/(!+!.43279*X1+.189269*X1*2+.00130
8*X1~3)
3490 IF L3(I)<50 THEN Y(J)=-Y(J)
•3500 NEXT I
3510 REM SUBROUTINE CFIT
3520 G1=0:G2=0:G3=0:G4=0:G5=0
3530 FOR 1=1 TO J
3540 G1=G1-LOG(ENPT(I))
3550 G2=G2+Y(I)
3560 G3=G3+LOG(ENPT(I))*Y(I)
3570 G4=G4+LOG(ENPT(I))"2
3580 G5=G5fY(I)~2
3590 NEXT I
3600 X1=(J*G3-G1*G2)/(J*G4-G1'2)
3610 X2=(G4*G2-G1*G3)/(J*G4-G1"2)
3620 L5=SQR(X1*{J*G3-G1*G2)/(J*G5-G2'2))
3630 L1=EXP(-X2/X1)
3640 L2=EXP(1/X1)
3650 RETURN
3660 REM SUBROUTINE
3670 IF I >1 THEN 3720
3680 SW=0
3690 ROV=10
3700 RVO=20
3710 XS=LOG(100/(100-ETAO))
3720 DW(I)=(W-SW)*(1-EXP(-LINCM(NN)*XS/PL))
3730 SW=SW+DW(I)
3740 FID=CD/E/U/EAVG
3750 SUM=0
3760 FOR L=0 TO NS
3770 SUM=SUM+QSAT(L)*XNO(L)
3780 NEXT L
D-8
-------
3790 ZC=200*DW(I)/W*LSECT(NN)/TCS(NN)*VG*SUM
3800 ROV=ZC+1
3810 AFID=FID/ROV
3820 XCD=CD*100000!
3830 UEQ=U/ROV
3840 XPI=(1-EXP(-LINCM(NN)*XS/PL))*100
3850 RETURN
3860 REM SUBROUTINE CHGSUM *****
3870 IF I>1 THEN 3900
3880 FQ(J)=0
3890 TQ(J)=0
3900 SAT=E*SCH
3910 IF FQ(J)>=SAT THEN QF=FQ(J):GOTO 3960
3920 Cl=AFID*U*E/4/EO*TINC
3930 C2=1/(1-FQ(J)/SAT)
3940 QF=SAT*(C1+C2-1)/(C1+C2)
3950 IF QF>SAT THEN QF=SAT
3960 FQ(J)=QF
3970 ARG=V*TQ(J)/E
3980 IF ARG>30 THEN QT=TQ(J):GOTO 4010
3990 QT=E/V*LOG(E/BC*E/EO*RAD(J)*VAVC*AFID/TDK/4*TINC+EXP(ARG))
4000 TQ(J)=QT
4010 CNUM=(QF+QT)/E
4020 RETURN
4030 EFLAG=4:CLS
4040 REM
4050 ROW1=4 :PRMIN=4:PRLIM=15
4060 COL1=4
4070 CRS="-"-t-CHR$(16) :CRB$="- "
4080 AlS="0123456789.+-"+CHRS(13) +CHR$(8)+CHR$(29)
4090 AZ$=STRING$(79,"=")
4100 A2$="*01234567890-+."-t-CHRS(13) + CHR$(30)+CHR$(31)
4110 T1$="ESP MODEL DATA INPUT PAGE "
4120 PAGE=1
4130 PROG=4
4140 ROW=ROW1:COL=COL1
4150 IF PAGE=1 THEN ROWL=16 ELSE ROWL=15
4160 IF PAGE=1 THEN JSTART=1: JFINISH=13
4170 CLS:COLOR 11,0
4180 PRINT STRINGS(79,"=")
4190 PRINT " ESP MODEL DATA INPUT. MAIN MENU. SELECT ITEM TO ENTER
4200 PRINT AZ$
4210 PRINT TAB(10) "Change type of computer and save new file now :";COMPS
4220 PRINT TAB(10)"Enter general data eg overall SCA, gas temp "
4230 PRINT TAB(IO) "Enter particle size data "
4240 LOCATE 7,10:COLOR 0,7:PRINT "Get VI data from VI model file":COLOR 11,0
4250 PRINT TAB(IO) "Enter sectional data"
4260 PRINT TAB(IO) "Enter non-ideal data."
4270 PRINT TAB(IO) "Store data in file"
4280 PRINT TAB(IO) "Read data from file"
4290 LOCATE 12.10-.COLOR 0,7:PRINT "Run program.":COLOR 11,0
4300 PRINT TAB(IO) "Run VI Calculation (Note be sure to save info first)"
4310 PRINT TABOO) ;"Quit and return to MS-DOS"
4320 PRINT TAB(10);"Configure a new printer."
4330 PRINT
4340 PRINT AZS
4350 LOCATE 20,5,0:PRINT "Arrows move cursor up and down. Press to perfo
D-9
-------
rm function.":
4360 ROW=PROG:COL=5:GOSUB 10350
4370 LOCATE PROG.5:PRINT STRINGS(4." ")
4380 IF Y$=US THEN PROG=PROG +1 ELSE IF JY=13 THEN 4420 ELSE IF Y$=D$ THEN PROG=
PROG -1 ELSE 4360
4390 IF PROG >PRLIM THEN PROG= PRLIM
4400 IF PROG 50 THEN TS=LEFT$(TS,50)
4600 PRINT AZS
4610 PRINT " Data entry form for general ESP data."
4620 PRINT AZS
4630 T1$=STRINGS(40," ")
4640 PRINT TAB(IO) "Title";TAB(25) ;T$
4650 PRINT TAB(IO):"Inlet dust loading ";TAB(40);:PRINT USING "*#.## gr/acf";DLG
R
4660 PRINT TAB(10)"Particle density ";TAB(40);:PRINT USING "##.*# g/cm3";DDGM
4670 PRINT TAB(10)"Dielectric constant ";TAB(40);:PRINT USING "####";EPS
4680 PRINT TAB(10)"Ion mobility ";TAB(40);:PRINT USING "##.*# m2/Vs";US
4690 PRINT TAB(10)"Total SCA ";TAB(40);:PRINT USING "#*##.* ft2/kacfm":SCA
4700 PRINT TAB(10)"Total length of ESP ";TAB(40);:PRINT USING "##*.# ft";PLFT
4710 PRINT TAB(10);"Gas flow rate ";TAB(40);:PRINT USING "f,###,### acfm";VGACF
M
4720 PRINT TAB(10);"Gas velocity in ESP ";TAB(40);:PRINT USING "##.## ft/s";VEL
FTSEC
4730 PRINT TAB(10);"Gas temperature ";TAB(40);:PRINT USING "*### deg F";TEMPF:TD
K=(TEMPF+459)/1.8
4740 PRINT TAB(10);"Gas pressure ":TAB(40);:PRINT USING "##.** atm";P
4750 PRINT TAB(10);"Gas viscosity ";TAB(40);:PRINT USING "#*.#* cp";VISCP
4760 PRINT TAB(IO);"old side or ot side ";TAB(41);IDENTS(NT)
4770 PRINT TAB(10);"Number of electrical sections ";TAB(40);NUMS
4780 PRINT TAB(-IO);"Estimated efficiency ";TAB(40);:PRINT USING "###.## V;ETAO
4790 PRINT TAB(10);"Number of iterations ";TAB(40);ITER
4800 PRINT TAB(10)"Resistivity ";TAB(40);:PRINT USING "#*.## ohm-cm";RES
4810 PRINT TAB(10);"No. of non ideal conditions " ;TAB(40)-;NID
4820 PRINT TAB(10)"RETURN TO MAIN PROGRAM "
4830 PRINT AZS
4840 LOCATE 24.5,0:PRINT" ARROW KEYS ARE ACTIVE. PRESS TO RETURN. ENTER IT
EM. " ;
4850 GOSUB 10350
D-10
-------
4860 IF JY013 THEN 4870 ELSE IF ROW=RMAX THEN RETURN ELSE SOUND 2000,2:GOTO 485
0
4870 LOCATE ROW,COL,0:PRINT STRINGS(4," "):
4880 IF Y$=ESC$ THEN RETURN
4890 IF Y$=U$ THEN ROW=ROW+1 ELSE IF YS=D$ THEN ROW=ROW-1 ELSE 4930
4900 IF ROW>RMAX THEN ROW=RMAX
4910 IF ROWRMIN AND INSTR(NUM$.Y$)=0 THEN SOUND 2000.2:GOTO 4850
4950 IF ROW=RMAX THEN 4850
4960 IF ROW=4 THEN LOCATE 4.25,0:PRINT Tl$:LOCATE 4,25,0:CC=25
4970 IF ROW=4 THEN IGFLAG=-1 ELSE IGFLAG=1
4980 IF ROW=RMAX THEN SOUND 2000.2:GOTO 4850
4990 GOSUB 8260
5000 LOCATE ROW,CC:PRINT Tl$
5010 JFER*INT(ROW)-3:ON JFER GOTO 5020,5070,5100.5130,5160.5180,5200,5210.5240,5
250,5280,5310,5340,5380,5410,5440,5470.5500
5020 T$=ANS
5030. IF LEN(TS)>39 THEN T$=LEFT$(T$,39)
5040 LOCATE ROW,CC:PRINT T$
5050 CC=40:AN$=""
5060 GOTO 4850
5070 DLGR=VAL(AN$)
5080 LOCATE ROW,CC:PRINT USING "##.## gr/acf";DLGR
5090 GOTO 5530
5100 DDGM=VAL(AN$)
5110 LOCATE ROW,CC:PRINT USING "##,## gm/cm3";DDGM
5120 GOTO 5530
5130 EPS=VAL(AN$)
5140 LOCATE ROW,CC:PRINT USING "#*##";EPS
5150 GOTO 5530
5160 US=VAL(ANS)
5170 LOCATE ROW.CC.-PRINT USING "##.*# m2/Vs" ;US:GOTO 5530
5180 SCA=VAL(AN$): TA=SCA*VGACFM/1000
5190 LOCATE ROW,CC:PRINT USING "####.# ft2/kacfn":SCA :GOTO 5530
5200 PLFT=VAL(AN$):LOCATE ROW,CC:PRINT USING "***.* ft";PLFT:GOTO 5530
5210 VGACFM=VAL(AN$):LOCATE ROW,CC:PRINT USING •"#,**#,### acfm";VGACFM
5220 TA=SCA/1000*VGACFM
5230 GOTO 5530
5240 VELFTSEC=VAL(ANS):LOCATE ROW,CC:PRINT USING"##.#* ft/s";VELFTSEC:GOTO 5530
5250 TEMPF=VAL(AN$)
5260 LOCATE ROW.CC.-PRINT USING "#### deg F";TEMPF
5270 GOTO 5530
5280 P=VAL(AN$)
5290 LOCATE ROW,CC:PRINT USING "**.## atm";P
5300 GOTO 5530
5310 VISCP=VAL(AN$)
5320 LOCATE ROW,CC:PRINT USING "##.## cp";VISCP
5330 GOTO 5530
5340 AN$=LEFT$(AN$,l):JQ=INSTR("CcHh".ANS): IF JQ=0 THEN 5530
5350 IF JQ>2 THEN NT=2 ELSE NT=1
5360 LOCATE ROW,CC+1:PRINT IDENT$(NT)
5370 GOTO 5530
5380 NUMS=VAL(AN$)
5390 LOCATE ROW,CC:PRINT NUMS
5400 GOTO 5530
D-ll
-------
5410 ETAO=VAL(ANS)
5420 LOCATE ROW,CC:PRINT USING "###.## V';ETAO
5430 GOTO 5530
5440 ITER=VAL(AN$)
5450 LOCATE ROW,CC:PRINT ITER
5460 GOTO 5530
5470 RES=VAL(AN$)
5480 LOCATE ROW.CCrPRINT USING "*#.*# ohm-cm";RES
5490 GOTO 5530
5500 NID=VAL(AN$)
5510 LOCATE ROW,CC:PRINT NID
5520 GOTO 5530
5530 ANS=""
5540 COL=4
5550 GOTO 4850
5560 RMIN=5: RMAX=19:Cl=l:C2=30:C3=50
5570 COL=C1
5580 ROW=RMIN
5590 WHILE INKEYS <>""
5600 WEND
5610 JY=0
5620 ROW=5
5630 CLS
5640 IF ND=1 THEN TYS="H" ELSE TY$="L"
5650 PRINT AZS
5660 PRINT "ENTER SIZE DISTRIBUTION INFORMATION.
5670 PRINT AZS
5680 PRINT
5690 PRINT TAB(IO)"Select type of size distribution og normal istogram now
" ; TYS
5700 IF TYS="L" THEN ND=2 ELSE ND=1
5710 IF ND=1 THEN ROWMAX=7 ELSE ROWMAX=8
5720 IF ND=2 THEN TITLES(2)="Enter log normal parameters " ELSE TITLE>S(2)= "Ente
r histogram size distribution."
3730 IF ND=1 THEN TITLES!3)="Return to main menu." ELSE TITLES(3)="Enter end po
.nts "
-.740 PRINT TAB(10);TITLES(2)
">750 PRINT TAB(10);TITLE$(3)
.760 IF ND=2 THEN PRINT TAB(10);"Return to main menu "
770 LOCATE 20,5:PRINT "Press to execute option."
780 LOCATE 22,5:PRINT"USE ARROWS TO MOVE ->. PRESS TO RETURN."
790 GOSUB 10350
800 IF YS=ESC$ THEN RETURN
810 LOCATE ROW,COL:PRINT" ":IF JY=13 THEN 5850 ELSE IF YS=U$ THEN ROW=ROW+1 E
SE IF Y$=D$ THEN ROW=ROW -1 ELSE 5790
320 IF ROW>ROWMAX THEN ROW= ROWMAX : GOTO 5790
330 IF ROW <5 THEN ROW=5
340 GOTO 5790
350 IF ROW=ROWMAX THEN *RETURN
360 IF ROW05 THEN 5930
i70 IF ROW=5 THEN CLS:PRINT:PRINT " Enter type of size distribution: L for log
lormal. H for histogram :":GOSUB 8230
'.80 JT=INSTR("lLhH".Y$)
:90 IF JT=0 THEN SOUND 2000,2:GOTO 5860
00 IF JT >2 THEN ND=1 ELSE ND=2
10 TY$=AN$:ANS=""
20 GOTO 5630
D-12
-------
5930 IF ND=1 THEN 6160 ELSE IF ROW=6 THEN 5950
5940 IF ROW06 THEN 6160
5950 IF ND=1 THEN 6160 ELSE CLS:PRINT AZ$:PRINT "Enter log normal parameters":PR
INT A2$
5960 CC=50
5970 ROW=4
5980 COL=4
5990 PRINT TAB(10);"Mass mean diameter microns ";TAB(50);D50
6000 PRINT TAB(10);"Geometric standard deviation ";TAB(50);SIG
6010 PRINT TAB(10);"Return to size distribution menu "
6020 GOSUB 10350
6030 LOCATE ROW,COL,0:PRINT " ";
6040 IF Y$= ESC$ THEN 5580
6050 IF ROW=6 AND JY=13 THEN 5580
6060 IF JY=13 THEN SOUND 2000,2:GOTO 6020
6070 IF YS=US THEN ROW=ROW +1 :GOTO 6140
6080 IF Y$=D$ THEN ROW=ROW -1 :GOTO 6140
6090 IF ROW=6 THEN 6020
6100 IF JY >ASC("9") THEN SOUND 2000.2:GOTO 6020
6110 GOSUB 8260
6120 IF ROW=4 THEN D50=VAL(AN$) :LOCATE 4,50:PRINT " ":LOCATE 4,50:PRI
NT D50
6130 IF ROW=5 THEN SIG =VAL(AN$):LOCATE 5,50:PRINT " ":LOCATE 5,50:PR
INT SIG
6140 IF ROW >6 THEN ROW=6 ELSE IF ROW <4 THEN ROW=4
6150 GOTO 6020
6160 REM
6170 IF ND=2 THEN SD$="Enter ENDPOI.NTS" ELSE SD$="Enter HISTOGRAM SIZE DISTRIBUT
ION"
6180 ROW=2:RMIN=2
6190 NE=21
6200 CLS
6210 IF ND=2 THEN Cl=l:C3=C1:COL=C1
6220 IF ND=1 THEN C1=1:C3=46 :COL=C1
6230 RMAX=NE+ 2
6240 PRINT TAB(10);"Diameter (microns)";
6250 IF ND=1 THEN PRINT TAB(48)"Cum * less than ";
6260 PRINT TAB(65);NE ; "end points"
6270 FOR J=0 TO NE-1
6280 PRINT TAB(10);ENPT(J);:IF ND=2 THEN 6290 ELSE PRINT TAB(50);PRCU(J);
6290 PRINT:NEXT J
6300 LOCATE 24,1:PRINT "ARROW KEYS TO MOVE ->. PRESS TO RETURN.";
6310 LOCATE 24,46,0:PRINT"Enter -99 for diameter to end";
6320 GOSUB 10350
6330 IF INSTR("-.0123456789+",Y$)<>0 THEN 6420
6340 IF Y$=ESC$ THEN RMIN=4:ROW=RMIN:GOSUB 10420:GOTO 5560
6350 IF INSTR(CHS,Y$)=0 THEN SOUND 2000,2:GOTO 6320
6360 LOCATE ROW,COL:PRINT STRING$(4." ")
6370 IF Y$=U$ THEN ROW=ROW +1 ELSE IF Y$=D$ THEN ROW=ROW -1
6380 IF Y$= RT$ THEN IF COL=C1 THEN COL=C3 ELSE COL=C1
6390 IF Y$=LT$ THEN IF COL=C3 THEN COL=C1 ELSE COL=C3
6400 IF ROW >RMAX THEN ROW=RMAX ELSE IF ROW
-------
6460 IF ND=2 THEN ROW=ROW -t-1
6470 IF ENPT(JJ)=-99 THEN NE=JJ:RMAX=NE+1
6480 IF PRCU(JJ)=100 THEN NE=JJ+1:RMAX=NE+1
6490 IF ROW >RMAX THEN ROW=RMIN
6500 GOTO 6200
6510 CLS
6520 JSECT=1
6530 RMIN=4:RMAX=14:CC=50
6540 ROW=RMIN
6550 COL=4
6560 CLS
6570 PRINT AZ$
6580 PRINT " Data entry form for sections. Total number of sections T';NUM
S
6590 PRINT AZ$
6600 PRINT TAB(10);"SECTION ";TAB(50);JSECT
6610 PRINT TAB(10);"SCA of section ft2/kacfm";TAB(50);:PRINT USING "###.#":AZ(JS
ECT)/VGACFM*1000:AZM(JSECT)=AZ(JSECT)*.305*.305
6620 PRINT TAB(10);"Voltage kV ";TAB(50);:PRINT USING "###.*";VS(JSECT)/1000
6630 PRINT TAB(IO); "Average electric field kV/cm ";TAB(50);:PRINT USING "##*.#*
";EAVG(JSECT)/100000!
6640 PRINT TAB(10); "Field at the plate kV/cm ";TAB(50);:PRINT USING "###.#*";EE
(JSECT)/100000!
6650 PRINT TAB(10); "Current density nA/cm2" ;TAB(50); .-PRINT USING "*##.*" ;CDEN(JS
ECTT
6660 PRINT TAB(10);"Wire to plate spacing in.";TAB(50);:PRINT USING "###.*";BS(J
SECT):BSM(JSECT)=BS(JECT)*.305/12
6670 PRINT TAB(10);"Length of section ft.":TAB(50);:PRINT USING "*##.#";LENGTH.S
EC(JSECT)
6680 PRINT TAB(10);"Number of length increments "- TAB(51);LSECT(JSECT)
6690 LINC(JSECT)=LENGTH.SEC(JSECT)/LSECT(JSECT)
6700 PRINT TAB(10); "Length of each increment f t. " ;TAB(50) ; -.PRINT USING "*##.#
#";LINC(JSECT)
6710 PRINT TAB(10);"Return to main menu "
6720 PRINT AZS
6730 LOCATE 22,10:PRINT"USE ARROWS TO MOVE CURSOR. ENTER NEW VALUE." ;
6740 GOSUB 10350
6750 LOCATE ROW. COL .-PRINT " ";
6760 IF ROW=14 AND JY=13 THEN RETURN
6770 IF JY013 THEN 6780 ELSE SOUND 2000,2:GOTO 6740
6780 IF Y$= ESCS THEN RETURN
6790 IF YSOUS THEN 6830
6800 IF ROW=7 THEN ROW=8:GOTO 6910
6810 IF ROW=13 THEN ROW=14:GOTO 6910
6820 GOTO 6860
6830 IF YS <>D$ THEN 6860
6840 IF ROW=7 THEN ROW=6:GOTO 6910
6850 IF ROW=13 THEN ROW»12:GOTO 6910
6860 IF YS=US THEN ROW=ROW+1 ELSE IF Y$=DS THEN ROW=ROW -1 ELSE IF JY<30 THEN 67
40 ELSE 6930
6870 IF YS=U$ AND ROW=13 THEN ROW=34 ELSE IF Y$=D$ AND ROW=13 THEN ROW=12
6880 IF Y$=U$ AND ROW=7 THEN ROW=8 ELSE IF Y$=DS AND ROW=7 THEN ROW=6
6890 IF ROW >RMAX THEN ROW=RMAX ELSE IF ROW 57 THEN SOUND 2000.2:GOTO 6740
D-14
-------
6940 IF ROW=RMAX THEN SOUND 2000,2: GOTO 6740 ELSE GOSUB 8260
6950 LOCATE ROW,50:PRINT STRINGS(25," ")
6960 JS=ROW-3:ON JS GOTO 6970,7050,7060,7110,7110,7120,7130,7240,7190
6970 JSECT=VAL(AN$):IF JSECT>NUMS THEN SOUND 2000,2:LOCATE 19,1:PRINT"There are
only ";NUMS;" Sections. You selected ";JSECT ELSE 7030
6980 IF JSECT >10 THEN SOUND 2200,3:LOCATE 22,1:PRINT STRINGS(78 " "):LOCATE 22,
1 ELSE 7000
6990 PRINT "You are ONLY allowed 10 sections.":FOR J=l TO 500:NEXT J:JSECT=NUMS:
GOTO 6560
7000 PRINT "Do you want to increase the number of sections Y or N?"
7010 Y$=INKEYS:IF Y$="" THEN 7010 ELSE IF INSTR("YyNn",YS)=0 THEN 7010
7020 IF INSTR("YyNn",YS)>2 THEN JSECT=NUMS:GOTO 6560 ELSE NUMS=JSECT:GOTO 6560
7030 IF JSECT <= 0 THEN JSECT=1:GOTO 6560
7040 GOTO 6560
7050 AZ(JSECT)=VAL(AN$)*VGACFM/1000:LOCATE ROW.50:PRINT USING "#*#.*":VAL(ANS):G
OTO 6740
7060 VS (JSECT)=VAL(ANS)*1000:EAVG(JSECT)=VS(JSECT)/BS(JSECT)/.0254:EE(JSECT)=EAV
G(JSECT)/1.75
7070 LOCATE ROW.50:PRINT USING "###.#";VAL(ANS)
7080 LOCATE ROW+1,50:PRINT USING "#*#.##";EAVG(JSECT1/100000!
7090 LOCATE ROW+2.50:PRINT USING "*##.##";EE(JSECT)/100000!
7100 GOTO 7280
7110 EE(JSECT)=VAL(ANS)*100000!:LOCATE ROW,50:PRINT USING "##*.##";VAL(AN$):GOTO
7280
7120 CDEN(JSECT)=VAL(ANS):LOCATE ROW,50:PRINT USING "###.*";CDEN(JSECT):GOTO 728
0
7130 BS(JSECT)=VAL(ANS):LOCATE ROW,50:PRINT USING "###.#";BS(JSECT) :
7140 EAVG(JSECT)=VS(JSECT)/BS(JSECT)/.0254
7150 EE(JSECT)=EAVG(JSECT)/I.75
7160 LOCATE 7,50:PRINT USING "**#.*#";EAVG(JSECT)/100000 !
7170 LOCATE 8.50:PRINT USING "*##.*#";EE(JSECT)/100000!
7180 GOTO 7280
7190 LSECT(JSECT)=VAL(ANS)
7200 LING(JSECT)=LENGTH.SEC(JSECT)/LSECT(JSECT)
7210 LOCATE ROW,50:PRINT USING "###";LSECT(JSECT)
7220 LOCATE ROW+1,50-.PRINT USING "*##.#*";LINC(JSECT)
7230 GOTO 7280
7240 LENGTH.SEC(JSECT)=VAL(ANS)
7250 LOCATE ROW,50:PRINT USING "*##.#";LENGTH.SEC(JSECT)
7260 LINC(JSECT)=LENGTH.SEC(JSECT)/LSECT(JSECT)
7270 LOCATE ROW+2,50:PRINT USING "**#.##";LINC(JSECT)
7280 AN$=""
7290 GOTO 6740
7300 JNON=1
7310 RMIN=4:RMAX=10:CC=50
7320 ROW=RMIN
7330 CLS
7340 PRINT AZS
7350 PRINT " Entry form for non-ideal factors. Number of data sets ";NID
7360 PRINT AZS
7370 PRINT TAB(10)
7380 PRINT TAB(10)
7390 PRINT TAB(10)
7400 PRINT TAB(10)
7410 PRINT TAB(10)
7420 PRINT TAB(10)
7430 PRINT TAB(10)
"Non-ideal data set * ";TAB(50);JNON
"Mass mean diameter of rapping urn";TAB(50);2*RMMD(JNON)
"Geometric std deviation of rapping ";TAB(50);RSIG(JNON)
"Gas sneakage fraction ";TAB(50);SNK(JNON)
"Velocity distribution ";TAB(50);ZIG(JNON)
"Number of baffled sections ";TAB(50);ZNUM(JNON)
"Return to main menu "
D-15
-------
7440 PRINT AZ$
7450 GOSUB 10350
7460 LOCATE ROW.COL:PRINT " ";
7470 IF YS= ESC$ THEN RETURN ELSE IF JY=13 AND ROW=10 THEN RETURN
7480 IF ROWORMAX THEN IF JY=13 THEN SOUND 2000,2: GOTO 7450
7490 C$=U$+D$+NUM$
7500 IF INSTR(C$,YS)= 0 THEN SOUND 2000,2:GOTO 7450
7510 IF Y$=U$ THEN ROW=ROW+1 ELSE IF Y$=D$ THEN ROW=ROW -1 ELSE IF JY<30 THEN 74
50 ELSE 7540
7520 IF ROW >RMAX THEN ROW=RMAX ELSE IF ROW NID THEN SOUND 3000,1:LOCATE 15,5:PRINT "Value exceeds maximum numb
er of non-ideal conditions":FOR J=l TO 900:NEXT J:JNON=NID
7580 GOTO 7330
7590 JN=ROW-4:ON JN GOTO 7600.7610,7620.7630,76.40
7600 RMMD (JNON )•= VAL (ANS)/2: LOCATE ROW.50:PRINT VAL(AN$):GOTO 7650
7610 RSIG(JNON)=VAL(AN$):LOCATE ROW,50:PRINT RSIG(JNON):GOTO 7650
7620 SNK(JNON)=VAL(AN$):LOCATE ROW,50:PRINT SNK(JNON):GOTO 7650
7630 ZIG(JNON)=VAL(AN$):LOCATE ROW,50:PRINT ZIG(JNON):GOTO 7650
7640 ZNUM(JNON)= VAL(AN$):LOCATE ROW,50:PRINT ZNUM(JNON)
7650 ANS=""
7660 GOTO 7450
7670 CLS:PRINT" STORE DATA "
7680 LINE INPUT "ENTER FILE NAME "; FTS:OPEN "O'M.FTS:
7690 PRINT #1,T$:PRINT *1,NE:FOR 1=0 TO NE-1:PRINT #1,ENPT(I):NEXT I
7700 PRINT #1, ND
7710 IF ND=1 THEN 7720 ELSE PRINT #1,D50,SIG:GOTO 7730'
7720 FOR J=0 TO NE-1:PRINT #1,PRCU(J):NEXT J
7730 PRINT #1,DLGR,DDGM,EPS,US,NID,PLFT.VGACFM,VELFTSEC.TDK,P.VISCP.ETAO , ITER . NU
MS.TEMPF
7740 FOR J=l TO NUMS:PRINT #1,LSECT(J):IF EAVG(J) <>0 THEN 7750 ELSE EAVG(J)=VS(
J)/(BS(J)*.0254):EE(J)=EAVG(J)/1.75
7750 NEXT J
7760 FOR J=l TO NUMS:TCS(J)=CDEN(J)*1E-09*(AZ(J)*.305*.305*100»100):PRINT#J.AZ(J
) ,VS(J),EAVG(J),EE(J),TCS(J).BS(J),LINC(J): NEXT J:PRINT #1, NT:
7770 FOR J=l TO NID:PRINT *1,RMMD(J),RSIG(J),SNK(J),ZIG(J),ZNUM(J):NEXT J
7780 PRINT *1,RES
7790 CLOSE
7800 RETURN
7810 CLS
7820 PRINT " READ DATA FROM FILE "
7830 LINE INPUT "ENTER FILE NAME "; F$
7840 REM
7850 OPEN "i'M.FS
7860 INPUT#1, TS
7870 INPUT*!.NE:NS=NE-2
7880 FOR J=0 TO NE-1
7890 INPUT*!.ENPT(J)
7900 NEXT J
7910 INPUT*!,ND
7920 IF ND=1 THEN 7970
7930 INPUT*!.D50:L1=D50
7940 INPUT *1.SIG:L2=SIG
7950 FOR J=0 TO NS:PCNT(J)=L4(J):NEXT J
D-16
-------
7960 GOTO 8020
7970 FOR J=0 TO NE-1:INPUT*!.PRCU(J):IF J>0 THEN PCNT(J-l)=(PRCU(J)-PRCU(J-1))/l
00
7980 L3(J)=PRCU(J)
7990 NEXT J
8000 D50=L1
8010 SIG=L2
8020 INPUT f1,DLGR.DDGM,EPS,US,NID,PLFT.VGACFM,VELFTSEC,TDK.P,VISCP,ETAO,ITER,NU
MS.TEMPF
8030 FOR J=l TO NUMS
8040 INPUT#1,LSECT(J)
8050 NEXT J
8060 TA=0:
8070 FOR J=l TO NUMS
8080 NF=NF i-LSECT(J)
8090 INPUT*!.AZ(J),VS(J),EAVG(J ) ,EE(J).TCS(J),BS(J),LINC(J)
8100 LENGTH.SEC(J)=LINC(J)*LSECT(J)
8110 CDEN(J)=TCS(J)*1E+09/(AZ(J)*.305*.305*100*100)
8120 TA=AZ(J)+TA
8130 NEXT J
8140 SCA=TA/VGACFM*1000
8150 INPUT*!,NT
8160 FOR J=l TO NID
8170 INPUT*!.RMMD(J),RSIG(J),SNK(J),ZIG(J),ZNUM(J)
8180 NEXT J
8190 INPUT *1, RES
8200 CLOSE
8210 RETURN
8220 '
8230 Y$=INKEYS: IF Y$="" THEN 8230 ELSE JY=ASC(Y$)
8240 RETURN
8250 '
8260 LOCATE ROW,CC,0:PRINT STRINGS(30." ");
8270 ANS=YS:KC=1
8280 LOCATE ROW,CC+1:PRINT AN$;CHRS(95);" ";
8290 GOSUB 8230
8300 IF Y$=ESC$ THEN RETURN
8310 IF JY=13 THEN RETURN
8320 IF JY<>8 THEN 8360
8330 IF LEN(AN$)=0 THEN 8290 ELSE KC=KC-1
8340 AN$=LEFTS(ANS,KC)
8350 GOTO 8280
8360 IF IGFLAGO-1 THEN IF INSTR(NUMS, Y$ )=0 THEN SOUND 2000,2: GOTO 8390
8370 KC=KC+1: AN$=AN$+Y$
8380 LOCATE ROW.CC+KC:PRINT Y$;CHRS(95);" ";
8390 GOTO 8290
8400 '
8410 REM get data from vi file
8420 '
8430 FOR J=l TO NUMS:VS(J)=0:NEXT J
8440 OPEN "I" ,1."sri.dat" :SECNO=0
8450 IF EOF(l) THEN CLOSE:GOTO 8550
8460 INPUT #1,TEMPF.P,US
8470 IF EOF(l) THEN CLOSE:GOTO 8550
8480 SECNO=SECNO+1:IF SECNO>NUMS THEN CLOSE:RETURN
8490 INPUT *1,VOLT,CDEN,EP,DUMS.BS2.LSFT
8500 VS(SECNO)=VOLT:TCS(SEGNO)=CDEN*AZ(SECNO)*.305*.305*100*100*1E-09
D-17
-------
8510 BS(SEGNO)=BS2/2:LENGTH.SEC(SECNO)=LSFT:BSM(SECNO)=BS(SECNO)*.305/12
8520 CDEN(SECNO)=CDEN
8530 EAVG(SECNO)=VOLT/BS(SECNO)/.0254:EE(SECNO)=EP*100000!
8540 GOTO 8470
8550 FOR J=l TO NUMS
8560 IF VS(J)<>0 THEN 8640
8570 VS(J)=VS(J-1)
8580 EAVG(J)=EAVG(J-1)
8590 EE(J)=EE(J-1)
8600 TCS{J)=TCS(J-1)
8610 CDEN(J)=CDEN(J-1)
8620 BS(J)=BS(J-1):BSM(J)=BSM(J-1)
8630 LENGTH.SEC(J)=LENGTH.SEC(J-l)
8640 NEXT J
8650 RETURN
8660 '
8670 REM hardcopy or disk file output
8680 '
8690 CLS:PRINT"Press C for CRT. F for file, or P for printer"
8700 YS= INKEYS: IF YS="" THEN 8700 ELSE IF INSTR("CcPpFf",YS)=0 THEN 8700
8710 IF INSTR("CcFfPp",YS)>4 THEN F$="prn.out":LPRINT CTLS :GOTO 8740
8720 IF INSTR("CcFfPp",Y$)<3 THEN F$="CON" :CLS:GOTO 8740
8730 LINE INPUT "Enter File Name ";FS
8740 OPEN "0".1,F$
8750 PRINT *!,"*** EPA-RTP / SoRI ESP MODEL ***":PRINT #1,:PRINT #1.
8760 PRINT #1,"DATA FOR: ";T$:PRINT #1,
8770 PRINT #1."The";NE;"size band end points are:"
8780 FOR 1=0 TO NE-1
8790 PRINT #1, ENPT(I);
8800 IF I>0 THEN RAD(1-1)=(ENPT(I)+ENPT(1-1))/2*.000001/2
8810 NEXT I
8820 PRINT #1," "
8830 PI=3.14159
8840 PRINT #1,"Inlet size distribution data type ";
8850 IF ND=1 THEN PRINT tl,"Histogram" ELSE PRINT #1."Log-normal"
8860 IF ND=1 THEN 8880
8870 PRINT #1.:PRINT #1.:PRINT #1."MMD=";D50;"with sigma=";SIG :GOTO 8960
8880 PRINT *l,"The cumulative percentages are:"
8890 FOR 1=0 TO NE-1
8900 PRINT #1. PRCU(I);
8910 IF I>0 THEN PCNT(1-1)=(PRCU(I)-PRCU(1-1))/100
8920 L3(I)=PRCU(I)
8930 NEXT I
8940 PRINT #1." "
8950 PRINT #1, " ":PRINT #1," "
8960 PRINT *1,"Inlet density dielectric mobility # non-idea
1 length"
8970 PRINT #1. "mass gr/ft3 g/cm3 constant m2/Vs correct
ft"
8980 PRINT #1, DLGR.DDGM.EPS.US.NID.PLFT
8990 PRINT *1," "
9000 PRINT #1. "Flow velocity Temp Pressure Viscosit
y est no"
9010 PRINT *1. "acfm ft/s deg F atm cp
eff iter"
9020 PRINT *1. VGACFM.VELFTSEC.TEMPF.P.VISCP.ETAO.ITER
9030 PRINT tl,"Number of sections ";NUMS
D-18
-------
9040 PRINT *l,"Section";TAB(10);"* increments";TAB(25);"Area ";TAB(35);"Voltage
";TAB(45);"Current ";TAB(55);"Wire-plate";TAB(68);"Length"
9050 PRINT *1." *";TAB(25);" ft2";TAB(38);"kV";TAB(48);" A ";TAB(59);"in.";TAB
(70);"ft"
9060 FOR 1=1 TO NUMS
9070 NF=NF+LSECT(I)
9080 PRINT *1,I;TAB(10);LSECT(I);TAB(25); AZ(I) ;TAB(35);VS(I);TAB(45);TCS( I) ;TAB
(56);BS(I);TAB(68);LINC(I)*LSECT(I)
9090 NEXT I
9100 PRINT *1.:IF NT=1 THEN PRINT #1,"COLD SIDE ESP" ELSE PRINT #1,"HOT SIDE ESP
ii
9110 PRINT #1." ":PRINT #1,"Non-ideal conditions: RMMD, RSIGMA. SNEAKAGE, VEL.
DEV.. NO. STAGES"
9120 FOR 1=1 TO NID
9130 PRINT *!,:PRINT #1,"NON-IDEAL CONDITION SET NO.";I
9140 PRINT #1. RMMD(I);RSIG(I);SNK(I);2IG(I);ZNUM(I)
9150 NEXT I
9160 PRINT #1," "
9170 FOR KN=1 TO NID
9180 PRINT #1.:PRINT #1,"Output data for non-ideal correction set No.";KN
9190 PRINT #1.:PRINT #1.USING "Stated efficiency = ##.*#% Ideal calculation #*.
#**";ETAO;TEFF:PRINT #1." "
9200 PRINT #1, USING "Inlet mmd = #*.# microns with sigma = ##.#";D50;SIG
9210 PRINT #1,USING "Gas velocity sigma = ##.*# with *#.## sneakage over ## sta
ges";ZIG(KN);SNK(KN);ZNUM(KN)
9220 IF NT=1 THEN TY$="COLD SIDE" ELSE TY$="HOT SIDE"
9230 PRINT *1. TVS;" ESP"
9240 PRINT #1. USING "SCA = *###.# ft2/1000acfm";SCA
9250 PRINT *1,USING "Rapping size distribution Mass mean diameter ##.# microns s
igma *#.#";RMMD(KN)*2;RSIG(KN) :PRINT #1, " "
9260 PRINT #1,USING "Adjusted no-rap efficiency = *#.*#%";SSF(KN)*100
9270 PRINT #l,USING"No rap emissions *#.*#### gr/acf OR ##.**## Ib/MBtu "; DLGR*
(l-SSF(KN));DLGR*(l-SSF(KN))*1.69*TDK/273
9280 PRINT #1.USING " No-rap outlet MMD = ##.# microns";MS(KN)
9290 PRINT #1,USING " No-rap outlet sigma = ##.#";YS(KN)
9300 PRINT #1.USING " Quality of fit = **.*#**";GS(KN) :PRINT #1.
9310 PRINT #1,USING "Efficiency with rapping = ##.##%";SRF(KN)*100
9320 PRINT #1, USING "Emissions with rapping #*.##### gr/acf OR #*.#### Ib/MBtu"
;(1-SRF(KN))*DLGR;DLGR*(1-SRF(KN))*1.69*TDK/273
9330 PRINT #1. USING " Corrected outlet MMD = *#.# microns";MR(KN)
9340 PRINT #1, USING " Corrected outlet sigma = ##.#":YR(KN)
9350 PRINT *1. USING " Quality of fit = *#.*###";GR(KN)
9360 PRINT #1, CHR$(13)
9370 NEXT KN
9380 FOR KN= 1 TO NID:PRINT #1,"Particle size results for non-ideal set ";KN
9390 PRINT *1.TAB(18);"I D E A L";TAB(30);"NO-RAP with SNEAKAGE ";TAB(55)"with R
APPING"
9400 PRINT *l."Diam";TAB(15);"effic";TAB(25)"pt";TAB(35);"effic ";TAB(45);"pt";T
AB(55);"effic";TAB(65);"PT"
9410 FOR J=0 TO NS -1
9420 PRINT #1.USING AS;DIAM(J);EFF(J);1-EFF(J);ESF(KN.J);1-ESF(KN.J);ERF(KN,J);1
-ERF(KN.J)
9430 NEXT J :NEXT KN
9440 CLOSE
9450 RETURN
9460 REM routine to change configuration
9470 CLS:PRINT "Are you sure you want to change the configuration?"
D-19
-------
9480 PRINT "Enter Y or N. You Bust press ."
9490 PRINT "The configuration is currently for the ";COMP$
9500 Y$=""
9510 Y$="":INPUT YS
9520 IF YS="" THEN PRINT "Please enter Y or N.":GOTO 9510
9530 Y$=LEFTS(YS,1)
9540 IF INSTR("YyNn".Y$)=0 THEN PRINT "Please enter Y or N.":GOTO 9510
9550 IF INSTR("YyNn",YS)>2 THEN RETURN
9560 IF COMPS="IBM" THEN 9600
9570 COMP$="IBM" :IBM=5
9580 US=CHR$(0)+CHR$(80):DS=CHR$(0)+CHRS(72)
9590 LT$=CHR$(0)+CHR$(75):RT$=CHR$(0)-i-CHR$(77):GOTO 9620
9600 COMPS="TANDY":IBM=0
9610 US=CHR$(31):D$=CHR$(30) :LTS= CHR${28):RT$=CHR$(29)
9620 OPEN "0",1,"computer.cnf"
9630 PRINT fl.COMPS
9640 PRINT #1,US:PRINT *1.D$:PRINT #1,LTS:PRINT #1(RT$:CLOSE
9650 RETURN
9660 CLS
9670 LOCATE 10,10:PRINT "Configure a printer."
9680 CLOSE
9690 OPEN "I'M. "print, cnf"
9700 INPUT *1,PRNT$:INPUT *1,LENC:
9710 FOR J=l TO LENC:INPUT #1, CTL(J):NEXT J
9720 CLOSE 1
9730 PRINT "The current printer is ":PRNTS
9740 FOR J=l TO LENC:PRINT CTL{J):NEXT J
9750 PRINT "The decimal values of the string for condensed print are"
9760 PRINT "Do you want to change this Y or N?"
9770 GOSUB 10310
9780 IF JY >2 THEN RETURN
9790 CLS
9800 PRINT "The program is set up to print to the printer with a condensed"
9810 PRINT "character set. This will allow 132 columns per 8 1/2 wide page."
9820 PRINT "Thus all output data lines will fit on one line. If your printer
9830 PRINT "will not print in condensed mode, some of the output lines will
9840 PRINT "wrap around to the next line."
9850 PRINT "To configure the printer you must know the decimal values of the"
9860 PRINT "characters that must be sent to the printer to tell it to print:
9870 PRINT "in condensed mode. You will be prompted for each value.
9880 PRINT "When you have entered all the values, enter -99 for the final value,
": PRINT " "
9890 PRINT "Example. The EPSON MX-80 uses CHR$(15) to start condensed printing
9900 PRINT "So you would enter 15 for the first character and then -99 for the
9910 PRINT "second. The C-ITOH Prowriter uses CHR(27) followed by CHR$(81)
9920 PRINT "so you would enter 27 for the first character 81 for the second
9930 PRINT "and -99 for the third."
9940 PRINT "Press any key to continue."
9950 IF INKEY$="" THEN 9950
9960 CLS:
9970 LINE INPUT "Enter name of your printer ";PRNT$
9980 J=0:CTL$=""
9990 PA$=""
10000 PRINT "Now enter the decimal values of the printer control codes."
10010 J=J+1
10020 PRINT "Enter control code number (-99 to quit)";J
D-20
-------
10030 LINE INPUT PAS
10040 IF PA$="-99" THEN 10070
10050 CTL(J)=VAL(PA$)
10060 GOTO 10010
10070 CLS:PRINT"You have defined the ";PRNT$;" Printer."
10080 LENC=J-1
10090 PRINT "The control codes are ";
10100 FOR J=l TO LENC
10110 PRINT "Code * ";J;" the code is ";CTL(J)
10120 NEXT J
10130 PRINT "Is this correct Y or N?"
10140 GOSUB 10310
10150 IF JY<3 THEN 10190
10160 PRINT "Do you wish to correct Y or N? No returns you to main menu."
10170 GOSUB 10310
10180 IF JY>2 'THEN RETURN ELSE CLS:GOTO 9960
10190 CLS
10200 PRINT "Do you wish to save new file Y or N? If you answer N, the
10210 PRINT "printer will use the values you entered for this session only."
10220 GOSUB 10310
10230 IF JY >2 THEN RETURN
10240 OPEN "0",1."print.cnf"
10250 PRINT *1,PRNTS :PRINT *1,LENC
10260 FOR J=l TO LENC:PRINT #1.CTL(J):NEXT J
10270 CLOSE
10280 CTLS=""
10290 FOR J=l TO LENC:CTL$=CTLS+CHR$(CTL(J)):NEXT J
10300 RETURN
10310 YS=INKEYS:IF Y$="" THEN 10310
10320 JY= INSTR("YynN",Y$)
10330 IF JY=0 THEN 10310 ELSE RETURN
10340 REM subroutine to blink cursor
10350 LOCATE ROW,COL.0:PRINT CRS;
10360 FOR JZ=1 TO 40 STEP (1+IBM):Y$=INKEY$:IF YS>"" THEN 10400 ELSE NEXT JZ
10370 LOCATE ROW,COL,0:PRINT CRBS;
10380 FOR JZ=1 TO 40 STEP (1+IBM):Y$=INKEY$:IF Y$>"" THEN 10400 ELSE NEXT JZ
10390 GOTO 10350
10400 JY=ASC(Y$)
10410 RETURN
10420 J=0
10430 WHILE J
-------
10600 FOR J=l TO 600:NEXT J:RESUME 350
10610 CLS:PRINT "Default data file not found."
10620 FOR J=l TO 500 :NEXT J
10630 CLS
10640 RESUME 540
10650 CLS:
10660 PRINT "Error : ";ERR ;"See appendix a of BASIC manual for type of error."
10670 PRINT "Error is in line number ";ERL
10680 IF ERL=8440 THEN PRINT "You tried to use the results of the VI program bef
ore you ":PRINT "calculated them. Return to main menu and select run V-I."
10690 PRINT:PRINT
10700 PRINT"The error is probably due to a data entry error."
10710 PRINT "Do you wish to eview data or top."
10720 PRINT "PRESS R or S."
10730 Y$=INKEYS:IF YS="" THEN 10730 ELSE IF INSTR("RrSs".YS)= 0 THEN 10730
10740 IF INSTR("RrSs",YS)<3 THEN RESUME 540
10750 CLOSE
10760 '
10770 REM Tandy 2000 color set up
10780 '
10790 SCREEN 0,0:OUT &H198,0:OUT &H19A,11:OUT &H19C,0:OUT &H19E.11
10800 RETURN
10810 END
D-22
-------
APPENDIX E
NOTES FOR ADVANCED USER
1. LARGER ARRAYS
The V-I program can be modified for larger arrays by removing all
comment statements. We recommend copying ESPVI.BAS to another file with a
name such as ESPSTRP.BAS before removing the comments. A stripped version
is very difficult to follow without referring to the listing of the unstripped
»
version. Therefore, you must be careful when making modifications.
You can change the array sizes by modifying the value of NGW in line
180 of the program. This variable functions as the index of the dimensions
of the arrays for the wire properties. In the stripped version, the array
sizes can be at least doubled in the space available. However, some caution
is necessary.
First, all the files which store ESP data will become incompatible
with the new array size. This includes the DEFAULT.ESP file which the
program tries to read first. The internal data set will provide starting
values for the new arrays, provided the file DEFAULT.ESP is first deleted
or renamed. Second, the display of calculation progress in the starting
voltage and individual V-I curve operations (sub-routines beginning at
lines 17000 and 18000, respectively) will attempt to put symbols at locations
off the screen. This may or may not result in an error condition that
interrupts the program. The displays can be either modified or removed to
solve this problem. Third, the graphics displays of many more wires may
become so small or slow that you cannot use them. The scale of the drawings
can be changed to look at only one part and a few wires at any given time.
Studying the drawing routines will illustrate how this change can be accom-
plished. Fourth, if the stripped version calls the ESPSRI.BAS program
(thereby returning control to the V-I model), the ESPSRI program will
reload the unstripped version (ESPVI.BAS). Therefore, the reference in
line 4400 of the ESPSRI.BAS program should be changed accordingly.
E-l
-------
2. COLOR GRAPHICS ON THE IBM-PC
The experienced programmer may want to modify the program for color
graphics on the IBM-PC computer. A study of the graphics routines (as they
operate for the TANDY 2000) will show how the modifications need to be
made. In addition to modifying the bounds on the displays for the lower
resolution of the IBM-PC screen, the number of colors used needs to be
reduced (three plus the background). This involves changing some array
dimensions and loop indices in the graphics routines. The resolution on
the IBM-PC should make reasonable displays possible. The space required
for the extra programming, however,'probably will mean the removal of
references to the TANDY graphics.
3. USE OF A RAMDISK
For the user who has at least 64K of memory in addition to the minimum
requirements, a RAMDISK program has been included in the package. This
will allow all the files constantly accessed by the program to be read from
the RAMDISK, resulting in a considerable increase in speed.
The RAMDISK program is a 64K version of the program described in the
IBM-PC technical manual. It must be installed as a device driver (in the
MS-DOS sense). To do this, a configuration file has been included on the
disk (CONF.SYS). This file must be renamed CONFIG.SYS (the contents merged
with the normal configuration file). Then it must be transferred to a
system disk, along with the ftle RAMDISK.SYS. Then the computer must be
booted. (The file BOOT.COM is a short machine language file that can also
be transferred to a system disk and used for booting the computer.)
This RAMDISK program installs itself in different ways, depending upon
the operating system. In some, it becomes the first drive above the highest
existing drive designator (C: for a floppy system, D: for a hard disk
system). In others, it installs at a higher drive number (D:, E:, or F:).
The user must determine which drive is installed by using the DIR command
or the CHKDSK program. Since the drive will be empty, the response to the
command will indicate that no files were found if the proper drive designator
is used, or that the device is not available if the wrong drive designator
is used.
E-2
-------
Once the correct location of the RAMDISK is obtained, the relevant
files may be transferred from the program disk to the RAMDISK with the
batch file MOVE.BAT. Type MOVE d: , where d: is the RAMDISK designator.
(Be sure to include the colon in the drive designator.) The files will be
transferred, passing control to that drive. The files frequently referred
to are the ones transferred while the large program files ESPVI.BAS and
ESPSRI.BAS are not transferred. Each expects the other to be found on the
A: drive.
When the program is run from the RAMDISK drive, all the files will be
read from and written to the RAMDISK (now the default drive). This means
that any data stored in a file will be on the RAMDISK, and not on a permanent
disk, unless a specific drive specifier is used. This may be advantageous
if many modifications are made to files. This would be the case since the
storage and retrieval rates are so much higher. The communication file*
between the ESPVI and ESPSRI programs (with the name SRI.DAT) is written
always on the default drive (RAMDISK here) and so should be copied to a
permanent file if you need to save it.
4. DISPLAYING RESULTS FOR A FEW WIRES OUT OF MANY
Some experimental situations measure the current density of one or
more wires in the center of an array, to eliminate the end effects so
clearly shown by this program. In this type of situation, it would be good
to know the current density predicted for only those wires.
In the V-I calculation routine (beginning at line 18000), it is possible
to calculate the composite curve for only one or two wires. Line 18040
contains the variables to make this possible:
18040 CLS:IJMIN=1:IJMAX=INDEX:VMAX=100000!
The variable IJMIN is the number of the first wire to be included in the
composite curve, and UMAX is the number of the highest wire to be included.
They can be set to the same value. The area serviced by each wire also is
included in the computation.
The maximum voltage in the calculation also can be increased or decreased
with the variable VMAX. In practice, we have increased it to 200,000 V
with no problems. The graphical displays for the individual wires will go
E-3
-------
only to 100,000 V, but the composite curve is adaptive and displays 200,000
V without any problem. Remember that wires whose starting voltage exceeds
VMAX were set arbitrarily to 200,000 V. This would complicate setting the
value for VMAX above 200,000 V.
The internal arrays allow the computed curves for each wire to be
accessed. The voltage computed for each current density step is found in
the array V(K,I). The current per meter for each wire, at the same steps
in current density, is in IL(K,I); and the current density computed for
each wire at each step is found in JO(K,I). The index K refers to the
number of the step, with the index I referring to the wire number. Wire
index 0 is the element where the saturation relations are stored.
5. UNITS CONVERSION PROGRAM
An undocumented program supplied on the disk is CONVERT.EXE. It is
supplied in two versions, CONVERT.TOY for the TANDY 2000 and CONVERT.IBM
for the IBM machines. The appropriate version should be renamed to
CONVERT.EXE. It is a "stand-alone" program with a built-in Help feature.
To invoke the program, type "CONVERT" .
The algorithm for the program was given in Byte Magazine, March 1985,
pp. 151-164.
6. COMPILED VERSIONS AND COMPILER NOTES
Compiled versions of ESPVI.BAS and ESPSRI.BAS have been supplied with
this program on a separate floppy disk. These programs, ESPVI.EXE and
ESPSRI.EXE, require the same support files that the BASICA versions do;
they merely replace the corresponding files. The EXE files run on specific
computers, one on the IBM series and the other on the Tandy 2000. Be sure
to use the version appropriate for your machine.
If you want to compile the programs as they stand, no changes are
required in the BASIC versions of ESPSRI.BAS using Microsoft's QuickBasic.
If you wish to move back and forth between the ESPVI program and the ESPSRI
program, you must change the program lines that transfer control between
programs. Line 4400 of ESPSRI.BAS should be changed to read: '
E-4
-------
4400 IF PROG = 13 THEN EFLAG = -2:RUN "ESPVI.EXE" ,
and line 3240 of ESPVI.BAS should be changed to read:
3240 IF RY = 6 THEN RUN "ESPSRI.EXE" .
If you compile the programs, be sure to use the appropriate compiler
switches to enable the function keys and error trapping.
The ESPSRI.BAS program can also be compiled with the TANDY version of
the GWBASIC compiler and the IBM version of the BASIC compiler. These
compilers perform better if all integer variables are specifically declared
as integers. This has been done in the supplied EXE files.
The QuickBASIC and GWBASIC compilers were able to compile ESPVI.BAS
when all the remarks were removed from the source codes. Integers were
also used to enhance the speed of execution. These changes are tedious,
but make the compilation possible.
E-5
-------
APPENDIX F
METRIC CONVERSION FACTORS
Certain nonmetric units have been used in this document for the conven-
ience of its users. Readers more familiar with the metric system may use
the following factors to convert to that system.
Nonmetric
acf
kacfm
atm
Btu
cp
ft
ft2
ft3
gr
in.
Ib
micron
°F
Times
0.028317
0 . 47195
1.013E05
251.98
l.OE-02
0 . 3480
0 . 092903
0 . 028317
6.48E-05
0 . 02540
0.45359
l.OE-6
(°F-32) x 5/9
Yields
Metric
m3
m3/s
pascal
calorie
poise
m
m2
m3
kg
m
kg
m
°C
F-l
-------
APPENDIX G
RECOMMENDED SPACE CHARGE VALUES
Dubard and Altman (1) have reported voltage current correlations for a
number of cold-side ESPs. The correlations show a steady decrease of
starting voltage with section number, from inlet to outlet. If it is
assumed that the outlet section has a starting voltage that is not very
different from the zero space charge value, then the voltage offsets can be
translateti into equivalent particulate space charge values. The following
values have been obtained:
Section No. Space Charge (uC/m3)
1 8.1
2 5.9
3 4.4
4 0.2
That is, the fourth, and higher, sections of the ESP have essentially
no space charge affecting the starting voltages, but the first three have
significant amounts of space charge.
Because of the uncertainties in deducing these values, the following
values are recommended:
Section No. Space Charge (uC/m3)
I 8-10
2 6-8
3 4-6
4 2-4
5 or > 0-2
If there are 10 wires per electrical section, these values correspond
to a space charge decay rate of 0.02 - 0.025 per wire in the first three
sections and 0.07 - 0.08 in the later sections. These values should be
used with caution, but are the most realistic ones that can be recommended.
1. Dubard, J. L. and Altman, R. F. In: Proceedings on Electrostatic
Precipitator Technology for Coal-Fired Power Plants. EPRI CS-2908.
Electric Power Research Institute, p. 4-3 (April 1983).
G-l
-------
TECHNICAL REPORT DATA
(Please read Instructions on the reverse before completing)
REPORT NO.
EPA-600/8-86-030
3. RECIPIENT'S ACCESSION
A. TITLE AND SUBTITLE
An Interactive Computer Model for Calculating
V-I Curves in ESPs, Version 1. 0
i. REPORT DATE
September 1986
6. PERFORMING ORGANIZATION CODE
7. AUTHORIS)
7. AUTHORISJ . , __ >
Phil A. Lawless (RTI) and Leslie E. Sparks (EPA)
a. PER
a PERFORMING ORGANIZATION NAME AND ADDRESS
Research Triangle Institute
P. O. Box 12194,
Research Triangle Park, North Carolina 27709
10. PROGRAM ELEN
11. CONTRACT/GRANT NO.
EPA Cooperative Agreement
CR 812281
12. SPONSORING AGENCY NAME AND ADDRESS
EPA, Office of Research and Development
Air and Energy Engineering Research Laboratory
Research Triangle Park, NC 27711
13 TYPE OF REPORT AND PERIOD COVERED
User's Manual; 7/84 - 7/86
14. SPONSORING AGENCY CODE
EPA/600/13
is. SUPPLEMENTARY NOTES Author Sparks is also the AEERL
Q19/541-2458.
project officer, Mail Drop 61,
. ABSTRACT The manual describes two microcomputer programs written to estimate the
performance of electrostatic precipitators.(ESPs): the first, to estimate the electrical
conditions for round discharge electrodes in the ESP; and the second, a modification
of the EPA/SRI ESP model, to estimate the particle collection efficiency of the ESP
operating with the electrical conditions predicted by the first program. Both pro-
grams, written in the BASIC computer language, are designed for the IBM-PC and
compatible computers and the Tandy 2000 computer. The programs require Advanced
BASIC and a color graphics adapter. The V-I program allows prediction of electrical
conditions for both positive and negative corona and for arbitrary discharge electrode
diameters and wire-to-wire spacing. This means that most commercial discharge
electrode geometries can be simulated by proper selection of wire diameters and spa-
ing. Both the V-I and performance models are completely documented in the report,
Including a discussion of the theory on which the models are based. Most of the re-
sort is devoted to instructions, with examples, for using both models. Guidance for
dapting the programs to other computers is also presented. The models are quite
iseful and allow rapid assessment of expected ESP performance under a wide range
}f conditions.
KEY WORDS AND DOCUMENT ANALYSIS
DESCRIPTORS
b.lDENTIFIERS/OPEN ENDED TERMS
c. COSATI Field/Group
Pollution
ilectrostatic Precipitators
Performance
ornputer Programs
3articles
Collection
Ifficiencv
Pollution Control
Stationary Sources
Microcomputers
Particle Collection Effi-
ciency
13B
131
14G
09B
13. DISTRIBUTION STATEMENT
Release to Public
19. SECURITY CLASS (This Report)
Unclassified
21. NO. OF PAGES
205
20. SECURITY CLASS (This page)
Unclassified
22. PRICE
EPA Form 2220-1 (9-73)
G-2
------- |