This short document provides a general view of the technologies used in SOLVCON. Those technologies can be categorized into: (i) programming, (ii) numerical methods, and (iii) parallel computing.
Mixed-Language Programming
SOLVCON is developed by using the Python and C programming languages. Python is used for the main structure of SOLVCON, while C is used for the time-consuming number-crunching operations. The mixed-language approach allows the construction of a very high-level, object-oriented architecture for supercomputing software. The mixed-language approach also enables incorporation of accelerator-based computing hardware, such as GPU or FPGA.
The package ctypes in the Python standard library is the essential component to interface Python and C, or other programming languages. C code is compiled to be standard shared library (dynamically linked library) for Python to call. No extra interface code needs to be generated. Compared to SWIG or Boost.Python, the ctypes approach is very light-weight and easy-to-use. Moreover, external libraries can be easily incorporated into your code if necessary, by simply using standard building tools, e.g., GNU Make, cmake, or SCons. ctypes also allows you to evade the Global Interpreter Lock for multi-threaded C code.
The CESE Method
The default numerical algorithm in SOLVCON is the space-time Conservation Element and Solution Element (CESE) method, which was originally developed by Sin-Chung Chang at NASA Glenn Research Center. The CESE method delivers time-accurate solutions of hyperbolic partial differential equations, and has been used to solve various physical processes including fluid dynamics, aero-acoustics, detonations, magnetohydrodynamics (MHD), stress waves in complex solids, electromagnetics, to be named but a few.
Since the CESE method solves generic hyperbolic systems, it is intrinsically multi-physics. Since the CESE method uses no Riemann solver in flux calculation, physical processes can be modeled by a sole subroutine for the Jacobian and flux function. As such, the application code can be modularized very well, while retaining performance. Based on unstructured mesh composed of mixed elements, the solver can address the most complex geometry.
Hybrid Parallelism
Parallel programming is notoriously difficult. Hybrid parallelism is worse than that. Hybrid parallelism simultaneous performs shared- and distributed-memory parallel computing. Hybrid parallelism is a must for advanced supercomputing platform, such as GPU clusters. Accurate solution of hyperbolic equations demands very large mesh, which can have over billions of mesh points. Distributed-memory parallel computing by using domain decomposition and message-passing is the de facto approach to parallelize hyperbolic PDE solvers. On the other hand, advanced accelerator-based computing hardware boosts per-node performance of number-crunching 10-100 times. Solving software must have a good way to organize the parallel code before it becomes the maintenance hell.
SOLVCON's approach to hybrid parallelism is to automate distributed-memory parallelization. Domain decomposition and message-passing are internalized into SOLVCON, so that shared-memory parallel computing can be implemented in distilled solver kernels. There is no interference between those two different paradigms of parallel computing. For maximum flexibility, SOLVCON abstracts a communication layer in module solvcon.rpc. Aided by module solvcon.rpc, both MPI and native socket libraries can be used for message-passing.
Publication
The following lists the papers related to SOLVCON. They either discuss SOLVCON or use SOLVCON for numerical simulation.
- Lixiang Yang, Yung-Yu Chen, and Sheng-Tao John Yu, Velocity-Stress Equations for Waves in Solids of Hexagonal Symmetry Solved by the Space-Time CESE Method, ASME Journal of Vibration and Acoustics, in press. doi: 10.1115/1.4002170
- Yung-Yu Chen, David Bilyeu, Lixiang Yang, and Sheng-Tao John Yu, SOLVCON: A Python-Based CFD Software Framework for Hybrid Parallelization, AIAA Paper 2011-1065, 49th AIAA Aerospace Sciences Meeting, January 4-7 2011, Orlando, Florida.
- Yung-Yu Chen, Lixiang Yang, and Sheng-Tao John Yu, Simulations of Waves in Elastic Solids of Cubic Symmetry by the Conservation Element and Solution Element Method, Wave Motion, Volume 48, Issue 1, Jan. 2011, Pages 39-61. doi: 10.1016/j.wavemoti.2010.07.001
The following lists the main references for the CESE method:
- Sin-Chung Chang, The Method of Space-Time Conservation Element and Solution Element -- A New Approach for Solving the Navier-Stokes and Euler Equations, Journal of Computational Physics, Volume 119, Issue 2, July 1995, Pages 295-324. doi: 10.1006/jcph.1995.1137
- Xiao-Yen Wang, Sin-Chung Chang, A 2D Non-Splitting Unstructured Triangular Mesh Euler Solver Based on the Space-Time Conservation Element and Solution Element Method, Computational Fluid Dynamics Journal, Volume 8, Issue 2, 1999, Pages 309-325.
- Zeng-Chan Zhang, S. T. John Yu, Sin-Chung Chang, A Space-Time Conservation Element and Solution Element Method for Solving the Two- and Three-Dimensional Unsteady Euler Equations Using Quadrilateral and Hexahedral Meshes, Journal of Computational Physics, Volume 175, Issue 1, Jan. 2002, Pages 168-199. doi: 10.1006/jcph.2001.6934