. 

Process for Automated, Safe 

MBE Start and Flux Calibration 

Approved for public release: distribution unlimited. 
. 

The findings in this report are not to be construed as an 

official Department of the Army position unless so 

designated by other authorized documents. 

Citation of manufacturer’s or trade names does not 

constitute an official endorsement or approval of the use 

thereof. 

Destroy this report when it is no longer needed. Do not 

return it to the originator. 
Army Research Laboratory 

Adelphi, MD 20783-l 197 

ARL-TR-2361 February 2001 

Process for Automated, Safe 

MBE Start and Flux Calibration 

Stefan Svensson 

Sensors and Electron Devices Directorate 

Approved for public release; distribution unlimited. 
Abstract 

A command procedure has been developed for the U.S. Army 

Research Laboratory (ARL) molecular beam epitaxy (MBE) computer 

control system that allows a user to set up the system for an 

automated, unattended start each morning. The automated sequence 

consists of1. A system safety check to determine if cell ramping should be 

allowed. 

2. A cell temperature ramp to an outgassing temperature. 

3. An outgassing of cells. 

4. A ramp-down of cells to nominal operating temperatures. 

5. An automated setup through an iterative process’ of flux 

measurements and changes of temperatures until desired targets 

are reached. 

This command procedure allows a daily, safe start-up of the MBE 

system and generates identical flux settings that improve the crystal 

growth reproducibility. Typically, one can save two hours or more of 

a work day by using this automated procedure. 

ii 
Contents 

1. Background 1 

2. Flow Chart 2 

3. Summary and Conclusion 5 

Appendix. Script Listings 7 

Distribution 25 

Report Documentation Page 27 

Figure 

1. Logged flux and temperature data as a function of time.. . . . . . . . . . . . . . 4 

. . . 

111 
1. Background 

The US. Army Research Laboratory (ARL) molecular beam epitaxy (MBE) 

system is controlled by a PC-based system called “Molly,” which is supplied by EPI Technologies, Inc. Molly provides a script language that can be 

used to create command procedures that execute customized sequences of 

actions on the MBE system. Possible actions are reading and setting cell 

temperatures, opening and closing shutters, reading pressure gauges, and 

turning the substrate holder. 

The PC-based control system replaced an older PDP-11 system. The shortcomings of this latter system were clarified after a malfunction during which 

the MBE machine had been programmed to start a cell up-ramp when the 

liquid nitrogen had been inadvertently turned off. This caused damage to 

the growth system, requiring venting and replacement of some cells. Although the PDP-H-based system could read pressures, it did not allow decisions to be programmed in to make actions conditional on any system 

status parameter. Molly provided a solution to this problem but required 

custom written code. This report describes the result of that effort. 
2. Flow Chart 

The logic behind the developed script is that the MBE system is idling over 

night, with the evaporation cells at a low temperature at which the evaporation rate is negligible. After the system vacuum is checked to ensure a 

safe up-ramp, the cells are slowly brought up to an outgassing temperature 

above the estimated set points for growth. The up-ramp is typically 0.5 hr, 

to allow the cells to thermalize to avoid stresses. At the peak temperature, 

the shutters are opened for about 10 min. to allow material that may have 

condensed, at or near each cell at the idling temperatures, to be evaporated 

so as to provide cleaner molecular beams during growth. After outgassing, 

the shutters are closed and the cell temperatures are lowered to the previous day’s set points. 

Because material is consumed during growth and the temperature sensor 

in each cell does not perfectly represent the melt temperature from day to 

day, the previous day’s set points typically do not exactly reproduce the 

previous day’s fluxes. The set points must therefore be changed based on 

the difference between measured fluxes and the target. All cells obey a linear relationship between the logarithm of the flux and the inverse of the 

absolute temperature of the cell. This relationship is used to calculate the 

needed temperature change based on the measured flux difference. After a 

new temperature is set, the computer is programmed to wait a predetermined time to let the cell reach equilibrium before a new measurement is 

taken. Some hysteresis is typically experienced in this process that requires 

up to about six repetitions before acceptable accuracy is reached. The accuracy ( I (target-measured)/target I ) is a variable that is typically set to 0.0025- 

a level of precision for which a human operator seldom can muster the 

patience. 

The actual process of measuring the fluxes has been designed to avoid the 

flux transients typically seen when shutters are opened. These transients 

are caused by the fact that with the shutter in closed position, heat from the 

melt surface is radiated back from the shutter to the melt. When the shutter 

is abruptly opened, the steady state is interrupted and heat radiation is lost 

from the melt at a higher rate, resulting in a drop in the flux. After some 

time, the thermocouple at the bottom of the crucible experiences a drop in 

the melt temperate, prompting the controller to increase the power to the 

cell until the temperature set point is restored. After this control sequence 

has reached a new steady state, the flux is stable. The measurement of the 

flux must consequently be done at this point or later and not during the 

transient. 

The ionization gauge used for flux measurements is turned away from the 

cells when it is not used for measurements to increase its lifetime. A flux 

measurement sequence thus consists of (1) opening the shutter for a predetermined time (usually 10 min.), (2) turning the gauge toward the cell, (3) averaging of 10 flux readings to determine the flux plus the background pres- 
sure, (4) closing the shutter, (5) waiting for the gauge reading to stabilize, 

(6) averaging of 10 flux readings to determine the chamber background pressure, (7) subtracting the second reading from the first to obtain the net flux, 

and (8) turning away the gauge from the cells again. If the measured and 

target fluxes deviate more than the preset accuracy, a new temperature is 

calculated and set. The system then waits for the cell to stabilize at the new 

temperature. 

During the calibration sequence, the pressures and temperatures are logged 

in a standard file. The data in this file can be extracted and plotted as in 

figure 1 on page 4. A good practice is to save the log file with the day’s date 

for future reference. 

For the script file to properly execute, certain information must be provided. 

The file (Calib.cmd) can be opened with any text editor. I have used WinEdit, 

which is a shareware program editor. The script file has been written with 

enough comments next to the variable declarations to indicate what needs 

to be entered. Typical inputs are- 

* Which cells are to be ramped. 

l To what temperature the cells are to be ramped. 

l If the cells are or are not to be included in the flux calibration sequence. 

l What the flux targets are. 

l The start time of the ramps. 

Optionally, other parameters can be changed, although the default values 

normally provide good performance. These parameters include the calibration accuracy, the slope and intercept of the flux versus temperature lines, 

the outgassing temperature expressed as a percentage above the growth set 

point, and the chamber pressure that cannot be exceeded if ramping is to be 

started. The Appendix contains the script listing. 
Figure 1. Logged flux 

