*IF DEF,A16_1A SNOWPR1A.2
C ******************************COPYRIGHT****************************** GTS2F400.9217
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.9218
C GTS2F400.9219
C Use, duplication or disclosure of this code is subject to the GTS2F400.9220
C restrictions as set forth in the contract. GTS2F400.9221
C GTS2F400.9222
C Meteorological Office GTS2F400.9223
C London Road GTS2F400.9224
C BRACKNELL GTS2F400.9225
C Berkshire UK GTS2F400.9226
C RG12 2SZ GTS2F400.9227
C GTS2F400.9228
C If no contract has been raised with this copy of the code, the use, GTS2F400.9229
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.9230
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.9231
C Modelling at the above address. GTS2F400.9232
C ******************************COPYRIGHT****************************** GTS2F400.9233
C GTS2F400.9234
CLL SUBROUTINE SNOWPR ------------------------------------------------- SNOWPR1A.3
CLL SNOWPR1A.4
CLL Purpose: This routine calculates the snowfall probabilty SNOWPR1A.5
CLL using an equation based on the 1000-850 TT SNOWPR1A.6
CLL Tested under compiler CFT77 SNOWPR1A.7
CLL Tested under OS version 5.1 SNOWPR1A.8
CLL SNOWPR1A.9
CLL J.Heming <- programmer of some or all of previous code or changes SNOWPR1A.10
CLL D.Robinson <- programmer of some or all of previous code or changes SNOWPR1A.11
CLL SNOWPR1A.12
CLL Model Modification history from model version 3.0: SNOWPR1A.13
CLL version Date SNOWPR1A.14
!LL 4.5 15/04/98 Start-end args added to enable dupicate halo GSM1F405.438
!LL calculations to be avoided. S.D.Mullerworth GSM1F405.439
CLL SNOWPR1A.15
CLL Logical components covered D432 SNOWPR1A.16
CLL Project TASK: D4 SNOWPR1A.17
CLL SNOWPR1A.18
CLL Programming standard: U M DOC Paper NO. 4, SNOWPR1A.19
CLL SNOWPR1A.20
CLL External documentation SNOWPR1A.21
CLL SNOWPR1A.22
CLLEND------------------------------------------------------------------ SNOWPR1A.23
C SNOWPR1A.24
C*L ARGUMENTS:---------------------------------------------------------- SNOWPR1A.25
SUBROUTINE SNOWPR 1,2SNOWPR1A.26
1 (P,PSTAR,P_EXNER_HALF,THETA,Q,MODEL_HALF_HEIGHT, SNOWPR1A.27
2 P_FIELD,P_LEVELS,Q_LEVELS,Z_REF,AKH,BKH, SNOWPR1A.28
& SNPROB,START,END) GSM1F405.440
C* SNOWPR1A.30
C*L--------------------------------------------------------------------- SNOWPR1A.31
IMPLICIT NONE SNOWPR1A.32
C* SNOWPR1A.33
C*L--------------------------------------------------------------------- SNOWPR1A.34
INTEGER SNOWPR1A.35
* P_FIELD ! IN No of points in field SNOWPR1A.36
*, P_LEVELS ! IN No of pressure levels SNOWPR1A.37
*, Q_LEVELS ! IN No of wet levels SNOWPR1A.38
*, Z_REF ! IN Level of model used to calculate PMSL SNOWPR1A.39
&, START,END ! IN Range of points to calculate GSM1F405.441
C----------------------------------------------------------------------- SNOWPR1A.40
REAL SNOWPR1A.41
* P(P_FIELD,P_LEVELS) ! IN Pressure array SNOWPR1A.42
*, PSTAR(P_FIELD) ! IN Pressure on surface of earth SNOWPR1A.43
*, P_EXNER_HALF(P_FIELD,P_LEVELS+1) !IN Exner press on half levels SNOWPR1A.44
*, THETA(P_FIELD,P_LEVELS) !IN Potential temperature SNOWPR1A.45
*, Q(P_FIELD,Q_LEVELS) !IN Specific Humidity SNOWPR1A.46
*, MODEL_HALF_HEIGHT(P_FIELD,P_LEVELS+1) !IN Heights on half levels SNOWPR1A.47
*, AKH(P_LEVELS+1) !IN A values on half levels SNOWPR1A.48
*, BKH(P_LEVELS+1) !IN B values on half levels SNOWPR1A.49
*, SNPROB(P_FIELD) ! OUT Snow probability in % SNOWPR1A.50
C*---------------------------------------------------------------------- SNOWPR1A.51
C SNOWPR1A.52
C*L WORKSPACE USAGE----------------------------------------------------- SNOWPR1A.53
REAL SNOWPR1A.54
* PRESSURE(P_FIELD) ! Pressure at which height is calculated SNOWPR1A.55
*, Z_100000(P_FIELD) ! Height at 1000000 Pa SNOWPR1A.56
*, Z_85000(P_FIELD) ! Height at 850000 Pa SNOWPR1A.57
C*---------------------------------------------------------------------- SNOWPR1A.58
C SNOWPR1A.59
C*L EXTERNAL SUBROUTINES CALLED----------------------------------------- SNOWPR1A.60
EXTERNAL V_INT_Z SNOWPR1A.61
C*---------------------------------------------------------------------- SNOWPR1A.62
C SNOWPR1A.63
*CALL C_R_CP
SNOWPR1A.64
*CALL C_G
SNOWPR1A.65
C SNOWPR1A.66
C*L--------------------------------------------------------------------- SNOWPR1A.67
C DEFINE LOCAL VARIABLES SNOWPR1A.68
C----------------------------------------------------------------------- SNOWPR1A.69
INTEGER SNOWPR1A.70
* I ! Loop counter SNOWPR1A.71
*, EDGE ! Highest height at which snow prob will be calculated SNOWPR1A.72
C*---------------------------------------------------------------------- SNOWPR1A.73
CL 1. Calculate height of surface at pressure of 100000Pa SNOWPR1A.74
C----------------------------------------------------------------------- SNOWPR1A.75
DO I=START,END GSM1F405.442
PRESSURE(I)=100000. SNOWPR1A.77
ENDDO SNOWPR1A.78
C----------------------------------------------------------------------- SNOWPR1A.81
CALL V_INT_Z
(PRESSURE,P(1,Z_REF),PSTAR,P_EXNER_HALF,THETA,Q, SNOWPR1A.82
& MODEL_HALF_HEIGHT,Z_100000,P_FIELD,P_LEVELS,Q_LEVELS, SNOWPR1A.83
& Z_REF,AKH,BKH,START,END) GSM1F405.443
C----------------------------------------------------------------------- SNOWPR1A.85
CL 2. Calculate height of surface at pressure of 85000Pa SNOWPR1A.86
C----------------------------------------------------------------------- SNOWPR1A.87
DO I=START,END GSM1F405.444
PRESSURE(I)=85000. SNOWPR1A.89
ENDDO SNOWPR1A.90
C----------------------------------------------------------------------- SNOWPR1A.92
CALL V_INT_Z
(PRESSURE,P(1,Z_REF),PSTAR,P_EXNER_HALF,THETA,Q, SNOWPR1A.93
& MODEL_HALF_HEIGHT,Z_85000,P_FIELD,P_LEVELS,Q_LEVELS, SNOWPR1A.94
& Z_REF,AKH,BKH,START,END) GSM1F405.445
C----------------------------------------------------------------------- SNOWPR1A.98
CL 3. Calculate the snow probability in % SNOWPR1A.99
C----------------------------------------------------------------------- SNOWPR1A.100
EDGE=1.E8 SNOWPR1A.101
DO I=START,END GSM1F405.446
IF (Z_100000(I).LE.EDGE) THEN SNOWPR1A.103
SNPROB(I)=4.*(1305.-(Z_85000(I)-.96666*Z_100000(I))) SNOWPR1A.104
ELSE SNOWPR1A.105
SNPROB(I)=0. SNOWPR1A.106
ENDIF SNOWPR1A.107
IF (SNPROB(I).LE.0.) SNPROB(I)=0. SNOWPR1A.108
IF (SNPROB(I).GE.100.) SNPROB(I)=100. SNOWPR1A.109
ENDDO SNOWPR1A.110
C----------------------------------------------------------------------- SNOWPR1A.111
RETURN SNOWPR1A.112
END SNOWPR1A.113
*ENDIF SNOWPR1A.114