TCMIX is a NEMO configuration based on the GYRE_PISCES reference setup. It provides a controlled framework for testing turbulent vertical mixing schemes in the NEMO model under tropical cyclone (TC) wind forcing.
Tropical cyclones significantly influence the upper ocean by driving strong wind-induced mixing and upwelling, which alter the thermal structure near the surface. These changes are critical as they affect the available ocean’s heat content that supports the storm development and intensification. Capturing these complex interactions in numerical models demands accurate representation of vertical mixing processes and the ocean’s dynamic response to extreme wind conditions.
This demonstration aims to evaluate the sensitivity of physical and biogeochemical ocean responses to:
- Idealized TC wind fields.
- Different vertical mixing parameterizations in NEMO.
- Varying grid resolutions.
- Holland (1980) symmetric wind field
The wind forcing is re-constructed using the Holland (1980) parametric cyclone model implemented in this configuration, which is widely used in the literature and relies on the gradient wind balance characteristic of mature tropical cyclones. It calculates the wind speed distribution based on a circular pressure field, which is determined using the central pressure, environmental pressure, and the radius of maximum winds.
where,
vr: Tangential wind speed (m/s)b: Shape parameterρ: Air density = 1.15 kg/m³e: Euler’s number ≈ 2.718vm: Max sustained wind speed (user-defined)poci: Pressure at outermost closed isobar (Pa)pc: Central pressure (Pa)r: Distance from storm center (km)Rm: Radius of max winds (km)f: Coriolis parameter depending on latitudeφ
Example namelist_cfg block under &namusr_def.
&namusr_def ! TCMIX user defined namelist
!-----------------------------------------------------------------------
lon0 = -68.0 ! initial cyclone center's Longitude coordinate [Eastern degree]
lat0 = 33.0 ! initial cyclone center's Latitude coordinate [Northern degree]
rmw = 50.0 ! radius of maximum sustained wind speed [km]
msw = 50.0 ! maximum sustained wind speed [m/s]
pc = 95000.0 ! pressure at the centre of the storm [Pa]
poci = 101000.0 ! pressure at outermost closed isobar of the storm [Pa]
ln_move = .false. ! =T: Moving TC along the initial Latitude westward | =F stationary TC
tc_speed = 0.05 ! cyclone moving speed [m/s]
/
- User-defined parameters for initial T/S profiles in
namelist_cfgunder&namusr_def
&namusr_def ! TCMIX user defined namelist
!-----------------------------------------------------------------------
t_surf = 28.0 ! Surface temp (degC)
t_deep = 4.0 ! Deep ocean temp (degC)
z_mid_t = 100.0 ! Midpoint thermocline depth (m)
dz_tcl = 40.0 ! Thermocline thickness scale (m)
s_surf = 36.0 ! Surface salinity (PSU)
s_deep = 36.5 ! Deep ocean salinity (PSU)
z_mid_s = 180.0 ! Salinity gradient midpoint (m)
dz_scl = 80.0 ! Salinity thickness scale (m)
/
A testing environment to configure Fortran namelist parameters and visualize initial temperature (T) and salinity (S) profiles in TCMIX is provided in this notebook. Please note that in the current TCMIX setup the initial T/S profiles assumed to be horizontally uniform.
- Costumizable domain resolution in
namelist_cfgunder&namusr_def
&namusr_def ! TCMIX user defined namelist
!-----------------------------------------------------------------------
nn_GYRE = 4 ! TCMIX resolution [1/degrees] based on GYRE reference config domain
jpkglo = 31 ! number of model levels
/
Before start, if you haven't compiled NEMO model on your machine, you can follow the instructions here.
- First, go to the root of your NEMO working copy and clone this git repository: https://github.com/gkara00/TCMIX
cd <path-to-nemo>/cfgs
git clone https://github.com/gkara00/TCMIX_demo.git
- Build a new configuration (here called
MY_TCMIX) from GYRE_PISCES reference configuration with:
cd ../
./makenemo -m <my_arch> -r 'GYRE_PISCES' -n MY_TCMIX -j 4
where <my_arch> is the name that refers to your computing environment.
- Copy the TCMIX Fortran subroutines in to your
MY_TCMIXconfiguration:
cp ./cfgs/TCMIX_demo/MY_SRC/*.F90 ./cfgs/MY_TCMIX/MY_SRC/
- Recompile your configuration with:
./makenemo -m <my_arch> -r 'GYRE_PISCES' -n MY_TCMIX clean
./makenemo -m <my_arch> -r 'GYRE_PISCES' -n MY_TCMIX -j 4
Once makenemo has run successfully, a symbolic link to the nemo executable is available in ./cfgs/MY_TCMIX/EXP00
- Prepare the
EXP00run folder withnamelist_cfgand.xmlfiles of TCMIX configuration:
cp ./cfgs/TCMIX_demo/EXPREF/{namelist*, *.xml} ./cfgs/MY_TCMIX/EXP00
- Download a restart file for PISCES biogeochemistry here and link it to the run directory. It is a restart from a 2-year simulation with GYRE_PISCES configuration at 1/4 horizontal resolution.
ln -sf <path-to-donwload>/GYRE4_restart_trc.nc ./cfgs/EXP00/MY_TCMIX/GYRE4_restart_trc.nc
- Run the model as per standard NEMO execution (here on a 40 cores node)
cd ./cfgs/MY_TCMIX/EXP00
mpirun -n 40 ./nemo
- Change the vertical mixing scheme and give a new name to your experiment:
&namrun ! parameters of the run
!-----------------------------------------------------------------------
cn_exp = "TKE" ! experience name
/
!-----------------------------------------------------------------------
&namzdf ! vertical physics (default: NO selection)
!-----------------------------------------------------------------------
ln_zdfcst = .false. ! constant mixing
ln_zdfric = .false. ! local Richardson dependent formulation (T => fill namzdf_ric)
ln_zdftke = .true. ! Turbulent Kinetic Energy closure (T => fill namzdf_tke)
ln_zdfgls = .false. ! Generic Length Scale closure (T => fill namzdf_gls)
ln_zdfosm = .false. ! OSMOSIS BL closure (T => fill namzdf_osm)
/
- Adjust the horizontal resolution in
namelist_cfgwithnn_GYREand/or the run duration in the&namrunblock.
- Stationary vs Moving cyclone
![]() |
![]() |
|---|---|
![]() |
![]() |
| Wind Stress Modulus | Sea Surface Temperature |
- zdftke minus zdfgls vertical mixing scheme difference for moving cyclone case
![]() |
![]() |
|---|---|
| Sea Surface Temperature | (nano)Phytoplankton Concentration |
This demonstrator was developed as part of NEMO Zoo Hackathon held on June 16-20 2025 at the UK Met Office (Exeter). Many thanks to Dr. Julien Palmieri and Dr. Renaud Person for the mentoring and the insightful discussions.
- Add the capability to re-construct wind fields from storm track data (e.g., IBTrACS database)
- Add a parameterization for heat & freshwater fluxes. In the current setup, they are considered zero.
- Add namelist options for vertical levels discretization.
- Add namelist options for horizontal domain coverage.
- etc etc
Holland, Greg J. 1980. “An Analytic Model of the Wind and Pressure Profiles in Hurricanes.” Monthly Weather Review 108 (8): 1212–18. https://doi.org/10.1175/1520-0493(1980)108<1212:AAMOTW>2.0.CO;2.






