Skip to content
View nilot-pal's full-sized avatar

Block or report nilot-pal

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don鈥檛 include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user鈥檚 behavior. Learn more about reporting abuse.

Report abuse
nilot-pal/README.md

Hi, I'm Nilotpal 馃憢

I'm a PhD candidate in Mechanical Engineering at Virginia Tech, in the Laboratory of Transport Phenomena for Advanced Technologies. I defend by February 2027.

nilotpalchakraborty.com: longer write-ups of the work below.

I build the numerical machinery that closed solvers don't provide. Most of my work is inside other people's codes. A ~1,200-line stochastic breakage library in a commercial CFD solver, with special functions, spline inversion, and a per-particle state channel packed into the IEEE-754 mantissa of the diameter word because the API carries no state. An HLLC Riemann solver in an open-source SPH library, written after working out why its surface-tension model failed at high Reynolds number.

My application domain is particle ingestion in gas-turbine compressors: 100M+ cell campaigns on HPC, sponsored by Rolls-Royce and Pratt & Whitney, both of whom took the solver code for internal use. The portable part is the machinery, not the domain.

Some things I've done

Found and reported a numerical instability in SPHinXsys. The shipped multiphase surface-tension model breaks down at high Reynolds number: in the square droplet test the fluid particles don't just disorder, they leave the domain. I isolated it with a sequence of experiments and reported it in #378, and #497. The maintainers later traced it to zero-surface-energy modes and fixed it; I'm acknowledged in the resulting paper:

S. Zhang, S.D.N. Louren莽o, X. Hu, Multiphase SPH for surface tension: resolving zero-surface-energy modes and achieving high Reynolds number simulations, Computer Methods in Applied Mechanics and Engineering 444 (2025) 118147.

sph-high-re-surface-tension has the diagnostic sequence, the HLLC Riemann solver I wrote while chasing it, and the parameter studies underneath: a screening design over reference velocity and viscosity, a one-factor-at-a-time sweep, a ladder of dissipation-limiter settings, and a 2 脳 2 factorial on Poiseuille flow, which is the only case there with a closed-form answer to check against. Video of every run.

Particle redistribution at rotor鈥搒tator interfaces in CFX: erosion maps on a compressor rotor came out striped, with 46.8% of blade nodes taking no impacts at all, although particles were injected at random upstream. Eight hypotheses, seven killed by experiment. The eighth held: particles are displaced 4 mm circumferentially crossing the stage interface, landing on the centre-lines of the receiving mesh cells. Isolated by decoupling the particles from the flow entirely (rotor at 10鈦烩伓 rpm, fluid forces off), so nothing but the interface could be doing it. The same class of bug as the SPHinXsys one, in a solver whose source I cannot read.

Scaling ANSYS CFX across a cluster: standard advice for this solver is to minimise node count, since every iteration exchanges boundary data across the network. Measured, it went the other way: 3.9脳 faster on sixteen nodes than one, because the workload is bound by I/O and memory throughput rather than compute. Shown the numbers, the university's research computing director called it "generally the opposite of what I would expect". It also established that licences, not hardware, were the real ceiling, after which the group's allocation was doubled. Independent work, not part of my dissertation.

Lid-driven cavity: incompressible Navier鈥揝tokes on a staggered grid, fractional-step, validated against Ghia et al. (1982). The solver diverged at a time step that sat below both the linear CFL and the viscous limit. The cause is a non-linear CFL condition that restricts higher-order explicit time integrators, and the code now takes its step from that rather than from either textbook criterion.

Iterative solvers for finite-difference systems: the companion study. Gauss-Seidel, SOR and ADI on a manufactured Poisson problem whose exact solution is known, so the error is measured and not inferred from the residual. Observed order of accuracy 2.06; ADI reaches tolerance in about a quarter of the iterations SOR needs, at both grid resolutions. This is the solver behaviour that drives the cavity's cost scaling.

Membrane permeability from molecular structure: can you predict whether a drug-like molecule crosses a lipid membrane from its SMILES string alone, without the free energies and pKa values that normally decide it? Four-person course project; I built the RDKit feature generation (200 molecular descriptors and 1024-bit Morgan fingerprints), and the cross-validated regularisation search and learning-curve diagnostics for the Lasso model. The team's combined Lasso-MLP reached R虏 = 0.90 from structure alone.

Machine learning projects, spam detection (TF-IDF baselines vs. DistilBERT), and churn prediction, both built around evaluation rather than accuracy: precision鈥搑ecall, threshold tuning under asymmetric costs, and what the added model complexity actually buys.

Working on

Learned surrogates for expensive particle-laden physics on the open NASA Rotor 35 geometry, with the evaluation done properly: held-out conditions, conservation checks on the predicted distributions, and an honest map of where the surrogate stops being trustworthy.

Technical

Languages Python 路 Fortran 90 路 C++ 路 Java 路 MATLAB 路 Bash HPC Linux 路 Slurm 路 MPI 路 large-memory nodes 路 scaling and performance profiling Numerical Special functions from scratch 路 cubic splines and spline inversion 路 bit-level IEEE-754 encoding 路 approximate Riemann solvers (HLLC) 路 meshfree/SPH 路 Lagrangian particle tracking 路 finite volume (RANS/SST) 路 KD-tree spatial search ML PyTorch 路 scikit-learn 路 XGBoost 路 NumPy/Pandas, surrogate and reduced-order modelling, cross-validation, cost-sensitive evaluation Simulation ANSYS CFX 路 Fluent 路 TurboGrid 路 ICEM CFD 路 solver-embedded user subroutines

Awards

  • Summer Cunningham Fellowship, Virginia Tech Graduate School (2026)
  • Pratt Fellowship, Virginia Tech College of Engineering (2022)
  • Mitacs Globalink Research Fellowship (2019)
  • Shastri Research Fellowship, Shastri Indo-Canadian Institute (2019)

馃摣 nilotpalc@vt.edunilotpalchakraborty.com

Pinned Loading

  1. sph-high-re-surface-tension sph-high-re-surface-tension Public

    Diagnosis of a high-Reynolds-number failure in the SPHinXsys multiphase surface-tension model, an HLLC Riemann solver, and the validation data.

    C++

  2. cfx-interface-particle-shift cfx-interface-particle-shift Public

    Python

  3. cfx-cluster-scaling cfx-cluster-scaling Public

    MATLAB

  4. Lid-driven-cavity Lid-driven-cavity Public

    This repository contains source code for the term project of Advanced CFD class in Spring 2022 (Instructor: Prof. Danesh Tafti).

    MATLAB 2 1

  5. cfd-iterative-solvers cfd-iterative-solvers Public

    MATLAB

  6. churn-prediction churn-prediction Public

    End-to-end machine learning project on customer churn prediction.

    Jupyter Notebook