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 highperformance computing, structured adaptive mesh refinement (SAMR), and development of highquality scientific software.
HighPerformance Computing
CS&E is about more than just supercomputers and highcomputational 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 highperformance 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.
 highprogrammer performance, which is achieved through skill development (e.g. mixedlanguage programming) and choice of software tools/environments (e.g. scripting languages that make it possible to express highlevel mathematical/scientific concepts easily and succinctly);
 singlenode highperformance computing, which is achieved through the development and use of efficient numerical methods;
 parallel computing using mature highlevel software libraries that shield the computational scientist from tedious, lowlevel 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.
Educational Material
To support the educational/knowledge transfer aspect of highperformance 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 stateoftheart in CS&E. In this area, I have worked on two projects:
 Highorder accurate finite difference schemes via optimal time step selection
 Computation of analytical Jacobians for discretized nonlinear integrodifferential 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 loworder accurate finite difference schemes into highorder 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.
References

Boosting the accuracy of finite difference schemes via optimal
ime step selection and noniterative defect correction.
K. T. Chu, Appl. Math. and Comput., 218, 35963614 (2011).
DOI: 10.1016/j.amc.2011.08.108
Direct Matrix Method
Computation of the Jacobian for discretized nonlinear integrodifferential equations is an important step for many numerical algorithms. The direct matrix (or operator) method for analytically computing the Jacobian are relatively wellknown 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 singlevariable calculus.
In this work, I have used a MATLABbased notation to formalize several differentiation rules for computing analytical Jacobians for discretized nonlinear integrodifferential 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.
Examples
 Electrochemical thinfilms (source code)
 Double layer charging of metal colloid spheres at high applied electric fields (source code)
 Nanostructure shape (source code)
References

A Simple
Direct Matrix Approach for Computing Jacobians of Discretized Nonlinear
IntegroDifferential Equations.
K. T. Chu, J. Comput. Phys., 228, 55265538 (2009).
DOI: 10.1016/j.jcp.2009.04.031
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 SAMRbased 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 largescale, parallel, structured adaptive mesh refinement (SAMR) simulations without requiring application developers to implement lowlevel parallel and/or SAMR algorithms. For example, SAMRAI shields application developers from the lowlevel programming details involved with management of bookkeeping for SAMR data structures and parallel communication. In addition, by adopting a patchbased (as opposed to a cellbased) 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.
References
 SAMRAI Primer (v0.2), K. T. Chu.
Scientific Software Development
The conversion of stateoftheart numerical methodology into highquality, useraccessible 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 (SAMRAIRDK)
Archives
 Grapevine  Project exploring internet distributed computing (2002).