Schwinger-Multichannel Electron Scattering (ESCAT)

Introduction

The study of low-energy electron-molecule collisions is of interest in many contexts, including aerospace applications, atmospheric studies, and the processing of materials using low-temperature plasmas (e.g., semiconductor fabrication). The Schwinger multichannel (SMC) method is an adaptation of Schwinger's variational principle for the scattering amplitude that makes it suitable for calculating low-energy electron-molecule collisions. The scattering probabilities are obtained by solving linear systems whose terms include a Green's function which has no analytic form and is evaluated by numerical quadrature. Generation of the quadrature data is compute-intensive, and the size of the data set is highly variable depending on the nature of the problem. The quadrature is formulated to be energy independent so it can be used to solve the scattering problem at many energies.

A production run is typically done in two execution phases. First, a compulsory read loads the problem definition and some initial matrices. All nodes participate in the calculation and storage of the requisite quadrature data set, with each node processing a different set of integrals. This phase is compute-intensive and is composed of a series of compute/write cycles with the write steps synchronized among the nodes. Memory limitations and the desire to checkpoint the quadrature data set for reuse in later executions prompt the writes during this phase. The second phase involves calculations that depend on the collision energy. In it, energy-dependent data structures are generated and combined with the reloaded quadrature data set to form the system of linear equations. Finally, the linear system matrices are written to disk for later solution on another machine.

Platforms

This application runs on a number of platforms including the nCUBE, Touchstone Delta, Paragon and the Convex Exemplar.

Source Code

ESCAT is a parallel implementation of the Schwinger Multichannel method written in C, FORTRAN, and assembly language. As we noted earlier, a production run is typically done in two phases. In the first phase, the initial data is read from three files. In the first version of the code, pSMC, all nodes open and read initialization files. In subsequent versions of the code (i.e., pSMCb, pSMCbp, and pSMCbp-A), node 0 reads all initialization data and broadcast them to all nodes. Then, all nodes repeatedly compute, synchronize, and write the quadrature data to the intermediate staging files -- one file for each of the possible collision outcomes (i.e., channels) contained in the test data. In the first version of the code (pSMC), all output is written using Unix serial I/O calls. In version pSMCb, all output is written though node 0 only. In the subsequent version pSMCbp, to simplify reloading of the data in the next phase, each node seeks to a calculated offset dependent on the node number, iteration, and the Paragon PFS stripe size before writing the data. Intel's M_UNIX file mode is used for these writes. In the latest version of the code (pSMCbp-A), a major performance improvement is observed by using the M_ASYNC file mode.

In the second execution phase, the part of the calculation that depends on the collision energy is done. The previously written quadrature files are read by all the nodes using the Intel M_RECORD mode. The quadrature data are combined the energy-dependent data, and a system of linear equations is assembled. After the final calculations, data is sent to node zero by all other nodes and is written to three output files.

Acknowledgements

The electron scattering code was provided by Vincent McKoy and Carl Winstead at Caltech. Trace data was obtained using the Pablo trace capture library.

This research is supported in part by the  National Science Foundation.

back