and temperature data 

as a function of time. 

Time up to 2500 s is 

spent on up-ramp and 

outgassing. At 2500 s, 

previous day’s set 

points have been 

reached and flux 

measurement and 

Correction sequence 

starts. (First Ga flux 

reading -3000 s is 

missing because of 

sampling rate in file 

being too low.) 

4 

-s 

e. 

-7 

h 

a: -8 

ui 

@. 

B 

-9 

-10 

954 

c 

952 

E” 950 

% 948 

cl3 

946 

1130 

1128 

E 

2- 

1126 

2 i124 

3 

1122 

1120 

810 

- s 804 

802 

I I I I I In ' 

-i 

1 

I I I I I 

” 

b I I I I I 

I I I I I 

I 

I I I I I I 

2000 4000 6000 8000 10000 12000 11 

Time (s) 

100 
3. Summary and Conclusion 

Control code has been developed to allow unattended start-up of an MBE 

system. The code has been used and tested numerous times and delivered 

very accurate growth parameters and subsequent crystal layers with extremely small thickness and composition errors. In at least one case, the cell 

up-ramp was not started because of an excessively high-growth chamber 

pressure, thus preventing potential harm to the system. 
Appendix. Script Listings 

The following is a script listing of commands that execute a customized 

sequence of actions on the MBE system. 

/* /**************************f************~~~~~~~~~~~~~~~~~~~*~~~~~~~~~~~~~~~~**~~~~**~~*~, 

/* *I /* This command file performs a growth chamber pressure check, a cell up-ramp, */ 

/* a cell degas, and flux calibration starting at a predetermined time. */ 

/* */ 

/* Stefan Svensson, ARL May 7, 1997 */ ,****************************************~~~~~~**~~~~~~~~~~~~~~~*~~~~~~*~*~~*~~~~~*~~~~~, 

/* 

#include <stdlib.h> 

#include <signal.h> 

#include <unistd.h> 

#include <cells.h> 

#include <shutters.h> 

#include <mbe.h> 

/**/ 

,*======================================================================================*, 

,*========== Declarations and initial values ==========*, 

,*======================================================================================*, 

/**/ 

/* START BY FLAGGING THE CELLS TO BE RAMPED 

int rampGa = 1: /* Ramp flag for Ga l=yes 0 = T-IO) 

int rampA = 0; /* Ramp flag for Al3 l=yes 0 = no) 

int rampA = 1; /* Ramp flag for Al4 l=yes 0 = no) 

int rampIn = 1; /* Ramp flag for In 1=yes 0 = IlO) 

int rampSi = 1; I* Ramp flag for Si 1=yes 0 = IlO) 

int rampBe = 0; I* Ramp flag for Be 1=yes 0 = no) 

int rampSb = 0; /* Ramp flag for Sb 1=yes 0 = IlO) 

/* THEN ENTER THEIR SET POINTS (they will be outgassed at a 2.5% higher temp) 

/* Target temp for Ga 

/* Target temp for Al3 

/* Target temp for Al4 

I* Target temp for In 

/* Target temp for Si 

/* Target temp for Be 

/* Target temp for Sb 

ADJUST 

BASED 

ON 

PREVIOUS 

CAL 

double setpGa = 956.3 

double setpA = 1135.2 

double setpA = 1111.1 

double setpIn = 790.7 

double setpSi = 1327.4 

double SetpBe = 922.5 

double setpSb = 400.0 

/* THEN FLAG THE CELLS WHICH WILL BE FLUX CALIBRATED 

int calGa = 1; 

int calA = 0; 

int calAl = 1; 

int calIn = 1; 

int calSb = 0; 

/* Calib flag for Ga (l=yes 0 = no) 

/* Calib flag for Al3 (l=yes 0 = no) 

/* Calib flag for Al4 (l=yes 0 = no) 

/* Calib flag for In (l=yes 0 = IlO) 

/* Calib flag for Sb (l=yes 0 = Ilo) 

/* THEN ENTER THE FLUX TARGET VALUES 

double targetGa = 5.25E-7; 

double targetA = l.O62E-7; 

double targetAl = 0.844E-7; 

double targetIn = 1.63E-7; 

double targetsb = l.OE-7; 

/* Target flux for Ga 

/* Target flux for Al3 

/* Target flux for Al4 

/* Target flux for In 

/* Target flux for Sb 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

/* AND THE PRECISION OF THE CALIBRATION (Cal ends when abs( (flux-target)/target ) < prec */ 

double precGa = 0.0025; /* Target presision for Ga */ 

double precA13 = 0.0025; /* Target presision for Al3 */ 

double precAl4 = 0.0025; /* Target presision for Al4 */ 

--double precIn = 0.0025; /* Target presision for In */ 

double precsb = 0.0025; /* Target presision for Sb */ 

7 
Appendix 

/* FINALLY, DECIDE WHEN TO START THE EXECUTION */ 

/* Use the formula: */ 

/* Finish time = Start time + 45 + 30*number of cells to cal (min) */ 

/* (The actual time depends on accuracy of initial set point and desired precision */ 

int hour = 8; /* Start hour use 24 hr clock (O-23 valid) */ 

int minute = 32; /* Start minute */ 

/* DON'T FORGET TO PUT SHUTTERS AND CAR IN REMOTE */ 

/* END OF STANDARD ENTRIES */ 

double backtest = 2.E-9 

double ramptime = 30.0; 

double transient = 150.0 

double outgastime = 10.0: 

double outgas = 2.5; 

/* Background pressure for up-ramp test */ 

/* Length of cell ramp (min) */ 

/* Wait time to avoid shutter transient (SW*/ 

/* Outgas time after up-ramp (min) 

/* Percent temp increase to outgas at 

*/ 

*/ 

double s1opeG.a = -12670.0; 

double slopeAl = -10000.0; 

double slopeAl = -12670.0; 

double slop&n = -15707.0; 

double slopeSb = -10000.0; 

/* Flux slope for Ga 

/* Flux slope for Al3 

/* Flux slope for Al4 

/* Flux slope for In 

I* Flux slope for Sb 

ADJUST 

ONLY IF 

CAL DOES 

NOT CONVERGE 

FAST ENOUGH 

(prev -11630) */ 

*/ 

(prev -13860) */ 

(prev -12080) */ 

*/ 

double stabGa = 900.; 

double stabA = 600.; 

double stabA = 600.; 

double stabIn = 600.; 

double stabsb = 600.; 

/* Stabilization time for Ga 

/* Stabilization time for Al3 

/* Stabilization time for Al4 

/* Stabilization time for In 

/* Stabilization time for Sb 

*/ 

