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

-------