Skip to content

NEMO v5 Hackathon Demonstrator for Idealized Tropical Cyclone Forcing

Notifications You must be signed in to change notification settings

gkara00/TCMIX_demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TCMIX demonstration case

DOI Binder

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.

Background

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.

Objectives

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.

Key features and namelist options

  • 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.

alt text

where,

  • vr: Tangential wind speed (m/s)
  • b: Shape parameter
  • ρ: Air density = 1.15 kg/m³
  • e: Euler’s number ≈ 2.718
  • vm: 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_cfg under &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_cfg under &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
/

How to run

Before start, if you haven't compiled NEMO model on your machine, you can follow the instructions here.

  1. 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
  1. 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.

  1. Copy the TCMIX Fortran subroutines in to your MY_TCMIX configuration:
cp ./cfgs/TCMIX_demo/MY_SRC/*.F90 ./cfgs/MY_TCMIX/MY_SRC/
  1. 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

  1. Prepare the EXP00 run folder with namelist_cfg and .xml files of TCMIX configuration:
cp ./cfgs/TCMIX_demo/EXPREF/{namelist*, *.xml} ./cfgs/MY_TCMIX/EXP00
  1. 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
  1. Run the model as per standard NEMO execution (here on a 40 cores node)
cd ./cfgs/MY_TCMIX/EXP00
mpirun -n 40 ./nemo

Sensitivity runs

  1. 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)
/
  1. Adjust the horizontal resolution in namelist_cfg with nn_GYRE and/or the run duration in the &namrun block.

Sample outputs

  • 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

Acknowledgments

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.

Future enhancements

  • 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

References

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.

About

NEMO v5 Hackathon Demonstrator for Idealized Tropical Cyclone Forcing

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors