# \[ANN\] WaveMixings.jl Nonlinear spectroscopy based on the doorway-window approximation

**URL:** https://discourse.julialang.org/t/ann-wavemixings-jl-nonlinear-spectroscopy-based-on-the-doorway-window-approximation/130879
**Category:** Package Announcements
**Tags:** package, announcement, physics, chemistry, spectroscopy
**Created:** [July 20, 2025, 9:43am UTC](https://discourse.julialang.org/t/ann-wavemixings-jl-nonlinear-spectroscopy-based-on-the-doorway-window-approximation/130879 "2025-07-20T09:43:22Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![apolion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/apolion/32/217816_2.png) [@apolion](https://discourse.julialang.org/u/apolion)
#### Post date: [July 20, 2025, 9:43am UTC](https://discourse.julialang.org/t/ann-wavemixings-jl-nonlinear-spectroscopy-based-on-the-doorway-window-approximation/130879/1 "2025-07-20T09:43:22Z")

</div>

# **INTRODUCTION**

After almost two year of work 🏋️‍♀️, finally I am introducing WaveMixings.jl, a numerical implementation of the quasi-classical doorway-window approximation, specifically designed for on-the-fly time-resolved pump-probe (TRPP, aka TAPP) spectra simulations 🌈.

## What is Doorway-Window approximation?

It is a quantum “representation” of four-wave-mixing 🌊 signals in nonlinear spectroscopy. However, in _ **WaveMixings.jl,** _ I implement the quasi-classical approximation of third-order four-wave-mixing signals. 🚦

## How it works?

Basically, one needs to run quasi-classical molecular dynamics (Surface Hopping, Ehrenfest, mapping Hamiltonian approach or any similar algorithm) of a determined system, then parse the output of the simulations with _ **WaveMixings.jl** _. Once the data is post-processed, one need to pass basic parameters (carrier frequency of the pump laser 🔆, carrier frequency of the probe laser 🔦, time delay) to perform the on-the-fly simulations.

## Features 🌈

- Integral **GSB** , **SE** , and **ESA**.
- Dispersed **GSB** , **SE** , and **ESA**.
- Fluorescence.
- 2D pump-probe.
- 2D FLEX.
- Strong field simulation.
- Population estimation.
- Basic auxiliary plotting (in dev)
- Fully documented (page and wiki on work)

## Basic TRPP plot

 ![pyrazine](https://global.discourse-cdn.com/julialang/original/3X/c/5/c5d70398cda756190f11687d57a72b5444028313.png)

## Conclusion

Hope some people find this package useful, and please comment, ask, reach out, contribute to the package. Noteworthy, _ **WaveMixings.jl** _ is hosted in Codeberg, thus unfortunately it can not be registered yet. I hope this is solved in the near future. Also, I am open to collaborations 😉

If you have suggestions or examples of how to MPI functions ( or best practices to handle large matrices up to 1000x1000) using only the Standard library or as few dependencies as possible, I would appreciate, cause that is one of my future objectives.
