=============================================================================
Supplementary Material: Python Source Code
Manuscript: Stationary Solutions and Oscillatory Dynamics in a Mathematical 
Model of a Saturated Moist Atmosphere
Author: Dalila Remaoun Bourega
=============================================================================

This archive contains the complete set of Python scripts used to perform the 
numerical simulations and generate the figures presented in the article. 

SYSTEM REQUIREMENTS
-------------------
- Python 3.x
- Required libraries: NumPy, SciPy, Matplotlib

FILE DESCRIPTIONS
-----------------
*** Main Scripts (Execute these to generate figures) ***

1. runstationnary3.py
   Main script to solve the stationary boundary-value problem. It utilizes a 
   robust sweeping bracketing method to find the correct shooting parameter (c0) 
   and calculates the corresponding stationary profiles (density and temperature).
   -> Generates Figure 1.

2. plotnusigma1.py
   Calculates and plots the endpoint target map (rho*T at the upper boundary) 
   as a function of the suspended condensate density (Sigma). 
   -> Generates Figure 2.

3. remdalilag1.py
   Main script for the time-dependent evolutionary model. It integrates the 
   system using an explicit Euler scheme in time and upwind finite differences 
   in space, coupled with the delayed memory kernel for droplet fallout.
   -> Generates Figure 3 (and additional final state profiles).

*** Helper Modules (Required dependencies, do not run directly) ***

4. getrhoTatz1.py
   Evaluates the boundary condition error at z_bar_1 and computes the flow 
   intensity parameter (Alpha) and condensate density (Sigma).

5. getHydrostaticProfiles2.py
   Generates the static reference profiles (dry and humid) used to determine 
   the physical boundary targets (q0).

6. solveSpatialProfileshelper2.py
   Core ODE solver computing the vertical structure of the stationary system.
7. verify_c0_bounds.py
A standalone verification script using SciPy's solve_ivp. It sweeps the parameter c0 to 
determine the critical rupture threshold (c0 approx 4.31) and generates the validation 
data presented in Table B1 (Appendix B).

INSTRUCTIONS
------------
To reproduce the results, extract all 7 files (including this README) into a 
single directory. Execute the main scripts (1, 2, or 3) directly from your 
Python IDE or command line (e.g., `python runstationnary3.py`). The scripts 
will output the calculated physical parameters in the console and automatically 
display the corresponding graphical plots.