# Code

I am an avid code developer. Most of my work involves a significant amount of code development to solve problems that cannot be addressed with existing methods. I have also written a number of open-source code that can be useful for the community. They are mostly written in Julia, a programming Language I am very fond of as it “runs like C, but reads like Python”.

## AstroChemistry.jl

AstroChemistry.jl is a package that solves a user-defined chemistry network for astrophysical applications (in particular for the interstellar medium). It can be used to post-process snapshots of hydrodynamical simulations with an Octree that calculates the column densities for shielding against the FUV radiation. The chemistry coefficients are based on the UMIST database and the CO shielding is based on Visser et al. 2009. The code is multithreading parallel using Julia’s built-in functionality.

## OctreeBH.jl

OctreeBH is an implementation of octree for solving N-body problems using the Barnes–Hut approximation. Namely, tree nodes carry information that can be summed or compared in an efficient way. The package provides two main functionalities: (1) finding particles within a given radius (neighbor search) and (2) calculating gravitational acceleration in an N-body system. Neighbor search can be done in either the “gather” or “scatter” approach, which is particularly useful in smoothed-particle hydrodynamics. Gravitational acceleration adopts the monopole approximation, i.e., distant particles are clustered together and treated as a point mass located at their center of mass. Boundary conditions can be open, periodic, or mixed (e.g. periodic in x & y while open in z). Spatial dimension (N) can be any arbitrary positive integer.

## ParticleGridMapper.jl

ParticleGridMapper.jl interpolates particle data onto either a Cartesian (uniform) grid or an adaptive mesh refinement (AMR) grid where each cell contains no more than one particle. The AMR grid can be trimmed with a user-defined maximum level of refinement. Three differnt interpolation schemes are supported: nearest grid point (NGP), smoothed-particle hydrodynamics (SPH), and meshless finite mass (MFM). It is multi-threading parallel.

## Lapriori.jl

“a priori” analysis of SGS turbulence models for Lagrangian codes. The gradients are calculated with the least-square method that recovers linear functions exactly.