OC?X’-8485/88 $3.00 + 0.00 Pergamon Journals Ltd
Cornput. Chem. Vol. 12, No. 1, pp. 43-63, 1988
Printed in Great Britain
A PROGRAM
SYSTEM
FOR
SPECTROELECTROCHEMICAL
MEASUREMENTS KURT
KALCHER’,
HERBERT
GRESCHONIG’,
CHRISTIAN
JORDE’
and
ALFRED
LEITNER~
‘Institut fiir Analytische Chemie, %stitut
Karl-Franzens
fiir Physikalische Chemie and ‘Institut fiir Experimentalphysik, Universittit Graz, UniversiWsplatz 1, A-8010 Graz, Austria (Received
10 February
1987)
Abstract-A program system for continuous spectrophotometric surements has been developed. It consists of the BASIC program
monitoring of voltammetric meaSPELECTRO for the diode array spectrophotometer HP 845lA, which controls the recording of u.v./vis spectra and manages the incoming voltammetric data. The FORTRAN-77 program LOADER loads the data from the optical device to an HP 1000 minicomputer. SPECD3, also written in FORTRAN-77, plots the u.v./vis spectra as threedimensional representations with hidden line facility.
INTRODUCTION
Since the development of optically transparent elec(OTE), simultaneous measurements of optical spectra (e.g. u.v./vis) and voltammograms have gained more and more importance in studying electrochemical and surface processes. Conventional spectrophotometers require rather a long period for recording a single spectrum. Thus, changes at the electrode surface during spectral measurement leads to different conditions at the beginning and end of the record. When applying reversed optics technics (diode array photometers) the interval for a measurement is rather short as the monochromator does not work sequentially but with spatial resolution. This implies that the resulting spectrum represents the actual state of the absorbing material at a definite potential. As scans of whole spectra can be performed almost immediately, u.v./vis monitoring over the complete potential range of the voltammogram is possible. Using a buffer memory which avoids slow transfer to external devices, enough spectra can be gathered for a three-dimensional representation within the wavelength-potential-absorbance space. This optional method ensures that much more information is gathered than would be possible if only a few spectra were recorded at selected potentials. trodes
HARDWARE
82937A) interface with the corresponding ROM’s to drive the devices. An external printer (HP 829058) and plotter (HP 7470A) as well as a double disc drive for 31” microfloppies (HP 9121) were connected via the parallel bus. A polarographic interface, developed by Kalcher & Jorde (1986) transferred the voltammetric data from the polarograph to the spectrophotometer. The polarograph was Model PAR 264A (Princeton Applied Research). Further treatment of the collected data as well as 3D-representation of the u.v./vis spectra were achieved by an HP 1000 minicomputer with 1 Mbyte core and 10 Mbyte hard disc, which was connected with the spectrophotometer via the parallel bus. SPECTROELECTROCHEMICAL
MEASUREMENTS
The spectroelectrochemical measurements were controlled by program SPELECTRO, written in an extended BASIC language which includes operation instructions for the optical device. It was run on the integrated processor of the photometer. Figure 2 shows its basic architecture, Appendix 1 displays the listing. The input of data is interactive and selfexplanatory. The first part of the program consists of reading and defining spectral (wavelength limits, time interval for measuring) and voltammetric parameters (potential and current range) as well as checking the 128K memory to ensure that it is working properly. If not all its space is available, the memory can be cleared optionally. The second part performs the actual scanning of optical spectra. The triggering event which controls the progress of measurement is the arrival of a voltammetric data point (current vs potential) at the serial interface. This is actually dependent on the drop clock pulse of the polarograph which in turn triggers the polarographic interface’s A/D conversion
CONFIGURATION
Figure 1 shows the hardware used for spectroelectrochemical measurements. The core of the configuration was a diode array spectrophotometer HP 8451A (HewIett-Packard) with built-in screen, printer/plotter and programmable calculator HP 85. In addition to the standard apparatus, the following equipment was used: a keyboard (HP 98155A), 16K memory (HP 82903A) and 128K memory modules (HP 82909), serial (HP 82939) and parallel (HP 43
KURT
44
HP 8451A
Fig.
RESTART
diode
KALC~R
array
et d.
spectrophotometer
I Hardware configuration.
menu
RESTORE met hod
RESTORE voltamm.
L
1
’
RESTORE spec tro L
OUTPUT menu
!2 END
measurement
Fig. 2. Fiuw chart of the BASIC
program SPELECTRO.
BASIC
pogrml
for
*p*C+rOslOCtlOCh*ml*,ly
45
Program system for spectroelectrochemical measurements and output (Kalcher, 1986). If the time interval between two voltammetric data is shorter than the time required for a spectral scan and its manipulation, points on the voltammogram can be omitted and only preselected ones chosen. Additionally, before starting a new u.v./vis record, a check is made to ensure that the old one has already finished. If not, the data is omitted as well. If the spectrophotometer is ready for a new spectrum, the preceding one is stored in the 128K memory. Then the next scan is started. It should be stressed that the program does not work synchronously with optical operation, which means that it does not wait until measurement is completed. To avoid delays, output is reduced to a minimum consisting of a short report on the incoming and u.v./vis data during the actual phase of measurement. This procedure is complete when an alphabetical string (e.g. “ENDE”) occurs as termination message from the polarographic interface, which results in a read-error. This string is initiated by the pen-up signal of the polarographic recorder output. Upon termination of spectral measurements, the voltammetric data, received as bits, is transformed by the following equations Y (in V) = Y (start) + V (in bits)+ sign [V (end) - I/ (start)]/lOOO. i (in mA, PA or nA) = i (in bits) * abs (range)/2000. V and i designate potential and current respectively, V (srarr), V (end) the limits of the potential scan, range the chosen current range.
The ensuing third section of SPELECTRO manages the data output, storage and transfer. The type of manipulation required can be selected from menus. The first one performs output operations. Characteristics of the measurement as well as graphic representations of the voltammogram and the u.v./vis spectra can be displayed on the screen, internal and external printers or plotters. Numerical output of data (voltammogram, optical spectra) should be initiated with care to avoid long listings. Negative input on request results either in the operation being applied to all objects (e.g. - I for all spectra) or in a return to the menu depending on the task to be performed. To avoid loss of information when switching off the spectrophotometer, saving of data is provided by a data-storing menu. The voltammogram, u.v./vis spectra and the method itself can be stored on flexible microdiscs. In the interests of convenience the menu also performs disc operations like erasing files, initializing discs and status reports. Optionally, the external printer may record a protocol of the saving tasks performed. File numbers of data to be stored are chosen automatically; the program also indicates disc changes when discs begin to run out of space The method should be saved after storage of data because information derived from the storing process will then be available when the program is restarted, Negative input values produce the same effects as described
above.
The final task which can be done by SPELECTRO is a transfer of all data lo the HP-IB interface. Thus, the program LOADER, which is written in FORTRAN-77 and is straightforward to operate as
--
SPECD3
StOD
l-i
close input flCe
New Urnits -
information
G Plot Of y-axis
0
Plot of x-axis
1
I
Read -
u.v./vis spectrum
4 Determine -
absorption min, max
--t
Read u.v./vis spectrum
End of reading
--)
Read u.v./vis spectrum
End of reading
i t
4 Rewind input fi\e
-
Position first spectrum
Fig. 3.
t
4 Rewind input file
Flow chart OFSPECD~.
--)
Positlon first spectrum
-)
End of reading
46
KURT KALCHER et al. MEASUREMENT + 1 LFeICN)613DATE 10 ‘12 7966 l .** U”l”IS PARAMETERS FROM 350 TO 500 NM POfNtS/SPECTRUM 76 TIME INTERVAL 1 SEC ..C* MEMORY PARAMETERS # MEMORIES 67 START 0 END 66 **** DATA
-1
VOLTAMMETRIC POINTS 67
DATA
in the 128K memory. If voltammetric data are not loaded they are set to 0. The restart then continues with the output menu.
****
3D REPRESENTATION
. ..I
****
. 350
500
OF W/VIS
SPECTRA
All the optical spectra define a space with wavelength as x-, potential as y- and absorbance as z-axis. Thus, a three-dimensional representation yields all the information concerning the measurement at once. For this reason, the program SPECD3 was developed, which runs on the minicomputer HP 1000. It is written in FORTRAN-77 on the basis of a program which has already been published in this journal (Kalcher, 1982). Therefore, information related solely to mathematical background is excluded from further discussion. All unnecessary features of the former program have been omitted and simplifications appropriate to the problem have been introduced where possible. Figure 3 shows the schematic flow chart, Appendix 3 its listing. The limits of wavelength and potential xmin , x,, , y,,,,,,, ymx as well as the spectral data are read from the file created by LOADER. First, the absorbance range z,,, z,, is determined. The direction X for observing the surface is then defined as
X(2) = -cvm,
- Yap.)* abs (fuf)
X(3) = (zmax- *mi,) *fzf
-‘ooo5
I
0 25
Potential Fig. 4.
I
I
I
0
-0.25
-05
[VI
Internal printer/plotter output of SPELECTRO for a mea’surementof hexacyanoferrate(III).
can be seen in Appendix 2, loads all relevant values to the minicomputer and stores them on a file. Care must be paid in defining select code, sender’s and receiver’s addresses for the correspondent logical unit to ensure actual data transfer (e.g. HP-IB address of the photometer = 700, select code HP-IB interface for logical unit 30 of the minicomputer = 10; to activate the connection the output address must be 710, the loading unit must be assigned to 30). During transfer other devices must be turned off in order to avoid disturbances. Internal control characters which sometimes appear at the beginning of strings are eliminated by LOADER. SPELECTRO offers the facility of restarting a completed measurement if at least the method has been saved on disc. The restart menu is entered if the number of the measurement is set to a negative value. If stored properly as described above, the method also contains information on re-establishing data. Spectra need not be restored if they are still present
where fxf, fyf, fis are freely selectable parameters. For methodological reasons (sequential order of the curves away from the observer) the multiplication factor for the y-axis must be negative. In the next step the plotting area is defined (automatic scaling). As the absolute values of the three components differ in some orders of magnitide (e.g. 500 nm, 0.2 V, 0.003 absorbance units), distortions may occur due to numerical inaccuracies. Therefore, the data points are scaled in such a way that the ranges of the axes are of unit length when they are projectively transformed into the drawing plane. A visibility check excludes hidden parts of the line from being plotted. After the graphic representation of all spectra, the program draws the wavelength- and the potential-axes. Their orientation is chosen in a way that usually no parts of the plot are overwritten. To enhance the three dimensional impression, a character slant with direction of the other axis is set for the subscripts. Finally, the title is written above the plot. The program is implemented with standard DGL plotter software (device-independent graphic library from Hewlett-Packard). It should be pointed out that SPECD3 has been designed for single sweep voltammetric measurement only. RESULT Figure
on
the
4 shows a typical output of SPELECTRO internal printer/plotter for the spedro-
Program CFo
-4
CCN>
63
system for spectroelectrochemical measurements
847
3-
)_ *
Fig. 5. Plot of SPECD3 for a measurement
voltammetric measurement of hexacyanoferrate(II1) with an optically transparent gold electrode (60A Au on glass), 1 mm thickness of the solvent layer and a concentration of 300ppm [Fe(CN),13-. Figure 5 is the resulting plot of SPECD3 where fxf= 0.6, fjf = 0.5 and fif = 0.4 respectively. SPELECTRO requires 16558 bytes memory, SPECD3 53882 bytes. The total execution time for the plot of SPECD3 is 4’54”.
of hexacyanoferrate(II1).
polarographic interface. SPECD3 achieving graphic representation Copies of the programs of HP are available from the authors; accompanied by discs.
is a useful means of of data. microdiscs 92191A requests should be
.
Acknowledgement-Two of the authors (K. Kalcher, H. Greschonig) want to thank the “Jubikiumsfond der iIisterreichischen Nationalbank” for the purchase of the spectrophotometer, minicomputer and peripherals.
CONCLUSIONS SPELECTRO is a widely applicable program for spectrophotometric monitoring of voltammetric measurements with a diode array photometer and a
REFERENCES Kalcher K. (1982) Compur. Chem. 6, 39. Kalcher K. & Jorde C. (1986) Compul. Chtw. 10, 201. Appendices
c.* c
I*,,--D
owrleaf
KURT
48
KALCHER
APPENDIX Program
1 2 3 4 s
! 1 PROCRAM
1
FOR
ELECTROCHEMICRL
Listing
SPECTROMERSURE-
1 MENTS
1
18
INTEGER 38 ,U3 20 DIM WsCZQl,V5(200),V6(200~,U7 (200) 25 1 S3 TO S7 -> HPIB RODRESSES 26 ! 53.54 -> EXT.DISK DRIVES 27 1 SS -> EXTERNAL PLOTTER 28 ! S6 --, EXTERMAL PRINTER 29 1 s7 -> HP 1000 30 53-700 @ 54-70t @ 55-705 @ 56 -706 b S7-710 @ J7-0 @ Uls=“” 40 CLEAR B OISP ” PROGRAM FOR SP ECTRO-” . “ELECTROCHEMICfiL MEASURE MENTS” 8 DISP 50 ’ 51 1 52 ’ GENERAL INFORMATION 53 1 60 OISP @ OISP “>:;> GENERFIL PAR AMETERS <
>>> UV/VIS PA 230 RAMETERS <<
DISP
“nm-RANGE”;@
INPUT
Xl
,X
et
ai.
1
o/ SPELECTRO
270 IF Xl>X2 OR Xl<190 OR XZ>820 THEN 260 280 ERASE STATUS 290 LAMEDFI Xl TO X2 @ MODE 0.1 300 BEEP 0 OISP “REFERENCE READY [Y/N/O]“;@ INPUT B$ 310 IF i35Ci l==“O” OR B5tl ]-“a” TH EN 400 320 IF 65C 13=“N” THEN 300 330 ON ERROR GOT0 390 340 REFERENCE 10 350 MEASURE X3.0.0.0 360 IF NMEAS-0 THEN 360 370 BEEF C DISP “REMOVE REFERENC E” 0 DISP 380 OFF ERROR % 60T0 400 390 DISP “WAIT FOR LfiMP” @ LAMP I @ GOT0 340 400 DISP “READY TO CONTINUE [Y/N l”;@ INPUT B$@ IF BS[ 1 I-“N’ THEN 230 410 CLEFIR C GOSUB 5000 420 DISP “READY TO CONTINUE [Y/N I”;@ INPUT B$@ IF BBC 1 I=“N” THEN 230 430 1 431 1 432 1 128K MEMORY 433 I 440 CLEAR @ GOSUB 5500 450 DISP “REPIDY TO CONTINUE [Y/N 1” i@ INPUT B5@ IF Et¶C I I-“N” THEN 440 460 ! 461 ! 462 ! VOLTAMMETRIC PARfdlETERS 463 ! 470 CLEFtR @ DISP “>>>> VQLTAMM.P ARAMETERS <
Program system for spectroelectrochemical
470 580 v3=v3+1 590 ! 591 592 533 600 T
1 ! MEASUREMENT ! CLEAR 0 DISP S *: q: i ”
@
“>‘?.b>
MEASUREME
D I SF
610 BEEP @ DISP “SAMPLE REAOY CY INI”:@ INPUT B$@ IF BPC I l=“N” TH EN 610 620 BEEP @ OISP “STfiRT POLAROGRA PHI ” 630 ENTER S i B$ 640 OISP @ DISP @ BEEP @ DISP I’* ** START OF MEASUREMENT ****II @ OISP 650 ON ERROR GOT0 830 660 J1=0 @ JZ-0 @ 33~0 @ .JE=0 670 ENTER S USING “50.X .5D” i V8 .u3 680 58=38+1 @ IF ‘J3=I THEN 700 630 IF 38-INT( J8/‘J3)+U3tl THEN 6 70 700 .Il=Jl+l 710 V5IJl b-U8 @ V6(JI j-U9 @ V7c.J 1 )--I 720 DISP JI;J8;UEi;U9 730 IF Jl-1 THEN 780 740 IF NMEAS-0 THEN 670 750 OISP “TO MEMORY”iJ3+JB 760 TO MEMORY J3tJQ 770 53==53+ 1 760 JZ-JZ+l 790 OISP “MEASURE ” ; JZ 800 U7( J I )-J3+ JQ Bt0 KASURE X3.0.0.0 820 GOTO 670 830 IF J3
measurements
370 ON ERROR GOTO 990 980 ! 981 1 382 1 OUTPUT, STORING, TRANSFER 983 / 990 CLEAR P OISP “>,2> OUTPUT ME NU <10 THEN S9=0 @ GOTO 2000 II30 IF MXl THEN 1300 I 140 PRINTER 1 1150 IF M-2 THEN PRINT (P PRINT 0 PRINT “SPECTROELECTROCHEMICAL” I 160 PRINT “MEASUREMENT X” ;W0 1170 IF M-2 THEN PRINT 1180 PRINT WB @ PRINT I190 PRINT “OfiTE” iW1 iWZiW3 @ PRI NT (200 PRINT m*+*+ UU/UIS l *.*” 1210 PRINT “FROM “:X1 i” TO “iX2i ” l-mm‘O 1220 PRINT “TIME INTER’JPIL .s 3x3; ” set” @ PRINT 1230 PRINT “**,+* MEMORIES l ***‘* 1240 PRINT ‘#“;J3r” FROM “:JB;” TO “I JQ+J3-1 Q PRINT -*se+ VOLT.OATA w.,+e” 1250 PRINT 1260 PRINT 1270 PRINT c ” wJ5B ” 1 I’ 1280 IF M-l 1290 1300
“FROM “iU1;” TO “,U2 “CURRENT RANGE ” ;V41’ THEN
GOT0 390 IF MX2 THEN
COPY
1330
ELSE
PRINT
KURT
50
1310 4200 1320 1330 1340 1350 INPUT 1355 IS 1356 1357 I358 1359 I360 4 .x5 I370 I 380 I390 I 400 1410
SQ-S6
@ PRINTER
S0
Q GOSUB
GOT0 1150 IF M#3 AND Mf4 THEN 1440 PLOTTER 1 DISP “Q’JERLAY YMIN .Y?jAX asi @ X4 .X5 FROM MEMORY” ; Q INPUT
orsb ;
IF 16<0 THEN 1359 DISP “TO MEMORY”;@
INPUT
17
GOTO 1360 f6=J0 @ 17=50+53-l IF MXS THEN OUERLAY XI ,X2 ,X ELSE Y-SCALE X4 TO X5 FOR I-16 TO 17 RECALL WEtlORY I PLOTTER NEXT I IF M-4 THEN COPY @ GOT0 990
IF M-3 THEN INPUT qB@ GOT0 I420 990 AXIS @ GOTO 990 I430 1480 IF MX5 THEN I440 SQ-SS 1450 EDSUB 4200 1460 PLOTTER SQ @ GOT0 1350 I470 IF Mt6 THEN 1580 I480 SB-S6 @ PRINTER SO @ GOSUB 1490 4200 DISP “MEMORY #“;@ INPUT J 1500 54-J @ J5=J 1510 IF ,I<0 THEN 54-50 Q 55=33+3 I520 0-t FOR I-J4 TO J5 1530 RECALL MEMORY I I540 PRINT “--=MEMORY”; I Q PRI I550 NTER NEXT I I560 PRINT @ GOT0 390 1570 IF Mt7 THEN 1680 I580 SQ-56 I? PRINTER SQ @ 6OSUB I590 4200 I==-= VOLT .DATA” PRINT 1600 PRINT “#DATA” IJI B PRINT 1610 POT.E’J PRINT USING “K” : ” 1620 MEW. ” 1 CURR.t” ,VrS,‘I 1630 FOR I-1 TO .JI 1640 PRlNT USING “3X .20_3D .3X .4O .30,3x ,3D’ i U5( I) ,U6( I) ,Ui’( I ) 1650 NEXT I 1660 PRINT 1670 tOT0 990 t660 IF M#8 AND M%3 THEN 1380 1690 PLOTTER t 8 GCLEAR 1700 W8-VI-(UZ-Ul >*.2
KALCHER
et al.
1710 WS=Vt+(VZ vi )/8 1720 W6=-(U4*1 .5) t? W7-V4*9.8/8 1730 SCftLE W8 ,W9 .W6 .W7 1740 WS-<‘JZ-Vl j/4 @ LDIR 0 1750 MOUE Ul .-V4 @ DRAW V2 ,-U4 1760 FOR I=1 TO INTI 1790 LABEL VAL$(Vl+(I-1 )*W5) 1600 NEXT I 1810 MOUE ul+.t+(u2-uI I .-cu4*fi.5 /5 b i820 LABEL “Potential [WI” 1830 YAXIS ‘II ,V4/4 .-V4 .U4 B DEG Q LDIR 90 1640 FOR I-l TO 3 1850 MOUE VI-(Vt-Ut j/32,-(U4*1.1 5 )+( I-l )*V4 1060 LABEL UAL$( -U4+( I-l )*V4) 1870 NEXT I 1860 MOVE WI-(VZ-Ul )*.08.-< .5*U4 1890 1900 E Ul v4 1910 1920 1930 t940 1950
LABEL “Current C “&V$&” 3” MOVE Vl .0 @ DRAW Vi? .0 @ MOV .V4 Q DRAW V2 .V4 Q DRAW VZ .MOUE V5(1 ),U6(1 1 FOR I=1 TO JI DRAW~US~I),UG(I) NEXT I IF W-9 THEN COPY b
GOT0
990
1960 MOUE W8 .W6 @ IF M<10 THEN I NPUT 85 1970 GOTQ 990 1980 SO-55 Q GOSUB 4200 1990 PLOTTER S0 B GOT0 1700 2000 OFF ERROR @ CLEAR @ DISP “> >>> STORE DATA
”
S.....STATUS
ti
G.....INITIALISE
”
7..
“MENU
DISKET 01
. . .ERASE NUMBER”
FILES” 40
INPUT
Program system for spectroelectrochemical
M
2100 IF M? THEN 2970 2120 IF fl#i THEN 2150 2130 SQ-SG % PRINTER S0 @ S9-S6 0 GOSUB 42%0 2140 60TO 2000 2150 IF Mt2 THEN 2300 2160 GOSUB 4100 2170 GOSUB 4030 210% UIQ-SI @ ON ERROR GOTO 2260 @ CREATE SS.1 ,Jl*24 @ ASSIGNS I TO S8 219% OFF ERROR @ ON ERROR GOTO 2 200 2200 FOR I-1 TO JI 2210 PRINTt 1 I US(I).UfiII~.V7(1 ) 2220 NEXT I “UOLT.DATA STORED ON *’ 2225 OISP ;s5 2230 IF S9#0 THEN PRINT @ PRINT ‘VOLT. DATA STORED ON ” iSB Q PRI NT 2240 ASSIGN+ 1 TO l 2250 GOT0 2800 2260 BEEP 0 DISP “##t ERROR in c rsat1ng fzle” is5 2270 GOT0 2800 2280 BEEP 0 DISP “+## ERRDR in w rit1rFg on frls”;S5 2290 GOTO 2240 2300 IF M#3 THEN 2520 2310 6OSUB 4100 2320 ON ERROR 6OTO 2370 2330 FOR I==1 TO 9999 234% +KiSIGN# 1 TO “FILE”&VAL$(I) 0 ASSIGN* I TO * 2350 NEXT I 2360 BEEP BI DISP “##s ERROR on d lsk’ ;s0 I 60~0 2800 2370 OFF ERROR @ J7=1-1 0 ON ERR OR GOT0 2460 2380 OISP % DISP “**f STORING .=I LES ***” 2390 FOR I=1 TO 33 2400 J7-J7+1 0 RECALL MEMORY I+J 0-1 2410 TO FILE 57 2420 DISP “MEM. w 1 J0+1-I i” STORED TO FILE” I 57 2430 IF S9#0 THEN PRINT “MEM. ti ; J TO FILE”iJ7 0+1-1 I LI STORED 2440 NEXT I 2450 GOT0 2800 2460 BEEP Q DISP @ DISP **** DIS KETTE D’JERFLOW’ “INSERT NEW DISK” 8 GO 2470 DISP SUB 4100
measurements
2480 GOSUB 4300 2490 IF I-1 THEN OFF ERROR @ ~CFT 0 2320 2500 IF S9#0 THEN PRINT “**+I DIS K CHANGE +**” 2510 GOT0 2410 2S20 IF M+4 THEN 2750 2530 GOSUE 410% 2540 COSUB 4030 2550 ON ERROR GOTO 2260 2560 CREATE 55.1 257% ASSIGN+ I TQ SO 2580 OFF ERROR 2590 ON ERROR GOTO 2280 2600 PRINT# I i W0,Wl ,W2,W3 2610 PRINT+ I I W5 2620 PRINTt I i Xl ,X2,%3 263% PRINT* 1 , J0,Jl ,J2,53.57 2G40 PRINTS 1 i VI ,V2 .‘J3,V4 2650 PRINTt 1 i V5 2660 PRINTS I ; Vlt8 2700 ASSIGNO 1 TO * 2710 OFF ERROR 272% Or5P “METHOD STORED ON ” 15s 2730 IF S980 THEN PRINT ‘METHOD STORED ON m 155 2740 60TO 2800 2750 IF Mt5 THEN 2820 2760 ON ERROR GOT0 2360 2770 GOSUB 4100 2780 CLEAR @ DISP **** STATUS OF DISK”tS0 @ DISP 2790 STATUS FILE ‘9 OFF ERROR 2800 DISP @ DISP “READY TO CONTI NUE CY/NI”;@ INPUT G5@ IF B$Cll= “N” THEN 2800 2810 GOT0 2000 2920 IF Mt6 THEN 206% 2030 GOSUB 4100 2840 GOSUB 4300 2850 GOTO 2000 2860 GOSUB 4100 2870 CLEAR @ STATUS FILE 288% DISP “ERASE FROM FILE”;% IN PUT F8% IF F8<0 THEN 2840 “TO FILE”#R INPUT F9 2890 DISP 290% IF F9iF8 OR FB-0 THEN DISP “NO ACTION” @ GDTD 2000 291% ON ERROR GOT0 2950 2920 FOR I-F8 TO F9 2930 ERASE FILE I 2940 q ISP “FILE” i I : “ERASED” 2950 NEXT I 2960 OFF ERROR 0 MODE 4 0 GOT0 2 800 2970 CLEAR @ OISP “>>>> TRANSFER TO HP1000 <
51
KURT
52
2988 DISP “TRANSFER VIA HPIB [Y/ Nl” :@ INPUT Bf@ IF BBC 1 3=“N” THE N 3230 2990 BEEP @ DISP “SWITCH OFF OTH ER DEVICES1 11 ! I 3000 DISP “CONNECT HP-1000 HPIB” 3010 DISP ‘READY TO,CONTINUE CY/ Nl”;@ INPUT B5@ IF B8[ I l=“N” THE N 3010 3020 BEEP @ OISP “START LOADER P ROGRFlM HP 1000! 1 1” 3030 DISP “REfiDY TO CONTINUE CY/ NJ” :@ INPUT E35@ IF BBC 1 l=“N” THE N 3030 “PORT ID-” i 57 3040 OISP 3050 PRINTER S7 “DODD” i W0 @ G 3060 PRINT USING QSUB 4400 ” K I’ i W5 Q GOSU 3070 PRINT U5ING B 4400 3080 PRINT USING ‘DD,IX,DD,lX.DD DD *I i WI .WZ,WJ @ GOSUB 4400 3090 PRINT USIN “DDO.0” i x3 @ GOSUB 4400 “ODD, IX ,DDD” ; 3100 PRINT USING X1 ,X2 @ EDSUB 4400 3110 PRINT USING “ZO.SD,lX~2D.3O .I : ‘Jl .‘JZ @ GOSUB 4400 3120 PRINT USING “DODD ~ 1 X ,DDDD” : JT , JZ @ GOSUB 4400 3130 FOR I-I TO Jl 3140 PRINT USING “3X ,20.30.3X .40 .30.3x -30” i U5( I) .U6( 11 .V7( I ) 6dSUB i400 . 3156 3160 NEXT I FOR I-J0 TO 50+53-l 3170 RECALL MEMORY I 3180 3190 PRINT USING “DODD” i I PR INTER 3200 3210 NEXT I “@@@@@” 322 0 PRINT DISP @ DISP “READY TO CONTI 3225 NUE CY/NI”:FI INPUT Bsd IF S&C 1 l” N ” THEN 2970 3230 CLEAR @ DISP “?>>> ENO C<>>> RESThRT
*
Z.....RECALL
” 3.....RECALL Ip OISP “MENU NUMBER-i@
VOLT. MEM.FR INPUT
KALCHER
et cd.
MO IF M-0 THEN 990 3310 IF II<0 OR M>3 THEN 3230 3320 IF M#e! THEN 3470 GOSUB 4010 3330 GOSUB 41t0 3335 ON ERROR GOT0 3450 3340 fiSSIGN# 1 TO S$ 3350 3360 OFF ERROR @ ON ERROR 6OTO 3 440 REhO# 1 i W0,WI 3370 .IJ2.W3@ READ x 1 : WB@ REFIDt 1 i Xl .X2.X3 3380 REfi\D# I 7 J0,JI .52.53.57@ 1 F J7>0 THEN J7=57-Jl+7 3390 READ* I i U1 .Ut .V3 .V4@ READ + 1 i Us@ RERDt 1 , VIP 3400 ASSIGNt 1 TO + 3410 DISP “METHOD LOADED FROM ” : SS 3420 DISP “READY TO CONTINUE CY/ Nl”r@ INPUT B$@ IF E5t 13+“N” THE N 3420 3430 GOTO 3250 3440 ASSlGN# 1 TO * 3450 BEEP 8 DISP “XBU ERROR on f 11e “;S$ 8 GOT0 3420 3460 OFF ERROR @ GOT0 3250 3470 IF M#Z THEN 3570 3480 TF Ull*“” THEN GDSUB 4010 E LSE S-§-U15 3485 GOSUE 41 10 3490 ON ERROR GOTD 3450 3500 ASSIGNf 1 TO S5 3530 OFF ERROR @ ON ERROR GOT0 3 440 3520 FOR I-l TO Jl 3530 READ* 1 i US( I ) .U6( I ) ,V7( I ) 3540 NEXT I 3550 OFF ERROR @ DJ5P “UOLT.UATA LOhDED FROM ” : S$ 3560 ASSiGN I TO l @ GOT0 3420 3570 GOSUG 5500 3580 DISP @ OISP “RECALL MEMORIE S” @ 6OSUB 4100 3550 ff 37-O THEN OISP “STPIRTING FROM FILE #“i@ INPUT 57 3600 FOR I-l TO 53 3610 ON ERROR GOT0 3680 3620 RECALL FILE J7+I-1 @ OFF ER ROR @ ON ERROR GOT0 3700 3630 TO MEMORY J0+1-l 3640 OFF ERROR 36S0 DISP “MEM. “: J0+I-1 1 -RESTORE D FROM FILE’gJ7+1-1 3660 NEXT I 3670 GOTQ 3420 3680 BEEP @ DISP “CHANGE DISK 1” 0 GOSUB 4100
Program system for spectraelectrochemical
3690 3700
3620 BEEP Q DISP 60T0
“##t
ERROR
for
nemory’:JQ+I-1 3710 QFF ERROR Q tOT0 3250 4000 1 FILE NCIMES 4010 DISP “FNPUT FILE NAME”; 4020 INPUT Ss@ RETURN 4030 DISP “OUTPUT FILE NAME” i@ G OTO 4020 4100 I SUB’S FOR DEVICES “DISK DRIVE 1 “&yf+L$rS3 4110 KIISP )E’/“LUAL$~S4~B”I” i@ INPUT SQ 4120 IF S0#S3 RND SQ+S4 THEN 411 0 4130 HASS STORAGE IS “:O”&VAL5(S 0) 9 RETURN 4200 BEEP @ DISP “DEUICE”iS0;” R EAOY [Y/N]“;@ ‘INPUT B$@ IF RECll THEN 4200 =“N” 4210 RETURN 4300 BEEP @ DISP “INITIALISING 0 ISK I .’ 4320 ERhSE FILE -1 4330 RETURN 4400 FOR 10=1 TO 50 4410 NEXT I0 4420 RETURN 5000 1 S0Bl 1 5002 ! STPITUS UU/‘JIS 5003 ! 5010 DISP I’=-== UU/VIS STATUS ===” @ DISP 5020 OISP “spectrum from” ;Xl <“to “1XZi’!-Wl’ 5030 DISP “pornts/spectrum” 3INT(
( X2-X 1 )/Z )+ I 5040
DISP
“time
aecl” 5050
DISP
“function
intervnl”:X3;”
I
ABSORBANCE”
5060 OISP @ RETURN 5500 ! 5501 ! 5502 ! STATUS MEMORY SS83 ! 5510 OIS? -==== MEMORY SThTUS --5’. B) DISP 5620 JO.=0 5530 IF STATUS MEMORYCI )#tQ THEN ‘128K MEMORY NOT WOR BEEF B DISP KING PROPERLY” 8 5TOP ’ 128K MEMORY WORKKNG P 5540 DISP ROPERLY m 5550 N==STATUS MEMORY ( 0 I 5560 OISF’ @ OISP ‘free space [by
tssl’rN 5570 N4=ABS( X2-X1
)/2+1
5580 5590 5600
measurements
N4=N4*8+104 Nl -INT( N/N4 OISP “space
)
53
for
spcctra”rN1
5610 IF Nil31000 THEN DISP @ RET URN 5620 DISP @ DISP “ERASE MEMORY C Y/N]” ;@ INPUT BB@ IF q‘BC 1 I-“N” T HEN 5640 5630 ERASE MEMORY -1 Q BEEP C DI SP “MEMORIES ERASED” B SOT0 5550 5640 5650 5660 5670 5680 5690 6000 6001 6002 6003 6010 TUS 6020 6030
ON ERROR GOTO 5680 TO MEMORY .I0 DISP “MEMQRY START+“:JQ ERr)SE MEMORY JQ @ GOT0
5690
JB-J0+1 @ GOT0 5650 DISP @ OFF ERROR Q RETURN 1 1 1 UOLTAMMETRIC STATUS ! IJISP *‘==I= UOLTAMMETRIC ST.4 =zca8’S @ DISp DISP “lnitlal potsnt~al”;Ul q ISP
“final
6040 DISP “current ivs 6050 OISP “points @ DISP 6060 RETURN 9990 END
potential
- iv2
rants
miv4
to
omit
“iv3
54
APPENDIX Program
1 2 3 4 5c 6 7c 8 9 10 1I 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Bfilcrs
Listing
0.1 oropram
c
for
program
loading
data
running 15 also
able
on
character+40
x fi1
for
program
HP 8451A to load
SPELECTRO
ljstings
BASIC
lu with hp-lb select code to HP8451 hp-ib transfer
inatrumsnt
corrsspondlng address 1~1~30
write< 1 ,* )’ output resd( 1 , ‘(a)‘) fil apanCt00,file=fll)
file
name
got0
99
?_’
1 ti
read< lu .‘(a )’ 1f(x(4:5).aq.‘@@‘)
10
Program
HPl00B
from
character+20 lu-
c c c
of Loader
loader
LOADER
c
2
~fix~l:l~.eq.‘7’~~~1:37~=x~4:40~ WrlteC
I ,*
Wt-lteC
100.*1
1 x x
1f(x(6:8).eq. goto close
99
1 goto
‘END’
99
I0 C 100)
stop end
APPENDIX Program 1 st11cs 2 3 4 5 6
0,l program specd3 character*1 IC character+20 ifil dlmonsion
~(316.31,
7
dlmenslon
y(3),
I3
dimension
ixch(Eii),
z(3).
Listing
3
of SPECD
pl(316.3).
3
pxC316).
rliot(2).
iych(5).
iaac(51,
lnd(316)
~~(316).
rtltl(lQ),
g(3)
idat(
ax(3.3).
axi(3.3)
9 ixch
10
data
1I
ndim-316
12
nl
.iych/ZhWs
.Zhve
.Zhle.Zhng
.Zhth
.ZhPo
in-0
13 14
do
563
r=l
.3
I5
do
563
j-l
.3
ax(
I ,_I I-0.
16
563
17 16 IS 2Q 21 22 23 24
17
writs(
1,171
format
( ///5x,
‘**at*
5PECD3
****‘/5x.
l ‘3D plot of spectroel.ctrochamical write{ I .*)’ Plot-lu = ? _’ r-sad< I ,*) ipl write{ I .*)’ Input file = 7 _’ ifs1 read{ I . ‘(a)‘) vector writsc I ,* )’ Projection
I ,* ly
25
read(
26
y(Z)--abs(y(ZI)
measurements’/)
Cx .y.rl
? _’
.Zhte
.Zhnt
.Zhia
.2hl
I
Program
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 73 80 81 92 83 84 85 86 87 88 89 90 91 92 93 94 95 96 37
system for spectroelectrochemicl
measurements
1 y-0 i fax-0
19
open!l00,fiLe=ifil ,status=‘old’ read< I00 ,* .err=97 ) number nlin=nlin+l read{ I00,19,crr=97)1tJt1 format< Ix ,10a2 1 nlln=nlin+l raad( I00 ,* .srr-97 1 idat nl in=nlin+! read< 100, ( a I ’ ,err-97 ) IC nlin=nlin+l read< 100.71 .err=97 1 ixmln ~ixmax nl in-nl in+1 fornat(lx,i3,lx,i3) xmin=floatI lxmln) xnax-f loat< ilrman ) npt=< ixman-lxmin j/2+1 read< 100,74 .err=97 ) ymln ,ynax
,err=98)
l
71
nlrn-nlrn+l 74
72 73
c
4 3 76 27
farmet(Ix ,f6.3,1% ,f6.3) read< 100,72 .srr=97)~sss,lx nlin=nlin+l format(lx,l4,lx,i4) da 73 i=l ,isss rcad( I00,‘
of
piotter
ymar-ymln)
surface
zmln-I .e38 zmax--l.e38 ppl=l .e318 do 3 i=l .l’x read< 100,*(a~‘,&r-97) ic nlin=nlln+l do 4 j-l ,npt read( 100,76 ,crr=97 ) ppp nl in-n1 in+1 if~~~.cq.l.and.j.sq.l~.or.~i,~q.l.and.j.aq.n~t~.or. (i.~q.lx.snd.j.es.npt))pp~=amin~(pp.ppl) l(i.eq_lx.end.j.aq.l ).or. zf(ppp.lt.zmin) zmin-ppp if-ppt-zmln pl2,t I-xnax-rmin piz.z>-0. pc 2.3 >=ppl -zmin ~(3.1 )-nnax-xmln p( 3.2 )-ynax-ymin p( 3.3 )‘PP 1 --zmin p(4.1 j-0. p( 4 .Z )-ymax-ymin p(4.3 )~PPl--tmrn z( 1 I-0. z(2 j-0.
55
KURT
56
9s 100 101 102 103 I04 105 106 107 108
et al.
r(3)=t.
ax< T ,l
)==xmax-xnin
ax<2
468
109
,Z )==ymax-ymln ex(3.3 )-znax-zm1n do 465 1-1 ,3 g( I >-sba( ax< i , i ) ) call PrOjeCCAX ,axi .3.3.Y.Q) call dreh( ax I .3.3 .y .z ) call pro~ec(p .pl .4 .ndim.y call drehfpl .4 .ndim.y ,z) rmn-pl( I .t b
.g)
XpIX-=Xll”
1 I0
Ill
ymn-pl(
1 I2
ymx-ymn
II3
do
t ,2
j
2
2 1-Z ,4 if(p1Ci.l ).lt.nmn) if(pl(i,l b.gt.xmx) if(~l(~,z>.lt.ymn~ if~pl(~,2~.gt.ymx~ cant inue
5
nlin-0 rewind 100 do 5 i==i ,isss+7 read( 100,*AaJ nlin-nlin+l cant 1nLJe
I14 I f5 I16 I17 IiE I19 I20 121 22 23 24 25 26 27 26 29 30 131 132 133 134 135 136 I 37 38 39 40 41 42 43 44 45 46 147 149 149 150 I51 I52 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
KALCHER
do 40 1-1 read< 100, nlin-nlin+l do 41 j-l read<
41
42 40
1s
cant cdl call do
cent cant
.1x ’ ( a )’
xmn=pl(i,l rmx==plCr.l ymrl=pl(i.Z~ ymx=pI
.err=97,,
) I
ic
.err=97
)
ic
.npt I00
-76
.err-97)
ppp
pl
j ,I
)-float<
j-l
)*xstep
p(
J .z
)=floatC
a-l
j*ysttp
p( j .3 )=ppp-zmin inus 1 pro~ec( p .pl drsh(p1 ,npt 42 j-l .npt 1fCxmn.gt.pl(j,t)> Af(xmx.lt.pr(j Af(ymn.gt.pl
,npt .ndrm ,y .g .ndim,y ,z)
.I
>)
>
xmn-pl(J.1) xmx=pl(j ymn-pltj.2) ymx=pl(j.Z)
,I I
writs< 1 , 181 y.xmn.xmx,ymn.ymx.~~~xI~~.j~,j-1 fOrmat ( 3X, ‘p,-O J . V.SCtOF : ' .3f 11 .5//3x, I ‘x-min.x-max [plot) :‘.Zfj1.5/3x. l ‘y-min ,y-max (plot ) : ’ .2?11.5//3x, l : ’ ,3f ‘x-ux pro j _ 11.5/3x 1 t ‘y-ax :‘,3f11_5/3x. proJ. t ‘z-ax : ’ .3f 11 .s/ ) proj. rf(ipl.eq.1 )then Press RETURN to continua!’ write( 1 ,* I’ ic read( 1 , ‘
43
rewind 100 nlin-0 do 43 i-l .issa+7 read{ 100.‘(a)’ ,err=97) nlin-nlrn+l
c
plot
of
linaa
cull zbagn call zdint tip1 .Q,~arr) tf(ipl.sq.1) call adof cell zaspk( 1 .3.1. 1 rul-xmn-(umr-rnn)/3.
IC
.3),i=1
,3)
system for spectroelectrochemical
Program
xwZ=xmx+( xmx-xmn ywt-ymn-(ymx-ynn)/3. yu2=ymx+( ymx--ynn
171
172 173 174 175 176 177 178 79 1 80 161 82 83 84 a5 86
csll
do 10 i=l ,1x read< 100,‘(a) nlin=nlrn+t PC I .2 j-f loat( do
a8
I1
189 I90 131 192 I 53 194 318 195 317 196 I 97 198 133 200 201 12 202 203 204 10 205 206 c 207 208 209 210 ZI I 212 213 214 215 216 217
218 219 220 221 222 223 224 225 226 227 228 223 230 231 232 233 234 235 236 237 238 239 240 241 242
11 j-t read<
)/3. j/3.
.xwZ ,ywl
cant ifly(
endi call
.ywZ)
,err=97)
1-l )tystep ,npt 100.76 .crr=97
nlin-nlin+l p( j .3 F--p< J .3 )-znin p( J .2 )=-PC 1 ,Zd
187 I
zwind(xwt
ic
)
p( j ,3
p( j .I )-float(J-I )*2. inue I j.lt.0. ) then do 317 kkl=l ,npt/Z kkZ=npt-kkl +l do 318 kkJ-=l ,3 r~r-p< kk 1 ,kkJ ) p(kkl ,kkJ )=p(C.kZ ,kkj pCkk2 .kkJ )-rxr cant inue cant inue f pro~ec(p .pl .npt .ndim.y,g) drehtpl .npt .ndim.y,z)
call do I2
j-l
57
measurements
>
)
.npt
I-PI (j .I & py( j )-pl( j .2 ) call contCpx,py,npt call platcpx .py .npt cant inue
pr( J
,ndrm,ind,l) .ndim.Lnd)
X_-IXi§ call sc( xmin ,xmax .naegx call act ymin .ymex .nsegY pl t .l )-xmax-wmin pll ,2+-o. p( 1 ,3)=0. p< 2,l l-0. p(2 .z )-ymax-ymin p(Z .3)-O. p<3 .I )=0. p( 3 ,z )-0. p( 3.3 )=ppp-zmin IP(y{3).lt.O.) then p(3.2 )-ymsx-ymin p(Z,Z)--pCZ.Z)
,ncomx .ncomy
1
)
sndif call
projac(p,pl .3.ndim.y.p) drch(pl .3,ndam.Y.z) call zdpmm(0. .0. .pxQ .PYQ 1 call zdpmm(plCl .I >.pl(l ,Z),pxl call zdpmm(pl(Z,! ),pl(Z.2).px2,pYZ) call rdpmmI 1. , I . ,px3 ,py3 I call zcsiz(3./abs(px3_pxB),~_f~b~~pyQ)) pxl-pxl-px0 PYl-PYl-PY0 pxz-pxz-pm0
call
,pyl)
PYZ’PY2--PY@
xlsn-sqrt(pxl~pxl+pyl*pyl~ ylen-aqrt(px2*px2+pyZ’pyZ) xedd=-pl(2 .l b/ylen*l0.
yadd--pl(2,2)/ylan*t0. zmove( p 1 ( 3,i call call rdraw(plt3.1 ifi
ipl
.nc.‘l ) cs-Cpyi t-list{
then
Mxadd ,p I (3.2 )+xadd+pl(l ,l
*P&i!-pxl
I )-sqrt(
)+Yadd ) >,plC3,2)+ysdd+pl(l
lpy2 )/xlanlylcn t .-c5*c5 l/C6
.2))
KURT
58
243 244 245 246 247 246 249 250 251 252 253 254 255 256 257 256 259 260 261 262 263 264 265 50 266 267 268 269 270 c 271 272 273 274 275 276 277 278 279 260 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314
KALCHER el al
I
IfccpXlrDX2+PYl*DY2).Qt.0.} rlistt call zoaac(l50.0,1 ,id.rlxst,rcrr) rlist( 1 )=pxl/xlen f-list(Z)-pyl/xlan if(pxl.lt.0.) than r11stt 1 )=-rllst( I) r1istu )=-rllst(z) endi f call zoe~c~Z50,0,2,id,ri~st,ierr) andi
)
)=-rlisttl
f
f-1.
if(pxl do 50
.lt .0. ) f--t * 1=0,nsegx xl-plC3.1 )+xadd+floet+pt(t ,1 )/floet(“seQx) yl~pl~3,Z~+yadd+float~i~~pl~i,2~/flaat~nseQx~ call zmove(xf .yl) call zdraw(xl+xadd/S..yi+yadd/5.) call encod< iasc ,5 ,xmin+float ( i )*( xmex-xmin +
ncomx
I
if(ipl.ne.1 *
t
(“S.SQX
call
znove(xl+xadd+.7-pl(I
)+xadd*Z.3+pl(
I .I
pl(3,2)+yedd*2.3+pl(T.2)/2. ~a11
,I
)/xlen*
I
.!S*floet
7-pl~l.2~/~len*l.S+fIoat~nch~*f~
yl+yadd’.
car1 ztext(nch,iasc) cbnt inue call zmove(pli3,l s
b/f loa
-plC
)/Z.-pl(1
,l
I/x
I ,Z)/xlen*f*l.5*10.
I J
10,ixch)
ztext(
y-axis p(3,l
I-0.
P(3,2
)=0.
p( 2.2
)=Ymax-ymln
zf(pyl.lt.0.)
then
)=xnax-rmin p(3,2)-0. p( 1 .l I--p< I .l )
p( 3.1
sndi
f
call
projcc(p,pl
call
drsh(p
call
zdpnm(pl(l
call
zdpmmiDl~2,l~.Dl~2.2~.pr?.pyZ~
.3,ndrm,y,Q>
I
.3 .ndlm ,l
,Y ,z
),pl(l
) ,Z,.pxl
,pyl)
pxl-pxl-px0
PYl-PYl-FYQ px2-pxz-px0 PY2VY2--PY0 xlsn-sqrt~pxl*pxl+pyI+pyl~ Ylen-~qrtip~Zrp~Z+pyZ~pYZ) xadd=-pl<
I ,I
yadd=-pl(l
)/xlsn*lQ.
.Z~/xlen*lQ.
call
znove(pl(3,l
)+xadd,pl(3,Z)+yadd)
call
rdraw{pl(3,1
)+xadd+pl(Z,l
if(
).pll3,2)+yadd+pl(2.2))
ipl.ne. I ) then cs-(py2*Dxl-px2*pyl )/xlen/yLan rlist( 1 )=sqrt( 1 .-cs-cs )Ica If((pxl*plZ+pyi*pyZ
).gt.O.
)
rlist(
1 )=-rlist(
call zoesc1150.0,l ,id,rlist,ierr) rl ist( I )=pxZ/ylen rllst(2 1-pyZ/ylen if(px2.It.0.) than rlist( I )=-rllsti I ) rlist<2)=-rlLst(2) endlf
zoesc(250.0,2,id,rlist,ierr)
call endi f=f
f .
rf(px do Xl-PI
51
),
,nch)
2.1t i-0 (3.1
.0.
f--l
)
_
.naagy
)+xadd+Ploat(i)‘pl(Z,l
I/float(nscgyB
VI-PI call
~3,2~+y~dd+flaat~l~+plo/Ploat~nseQy~
call
zdraw(xl+xadd/5.,yl+y~dd/5_~
Call
sncod(iasc,5,ym~n+flost(i)r(ym~%-ymin)/f~oat~~~~Qy~,
zmove(ul
,yl)
I )
system
Program
315
316 317 318 319 51 320 321 322 323 324 c 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 98 346 347 97 348 349 350 351 352 353 354 355 356 357 358 359 1 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 37s 376 377 378 379 1 380 381 382 383 384 385 2 386 387
for
spectroelectrochemical
59
measurements
ncomy ,nch 1 if(ipl.ne.1) call zmove~xl+xadd+.7-pl~Z,l~/ylcn*l~5*floet~nch~~F, * yt+yadd+.7-pl(Z,Z)/ylen+l .‘%*floatCnch)+f) cell ztext(nch.iasc) cant inue ,l )/ylen*f~l.5+9., cell znove(pl(3.1 )+xadd+2.3+pl~Z.l j/2!. -pl(Z * pl~3,2~+yedd*2.3+pl~Z,2~/2.-pl~2.2~/yle~*f~l.5+~. b call ztext< 9.iych) l
title rlist( calL t-list< rlistC2 call call cell call
1 )=0. zoesc(l50,0,1 .ad,rllst.lerr) I j-1. j-0. zoesclZ50,0.2.~d.rl~st.rerr) zcsiz(5./abs(px3-px0),5./abs(pyQ)) zmove~xmn,ymx+(ymx-ynn)*.DS) ztext(20,1tltl~
cell zend if(ipl.eq.1)
then 1 . ‘(a)‘) gdof adon
read<
call call andi
ic
f
close stop
(100)
wrltr stop
(
write
c I ,*)
I .+)
’ I***
ERROR
IV-I opening
’ *fete*
ERROR
rn
.naeg
,nc)
line
file #
‘,ifif
‘,nlin-1
end
subroutIne
SC< xl
,x2
xd-absCx2-xt ) if
cont(px,py,npt
dimension dimension data
px(ndin), ~~(501 ),
do 1 1-1 ind( i j-1 ~f(m.eq.1) do 2
cant
.npt then is1 .npt cnin( i )=py( 1) cnex ( 1 )‘pyC 1 ) cx( i )-p~( i ) inue
return endif
nc=l nc-0
,ndim,ind,n)
py(ndim), cminl501
cx,cmrn,cmax/l503t0./
nc-2
),
ind(ndin) cmax(50I
)
KURT
60 388 389 390 391 392 393 334 395 396 397 398 399 400 40t 402 403 404 405 406 407 468 409 4f0 41 I 412 413 414 415 416 417 418 419 425 421 422 423 424 42s 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 45s 456 457 458 459 46%
3-l do
et al.
KALCHER
whxle((cx(j)-px(1
)l*(px(npt>-px
11.le.0.)
J-J+1 end do if< j .ge.npt 1 return do 5 k-l .npt if(k.gt.npi-j+I
I
gota
10
kl-j+k-2 cnln(k)wpol(cx
).cmin(kl
).cx(kl+l
),cminIkl+l
),px(k))
cmax(k)-pol(cxCkl
I.cnax(kl
>,cx(kl+l
).cnaxtkl+l
>,pxlk))
ifCpy.ge.cmax(k))
then
cmsx(
k )‘py(
else
if(py(k).le.cmin(k)>
k )
cmin(
k )-py(
then
k 1
else ind( endr goto
10
6 5
k I=0
f 6
if~abs(cn(npt)-px(npt)).lt.l.e-6) cmln{ npt )=py< npt ) cmax( npt )=pyI npt ) goto 5 endI f yl-pol{cx{npt).cmin~npt),px(npt}.pyInpt).px(k)) y2=pol(cxtnpt),c~an(npt~,px(npt),px(k)~ cmin( k )=aminl (yl .y2 ,py( k >) cmax< k >=amaxl(yl .yZ ,py( k ) ) cxCk )-pxCk> cant 1nue
then
return end
function pol=_(yZ-yl return end
pol(xl .yl )*(x3-x!
subroutine
plot
dimension
I
px(
in-1 do I I-I ,npt if(rnd(~b.oq.i) if( im.eq. call 1 m=0 else call endr f ehe Lm=l endr f cant 1nue
.xZ.yZ.x3) )/
(px
ndim
.ndim
,py,npt
),
)+yl
ndin
py(
then I ) then zmove( px(
1 ~ indcndim)
i ) .py(
rdraw
.ind)
i ) )
).pyC~)
1
return end
subrout
dimans
2
I
one
ion
pro
jec(
w .p
w( nd+m ,3 > ,
.npt
.ndim
p( nd;m
.3),
.Y
.Q )
y( 3 )
d=(y( I I*y(l )+y(Z)*y(2>4y(3I*y13)) do I I-I .npt f=(yi 1 )*wI i 11 )/gC I )+y( i! )*w( i ,2 I/g< do 2 j=l .3 pi i .J )=w( i .J )/g( J j-f ly< J )/d cant 1nue
, gI
3 I
2 >+y< 3 )*w(
i ,3 )/gC
3 ) )
Program 461 462 463 464 465 466 467
subroutine
tran5
dlmansion
1
I0
p(3),
do 1 i=l .F do I j-l ,3 t(i,j)-0. t( in.in)-I. goto ~10.20.30~.
spectroelectrochemical
61
measurements
icl=Z icZ=3 isl-2 is2=3 goto
30
icl-l icZ=Z isl-t is2-2
100
t(lrl ,rcl)-51 t( icZ ,Ic2 1-1~5 t( rsl ,lSZ )--sn t (iS2,lSl )=sn do 2 i=l .3 h( I )=0. do 2 j=1 ,3 h( i >=hC I )+t do
3
p< i
,sn,cs,in)
h(3),
t<3,3)
100
icl=l ~c2=3 iE.t=3 1.s2=1 goto 100
2
(p
I”
20
f
i .J )*p(
J
)
3 1-i ,3 )=h( I )
return end
subroutine
512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532
for
return end
468
463 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 408 469 430 491 492 493 494 495 496 437 498 439 500 501 502 503 504 505 506 507 508 509 510 511
system
dlmcnsion dimension data g/l.
1
PC ndrm .3 zhl( I .3>, ,l. ,l ./
projcc(+hl
do 21
2
r=l
( L )-zh2(
,3
I,
.ndlm
.y ,z)
y( 3). z( 3 ) . zh2( I ,3)
yl(31,
zl(3).
h(3).
g(3)
,zhZ,l
,l
,y,g)
1 ,L )
do 100 k-i ,3 goto Il0,20,30>, 10
(p .npt
do I i=l .3 yl(I )=y( i I zhl(l .i)-z(i) call
2
dreh
k
kk=2 if(abs(yl(l )).lt.l.e-6.and.abs(yto).lt.l.s-6) cs-yl(3)/aiqrt
QotQ
100
KURT
62 533 534 53s 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 SC6 567 568 569 578 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 689 590 591 592 593 594 595 596 597 S9B 599 600 60t 602 603 604 605
30
50
4
s 3
et&.
50
QOtO
20
hLCHER
kk-1 if~abr~yl~2~~.lt.l.e-6.and.~bs~yl~3~~.lt,l.~-6~ cs-yl~3~/sqrt~yl~2~~yl~z~+yl~3~~yl~3~~ sn=sqrt(l.-cs*cs) if(yl(2).lt.B. 1 sn=--5l-l goto 50 kk-3 cs=zl(Z)/sqrttzlll sn=sQrt< I .-CsfCS lftzlcl 1.lt.0.) call call do do h< j call do p( i
1
)*zl(l
goto
)+zl(z)+zl(z)l
5rl---sn
Crana(zl .sn .CE, .kk) trans
cant i nue
100
cant xnue raturn end
subroutine
1
2 3
4
iasc
,idim
.rnum
I11-1~ ,nd )
d&nsnsion xasc( Idim) .Jstr(5), jnin( I date Jstr /ZhQi .Zh23,2h4S .2h67 .Zh89/, call ndgtl
1
encod<
1
ndgtl(rnum,l
rn=abs( mum) do 1 1 1 .39 I-n-rn/lQ. if (rn .lt. 1.) cant inue
QOtO
2
1
jmln
1 J goto
>
/2h-.
2
/
100
Program 606 2 607 606 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 I0 631 632 633 634 635 636 I I 637 636
system for specttoelectrochemical
measurements
l-1
return and
dimension ia(4),ib(3),ic(l data icio’33’/ data la/Zhab .Zhcd ,Zhef
entry
j-3 pot0 entry j=4 goto entry
),ld(
,Zh*Z/
1)
! graphic
display
on
I0 Qdcf
!
Qraphlc
display
c,ff
IQ adan
I
alphenum.
pdan
display
on
3’5 QOtO t0 I alphanun. display off entry adof j-6 goto 10 entry cgn ! clear graphic mamcry 3-1 call anove( ic ,2,2 ,lb ,l ) cell snove(ia,7,7,ib,Z) call snove< ia ,4,4, rb .3 ) call snova(ia,J,j,1b,4) cell smove(ia,8,8.1b.5) write< I *l 1 jib fornat( lx .3a2 b
return end
63