Research - Computational Science & Engineering (CS&E)

An important component of my research is in the field of computational science & engineering. As the "third pillar of science," CS&E makes it possible to investigate problems that are difficult to probe theoretically and experimentally. My work in the CS&E has been centered on high-performance computing, structured adaptive mesh refinement (SAMR), and development of high-quality scientific software.

High-Performance Computing

CS&E is about more than just supercomputers and high-computational performance. It is also about developing tools and methods that

Toward these ends, I focus on the following key areas of high-performance computing. While many of these activities has a strong educational or knowledge transfer aspect, I believe that developing and promoting these skills and habits is critical to the success of any CS&E research project.

Educational Material

To support the educational/knowledge transfer aspect of high-performance computing, I maintain a few collections of reference materials for computational scientists.

Computational Science & Engineering Algorithms and Methodology

Algorithms and methodology are critical drivers of performance in CS&E. Therefore, developing improved algorithms and methodology is important for advancing the state-of-the-art in CS&E. In this area, I have worked on two projects:

Optimal Time Step Selection

It is possible to boost the order of accuracy of finite difference schemes for time dependent PDEs by carefully choosing the time step. The key consequence of this result is that it may be possible to transform formally low-order accurate finite difference schemes into high-order accurate numerical methods with very little modification of both the original numerical algorithm and software implementation. A more detailed discussion about optimal time step selection may be found here.


Direct Matrix Method

Computation of the Jacobian for discretized nonlinear integro-differential equations is an important step for many numerical algorithms. The direct matrix (or operator) method for analytically computing the Jacobian are relatively well-known in the scientific computing and numerical analysis communities and are typically organized as a collection of "rules of thumb" gained through experience. What is not often realized, however, is that these heuristic rules can be formally organized into a collection of simple rules reminiscent of the rules for calculating derivatives in single-variable calculus.

In this work, I have used a MATLAB-based notation to formalize several differentiation rules for computing analytical Jacobians for discretized nonlinear integro-differential equations. Using these rules can dramatically reduce



Structured Adaptive Mesh Refinement (SAMR)

SAMR phase field simulation
SAMR, phase-field simulation of dendritic growth during solidification. (Image courtesy of Chin Yi Chee at IHPC)

Structured adaptive mesh refinement (SAMR) is a technique for improving the computational performance of simulations on structured grids by focusing computational resources where it is needed. More precisely, SAMR achieves high accuracy while controlling computational cost by restricting the use of high resolution computational grids to regions where physical or numerical considerations indicate that it is required.

To rapidly develop SAMR-based simulations, I leverage the Structured Adaptive Mesh Refinement Application Infrastructure (SAMRAI) developed in the Center for Applied Scientific Computing at Lawrence Livermore National Laboratory. SAMRAI is a large, C++ library that is designed to support large-scale, parallel, structured adaptive mesh refinement (SAMR) simulations without requiring application developers to implement low-level parallel and/or SAMR algorithms. For example, SAMRAI shields application developers from the low-level programming details involved with management of bookkeeping for SAMR data structures and parallel communication. In addition, by adopting a patch-based (as opposed to a cell-based) refinement mechanism, SAMRAI makes it relatively easy to migrate from serial codes written to solve problems on simple, uniform grids to parallel and/or SAMR numerical simulations.

I am currently involved in various projects where SAMR is used to improve the computational performance of material science and biophysics simulations.


Scientific Software Development

Relaxation of 2D fluid droplet
Relaxation of a two-dimensional, starfish-shaped fluid droplet to a circle under the influence of surface tension. (Image courtesy of X. Wan)
Fluid-fluid interface in porous medium
The fluid-fluid interface (blue surface) at a critical curvature in a porous medium "throat" delineated by three spheres (gray surface). (Image courtesy of Masa Prodanovic)

The conversion of state-of-the-art numerical methodology into high-quality, user-accessible software packages is an integral part of computational science & engineering. Failure to develop these software libraries greatly limits the utility and adoption of new developments in computational science by the rest of the academic and industrial communities.

To play my part in the successful transfer of computational science technologies to applications developers, I am leading/involved in several scientific software development efforts. Several of these projects have originated from my personal need for software implementing numerical methods and computational algorithms that was not readily available when development began.