| 1 | \documentclass{article} |
|---|
| 2 | \usepackage{fullpage,fonts,page,cxref} |
|---|
| 3 | \begin{document} |
|---|
| 4 | \title{\tt EBaporate} |
|---|
| 5 | \author{Copyright 2002, 2003 by Adam Powell} |
|---|
| 6 | \date{February 18, 2003} |
|---|
| 7 | \maketitle |
|---|
| 8 | |
|---|
| 9 | \section{Introduction} |
|---|
| 10 | |
|---|
| 11 | {\tt EBaporate} is a new simulation code designed to intelligently estimate the |
|---|
| 12 | rate of evaporation of metal and alloying elements from an electron beam |
|---|
| 13 | melting furnace. It is based on the graduate work of Adam Powell in |
|---|
| 14 | cooperation with the Sandia National Laboratories Liquid Metal Processing |
|---|
| 15 | Laboratory, as described in |
|---|
| 16 | \begin{quote} |
|---|
| 17 | A. Powell, J. Van Den Avyle, B. Damkroger, J. Szekely and U. Pal ``Analysis |
|---|
| 18 | of Multicomponent Evaporation in Electron Beam Melting and Refining of |
|---|
| 19 | Titanium Alloys,'' {\em Metall. Trans.} {\bf 38B}, 1227-1239 (1997). |
|---|
| 20 | \end{quote} |
|---|
| 21 | |
|---|
| 22 | {\tt EBaporate} takes an image of a liquid metal surface, converts that into a |
|---|
| 23 | temperature map, and then gives two estimates of the evaporation rates. The |
|---|
| 24 | first estimate is based on a Clausius-Clapeyron/Langmuir analysis of |
|---|
| 25 | evaporation at the surface temperatures. Then, recognizing that evaporation |
|---|
| 26 | rate is a strongly nonlinear function of temperature, and that the beam |
|---|
| 27 | produces significant local temperature fluctuations as it scans across the |
|---|
| 28 | surface, this program estimates the magnitude of those fluctuations using a 1-D |
|---|
| 29 | finite element model of local heat conduction down through a thin surface layer |
|---|
| 30 | at a point on the melt during a beam scan cycle (it runs over several cycles |
|---|
| 31 | until a ``steady state'' is reached), and then calculates the average |
|---|
| 32 | temperature and the average evaporation rate in that cycle. This is repeated |
|---|
| 33 | for several average surface temperatures, resulting in a new curve of |
|---|
| 34 | evaporation rate vs. temperature, which is used for the second estimate of |
|---|
| 35 | evaporation rate over the melt surface. |
|---|
| 36 | |
|---|
| 37 | For titanium melting under Sandia furnace conditions, the calculated average |
|---|
| 38 | evaporation rate is significantly above the evaporation rate at the average |
|---|
| 39 | temperature at frequencies up to about 200 Hz, making that frequency the |
|---|
| 40 | approximate threshold between regimes I and II as described in the paper. The |
|---|
| 41 | program also estimates the transient velocities generated by the beam spot, and |
|---|
| 42 | the resulting Peclet number, which indicates the relative importance of |
|---|
| 43 | convection and conduction, and thus the transition to regime III. In regimes |
|---|
| 44 | III and IV, this heat conduction model overestimates the temperature |
|---|
| 45 | fluctuations and the average evaporation rate. |
|---|
| 46 | |
|---|
| 47 | \section{The Code} |
|---|
| 48 | |
|---|
| 49 | This code has two front-ends, {\tt ebsurfweb} and {\tt ebaporate}, and the |
|---|
| 50 | simulation code is mostly in {\tt ebsurf.c} and {\tt shorts.c}. Source code |
|---|
| 51 | documentation is extracted from the code automatically using the tool {\tt |
|---|
| 52 | cxref} ({\tt http://www.gedanken.demon.co.uk/cxref/}), and is in the |
|---|
| 53 | appendix. |
|---|
| 54 | |
|---|
| 55 | \subsection{\tt ebsurfweb} |
|---|
| 56 | |
|---|
| 57 | Although is the original web CGI front end written in 1997, I cannot recommend |
|---|
| 58 | using {\tt ebsurfweb} on a web server, as there are many potential buffer |
|---|
| 59 | overflows which, while harmless in a personal application, can allow a cracker |
|---|
| 60 | an easy target if accessible in a server exposed to the net. |
|---|
| 61 | |
|---|
| 62 | That said, the way to use it on the command line is to set its parameters in |
|---|
| 63 | the environment variable {\tt QUERY\_STRING}. The program does one simulation |
|---|
| 64 | of surface layer heat conduction at a given surface (or layer bottom) |
|---|
| 65 | temperature, and outputs the results in HTML to standard output, along with |
|---|
| 66 | several graphs. The temperature at the bottom of the layer is held constant |
|---|
| 67 | during each layer cycle. The input parameters are fully explained at {\tt |
|---|
| 68 | http://lyre.mit.edu/~powell/Software/ebparams.html}. |
|---|
| 69 | |
|---|
| 70 | This frontend outputs its results in HTML to the standard output, using the |
|---|
| 71 | file {\tt ebtemp.html} as its template, including the input parameters used to |
|---|
| 72 | generate those results. Each input and output parameter name is linked to a |
|---|
| 73 | target in {\tt ebparams.html} or {\tt outputs.html} explaining that parameter |
|---|
| 74 | in detail. It also uses templates {\tt onedim.c} for 2-D and {\tt onedim3.c} |
|---|
| 75 | for 3-D to generate postscript graphs with the following filenames (\%p is the |
|---|
| 76 | process id number, used so that multiple runs don't clobber the results): |
|---|
| 77 | \begin{itemize} |
|---|
| 78 | \item {\tt temp\%p.ps} shows a 3-D graph of calculated temperature vs. time and |
|---|
| 79 | depth, with one curve for each timestep, over multiple cycles of beam |
|---|
| 80 | scanning, illustrating the convergence to ``steady state''. It is only |
|---|
| 81 | produced if the number of cycles is specified. |
|---|
| 82 | |
|---|
| 83 | \item {\tt last\%p.ps} shows a 3-D graph of calculated temperature vs. time and |
|---|
| 84 | depth, with one curve for each timestep, over the last converged beam scan |
|---|
| 85 | cycle. |
|---|
| 86 | |
|---|
| 87 | \item {\tt surf\%p.ps} shows the surface temperature as a function of time. |
|---|
| 88 | |
|---|
| 89 | \item {\tt hist\%p.ps} shows the beam power input to the surface point over the |
|---|
| 90 | cycle. |
|---|
| 91 | |
|---|
| 92 | \item {\tt gen\%p.ps} shows the beam heat input as a function of depth into the |
|---|
| 93 | melt. The graph in Schiller's {\em Electron Beam Technology}, p. 38, is used |
|---|
| 94 | to estimate penetration depth from the voltage, and the volumetric heating |
|---|
| 95 | profile is integrated over each finite element shapefunction to give this |
|---|
| 96 | discretized heat distribution. |
|---|
| 97 | |
|---|
| 98 | \item {\tt flux\%p.ps} shows the flux at the bottom of the surface layer. If |
|---|
| 99 | it fluctuates by more than 20-30\%, then the surface layer is not thick |
|---|
| 100 | enough, and the {\tt aleph} parameter should be increased to make it thicker. |
|---|
| 101 | |
|---|
| 102 | \item {\tt patt\%p.ps} shows the beam pattern on the surface, if one is |
|---|
| 103 | specified (default is one beam strike at the beginning of each cycle, but |
|---|
| 104 | more complex patterns can be used). |
|---|
| 105 | \end{itemize} |
|---|
| 106 | |
|---|
| 107 | Input parameters are contained in the {\tt QUERY\_STRING} environment variable, |
|---|
| 108 | following the CGI convention of the NCSA httpd web server, the ``first |
|---|
| 109 | generation'' server which was in use when this program was written. By that |
|---|
| 110 | convention, the arguments are separated by the \& character, e.g.: |
|---|
| 111 | \begin{quote} |
|---|
| 112 | \tt alpha=0.1\&cyc=5\&pattype=1 |
|---|
| 113 | \end{quote} |
|---|
| 114 | Those arguments are parsed in the {\tt paraminp()} function in {\tt ebsurf.c}, |
|---|
| 115 | currently at lines 371-511. Comments for each argument type, and their default |
|---|
| 116 | values, are also given there. |
|---|
| 117 | |
|---|
| 118 | The one known bug is that when using the cyc parameter, the postscript graphs |
|---|
| 119 | don't quite work. |
|---|
| 120 | |
|---|
| 121 | \subsection{\tt ebaporate} |
|---|
| 122 | |
|---|
| 123 | {\tt ebaporate} calculates the total evaporation rate or (currently) average |
|---|
| 124 | aluminum activity coefficient based on a PPM image pixmap read from stdin. To |
|---|
| 125 | run it in Unix, one must redirect stdin to a file such as: |
|---|
| 126 | \begin{quote} |
|---|
| 127 | {\tt ebaporate} $<$ map.ppm |
|---|
| 128 | \end{quote} |
|---|
| 129 | Right now, {\tt ebaporate} can only handle monochromatic images. The final |
|---|
| 130 | version will be able to pull one color from a multicolor image. |
|---|
| 131 | |
|---|
| 132 | The current version also has just one function (called ``func()'') to calculate |
|---|
| 133 | evaporation rate or Al activity coefficient from color. A function which uses |
|---|
| 134 | {\tt ebsurf.c} functions to calculate the ``enhanced'' regime III evaporation |
|---|
| 135 | rate due to the beam is nearing completion, but having problems which are |
|---|
| 136 | taking more time than anticipated to resolve, so it is not being shipped at |
|---|
| 137 | this time. |
|---|
| 138 | |
|---|
| 139 | \section{Status, Version, Copyright} |
|---|
| 140 | |
|---|
| 141 | This version, 0.9, is a beta release. Following testing with real EB data, the |
|---|
| 142 | code will be modified and finally released as 1.0. |
|---|
| 143 | |
|---|
| 144 | Copyright 2002, 2003 by Adam Powell, Licensed for unlimited use by members of |
|---|
| 145 | the Specialty Metals Producers' Consortium (SMPC). |
|---|
| 146 | |
|---|
| 147 | \appendix |
|---|
| 148 | |
|---|
| 149 | |
|---|
| 150 | |
|---|
| 151 | \input{ebsurfweb.c.tex} |
|---|
| 152 | |
|---|
| 153 | \input{ebsurf.c.tex} |
|---|
| 154 | |
|---|
| 155 | \input{ebsurf.h.tex} |
|---|
| 156 | |
|---|
| 157 | \input{shorts.c.tex} |
|---|
| 158 | |
|---|
| 159 | \input{ebaporate.c.tex} |
|---|
| 160 | |
|---|
| 161 | |
|---|
| 162 | |
|---|
| 163 | \end{document} |
|---|