This is a Documentation for PDE solver Basilisk written by Haochen Huang, a master candidate in XJTU.
The doc is written for those who are interested in how things work inside Basilisk and want to alter the solver.
For Real What is Basilisk?
Technically, Basilisk consists of two parts.
Unlike most open-source solvers, which usually consist of a collection of header files designed for specific types of PDEs in Fortran, C, or C++, Basilisk features a Domain Specific Language (DSL) called BasiliskC. For users familiar with Basilisk simulations, the installation process involves generating qcc, a transpiler (or preprocessor) provided by Basilisk that translates BasiliskC into standard C99 for compilation with gcc. This design ensures the versatility of Basilisk: as long as your machine has gcc, you can run Basilisk seamlessly. Additionally, a key component of Basilisk is its mesh management, which is deeply integrated with qcc. This allows for efficient iteration over multigrid and tree grid structures, freeing solver developers from tedious tasks like manual memory allocation and MPI compatibility, so they can focus on high-level solver development.
Based on our previous discussions, coherent documentation for Basilisk should include two main components. The first part consists of the header files, including the PDE solver (such as centered.h and poisson.h), which represent the physical core of the overall solver. The second part encompasses the low-level components (the preprocessor and mesh configuration), which embody the spirit of Basilisk.
-
[] centered solver
- [] centered.h
- [] double-projection.h
-
[] VOF multiphase solver
-
[] solid embed boundary
- [] embed.h and everything associated in other headfile
- [] embed-tree.h
- [] compressible
- [] grid/tree.h
- [] grid/tree-common.h
- [] grid/mempool.h
- [] grid/memindex/range.h
- [] ast
My sandbox and feel free to email me: [email protected]