Research Projects

things I've been thinking about... last updated Tues Dec 9th/2025

A Delzant Type Correspondence for Hamiltonian SO(3) Actions


GQT1: Geometric Quantum Theory Notes

An set of notes for Dan Freed's Quantum Theory from the Geometric Perspective.

Biharmonic Wave Equation: FEM Formulation and Numerical Solution

Mathematica Finite Elements PDEs Numerical Methods
Asymmetric mode of wave equation
Symmetric mode of wave equation
Biharmonic equation

The biharmonic wave equation models the vibration of thin elastic plates via the fourth-order operator $\nabla^4$

$$\frac{\partial^2 u}{\partial t^2} + \nabla^4 u = 0, \quad \nabla^4 u = \frac{\partial^4 u}{\partial x^4} + 2\frac{\partial^4 u}{\partial x^2\partial y^2} + \frac{\partial^4 u}{\partial y^4}.$$

We have the following weak formulation via the Finite Elements Method obtained by integrating by parts.

$$\int_{\Omega} u_{tt} \, v \, dA + \int_{\Omega} (\Delta u)(\Delta v) \, dA = 0.$$

Discretize $u(x,y,t) \approx \sum_{i} U_i(t) N_i(x,y)$ with $C^1$-elements.

$$W \ddot{\mathbf{U}}(t) + K\, \mathbf{U}(t) = 0,$$

where $W_{ij} = \int N_i N_j \, dA$ and $K_{ij} = \int (\Delta N_i)(\Delta N_j) \, dA$

We use tensor product basis functions $N_{i,j}(x,y)=N_i(x)N_j(y)$ with piecewise-linear $N_i$ on a grid $\{x_i\}$:

$$N_j(x)=\begin{cases} \dfrac{x-x_{j-1}}{x_j-x_{j-1}}, & x_{j-1}\le x\le x_j,\\ \dfrac{x_{j+1}-x}{x_{j+1}-x_j}, & x_j\le x\le x_{j+1},\\ 0, & \text{otherwise.} \end{cases}$$

Initial data: a localized displacement. With zero boundary conditions.

Gamma Spectra Analysis: Poisson Log-Likelihood Method

Python SciPy Particle Physics Statistical Analysis GitHub
Gamma Spectra Analysis with Log-Likelihood Fitting

This research project implements methods for analyzing low-count gamma ray spectra. The primary objective behind this program was to establish precise signal bounds for calculating the half-life of specific tantalum isotope.

We were interested in the question - how many signal counts do we need to see to have a 5 $\sigma$ event? We answered this question by applying the tools of log-likelihood analysis.

The Poisson log-likelihood function is defined as:

$$\log L = \sum_{i} (n_i \log \lambda_i - \lambda_i - \log n_i!)$$

Where $n_i$ represents observed counts and $\lambda_i$ represents the expected counts from our model.

The likelihood function tells us how likely a given set of fitting parameters are to generate the peaks we see. So, by enumerating parameter space, the log-likelihood analysis gives us a good way to determining the $5 \sigma$ bound.

In this program, we see:
  1. Conventional Gaussian peak fitting using SciPy
  2. Maximum log-likelihood estimation using Poisson statistics, which provides superior performance in low-signal regimes

Argon-Dewar PID Controller for TPC Scintillation Detection

Python Arduino PID Control Particle Physics SQLGitHub
PID Controller System Architecture

This project involved the development of a precision control system for a Time Projection Chamber (TPC) used in dark matter detection experiments. The system was implemented as part of a scaled-down version of the DarkSide-20k at Gran Sasso National Laboratory.

The control system architecture consists of three primary components:

  1. A proportional-integral-derivative (PID) controller implemented in Arduino C for real-time response
  2. A Python interface parameter tuning and system monitoring
  3. A SQL database backend for data logging

The controller maintains precise temperature and pressure conditions within the argon-filled TPC by regulating nitrogen gas outflow. This stability is critical for detecting scintillation photons produced by potential dark matter particle interactions.


Computational Isomer Generation: Linear Algebraic Approach

Computational Chemistry Linear Algebra Code
Computational Isomer Generation Results Molecular Bonding Table

This project implements an efficient algorithm for generating chemical isomers—structurally distinct molecules with identical chemical formulas. The computational approach leverages linear algebra to enumerate possible molecular configurations based on valence constraints.

The thermodynamic significance of isomers is captured by their Boltzmann probability distribution:

$$P_{i} \sim e^{-G/kT}$$

Where $G$ represents the Gibbs free energy, $k$ is Boltzmann's constant, and $T$ is temperature.

The algorithm translates Lewis-bonding rules into a system of linear equations, where each atom's valence requirements must be satisfied. This formulation transforms the chemical problem into a linear algebra problem:

$$A \vec{x} = \vec{b}$$

Where $\vec{b}$ represents the vector of atomic valencies and $A$ is the bonding matrix encoding potential connections between atoms.

The implementation uses Mathematica's linear algebra routines to efficiently compute the solution space, with each valid solution corresponding to a unique isomer. This approach offers significant computational advantages over traditional graph-based enumeration methods, particularly for molecules with complex bonding patterns.


PiDoc: Scientific Document Editor

Python LaTeX Scientific Computing Website
PiDoc: Scientific Document Editor Interface PiDoc Integral Evaluation Feature

PiDoc is an integrated scientific document editor developed to streamline technical writing. The application implements a number of scientific tools within a unified interface, increasing the speed at which papers and homeworks can be written.

The architecture employs a modular design pattern that integrates multiple scientific computing functionalites, including:


Nordic Ski Performance Analysis: Technique Optimization Model

Data Analysis Numerical Integration Sports Science GitHub
Nordic Ski Technique Analysis Results

This project develops a computational model for optimizing cross-country skiing technique selection based on course topography and athlete-specific parameters. The analysis utilizes official FIS (International Ski Federation) course data combined with a non-linear model of skiing mechanics.

The model incorporates multiple variables affecting skiing performance:

Race time prediction is accomplished through numerical integration of velocity as a function of course position:

$$\tau = \int v(\theta) dt$$

Where $v(\theta)$ represents velocity as a function of slope angle $\theta$.

The model outputs technique transition points that optimize overall race time, providing strategic insights for athletes and coaches. This analytical approach has applications beyond Nordic skiing, including other racing sports with variable terrain and equipment configurations, such as Formula 1 racing where gear selection and racing line optimization follow similar mathematical principles.