*IF DEF,A03_7A VSHRZ7A.2
C *****************************COPYRIGHT****************************** VSHRZ7A.3
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. VSHRZ7A.4
C VSHRZ7A.5
C Use, duplication or disclosure of this code is subject to the VSHRZ7A.6
C restrictions as set forth in the contract. VSHRZ7A.7
C VSHRZ7A.8
C Meteorological Office VSHRZ7A.9
C London Road VSHRZ7A.10
C BRACKNELL VSHRZ7A.11
C Berkshire UK VSHRZ7A.12
C RG12 2SZ VSHRZ7A.13
C VSHRZ7A.14
C If no contract has been raised with this copy of the code, the use, VSHRZ7A.15
C duplication or disclosure of it is strictly prohibited. Permission VSHRZ7A.16
C to do so must first be obtained in writing from the Head of Numerical VSHRZ7A.17
C Modelling at the above address. VSHRZ7A.18
C ******************************COPYRIGHT****************************** VSHRZ7A.19
!!! SUBROUTINE VSHR_Z1------------------------------------------------ VSHRZ7A.20
!!! VSHRZ7A.21
!!! Purpose: Calculate level 1 height and windshear for use in routine VSHRZ7A.22
!!! PHYSIOL. VSHRZ7A.23
!!! VSHRZ7A.24
!!! Model Modification history: VSHRZ7A.25
!!! version Date VSHRZ7A.26
!!! 4.4 7/97 New deck for MOSES II (R. Essery) VSHRZ7A.27
!!! 4.5 Jul. 98 Kill the IBM specific lines (JCThil) AJC1F405.76
!!! VSHRZ7A.28
!!!--------------------------------------------------------------------- VSHRZ7A.29
SUBROUTINE VSHR_Z1 ( 1,5VSHRZ7A.30
& P_FIELD,U_FIELD,LTIMER, VSHRZ7A.31
& N_ROWS,FIRST_ROW,ROW_LENGTH, VSHRZ7A.33
& AKH,BKH,EXNER,PSTAR,Q,QCF,QCL,T,U_1,V_1,U_0,V_0, VSHRZ7A.35
& VSHR,Z1 VSHRZ7A.36
& ) VSHRZ7A.37
VSHRZ7A.38
IMPLICIT NONE VSHRZ7A.39
VSHRZ7A.40
INTEGER VSHRZ7A.41
& P_FIELD ! IN No. of P-points in whole grid. VSHRZ7A.42
&,U_FIELD ! IN No. of UV-points in whole grid. VSHRZ7A.43
&,N_ROWS ! IN No. of rows to be treated. VSHRZ7A.45
&,FIRST_ROW ! IN First row of data to be treated. VSHRZ7A.46
&,ROW_LENGTH ! IN No. of points in one row. VSHRZ7A.47
VSHRZ7A.49
LOGICAL VSHRZ7A.50
& LTIMER ! IN Logical switch for TIMER diags VSHRZ7A.51
VSHRZ7A.52
REAL VSHRZ7A.53
& AKH(2) ! IN Hybrid 'A' for layer 1. ABX1F405.836
&,BKH(2) ! IN Hybrid 'B' for layer 1. ABX1F405.837
&,EXNER(P_FIELD,2) ! IN Exner function. VSHRZ7A.56
&,PSTAR(P_FIELD) ! IN Surface pressure (Pascals). VSHRZ7A.57
&,Q(P_FIELD) ! IN Specific humidity (kg/kg air). VSHRZ7A.58
&,QCF(P_FIELD) ! IN Cloud ice (kg/kg air). VSHRZ7A.59
&,QCL(P_FIELD) ! IN Cloud liquid water (kg/kg air). VSHRZ7A.60
&,T(P_FIELD) ! IN Atmospheric temperature (K). VSHRZ7A.61
&,U_1(U_FIELD) ! IN W'ly wind component (m/s) VSHRZ7A.62
&,V_1(U_FIELD) ! IN S'ly wind component (m/s) VSHRZ7A.63
&,U_0(U_FIELD) ! IN W'ly component of surface VSHRZ7A.64
! ! current (m/s). VSHRZ7A.65
&,V_0(U_FIELD) ! IN S'ly component of surface VSHRZ7A.66
! ! current (m/s). VSHRZ7A.67
VSHRZ7A.68
VSHRZ7A.69
REAL VSHRZ7A.70
& VSHR(P_FIELD) ! OUT Magnitude of surface-to-lowest VSHRZ7A.71
! ! atm level wind shear (m/s). VSHRZ7A.72
&,Z1(P_FIELD) ! OUT Height of lowest level (m). VSHRZ7A.73
VSHRZ7A.74
REAL VSHRZ7A.75
& DZL(P_FIELD) ! Depth of layer 1 (m). VSHRZ7A.76
&,RDZ(P_FIELD) ! Reciprocal of the height of level 1 VSHRZ7A.77
&,TV(P_FIELD) ! Virtual temperature. VSHRZ7A.78
&,U_1_P(P_FIELD) ! U_1 on P-grid. VSHRZ7A.79
&,U_0_P(P_FIELD) ! U_0 on P-grid. VSHRZ7A.80
&,V_1_P(P_FIELD) ! V_1 on P-grid. VSHRZ7A.81
&,V_0_P(P_FIELD) ! V_0 on P-grid. VSHRZ7A.82
&,ZLB(P_FIELD,0:1) ! ZLB(,K) is the height of the upper VSHRZ7A.83
! ! boundary of layer K ( = 0 for K=0). VSHRZ7A.84
VSHRZ7A.85
REAL VSHRZ7A.86
& USHEAR ! U-component of surface-to-lowest-level wind shear. VSHRZ7A.87
&,VSHEAR ! V-component of surface-to-lowest-level wind shear. VSHRZ7A.88
&,VSHR2 ! Square of magnitude of surface-to-lowest-level VSHRZ7A.89
! ! wind shear. VSHRZ7A.90
VSHRZ7A.91
INTEGER VSHRZ7A.92
& I ! Loop counter (horizontal field index). VSHRZ7A.93
&,P1 ! First P-point to be processed. VSHRZ7A.94
&,P_POINTS ! No. of P-points being processed. VSHRZ7A.95
&,U1 ! First UV-point to be processed. VSHRZ7A.96
&,N_P_ROWS ! No. of P-rows being processed. VSHRZ7A.98
&,N_U_ROWS ! No. of UV-rows being processed. VSHRZ7A.99
&,U_POINTS ! No. of UV-points being processed. VSHRZ7A.100
VSHRZ7A.101
*IF DEF,SCMA AJC1F405.77
EXTERNAL UV_TO_P VSHRZ7A.102
*ENDIF VSHRZ7A.103
VSHRZ7A.104
EXTERNAL Z VSHRZ7A.105
VSHRZ7A.106
*IF -DEF,SCMA AJC1F405.78
N_P_ROWS = N_ROWS VSHRZ7A.108
N_U_ROWS = N_ROWS + 1 VSHRZ7A.109
P_POINTS = N_P_ROWS * ROW_LENGTH VSHRZ7A.110
U_POINTS = N_U_ROWS * ROW_LENGTH VSHRZ7A.111
P1 = 1 + (FIRST_ROW-1)*ROW_LENGTH VSHRZ7A.112
U1 = 1 + (FIRST_ROW-2)*ROW_LENGTH VSHRZ7A.113
*ELSE VSHRZ7A.114
N_P_ROWS = N_ROWS AJC1F405.79
N_U_ROWS = N_ROWS AJC1F405.80
P_POINTS = N_P_ROWS * ROW_LENGTH AJC1F405.81
U_POINTS = N_U_ROWS * ROW_LENGTH AJC1F405.82
P1 = 1 VSHRZ7A.116
U1 = 1 VSHRZ7A.117
*ENDIF VSHRZ7A.118
VSHRZ7A.119
DO I=P1,P1+P_POINTS-1 VSHRZ7A.120
ZLB(I,0)=0.0 VSHRZ7A.121
ENDDO VSHRZ7A.122
VSHRZ7A.123
CALL Z
(P_POINTS,EXNER(P1,1),EXNER(P1,2),PSTAR(P1), VSHRZ7A.124
& AKH,BKH,Q(P1),QCF(P1), VSHRZ7A.125
& QCL(P1),T(P1),ZLB(P1,0),TV(P1), VSHRZ7A.126
& ZLB(P1,1),DZL(P1),RDZ(P1),LTIMER) VSHRZ7A.127
VSHRZ7A.128
DO I=P1,P1+P_POINTS-1 VSHRZ7A.129
Z1(I)=RDZ(I) VSHRZ7A.130
ENDDO VSHRZ7A.131
VSHRZ7A.132
*IF -DEF,SCMA AJC1F405.83
CALL UV_TO_P
(U_1(U1),U_1_P(P1), VSHRZ7A.134
& U_POINTS,P_POINTS,ROW_LENGTH,N_U_ROWS) VSHRZ7A.135
CALL UV_TO_P
(V_1(U1),V_1_P(P1), VSHRZ7A.136
& U_POINTS,P_POINTS,ROW_LENGTH,N_U_ROWS) VSHRZ7A.137
CALL UV_TO_P
(U_0(U1),U_0_P(P1), VSHRZ7A.138
& U_POINTS,P_POINTS,ROW_LENGTH,N_U_ROWS) VSHRZ7A.139
CALL UV_TO_P
(V_0(U1),V_0_P(P1), VSHRZ7A.140
& U_POINTS,P_POINTS,ROW_LENGTH,N_U_ROWS) VSHRZ7A.141
*ELSE VSHRZ7A.142
DO I=P1,P1+P_POINTS-1 AJC1F405.84
U_1_P(I) = U_1(I) AJC1F405.85
V_1_P(I) = V_1(I) AJC1F405.86
U_0_P(I) = U_0(I) AJC1F405.87
V_0_P(I) = V_0(I) AJC1F405.88
ENDDO AJC1F405.89
*ENDIF VSHRZ7A.147
VSHRZ7A.148
DO I=P1,P1+P_POINTS-1 VSHRZ7A.149
USHEAR = U_1_P(I) - U_0_P(I) VSHRZ7A.150
VSHEAR = V_1_P(I) - V_0_P(I) VSHRZ7A.151
VSHR2 = MAX (1.0E-6 , USHEAR*USHEAR + VSHEAR*VSHEAR) VSHRZ7A.152
VSHR(I) = SQRT(VSHR2) VSHRZ7A.153
ENDDO VSHRZ7A.154
VSHRZ7A.155
RETURN VSHRZ7A.156
END VSHRZ7A.157
*ENDIF VSHRZ7A.158