Skip to content
forked from mjisan/URI-HBL

A three-dimensional boundary layer wind model for landfalling hurricanes.

Notifications You must be signed in to change notification settings

mansurjisan/URI-HBL

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 

Repository files navigation

URI Hurricane Boundary Layer Model

Status

The University of Rhode Island Hurricane Boundary Layer Model (URI-HBL) is a three-dimensional wind model designed to simulate the wind in the boundary layer in response to a prescribed upper vortex in the gradient balance and motion force. The secondary circulation in the HBL model (radial and vertical wind) is generated by surface friction. The HBL model was applied to study both the idealized and real-case storms, and its surface wind field was validated against observations for Hurricane Irma (2017) and Hurricane Florence (2018). The governing equations for the mean wind in the Cartesian coordinates are given as follows:

$$ \frac{\partial u}{\partial t} + u\frac{\partial u}{\partial x} + v\frac{\partial u}{\partial y} + w\frac{\partial u}{\partial z} - fv = -\frac{1}{\rho_o}\frac{\partial P}{\partial x} + \frac{\partial}{\partial z}\left(K_z \frac{\partial u}{\partial z}\right) $$

$$ \frac{\partial v}{\partial t} + u\frac{\partial v}{\partial x} + v\frac{\partial v}{\partial y} + w\frac{\partial v}{\partial z} + fu = -\frac{1}{\rho_o}\frac{\partial P}{\partial y} + \frac{\partial}{\partial z}\left(K_z \frac{\partial v}{\partial z}\right) $$

$$ \frac{\partial u}{\partial x} + \frac{\partial v}{\partial y} + \frac{\partial w}{\partial z} = 0 $$

Where $u$, $v$, and $w$ are wind components in x, y, and z directions, respectively. $f$ represents the Coriolis frequency; $P$ represents the pressure, and $\rho_o$ is the density kept constant. The vertical diffusion in the HBL model is parametrized based on Louis et al., (1982) PBL parametrization scheme. The neutral version of the Louis scheme is applied in this study.

$$ K_z = l^2 \cdot S \cdot f(Ri) $$

where $l$ represents the mixing length, $S$ represents the magnitude of the vertical wind shear, and $Ri$ is the gradient Richardson number. The wind in the HBL model is shear-driven and parametrized as

$$ S^2= \left(\frac{\partial u}{\partial z}\right)^2 + \left(\frac{\partial v}{\partial z}\right)^2 $$

Mixing length $l$ is parametrized using Blackadar (1962) scheme:

$$ \frac{1}{l} = \frac{1}{\kappa z} + \frac{1}{l_{\infty}} $$

where $\kappa$ is Von Karman’s constant ($\kappa = 0.4$) and $l_{\infty}$ is the asymptotic mixing length. Following the previous studies by Kepert (2011), Gao & Ginis (2014), Gao & Ginis (2016), in this paper, the asymptotic mixing length is set as $l_{\infty} = 80$ m. We use a moving coordinate system, as was done in previous studies by Kepert and Wang, (2001) & Gao and Ginis (2018), in which the mesh moves with the center position of the storm, keeping it stationary relative to the mesh. The HBL model uses a rectilinear grid system with horizontal and vertical spacing of 1km and 30m, respectively. The model grid consists of 1800 x 1800 grid points in the zonal and meridional direction. The vertical extent of the grid is 3km. The timestep in the model is set as 1 second.

Required Libraries for the HBL Model

The HBL model has been successfully installed on the High Performance Computing System of the Renaissance Computing Institute (RENCI). To compile the code, you will need to load the following modules:

  1. Intel Threading Building Blocks (TBB) - Version 2021.5.1
  2. Compiler Runtime (compiler-rt) - Version 2022.0.2
  3. Environment for Intel C++ Compiler (env_icc) - Any version
  4. OpenCL FPGA (oclfpga) - Version 2022.0.2
  5. Intel Compiler (compiler) - Version 2022.0.2
  6. MPI Library (mpi) - Version 2021.5.1
  7. Intel C++ Compiler (icc) - Version 2022.0.2
  8. Hierarchical Data Format 5 (HDF5) - Version 1.12.1-intel
  9. Network Common Data Form C (netcdf-c) - Version 4.8.1-intel
  10. Network Common Data Form Fortran (netcdf-fortran) - Version 4.5.4-intel
  11. MVAPICH2 - Version 2.3.7-intel
  12. NetCDF Operators (nco) - Version 5.0.7-intel

Required Libraries for HBL Model on URI Andromeda Cluster

