SUBROUTINE CALHEL(U,V,P,ZINT,PINT,LMH,LM,HELI,UST,VST) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C . . . . C SUBPROGRAM: CALHEL COMPUTE STORM-RELATIVE HELICITY C PRGMMR: BALDWIN ORG: W/NMC2 DATE: 95-07-31 C C ABSTRACT: THIS ROUTINE COMPUTES STORM MOTION AND C STORM RELATIVE HELICITY FOLLWING DAVIES-JONES (1990). C CALLED BY SOUNDING POST-PROCESSOR. C C PROGRAM HISTORY LOG: C 95-07-31 MIKE BALDWIN C C USAGE: CALL CHKOUT C INPUT ARGUMENT LIST: C U - U COMPONENT OF WINDS IN SOUNDING (M/S) C V - V COMPONENT OF WINDS IN SOUNDING (M/S) C P - PRESSURE AT MID-LAYER (Pa) C ZINT - HEIGHTS OF LAYER INTERFACES (m) C PINT - PRESSURE OF LAYER INTERFACES (Pa) C LMH - NUMBER OF ABOVE GROUND LAYERS C LM - DIMENSION OF VERTICAL ARRAYS C C OUTPUT ARGUMENT LIST: C HELI - STORM-RELATIVE HELICITY (M**2/S**2) C UST - U COMPONENT OF STORM MOTION (M/S) C VST - V COMPONENT OF STORM MOTION (M/S) C C OUTPUT FILES: C NONE C C SUBPROGRAMS CALLED: C NONE C C ATTRIBUTES: C LANGUAGE: FORTRAN C MACHINE : CRAY C-90 C$$$ DIMENSION U(LM),V(LM),P(LM),ZINT(LM+1),PINT(LM+1) PARAMETER (P150=15000.0,P300=30000.0) PARAMETER (PI=3.141592654,PI6=PI/6.0,PI9=PI/9.0) C UMEAN6 = 0.0 VMEAN6 = 0.0 EMEAN6 = 0.0 UMEAN5 = 0.0 VMEAN5 = 0.0 EMEAN5 = 0.0 UMEAN1 = 0.0 VMEAN1 = 0.0 EMEAN1 = 0.0 SREH = 0.0 LLMV = LMH LLM1 = LLMV+1 PSFCK = PINT(LLM1) HTSFC = ZINT(LLM1) C C COMPUTE MASS WEIGHTED MEAN WIND FROM 150 MB ABOVE C SURFACE TO 300 MB LAYER C DO L = LLMV,1,-1 Z50 = 0.5 * ( ZINT(L) + ZINT(L+1) ) DZABV = Z50 - HTSFC DETA= PINT(L+1)-PINT(L) IF (DZABV.LE.6000.) THEN UMEAN6 = UMEAN6 + U(L) * DETA VMEAN6 = VMEAN6 + V(L) * DETA EMEAN6 = EMEAN6 + DETA ENDIF IF (DZABV.LT.6000. .AND. DZABV.GE.5500.) THEN UMEAN5 = UMEAN5 + U(L) * DETA VMEAN5 = VMEAN5 + V(L) * DETA EMEAN5 = EMEAN5 + DETA ENDIF IF (DZABV.LE.500.) THEN UMEAN1 = UMEAN1 + U(L) * DETA VMEAN1 = VMEAN1 + V(L) * DETA EMEAN1 = EMEAN1 + DETA ENDIF ENDDO IF (EMEAN5.EQ.0.0) THEN DO L = LLMV,1,-1 Z50 = 0.5 * ( ZINT(L) + ZINT(L+1) ) DZABV = Z50 - HTSFC DETA= PINT(L+1)-PINT(L) IF (DZABV.LT.7000. .AND. DZABV.GT.6000.) THEN UMEAN5 = U(L) * DETA VMEAN5 = V(L) * DETA EMEAN5 = DETA ENDIF ENDDO ENDIF IF(EMEAN6 .EQ.0. .OR. EMEAN5 .EQ. 0. .OR. EMEAN1 1 .EQ. 0.) THEN UST = 0.0 VST = 0.0 ELSE UMEAN6 = UMEAN6 / EMEAN6 VMEAN6 = VMEAN6 / EMEAN6 UMEAN5 = UMEAN5 / EMEAN5 VMEAN5 = VMEAN5 / EMEAN5 UMEAN1 = UMEAN1 / EMEAN1 VMEAN1 = VMEAN1 / EMEAN1 C COMPUTE STORM MOTION VECTOR USHR = UMEAN5 - UMEAN1 VSHR = VMEAN5 - VMEAN1 UST = UMEAN6 + (7.5*VSHR/SQRT(USHR**2+VSHR**2)) VST = VMEAN6 - (7.5*USHR/SQRT(USHR**2+VSHR**2)) ENDIF C C COMPUTE STORM-RELATIVE HELICITY C DO L = LLMV-1,2,-1 Z50 = 0.5 * ( ZINT(L) + ZINT(L+1) ) DZABV = Z50 - HTSFC IF (DZABV.LT.3000.0) THEN Z2 = 0.5 * ( ZINT(L) + ZINT(L+1) ) Z1 = 0.5 * ( ZINT(L+1) + ZINT(L+2) ) Z3 = 0.5 * ( ZINT(L-1) + ZINT(L) ) DZ =(ZINT(L)-ZINT(L+1)) DZ1=Z1-Z2 DZ2=Z2-Z3 DU1=U(L+1)-U(L) DU2=U(L)-U(L-1) DV1=V(L+1)-V(L) DV2=V(L)-V(L-1) SREH=((V(L)-VMEAN)*(DZ2*(DU1/DZ1)+DZ1*(DU2/DZ2)) 1 -(U(L)-UMEAN)*(DZ2*(DV1/DZ1)+DZ1*(DV2/DZ2))) 2 *DZ/(DZ1+DZ2)+SREH ENDIF ENDDO HELI=SREH RETURN END