This repository contains a Fortran implementation of the Kepert and Wang (2001) boundary layer model for coupling gradient-level tropical cyclone winds to the earth's surface.
The boundary layer model was designed and coded by Yuqing Wang. The code was modified by James Done and Ming Ge in 2019-2021.
- Improve the usability of this model
- Factor out a useful kernel
- Run the kernel from Python
- Integrate within a formal workflow
- Run workflow for synthetic storms
- Produce synthetic wind footprints for Jamaica or Mauritius
The code is currently split into three major pieces. The first and last are for pre and post processing and are written in NCAR Command Language (NCL), a scripting language developed at NCAR and now not maintained. The other is the boundary layer model, written in Fortran.
To install NCL and other dependencies:
micromamba create -f environment.yml -y
You will also need a fortran compiler, e.g. gfortran or ifort.
The data directory should look something like this, with files available from James:
data/
├── domain
│ ├── geo_pr.nc
├── landuse.tbl
└── tracks
├── IBTrACS.ALL.v04r00.nc
├── rmax_ib.nc
└── vmax_ib.nc
This NCL script selects, processes, and plots all TC tracks within 200km of land as well as data about the simulation domain like land use.
- Input: rmax_ib.nc, vmax_ib.nc, IBTrACS.ALL.v04r00.nc, geo_pr.nc
- Output: track.txt (per storm), lat_2d.dat, topo.dat, landuse.dat, topo.nc (not used)
Build and install boundary-layer binary with:
cd src
make clean
make
make installThe install step will place the binary in ~/.local/bin.
Set parameters in namelist. Note that some parameters are hardcoded inside
main.f90.
Run with boundary-layer.
This will run for the timesteps requested in namelist and will produce lots
of binary files like maria_WILLOUBY_000.d
This is currently set up to read the maria_WILLOUBY_*.d files, process
them into a maximum wind footprint (with plot).
There are simple integration tests in tests/integration, run from this directory as follows.
For 2 hours of Maria 2017 over Puerto Rico, with a coarse timestep. The test
takes about 70 seconds to run with 64 cores.
./tests/integration/test.sh short
The same domain, grid and storm, but 24 hours duration and with a 4 second
timestep, takes about 35 minutes with 64 cores.
./tests/integration/test.sh long