*/ 

*/ 

*/ 

*/ 

double TGamax = 999.; 

double TA13max = 1249.; 

double TAllmax = 1249.; 

double TInmax = 899.; 

double TSbmax = 799.; 

double TSimax = 1399.; 

double TBemax = 1149.; 

double TGamin = 600.; 

double TA13min = 820.; 

double TAllmin = 820.; 

double TInmin = 400.; 

double TSbmin = 200.; 

double TSimin = 400.; 

double TBemin = 400.; 

double TGa-outg; 

double TA13-outg; 

double TAll-outg; 

double Tin-outg; 

double TSi-outg; 

double TBe-outg; 

double TSb-outg; 

double fluxGa; 

double fluxA13; 

double fluxAll; 

double fluxIn; 

double fluxsb; 

double TGa; 

double TA13; 

double TA14; 

double Tin; 

double TSb: 

double errorGa; 

double errorA13; 

double errorA14; 

double errorIn; 

double errorsb; 

int doneGa; 

int doneA13; 

int doneAll; 

int don&n: 

/* Upper Ga temp limit 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

/* 

Upper Al3 temp limit 

Upper Al4 temp limit 

upper In temp limit 

Upper Sb temp limit 

Upper Si temp limit 

Upper Be temp limit 

Lower Ga temp limit 

Lower Al3 temp limit 

Lower Al4 temp limit 

Lower In temp limit 

dower Sb temp limit 

Lower Si temp limit 

Lower Be tamp limit 

Outgas temp for Ga 

Outgas temp for Al3 

Outgas temp for Al4 

outgas temp for In 

Outgas temp for Si 

Outgas temp for Be 

outgas temp for Sb 

Measured flux Ga 

Measured flux Al3 

Measured flux Al4 

Measured flux In 

Measured flux Sb 

Temp for Ga 

Temp for Al3 

Temp for Al4 

Temp for In 

Temp for Sb 

Ga flux error 

Al3 flux error 

Al4 flux error 

In flux error 

Sb flux error 

Completion flag for Ga (l=yes 0 = no) 

Completion flag for Al3 (l=yes 0 = no) 

Completion flag for Al4 (l=yes 0 = no) 

Completion flag for In (l=yes 0 = no) 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 

*/ 
Appendix 

int don&b; /* Completion flag for Sb (l=yes 0 = no) */ 

int Tbeamread = 1; /* Time between flux readings (set) */ 

int iread; /* counter during flux sampling */ 

int attempt; /* Number of changes of cell temp */ 

int log-idl; /* Data logger */ 

double beam-flux; 

double sum-flux; 

double beam-flux-open; 

double beam-flux-close; 

double background; 

long tnow; 

long tbegin; 

long tleft; 

/**/ 

/* Measured flux value */ 

/* Summation variable for flux talc *I 

/* Bean flux with open shutter *I 

/* Beam flux with close shutter */ 

/* Background pressure after shutter closed */ 

/* Present time */ 

/* Time to start up-ramp */ 

/* Time left before start of up-ramp *I 

,*==============:==========================================================~, 

/*==z======= Wait until start-up time ===========================*/ 

,*========================================================================*, 

/**/ 

echo0; 

