Maximum updraft helicity in the Southern Hemisphere

Questions, issues, or suggestions related to post-processing of model output.
Post Reply
Posts: 2
Joined: Wed Oct 21, 2020 3:02 pm

Maximum updraft helicity in the Southern Hemisphere

Post by bruno_ribeiro » Wed Oct 21, 2020 3:07 pm

Hi All,

I run MPAS with a convection-allowing mesh (60 to 3 km mesh) with the ~3 km area over South America. The 1-h maximum updraft helicity variable in the diag.*.nc files appears to be accounting for the maximum value of updraft helicity, but in the Southern Hemisphere cyclonic supercells are associated with negative updraft helicity, so that the 1-h accumulated updraft helicity should be searching for minima instead of maxima. I took a look at the post-processing code (convective_diagnostics.F) and it appears to be the case, indeed. The maximum value of updraft helicity is being assigned for each cell (see code line below).

updraft_helicity_max(iCell) = max( updraft_helicity_max(iCell),uph)

Is my assessment right? And, if so, is there a way to search for the minima in updraft helicity field when in the Southern Hemisphere?


Bruno Ribeiro

Posts: 6
Joined: Mon Oct 15, 2018 10:49 pm

Re: Maximum updraft helicity in the Southern Hemisphere

Post by skamarock » Thu Oct 22, 2020 6:30 pm

Hi Bruno,

Yes, there is a northern hemisphere bias in the updraft helicity diagnostic! Additionally, we do observe anticyclonically rotating updrafts (uncommon but not rare) that this diagnostic would miss (e.g. splitting supercells).

You have a couple of options to address this issue.

(1) If you want to track cyclonically rotating updrafts you can multiply the vorticity by sign(1.0, latitude). Specifically, you would change lines 177 and 178 (MPAS-V7) in MPAS-Model/src/core_atmosphere/diagnostics/convective_diagnostics.F, which currently reads

updraft_helicity(k,iCell) = max(0.,0.5*(w(k,iCell)+w(k+1,iCell))) &
* max(0.,updraft_helicity(k,iCell)/areaCell(iCell))


updraft_helicity(k,iCell) = max(0.,0.5*(w(k,iCell)+w(k+1,iCell))) &
* max(0.,sign(1.0,latCell(iCell))*updraft_helicity(k,iCell)/areaCell(iCell))

You would also need to add a declaration to the beginning of the subroutine:

real (kind=RKIND), dimension(:), pointer :: latCell

and set the pointer to latCell in the obvious code block further down

call mpas_pool_get_array(mesh, 'latCell', latCell)

(2) If you want to capture both cyclonically rotating and anti-cyclonically rotating storms, you can compute the updraft helicity using the absolute value of the vorticity. This would place lines 177 and 178 with

updraft_helicity(k,iCell) = max(0.,0.5*(w(k,iCell)+w(k+1,iCell))) &
* max(0.,abs(updraft_helicity(k,iCell))/areaCell(iCell))

In this case you would not be able to distinguish between cyclonically and anti-cyclonically rotating updrafts.

(3) If you wanted to distinguish between cyclonic and anticyclonic storms you would need to add a separate diagnostic, the minimum updraft helicity. There are instructions on how to do this in the MPAS tutorial presentations that can be found online at ... index.html

The new diagnostic would look like the existing diagnostic (in terms of coding), so I believe it would be very easy to add the new array for the minimum and add the evaluation to the place where the max is currently evaluated.

One of these possibilities should go into the next release, so if you choose to implement one of these perhaps you can issue a pull request?

Bill Skamarock

Posts: 2
Joined: Wed Oct 21, 2020 3:02 pm

Re: Maximum updraft helicity in the Southern Hemisphere

Post by bruno_ribeiro » Sat Oct 24, 2020 9:01 pm

Hi Bill,

Thanks for your detailed response and for providing these code options! I will try to make changes in the code and keep you informed. I personally think option 3 (creating an updraft helicity minimum) is a good one, because it would deal with the Southern Hemisphere issue and also provide an option for those interested in diagnosing anticyclonic supercells in the Northern Hemisphere.


Post Reply

Return to “Post-processing”