================================================================================
 Code Supplement
 Manuscript: "Stationary Solutions and Oscillatory Dynamics in a
 Mathematical Model of a Saturated Moist Atmosphere"
 Author: Dalila Remaoun Bourega
 Laboratory of Research In Pure And Applied Mathematics (LRPAM),
 Department of Mathematics, USTO-MB, 31000 Oran, Algeria
================================================================================

OVERVIEW
--------
This archive contains the Python scripts required to reproduce all the
numerical results discussed in the manuscript and in the Interactive Public
Peer Review: the stationary density/temperature profiles, the nu(Sigma)
dependence curve, the grid convergence check, and the evolutionary damped
oscillations of alpha(t) and Sigma(t).

REQUIREMENTS
-------------
- Python 3.x
- NumPy
- SciPy
- Matplotlib

All scripts are self-contained aside from the helper modules listed below,
which must remain in the same folder as the main scripts.

HOW TO RUN
----------
There are three main, directly executable scripts.

1) STATIONARY PROFILES  (Figure 1)
   > python runstationnary.py

   Computes the stationary solution (rho, T, c0, Sigma_stat) for both the
   humid (theta = 2/3) and dry (theta = 0) reference cases, prints a summary
   table of c0 and Sigma_stat to the terminal, and saves the density and
   temperature profiles as stationaryprofiles.png / stationaryprofiles.eps.

2) NU(SIGMA) CURVE AND GRID CONVERGENCE  (Figure 2, Table 1)
   > python plotnusigma1.py

   Traces the dependence of rho(z1)*T(z1) on Sigma (Figure 2), and performs
   the grid convergence check reported in Table 1 of the manuscript. The
   spatial step size 'hz' can be edited directly at the top of this file to
   reproduce the three resolutions discussed there (10 m, 5 m, 1 m).

3) EVOLUTIONARY MODEL: DAMPED OSCILLATIONS  (Figures 3-4)
   > python remdalilag1.py

   Integrates the full time-dependent model with memory kernel parameter
   b = 450 s (edit 'b_phi' at the top of the file to change it) and produces
   the damped oscillations of alpha(t) and Sigma(t), together with the
   final-time spatial profiles (density, temperature, normalized velocity,
   and section profile S(z)).

HELPER SCRIPTS (called automatically -- do not run directly)
--------------------------------------------------------------
* getHydrostaticProfiles2.py
    Shared by runstationnary.py and plotnusigma1.py. Computes the reference
    hydrostatic density/temperature profiles and the corresponding target
    boundary value q0 = rho(z1)*T(z1).

* solveStationary4.py
    Used by runstationnary.py. Finds the stationary parameter c0 by root-
    finding (scipy.optimize.fsolve) against the target q0, calling
    getrhoTatz4.py as its objective function.

* getrhoTatz4.py
    Used internally by solveStationary4.py as the objective function
    (explicit Euler integration of the stationary ODE system for a given
    c0, returning rho(z1)*T(z1)).

* getrhoTatz1.py / solveSpatialProfileshelper2.py
    Used by plotnusigma1.py. The objective-function/integrator pair used to
    trace the nu(Sigma) curve and to repeat the stationary computation at
    each of the three grid resolutions for the convergence check.

* gethydrostaticprofiles1.py
    Used by remdalilag1.py. Computes the reference hydrostatic profile used
    to set the top-boundary pressure-matching condition for the
    time-dependent simulation.

NOTES ON REPRODUCIBILITY
--------------------------
- File and module names are case-sensitive on Linux/macOS. Please keep the
  exact capitalization shown above when copying or renaming files.
- All scripts write their figures to the current working directory; run
  them from within the folder containing this archive.

DATA AND CODE AVAILABILITY
-----------------------------
This archive is made publicly available alongside the manuscript and its
Supplementary Material, consistent with the Data Availability statement of
the article. Questions or issues may be directed to the corresponding
author (dalila.bourega@univ-usto.dz).
================================================================================