echo(" ----------------====-------=--- ); 

echof" 1) DON'T FORGET TO PUT SHUTTERS AND CAR IN REMOTE II -1; 

echo(" 1 ; 

echo0; 

targ-time = hour * 60 + minute; 

fd = open( "-clock", O-RDONLY ); 

/* Timer code from J. Vlcek 5/5/97 */ 

if (fd<O) ( 

echo( "I'm sorry, but I'm unable to access the system clock for some reason." 1; 

echo( "I am unable to schedule your command file for later execution." ); 

echo( "Please send an email to software@epimbe.com describing this problem." 1: 

exit{ EXIT-FAILURE 1; 

echo0; 

echo( I' The up-ramp is now scheduled for execution." ); 

start-time = ioctl( fd, CLIOCTOD, 0 1; 

/* Wait until midnight if the target time is earlier in the day 

* than the current time tie, the file executes tomorrow). 

*/ 

if ( start-time >= t&g-time ) ( 

while ( ioctl( fd, CLIOCTOD, 0 ) >= start-time 1 

sleep{ 20.0 ); 

1 

1 

while ( ioctl( fd, CLIOCTOD, 0 I < targ-time ) 

sleep( 20.0 ); 

1 

close( fd ); 

/**/ 

/*=================-====================================================~, 

/*========== Test chamber pressure before cell up ramps ==============*/ 

/*=====================================================================*, 

I**/ 

echo(" Testing chamber pressure"); 

load ("pos3.cmd") ; /* Turn CAR ' 

echo(" Wait 25 set for substrate to turn toward cells"); 

echo0; 

sleep ( 25 1; 

iread = 0; 

sum-flux = 0; 

while (iread< 

beam-flux = readingtflux); 

echo(" Flux gauge = '*, beam-flux); 

if(beam-flux > 0) 

sum-flux = sum-flux + beam-flux; 

iread = iread+l; 

9 
Appendix 

sleep( Tbeamread I; 

background = sum-flux/lo; 

if( background < backtest && background > l.OE-11 ) 

echo0; 

echo(" The chamber pressure n, background ); 

echo(" passed the.test limit ", backtest ); 

echo(" The cells will now be ramped up "1; 

echo0; 

else 

c 

echo(); 

echo(" The chamber pressure ", background I; 

echo(" exceeds the test limit IO backtest 1; 

echo(" I will not ramp up the cells "); 

echo0; 

kill{ getpid0, SIGKILL); 

/**/ 

,*====================================================================~, 

/*======z==== Ramp up cells with d-y block facing cells ============*/ 

/*====================================================================*, 

/**/ 

/**/ 

/*- Start data logger -*/ 

/**/ 

log-id1 = logger(20.0, 

‘t', 

'temp(subs 

'temp(Ga)' 

‘temp(A13) 

'temp(A14) 

‘temp(In)' 

'temp(Si)' 

'temp(Be)', 

'is-open(Ga) ', 

'is_open(A13)', 

‘is_open(A14)', 

'is-open(In)', 

'is-open(Si) ', 

'is-open(Be)'. 

'reading(flux)', 

"fluxcal.dat"); 

/* log every 20 seconds */ 

/* PUT SB BACK WHEN THE EUROTHERM IS BACK, *I 

/**/ 

I*- Turn CAR and check if ramping should be done -----*/ 

/**/ 

load ("pos3.cmd") : /* Turn CAR *I 

echo(" Wait 25 set for substrate to turn toward cells"); 

echo0; 

sleep ( 25 1; 

if ( rampGa == 1 1) rampA == 1 11 rampA == 1 11 rampIn == 1 1 I /* If any cell is to be ramped */ 

rampSi == 1 1 I =apBe == 1 I I rampSb == 1 ) 

/**/ 

/*- Ramp up to outgas temperature (2.5% above nominal temp) -*/ 

/**/ 

echo(" Wait ",ramptime, " min for cells to ramp up "); 

echo0; 

if ( rampGa ==l) TGa =temp(Ga ); 

if ( rampA == 1 ) TA13 = tempt Al3 ); 

if ( rampA == 1 1 TA14 = temp( Al4 1: 

if ( rampIn ==l) Tin =temp( In ); 

if ( rampSi == 1 ) TSi = tempt Si ); 

if ( rampBe == 1 ) TBe = temp( Be 1; 

if ( rampSb ==l) TSb =temp( Sb ); 

/* Get current setpoints */ 

TGa-outg = SetpGa *(l.O + outgas/lOO.O); 

TA13-outg = setpA13*(1.0 + outgas/lOO.O); 

TAll-outg = setpA14*(1.0 + outgas/lOO.O); 

Tin-outg = setpIn *(l.O + outgas/lOO.O); 

TSi-outg = setpSi *(l.O + outgas/100.0); 

/* Create outgas temp */ 

10 
Appendix 

TBe-outg = setpBe *(l.O + outgas/lOO.D): 

TSb-outg = setpsb *cl.0 + outgas/100.0); 

if ( TGa-outg > TGamax ) 

t 

TGa-ou tg = TGamax; 

echo(" Warning - Ga will be outgassed at max temp ", TGamax, " C"); 

I 

if ( TA13-outg > TA13max ) 

( 

TA13-outg = TA13max; 

echo(" Warning - Al3 will be outgassed at max temp '>, TA13max." C"1; 

1 

if ( TAlQ-outg > TAllmax I 

C 

TAlli-outg = TAl4max; 

echo(" Warning - Al4 will be outgassed at max temp q, TA14max," '2"); 

1 

if ( Tin-outg > TInmax ) 

C 

Tin-outg = TInmax; 

echo(" Warning - In will be outgassed at max temp ", TInmax," C"); 

) 

if ( TSi-outg > TSimax ) 

C 

TSi-outg = TSimax; 

echo(" Warning - Si will be outgassed at max temp ", TSimax," C"): 

1 

if ( TBe-outg > TBemax ) 

(TBe-outg = TBemax: 

echo{" Warning - Be will be outgassed at max temp II, TBemax," C"); 

1 

if ( TSb-outg > TSbmax ) 

C 

TSb-outg = TSbmax; 

echo(" Warning - Sb will be outgassed at max temp ", TSbmax," C"); 

1 

if ( rampGa == 1 ) set-ramp( Ga , (TGa-outg - TGa )/ramptime ); /* Set new ramp rates */ 

if ( rampA == 1 ) set-ramp( A13, (TA13Loutg - TA13) /ramptime ); 

if ( rampA == 1 ) set-ramp( A14,(TA14_outg - TA14)/ramptime ); 

if ( rampIn == 1 ) set-ramp( In ,(TIn-outg - Tin )/ramptime ); /* DEG/MIN */ 

if ( rampSi == 1 ) set-ramp( Si , (TSi-outg - TSi )/ramptime 1; 

if ( rampBe == 1 ) set-ramp( Be ,(TBe-outg - TBe )/ramptime ); 

if ( rampSb == 1 ) set-ramp( Sb , ITSb-outg - TSb )/ramptime 1; 

if 1 rampGa == 1 ) set-temp( Ga ,TGa-outg); 

if ( rampA == 1 ) set-temp( A13,TA13_outg); 

if ( rampAl == 1 ) set-temp( A14,TAllLoutg); 

if ( ramp112 == 1 ) set-temp( In ,TIn-outg); 

if ( rampSi == 1 ) set-temp( Si ,TSi-outg); 

if ( rampBe == 1 ) set-temp( Be ,TBe-outg); 

if ( rampSb == 1 ) set-temp( Sb ,TSb-outg); 

/* Set new temperatures */ 

sleep 1 ramptime*60); /* Wait until ramp completed */ 

/**/ 

/*---- Open shutters and outgas -*/ 

/**/ 

echo(" Outgas cells ",outgastime, n min"); 

echo0: 

if ( rampGa == 1 ) shopen(Ga 1; 

if ( rampAl == 1 ) shopen(A13 

if ( rampAl == 1 ) shopen(Al4 

if ( rampIn == 1 ) shopen(In 

if 1 rampSi == 1 1 shopen(Si 

if ( rampBe == 1 ) shopen(Be 

if ( rampSb == 1 ) shopen(Sb 

sleep 1 outgastime*60); 

/**/ 

/*- Close shutters and ramp down to setpoints ---*/ 

/**/ 

echo(" Close cells and ramp to setpoints wait 5 min"); 

echo0; 

if ( rampGa == 1 ) shclose(Ga ); 

if ( rampA == 1 ) shclose(Al3); 

if ( rampA == 1 1 shclose(A14); 

/* Close the shutters *I 

11 
Appendix 

if ramp1n == 1 ) shclose(In ); 

if rampSi == 1 ) shclose(Si ); 

if rampBe == 1 ) shclose(Be ); 

if rampSb == 1 ) shclose(Sb ); 

if rampGa ==l) TGa =temp(Ga 

if rampA == 1 ) TA13 = temp( Al3 

if rampAl == 1 ) TA14 = temp( Al4 

if ramp1n == 1 ) Tin = temp( In 

if rampSi == 1 ) TSi = temp( Si 

if rampBe ==l) TBe =temp(Be 

if rampSb ==l) TSb =temp( Sb 

if 

if 

if 

if 

if 

if 

if 

rampGa == 1 ) set-ramp( Ga , (TGa - setpGa 

rampA == 1 ) set-ramp( A13, (TA13 - setpAl 

rampAl == 1 ) set-ramp( A14,(TA14 - setpAl 

ramp1n == 1 ) set-ramp( In ,(TIn - SetpIn 

rampSi == 1 ) set-ramp( Si ,(TSi - setpSi 

rampBe == 1 ) set-ramp( Be ,(TBe - setpBe 

rampsb == 1 ) set-ramp( Sb , (TSb - setpSb 

if ( rampGa == 1 ) set-temp( Ga ,setpGa ) 

if ( rampAl == 1 ) set-temp( A13,setpA13 ) 

if ( rampAl == 1 ) set-temp( Al4,setpAlB ) 

if ( rampIn == 1 ) set-temp( In ,setp1n ) 

if ( rampSi == 1 ) set-temp( Si ,setpSi ) 

if ( rampBe == 1 ) set-temp( Be ,setpBe ) 

if ( rampSb == 1 ) set-temp( Sb ,setpSb ) 

/* Get current setpoints *I 

/* Set new ramp rates */ 

/* DEG/MIN */ 

/s. ) 

/s. ) 

/s. 1 

/s. ) 

/s. 1 

IS. 1 

/s. ) 

/* Set new temperatures */ 

sleep ( 300 ); 

/**/ 

/*- Wait 5 more minutes to ensure stability -*/ 

/**/ 

echo(" Wait 5 min for stability "); 

echo0: 

sleep i 300 ); 

1 /* End of cell exercise */ 

/**/ 

/*-- ----------------------------------==*, 

,*================ Measure Ga flux =========================*/ 

,*===-----------------===============================================~, 

/**/ 

if( calGa == 1 ) 

( 

doneGa = 0; 

attempt = 0; 

echo(" Measure Ga flux"); 

echo{); 

TGa = setpGa; 

set-ramp(Ga,lOO); /* set fast rate for small adjustments */ 

while ( doneGa == 0 && calGa == 1 ) 

/**/ 

I*- Set new temperature turn flux guage away from cells and wait for stabilization -*/ 

/**/ 

if( TGa < TGamax && TGa > TGamin ) 

set-temp(Ga.TGa); 

else 

scho(" Ga setpoint outside allowd interval - Process terminated"); 

kill( getpid0, SIGKILL); 

attempt = attempt + 1; 

echo(" Seting new temp = ",TGa," and waiting ",stabGa," sec. 

echo(" Time is: ",mctime(time(O)) ); 

echo0; 

load ("pos3.cmd") : 

sleep ( stabGa 1; 

/**/ 

/*- , open shutter and wait --*/ 

/**/ 

shopen( 

echo(" Wait ",transient," set during transient"); 

echo0; 

sleep ( transient 1; 

load ("posl.cmd") ; 

“) i 

12 
echo(" Wait 30 set for guage to turn toward cells"); 

echo0; 

sleep ( 30 ); 

/**/ 

/* Measure with shutter open 

/**/ 

echo(" Measure with shutter open"); 

echo0; 

iread = 0; 

sum-flux = 0; 

while (iread<lO) 

*/ 

beam-flux = readingcflux); 

echo(#* Flux gauge = (0 beam-flux); 

if(beam-flux > 0) 

C 

sun-flux = sum-flux +,beam-flux; 

iread = iread+l; 

1 

sleep( Tbeamread ); 

1 

beam-flux-open = sum-flux/lo; 

echo0; 

echo{" Average Flux = )(I beam-flux-open); 

echo0; 

/**/ 

/* Measure with shutter closed 

/**/ 

shclose(Ga); 

sleep(20) ; 

iread = 0; 

sum-flux = 0; 

while (iread<lO) 

*/ 

back-flux = reading(flux); 

echb(" Flux gauge = (0 back-flux); 

if(back-flux > 0 ) 

sum-flux = sum-flux + back-flux; 

iread = iread+l; 

sleep( Tbeamread 1; 

1 

beam-flux-close = sum-flux/lo; 

echo0; 

echo(" Average Flux = v, beam-flux-close); 

echo0; 

fluxGa = beam-flux-open - beam-flux-close: 

echo(" Net Flux = ", fluxGal: 

echo0; 

/**/ 

/* Test flux and talc temp correction 

/**/ 

'I 

errorGa = ( fluxGa-targetGa )/targetGa; 

echo(" Ga error = ",errorGa ); 

if( fabs( errorGa ) > precGa ) 

TGa = l./(l./(TGa+273) - (loglO(fluxGa)-loglO(targetGa))/slopeGa ) - 273; 

1 

else 

doneGa = 1; 

1 

/**/ 

/* Ga calibrated 

/**/ 

if( ca1G.a == 1 ) 

Appendix 

setLramp(Ga,lO); 

echo0; 

echoI" Ga calibration converged in ',attempt," attempts"); 

echo(" Final error was ",errorGa 1; 

echo0; 

/* reset slow rate for protection */ 

/**/ 

,*======I============================================================~, 

13 
Appendix 

,*================ End of Ga loop ========================-*/ 

,*===-------------- --------------==================================================~, 

/**/ 

/**/ 

,*==========================================--------==----------=====~, 

,*================ Measure Al3 flux =========================*/ 

,*===================================================================~, 

/**/ 

if( calA == 1 ) 

doneA = 0; 

attempt = 0; 

echo{" Measure Al3 flux"); 

echo0; 

TA13 = setpA13; 

set_ramplA13,100); /* set fast rate for small adjustments */ 

while ( doneA == 0 && calA == 1 ) 

/**/ 

/*- Set new temperature, turn flux guage away from cells and wait for stabilization -*/ 

/**/ 

if( TA13 < TA13max && TA13 > TA13mi.n ) 

set_temp(A13,TA13); 

else 

echo{" Al3 setpoint outside allowd interval - Process terminated"); 

kill( getpid0, SIGKILL); 

I 

attempt = attempt + 1; 

echo(" Seting new temp = ",TA13," and waiting ‘,stabA13," set"); 

echo(" Time is: ",mctime(time(O)) ); 

echo0; 

load ("pos3.cmd") ; 

sleep ( stabA ); 

/**/ 

/*- , open shutter and wait ---*/ 

/**/ 

shopen(A13); 

echo(" Wait ‘,transient," sac during transient"); 

echo0; 

sleep ( transient ); 

load ("posl.cmd") ; 

echo(" Wait 30 set for guage to turn toward cells"); 

echo{); 

sleep ( 30 ); 

/**/ 

/* Measure with shutter open 

/**/ 

echo{" Measure with shutter open"); 

echo0; 

iread = 0; 

sun~flux = 0; 

while (iread<lO) 

*/ 

beam-flux = readingcflux); 

echo(" Flux gauge = -, beam-flux); 

if(beam-flux > 0) 

sum-flux = sun-flux + beam-flux; 

iread = iread+l: 

1 

sleep( Tbeamread ): 

1 

beam-flux-open = sun-flux/lo; 

echo0; 

echo(" Average Flux = I', beam-flux-open); 

echo(); 

/**/ 

/* Measure with shutter closed 

/**/ 

shclose(A13): 

sleep(20); 

iread = 0; 

sul~flux = 0; 

while (iread<lO) 

*/ 

14 
Appendix 

back-flux = readingcflux); 

echo(" Flux gauge = 'I, back-flux); 

if(back-flux > 0 ) 

sum-flux = sum-flux + back-flux; 

iread = iread+l: 

sleep( Tbeamread ); 

beam-flux-close = sum-flux/lo; 

echoo; 

echo{" Average Flux = ", beam-flux-close); 

echoo; 

fluxA = beam-flux-open - beam-flux-close; 

echo(" Net Flux = 'I, fluxA13): 

echo(); 

/**/ 

/* Test flux and talc temp correction 

/**/ 

errorAl = ( fluxA13-targetA )/targetA13; 

echo(" Al3 error = ",errorA13 ); 

if( fabs( errorA J > precA13 1 

TA13 = l./(l./(TA13+273) - (loglO(fluxA13)-loglO(targetA13))/slopeA13 ) - 273; 

, 

else 

doneA = 1; 

1 

/**/ 

/* 

/**/ 

Al3 calibrated */ 

if( calAl == 1 ) 

set_ramp(A13,10); /* reset slow rate for protection */ 

echo0; 

echo(" Al3 calibration converged in ',attempt," attempts"); 

echo(" Final error was ",errorA13 j; 

echo0; 

1 

/**/ 

,*===================================================================~, 

,*================ End of Al3 loop =========================*/ 

,*=====================================================================~, 

/**/ 

,*========================-============================================*, 

,*================ Measure A14 flux =========================*! 

/*===================================================================~, 

/**/ 

if( calAl == 1 ) 

doneA = 0; 

attempt = 0; 

echo(" Measure A14 flux"); 

echo0; 

TA14 = setpA14: 

set-ramp(A14,lOO); /* set fast rate for small adjustments *I 

while ( doneA == 0 && calAl == 1 ) 

l 

/**/ 

/*--- Set new temperature, turn flux guage away from cells and wait for stabilization -*/ 

/**/ 

if( TA14 c TAllmax && TA14 > TAldmin ) 

set-temp(Ald,TAlQ); 

el.92 

&hoc" Al4 setpoint outside allowd interval - Process terminated"); 

kill( getpid0, SIGKILL); 

attempt = attempt + 1; 

echo(" Seting new temp = ",TAld," and waiting ',stabAld," set"); 

echo(" Time is: ",mctime(time(O)) 1; 

echo0; 

load ("pos3.cmd") ; 

sleep ( stabAl ); 

15 
Appendix 

/**/ 

/*- open shutter and wait -*/ 

/**/ 

shopen(A14); 

echo(" Wait ",transient," set during transient"); 

echo0; 

sleep ( transient ); 

load ("posl.cmd"); 

echo(" Wait 30 set for guage to turn toward cells"); 

echo0; 

sleep ( 30 ); 

/**/ 

/* Measure with shutter open 

/**/ 

echo(" Measure with shutter open"); 

echo(); 

iread = 0; 

Sum~flUX = 0; 

while (iread<lO) 

*/ 

beam-flux = reading(flux); 

echo(" Flux gauge = \$, beam-flux); 

if(beam-flux > 0) 

sum-flux = sum-flux + beam-flux; 

iread = iread+l; 

sleep( Tbeamread ); 

1 

beam-flux-open = sun-flux/lo; 

echo(1; 

echo("Average Flux = 11, beam-flux-open); 

echo0; 

/**/ 

/* Measure with shutter closed 

/**/ 

shclose(Al4); 

sleep(ZO); 

iread = 0; 

Sum~flux = 0; 

while (iread<lO) 

*/ 

dack-flux = reading(flux); 

echo(" FLUX gauge = ", back-flux); 

if(back-flux > 0 1 

sum-flux = sum-flux + back-flux; 

iread = iread+l; 

J 

sleep( Tbeamread 1; 

beam-flux-close = sum-flux/lo; 

echo(); 

echo(" Average Flux = '>, beam-flux-close); 

echo0; 

fluxAl = beam-flux-open - beam-flux-close; 

echo(" Net Flux = II, fluxAll); 

echo0; 

/**/ 

/* Test flux and talc temp correction 

/**/ 

*/ 

errorA = ( fluxA14-targetA )/targetAl4; 

echo(" Al4 error = ",errorA14 ); 

if( fabs( errorAl ) > precA14 ) 

TA14 = l./(l./(TA14+273) - (loglO(fluxAll)-loglO(targetA14))/slopeA14 ) - 273; 

else 

doneA = 1; 

Al4 calibrated */ 

if( calAl == 1 1 

16 
Appendix 

set_ramp(A14,10); 

echo0; 

/* reset slow rate for protection */ 

echo(" Al4 calibration converged in ‘,attempt," attempts"); 

echo(" Final error was ",errorAll ); 

echo0; 

, 

/**/ ,*================:================================================~=~, 

,*================ End of Al4 loop =====:===================*/ 

,*=================================================================~=*, 

/**/ 

,*======================:="===========-===========================~=*, 

/*================ Measure In flux =========================*/ 

,*=================================================================~=*, 

/**/ 

if( calIn == 1 ) 

doneIn = 0; 

attempt = 0; 

echo(" Measure In flux"); 

echo0; 

Tin = setpIn; 

set-ramp(In.100); /* set fast rate for small adjustments */ 

while ( doneIn == 0 && CalIn == 1 ) 

/**/ 

/*- Set new temperature, turn flux guege away from cells and wait for stabilization -*/ 

/**/ 

if( Tin < TInmax && Tin > TInmin ) 

set-temp(In,TIn); 

else 

c 

echo(" In setpoint outside allowd interval - Process terminated"): 

kill( getpid0, SIGKILL); 

attempt = attempt + 1; 

echo(" Seting new temp = ‘,TIn," and waiting ",stabIn," set"); 

echo(" Time is: ",mctime(time(O)) 1; 

echoo; 

load ("pos3.cmd") ; 

sleep ( stabIn ); 

'**, 

'*- open shutter and wait --*/ 

'**, 

shopen ; 

echo(" Wait ',transient," sac during transient"); 

echo0; 

sleep ( transient 1; 

load ("posl.cmd"); 

echo(" Wait 30 set for guage to turn toward cells"): 

echoo; 

sleep ( 30 ); 

,**, 

'* Measure with shutter open *I 

'**, 

echo(" Measure with shutter open"); 

echoo; 

iread = 0; 

sum-flux = 0; 

while (ireadcl0) 

(: 

beam-flux = readingcflux); 

echo(" Flux gauge = I', beam-flux); 

if(beam-flux > 0) 

1 

sum-flux = sum-flux + beam-flux; 

iread = iread+l: 

1 

slsep( Tbeamread ); 

1 

beam-flux-open = sum-flux/lo; 

echo0; 

echo{" Average Flux = '$, beam-flux-open); 

echo{); 

/**/ 

/* Measure with shutter closed *I 

17 
Appendix 

/**/ 

shclose(In); 

sleep(20); 

iread = 0; 

Sum~flUX = 0; 

while (iread<lO) 

I 

back-flux = readingcflux'); 

echo(" Flux gauge = q, back-flux); 

if(back-flux > 0 ) 

sum-flux = sum_flux + back-flux; 

iread = iread+l; 

sleep( Tbeamread ); 

bean-flux-close = sum-flux/lo; 

echo0; 

echo(" Average Flux = ", beam-flux-close); 

echo0; 

fluxIn = beam-flux-open - beam-flux-close; 

echoI" Net Flux = II, fluxIn); 

echo0; 

'he, 

'* Test flux and talc temp correction 

,**, 

*/ 

errorIn = ( fluxIn-targetIn )/targetIn; 

echo(" In error = ",errorIn 1; 

if( fabs( errorIn ) > precIn ) 

( 

Tin = l./(l./(TIn+273) - (loglO(fluxIn)-loglO(targetIn) )/slopeIn ) - 273; 

1 

else 

doneIn = 1: 

;**/ 

/* In calibrated 

/**/ 

if( calIn == 1 ) 

*/ 

set-ramp(In,lO); 

echo0; 

echo(‘In calibration converged in ",attempt," attempts"); 

echo("Fina1 error was ",errorIn 1; 

echo0; 

/* reset slow rate for protection */ 

/**/ ,*===================================================================~, 

,*================ End of In loop =========================*/ 

,*===================================================================~, 

/**/ 

,*===================================================================~, 

,*================ Measure Sb flux =========================*/ 

,*===================================================================~, 

/**/ 

if( calSb == 1 1 

1 

doneSb = 0; 

attempt = 0; 

whi 

echo(" Measure Sb flux"); 

echo0; 

TSb = setpSb; 

set-ramp(Sb.100); 

1 

/* set fast rate for small adjustments */ 

le ( doneSb == 0 && calSb == 1 ) 

/**/ 

/*- Set new temperature, turn flux guage away from cells and wait for stabilization -*/ 

/**/ 

if( TSb < TSbmax && TSb > TSbmin ) 

set-temp(Sb,TSb); 

else 

echo(" Sb setpoint outside allowd interval - Process terminated"); 

kill( getpid0, SIGKILL); 

, 

attempt = attempt + 1; 

18 
Appendix 

echo(" Seting new temp = ",TSb," and waiting ",stabSb," set"); 

echo(" Time is: ",mctime(time(O)) ); 

echo0; 

load ("pos3.cmd"); 

sleep ( stabSb ); 

/**/ 

/*- open shutter and wait -*/ 

/**/ 

shopen( 

echo(" Wait ",transient, " set during transient"); 

echo0; 

sleep ( transient ); 

load ("posl.cmd") ; 

echo(" Wait 30 set for guage to turn toward cells"); 

echo0; 

sleep ( 30 ); 

/**/ 

/* Measure with shutter open 

/**/ 

echo(" Measure with shutter open"); 

echo0; 

iread = 0; 

sum-flux = 0; 

while (iread<lO) 

(: 

beam-flux = reading(flux); 

echo(" Flux gauge = ", beam-flux); 

if(beam-flux > 0) 

sum-flux = sum-flux + beam-flux; 

iread = iread+l; 

1 

sleep( Tbeamread 1; 

I 

beam-flux-open = sum-flux/lo; 

echo0; 

echo(" Average Flux = IO beam-flux-open); 

echo0; 

/**/ 

/* Measure with shutter closed 

/**/ 

shclose(Sb) ; 

sleep(20); 

iread = 0; 

sum-flux = 0; 

while (iread<lO) 

*/ 

back-flux = reading(flux); 

echo(" Flux gauge = (I, back-flux); 

if(back-flux > 0 ) 

sum-flux = sum-flux + back-flux; 

iread = iread+l; 

sleep( Tbeamread ); 

beam-flux-close = sun-flux/lo; 

echo0; 

echo(" Average Flux = 'I, beam-flux-close): 

echo0; 

fluxsb = beam-flux-open - beam-flux-close: 

echo(" Net Flux = ", flu&b); 

echo0; 

/**/ 

/* Test flux and talc temp correction 

/**/ 

*/ 

errorSb = ( fluxsb-targetsb )/targetSb; 

echo(" Sb error = ",errorSb ); 

if1 fabs( errorSb ) > precSb ) 

( 

TSb = l./(l./(TSb+273) - (loglO(fluxSb)-loglO(targetSb))/slopeSb 1 - 273; 

else 

doneSb = 1; 

19 
Appendix 

/**/ 

/* Sb calibrated 

/**/ 

if( calSb == 1 1 

*/ 

set-ramp(Sb,lO); 

echo(); 

echo(" Sb calibration converged in ",attempt, u attempts"); 

echo(" Final error was ",errorSb 1; 

echo0; 

/* reset slow rate for protection */ 

, 

/**/ ,*===================================================================~, 

,*================ End of Sb loop -------------------------*, 

,*===================================================================*, 

/**/ 

/**/ 

,*===================================================================*, 

,*================ summary =========================*/ 

I*===================================================================*, 

/**/ 

killclog-idl, SIGTERM); /* Stop logging */ 

echo0; 

if( calGa == 1 ) echo(" Final Ga error was s, errorGa , ' TGa = ',TGa ); 

if( calA == 1 ) echo(" Final Al3 error was ",errorA13, n TA13 = ",TA13); 

if( calAl == 1 ) echo(" Final Al4 error was ",errorA14, n TA14 = ",TA14); 

if( calIn == 1 1 echo(" Final In error was ‘,errorIn , n Tin = ",TIn ); 

if1 calSb == 1 ) echo(" Final Sb error was ",errorSb , v TSb = ",TSb ); 

echo{); 

echo(" A record of the temperatures, shutter status and flux values "); 

echo(" is stored in the file FLUXCAL.DAT "); 

echo0; 

20 
Distribution 

Admnstr 

Defns Tech1 Info Ctr 

ATTN DTIC-OCP 

8725 John J Kingman Rd Ste 0944 

FT Belvoir VA 22060-6218 

DARPA 

ATTN S Welby 

3701 N Fairfax Dr 

Arlington VA 22203-1714 

Oft of the Secy of Defns 

ATTN ODDRE (R&AT) 

The Pentagon 

Washington DC 20301-3080 - 

Oft of the Secy of Defns 

ATTN OUSD(A&T)/ODDR&E(R) R J Trew 

3080 Defense Pentagon 

Washington DC 20301-7100 

AMCOM MRDEC 

ATTN AMSMI-RD WC McCorkle 

Redstone Arsenal AL 35898-5240 

US Army TRADOC 

Battle Lab Integration & Tech1 Dir&t 

ATTN ATCD-B 

FT Monroe VA 23651-5850 

US Military Acdmy 

Dept of Mathematical Sci 

ATTN MAJL G Eggen 

West Point NY 10996-1786 

US Military Acdmy 

Mathematical Sci Ctr of Excellence 

ATTN MADN-MATH MAJM Huber 

Thayer Hall 

West Point NY 10996-1786 

Dir for MANPRINT 

Oft of the Deputy Chief of Staff for Prsnnl 

ATTN J Hiller 

The Pentagon Rm 2C733 

Washington DC 20301-0300 

SMC/CZA 

2435 Vela Way Ste 1613 

El Segundo CA 90245-5500 

US Army ARDEC 

ATTN AMSTA-AR-TD 

Bldg 1 

Picatinny Arsenal NJ 07806-5000 

US Army Info Sys Engrg Cmnd 

ATTN AMSEL-IE-TD F Jenia 

FT Huachuca AZ 85613-5300 

US Army Natick RDEC Acting Tech1 Dir 

ATTN SBCN-T P Brandler 

Natick MA 01760-5002 

US Army Simulation Train & Instrmntn 

Cmnd 

ATTN AMSTI-CG M Macedonia 

ATTN J Stahl 

12350 Research Parkway 

Orlando FL 32826-3726 

US Army Tank-Automtv Cmnd RDEC 

ATTN AMSTA-TR J Chapin 

Warren MI 48397-5000 

Nav Surfc Warfare Ctr 

ATTN Code B07 J Pennella 

17320 Dahlgren Rd Bldg 1470 Rm 1101 

Dahlgren VA 22448-5100 

Hicks & Assoc Inc 

ATTN G Singley III 

1710 Goodrich Dr Ste 1300 

McLean VA 22102 

Palisades Inst for Rsrch Svc Inc 

ATTN E Carr 

1745 Jefferson Davis Hwy Ste 500 

Arlington VA 22202-3402 

Director 

US Army Rsrch Lab 

ATTN AMSRL-RO-D JCI Chang 

ATTN AMSRL-RO-EN W D Bach 

PO Box 12211 

Research Triangle Park NC 27709 

US Army Rsrch Lab 

ATTN AMSRL-CI-AI-R Mail & Records 

Mgmt 

ATTN AMSRL-CI-AI? Tech1 Pub (2 copies) 

25 
Distribution (cont’d) 

US Army Rsrch Lab (cont’d) 

ATTN AMSRL-CI-LL Tech1 Lib (2 copies) 

ATTN AMSRL-D D R Smith 

ATTN AMSRL-DD J M Miller 

US Army Rsrch Lab (cont’d) 

ATTN AMSRL-SE-RL S Svensson (4 copies) 

Adelphi MD 20783-l 197 

26 
REPORT DOCUMENTATION PAGE Form Approved 

OMB No. 0704-0188 

Jublic reporting burden for this collection of information is estimated to average 1 hour per response. including the time for reviewing Instructions. searching existing data sources. 

gathering and maintaining the data needed. and completing and reviewing the collection of information. Send comments regarding this burden estimate or any other aspect Of this 

xllection of information. including suggestions for reducing thi?, burden. lo Washlnglon Headquarters Services, Directorate for InfOmUtiOn Operations and Reports. 1215 Jefferson 

Lwis Highway, Suite 1204. Arlington. VA 22202.4302. and to the Offace of Management and Budget. Paperwork Reduction Project (0704-0188). Washington. DC 20503. 

AGENCY USE ONLY (Leave blank) 2. REPORT DATE 3. REPORT TYPE AND DATES COVERED 

February 2001 Final, January-June 2000 

.TITLEANDSUETITLE Process for Automated, Safe MBE Start and Flux 5. FUNDING NUMBERS 

Calibration I DA PR: AH94 

1 PE: 62705A 

I 

AUTHOR(S) Stefan Svensson 

. PERFORMING ORGANIZATION NAME(S) AND ADDRESS 

U.S. Army Research Laboratory 

Attn: AMSRL-SE:RL email: svensson@arl.army.mil 

2800 Powder Mill Road 

Adelphi, MD 20783-l 197 

8. PERFORMING ORGANIZATION 

REPORT NUMBER 

ARL-TR-2361 

SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS 

U.S. Army Research Laboratory 

10. SPONSORING/MONITORING 

AGENCY REPORT NUMBER 

2800 Powder Mill Road 

Adelphi, MD 20783-l 197 

1. SUPPLEMENTARY NOTES 

ARL PR: ONE6J2 

AMS code: 622705.H94 

12a. DISTRIBUTION/AVAILABILITY STATEMENT Approved for public release; 

distribution unlimited. 

12b. DISTRIBUTION CODE 

I 

13. ABSTRACT (Maximum 200 words) 

A command procedure has been developed for the U.S. Army Research Laboratory (ARL) molecular bear 

epitaxy (MB@ computer control system that allows a user to set up the system for an automate< 

unattended start each morning. The automated sequence consists of1. A system safety check to determine if cell ramping should be allowed. 

2. A cell temperature ramp to an outgassing temperature. 

3. An outgassing of cells. 

4. A ramp-down of cells to nominal operating temperatures. 

5. An automated setup through an iterative process of flux measurements and changes c 

temperatures until desired targets are reached. 

This command procedure allows a daily, safe start-up of the MBE system and generates identical flu 

settings that improve the crystal growth reproducibility. Typically, one can save two hours or more of a worl 

day by using this automated procedure. 

4.sUBJECTTERMs Computer control, molecular beam epitaxy I 

15. NUMBER OF PAGES 

31 

7. SECURITY CLASSIFICATION 18. SECURITY CLASSIFICATION 

OF REPORT OF THIS PAGE 

Unclassified Unclassified 

19. SECURITY CLASSIFICATION 

OF ABSTRACT 

Unclassified 

20. LIMITATION OF ABSTRACT 

UL 

SN 7540-01-280-5500 

I I I 

Standard Form 298 (Rev. 2-89) 

Prescribed by ANSI Std. 239-18 

298-102