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.
CS&E is about more than just supercomputers and high-computational performance. It is also about developing tools and methods that
- enable rapid delivery of computational results for the advancement of scientific/engineering understanding; and
- ensure reliability and validity of scientific software.
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.
- high-programmer performance, which is achieved through skill development (e.g. mixed-language programming) and choice of software tools/environments (e.g. scripting languages that make it possible to express high-level mathematical/scientific concepts easily and succinctly);
- single-node high-performance computing, which is achieved through the development and use of efficient numerical methods;
- parallel computing using mature high-level software libraries that shield the computational scientist from tedious, low-level programming details; and
- high quality scientific software development so that effective algorithms can be rapidly and reliably deployed to the broader CS&E research community.
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:
- High-order accurate finite difference schemes via optimal time step selection
- Computation of analytical Jacobians for discretized nonlinear integro-differential equations using the direct matrix method
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.
Boosting the accuracy of finite difference schemes via optimal
ime step selection and non-iterative defect correction.
K. T. Chu, Appl. Math. and Comput., 218, 3596-3614 (2011).
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
- the effort required to calculate analytical Jacobians and
- improve the computational performance of numerical algorithms that require the Jacobian.
- Electrochemical thin-films (source code)
- Double layer charging of metal colloid spheres at high applied electric fields (source code)
- Nanostructure shape (source code)
Direct Matrix Approach for Computing Jacobians of Discretized Nonlinear
K. T. Chu, J. Comput. Phys., 228, 5526-5538 (2009).
Structured Adaptive Mesh Refinement (SAMR)
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.
- SAMRAI Primer (v0.2), K. T. Chu.
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.
- Level Set Method Library (LSMLIB)
- Parallel Adaptive Method of Lines Integrator (PAMoLI)
- Pseudospectral Library (PSLIB)
- SAMRAI Rapid Development Kit (SAMRAI-RDK)
- Grapevine - Project exploring internet distributed computing (2002).