To compile the HBL model on the URI Andromeda Cluster, ensure the following modules are loaded:

  1. GCCcore/8.3.0
  2. zlib/.1.2.11-GCCcore-8.3.0
  3. binutils/.2.32-GCCcore-8.3.0
  4. iccifort/2019.5.281
  5. impi/2018.5.288-iccifort-2019.5.281
  6. iimpi/2019b
  7. imkl/2019.5.281-iimpi-2019b
  8. intel/2019b
  9. Szip/.2.1.1-GCCcore-8.3.0
  10. HDF5/1.10.5-iimpi-2019b
  11. cURL/.7.66.0-GCCcore-8.3.0
  12. netCDF/4.7.1-iimpi-2019b
  13. netCDF-C++4/4.3.1-iimpi-2019b
  14. netCDF-Fortran/4.5.2-iimpi-2019b
  15. libevent/2.1.11-GCCcore-8.3.0
  16. MVAPICH2/2.3.3-intel-2019b

Load these modules before attempting to compile and run the HBL model to ensure compatibility and optimal performance.

URI-HBL Directory Structure

URI-HBL Directory Structure

Running the HBL Model

Initial and Boundary Condition

work directory: boundary_parametric/MICHAEL/exps/1KM

To generate the boundary condition in the HBL model, we first create a gradient wind using a parametric wind model. The parametric wind source code is located within the boundary_home/source/parametric directory. An example of how to compile and run the parametric code is given below:

(a) Configuration of model grid

  • go to boundary_parametric/MICHAEL/exps/1KM/GRIDS

  • open grid_mod.F90

  • The number of grids in X and Y directions are assigned in the nx and ny parameters. Whichever the number of grid points we plan to use, the nx and ny needs to be 1 point less than that (this is related to the distribution to MPI ranks). For this example, we will be using 1802 x 1802 grid points. So we defined nx and ny as 1801.

  • The resolution of the model is defined by setting stepx and stepy. For this exercise, we used 1km resolution. So, set stepx and stepy to 1000.

(b) Configuration of output interval

  • The model output intervals are set in the time_mod.F90 file, which is located in the same directory as the grid_mod.F90
  • We will be running the forecast for 60 hours. so nrecs is set as 60
  • delt represents how often we want to save the outputs. In this exercise, we will use delt = 3600 . So we will be saving output every 1-hour interval

(c) Input gradient wind track file

  • The HBL model requires the input hurricane vortex parameters for the gradient wind.
  • The gradient wind parameters for Hurricane Michael are given in the track_file_michael file in the /INPUT directory.

(d) Namelist

  • The input.nml file includes the namelist parameters for the parametric code.
  • We define the land roughness (land_rough_name) and land cover (topog_name) file in the input.nml.
  • In addition, the simulation start time needs to be defined.

(e) Running the Parametric Code

  • After defining all the input parameters, we first compile the code using ./build_parametric.bash and run the model by submitting ./run_parametric.bash scripts. Please note that these scripts must be adjusted based on your system configuration.

  • After a successful run, we should see the output file in the /OUTPUT directory. The file name should be boundary_parametric.nc as defined in the input.nml namelist file.

HBL Model Simulation

work directory: boundary_model/MICHAEL/1KM

  • First step in running the model is to copy the gradient wind file from the boundary_parametric/MICHAEL/exps/1KM/OUTPUT directory to the boundary_model/MICHAEL/1KM/INPUT/ directory.

  • The second step is to modify the time_mod.F90 and grid_mod.F90 files in the GRIDS directory and define the MPI ranks npx and npy in the X and Y directions.

  • We also need to adjust the parameters, i.e., define the name of the input file param_file and the initial condition file name in the model_file section in the input.nml. The initial condition file generation will be discussed in a later release of the code.

  • The output parameters are defined in the diag_table file. ubot and vbot are the surface wind components, um, vm and wm are three dimensional wind fields. znot is the land roughness

  • Once we define all the necessary inputs, we compile the code using ./build_model.bash and run the job using ./run_model.bash script

  • During the runtime, each MPI ranks will generate simulation output in NetCDF format in the /OUTPUT directory. We combine these outputs at the end of simulation using a program called mppcombine. The script that does it is named ./run_combine.bash

About

A three-dimensional boundary layer wind model for landfalling hurricanes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Fortran 59.4%
  • SystemVerilog 14.0%
  • C 11.6%
  • Shell 4.5%
  • Perl 4.0%
  • NCL 3.7%
  • Other 2.8%