Skip to content

Commit

Permalink
PaHM - best track central pressure fix (#153)
Browse files Browse the repository at this point in the history
* updated the PaHM sourcesto their latest version as of 07/19/2022

* fixed bug in CPP projection subroutines so the argument of cos is in radians

* modified the cmake files for ParMETIS to allow the use of externally built ParMETIS libraries if requested

* added the NO_PARMETIS capability to the src/CMakeLists.txt src/Driver/CMakeLists.txt files

* typo fix in the FindParMETIS.cmake file

* Add a deleted cmake def (IMPOSE_NET_FLUX)

* fix read format issue in ReadCsvBestTrackFile subroutine when reading b-deck formatted track files

* fixed CMakeLists.txt

* deleted duplicated fortran statement in parwind.F90

* PAHM: fixed CSV read issue with columns 7 and 8 in the best track files

* temp commit

* another temp commit

* Added new code in PaHM to account for missing of last closed isobar radius (RRP).
The fields are usually missing in forecast track files and occassionaly in best track files.

* added '-mcmodel medium' compiler flag to overcome the 2GB memory limit (orion/hercules)

* removed the AVX flag for orion/hercules compilations

* added options in the cmake module files for orion/hercules to consider compilations w/wo Intel's AVX

* Modified the src/CMakeLists.txt in support of standalone and coupled compilations; added the BUILD_TOOLS option to also build the pschism* and the utilities executables in coupled configurations (e.g ufs-coastal)

* modified slightly the if(BLD_STANDALONE) ... else(BLD_STANDALONE)... conditional block

* reverted changes in cmake/*

* updated PaHM with the following fixes:
(1) added code to fill missing values in best track fields (POuter, ROCI, RMW) using linear interpolation method
(2) added code to estimate ROCI and RMW values (internally availably at this point) based on Dean et al. (2009) & Avenas et al. (2023)
(3) fixed some random IEEE floating point error bugs in parwinds.F90
(4) added code to to filter out duplicate lines in best track files (e.g., Hurricane Ian and maybe others)
(5) added code to check & adjust so that POuter is always greater than the central pressure by at least 1 mbar (during pre-processing)
(6) added code to the GaHM model so that it performs its calculations within an extended ROCI region and not the whole domain (speedup factor > 5)

Tested with hurricanes: Florence, Sandy, Gustav, Ike, Ian, Beryl'

* fixed minor typos caused compilation errors

* PaHM: updated the FillMissDataTrackFile_LinInterp subroutine to bail out when there are no available data to interpolate from for the specific field in the best track file - it happens

* PaHM: fixed typo Utilities->PaHM_Utilities in FillMissDataTrackFile_LinInterp subroutine

* fixed missing code snippet for calculating the distances from the storm's eye in the subroutine GetHollandFields

* PaHM: slightly extended the radius from the TC's eye where wind fields are calculated to allow for a more graceful reduction to zero of the wind speeds

* PaHM: corrected the code that filters out the duplicate lines in the best track files - depends only upon the date string and the intensity value: 35,50,64 kt

* PaHM: added code to fill in missing values of central pressure in best track files; it happens in rare occassions e.g., Beryl 2024

---------

Co-authored-by: Joseph Zhang <[email protected]>
  • Loading branch information
pvelissariou1 and josephzhang8 authored Nov 18, 2024
1 parent 4942c2a commit 1aa025d
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/Core/PaHM/parwind.F90
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,14 @@ SUBROUTINE ReadCsvBestTrackFile()
! Here, we check for missing values for specific fields in the best track file.
! Namely: POuter, ROuter, Rmw, others ...?

! --- (1) Mslp - central pressure in millibars
! Sometimes central pressure values are missing from the best track files,
! for example hurricane Beryl 2024. If this happens, GaHM model fails, so
! we fill the missing values by linear interpolation first as we need to check
! against POuter next.
CALL FillMissDataTrackFile_LinInterp(bestTrackData(iFile)%dtg, bestTrackData(iFile)%intMslp)

! --- (2) POuter - pressure in millibars of the last closed isobar
! --- (1) POuter - pressure in millibars of the last closed isobar
! POuter needs a special treatment, sometimes the reported POuter value is less
! than CPress so we need to correct this here before applying the linear interpolation.
Expand All @@ -690,6 +698,14 @@ SUBROUTINE ReadCsvBestTrackFile()
END IF
END IF

! --- (3) ESTIMATED EROuter (ROCI) - radius of the last closed isobar in nm
! We might need to use this to fill missing values in ROuter below
CALL FillMissDataTrackFile_LinInterp(bestTrackData(iFile)%dtg, bestTrackData(iFile)%intEROuter)

! --- (4) ROuter (ROCI) - radius of the last closed isobar in nm
CALL FillMissDataTrackFile_LinInterp(bestTrackData(iFile)%dtg, bestTrackData(iFile)%intROuter)

! --- (5) ESTIMATED ERmw (RMW) - radius of max winds in nm
! --- (2) ESTIMATED EROuter (ROCI) - radius of the last closed isobar in nm
! We might need to use this to fill missing values in ROuter below
CALL FillMissDataTrackFile_LinInterp(bestTrackData(iFile)%dtg, bestTrackData(iFile)%intEROuter)
Expand Down

0 comments on commit 1aa025d

Please sign in to comment.