*IF DEF,A05_3C SATCAL3C.2
C ******************************COPYRIGHT****************************** SATCAL3C.3
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. SATCAL3C.4
C SATCAL3C.5
C Use, duplication or disclosure of this code is subject to the SATCAL3C.6
C restrictions as set forth in the contract. SATCAL3C.7
C SATCAL3C.8
C Meteorological Office SATCAL3C.9
C London Road SATCAL3C.10
C BRACKNELL SATCAL3C.11
C Berkshire UK SATCAL3C.12
C RG12 2SZ SATCAL3C.13
C SATCAL3C.14
C If no contract has been raised with this copy of the code, the use, SATCAL3C.15
C duplication or disclosure of it is strictly prohibited. Permission SATCAL3C.16
C to do so must first be obtained in writing from the Head of Numerical SATCAL3C.17
C Modelling at the above address. SATCAL3C.18
C ******************************COPYRIGHT****************************** SATCAL3C.19
C SATCAL3C.20
CLL SUBROUTINE SATCAL------------------------------------------------- SATCAL3C.21
CLL SATCAL3C.22
CLL PURPOSE : CALCULATES SATURATED TEMPERATURE SATCAL3C.23
CLL SATCAL3C.24
CLL SUITABLE FOR SINGLE COLUMN MODEL USE SATCAL3C.25
CLL SATCAL3C.26
CLL CODE WRITTEN FOR CRAY Y-MP BY S.BETT AND D.GREGORY AUTUMN 1991 SATCAL3C.27
CLL SATCAL3C.28
CLL MODEL MODIFICATION HISTORY: SATCAL3C.29
CLL VERSION DATE SATCAL3C.30
!LL 4.4 17/10/97 New version optimised for T3E. SATCAL3C.31
!LL Single PE optimisations D.Salmond SATCAL3C.32
CLL 4.5 Jul. 98 Kill the IBM specific lines (JCThil) AJC1F405.34
CLL SATCAL3C.33
CLL PROGRAMMING STANDARDS : UNIFIED MODEL DOCUMENTATION PAPER NO. 3 SATCAL3C.34
CLL VERSION NO. 4 DATED 5/2/92 SATCAL3C.35
CLL SATCAL3C.36
CLL SYSTEM TASK : P27 SATCAL3C.37
CLL SATCAL3C.38
CLL DOCUMENTATION : UNIFIED MODEL DOCUMENTATION PAPER 27 SATCAL3C.39
CLL SATCAL3C.40
CLLEND----------------------------------------------------------------- SATCAL3C.41
C SATCAL3C.42
C*L ARGUMENTS--------------------------------------------------------- SATCAL3C.43
C SATCAL3C.44
SUBROUTINE SATCAL (NPNTS,T,TH,PK,QS,THDDS,K,EXK,Q_K,THE_K) 10,6SATCAL3C.45
C SATCAL3C.46
IMPLICIT NONE SATCAL3C.47
C SATCAL3C.48
C----------------------------------------------------------------------- SATCAL3C.49
C MODEL CONSTANTS SATCAL3C.50
C----------------------------------------------------------------------- SATCAL3C.51
C SATCAL3C.52
*CALL C_LHEAT
SATCAL3C.53
*CALL C_R_CP
SATCAL3C.54
*CALL C_0_DG_C
SATCAL3C.55
C SATCAL3C.56
C----------------------------------------------------------------------- SATCAL3C.57
C VECTOR LENGTHS AND LOOP COUNTERS SATCAL3C.58
C----------------------------------------------------------------------- SATCAL3C.59
C SATCAL3C.60
C SATCAL3C.64
INTEGER I ! LOOP COUNTER SATCAL3C.65
C SATCAL3C.66
INTEGER IC ! LOOP COUNTER SATCAL3C.67
C SATCAL3C.68
INTEGER NPNTS ! VECTOR LENGTH SATCAL3C.69
C SATCAL3C.70
INTEGER K ! IN PRESENT MODEL LAYER SATCAL3C.71
C SATCAL3C.72
C----------------------------------------------------------------------- SATCAL3C.73
C VARIABLES WHICH ARE INPUT SATCAL3C.74
C----------------------------------------------------------------------- SATCAL3C.75
C SATCAL3C.76
REAL TH(NPNTS) ! IN POTENTIAL TEMPERATURE (K) SATCAL3C.77
C SATCAL3C.78
REAL T(NPNTS) ! IN TEMPERATURE (K) SATCAL3C.79
C SATCAL3C.80
REAL PK(NPNTS) ! IN PRESSURE OF LAYER K (PA) SATCAL3C.81
C SATCAL3C.82
REAL Q_K(NPNTS) ! IN MIXING RATIO OF LAYER K (KG/KG) SATCAL3C.83
C SATCAL3C.84
REAL EXK(NPNTS) ! IN EXNER RATIO OF LAYER K SATCAL3C.85
C SATCAL3C.86
REAL THE_K(NPNTS) ! IN ENVIRONMENTAL POTENTIAL TEMPERATURE SATCAL3C.87
! IN LAYER K SATCAL3C.88
C SATCAL3C.89
C----------------------------------------------------------------------- SATCAL3C.90
C VARIABLES WHICH ARE OUTPUT SATCAL3C.91
C----------------------------------------------------------------------- SATCAL3C.92
C SATCAL3C.93
REAL QS(NPNTS) ! OUT SATURATED SPECIFIC HUMIDITY SATCAL3C.94
! (KG/KG) SATCAL3C.95
C SATCAL3C.96
REAL THDDS(NPNTS) ! OUT SATURATED ENVIRONMENTAL SATCAL3C.97
! POTENTIAL TEMPERATURE (K) SATCAL3C.98
C----------------------------------------------------------------------- SATCAL3C.99
C VARIABLES WHICH ARE LOCALLY DEFINED SATCAL3C.100
C----------------------------------------------------------------------- SATCAL3C.101
C SATCAL3C.102
REAL TS(NPNTS) ! SATURATED TEMPERATURE (K) SATCAL3C.112
C SATCAL3C.113
REAL T_FG(NPNTS) ! TEMPERATURE FIRST GUESS (K) SATCAL3C.114
C SATCAL3C.115
REAL TH_FG(NPNTS) ! POTENTIAL TEMPERATURE FIRST GUESS (K) SATCAL3C.116
C SATCAL3C.117
REAL DQBYDT(NPNTS) ! FIRST GUESS AT MIXING RATIO INCREMENT SATCAL3C.118
! (KG/KG/K) SATCAL3C.119
C SATCAL3C.120
REAL L ! LATENT HEAT SATCAL3C.122
C SATCAL3C.123
C SATCAL3C.124
C----------------------------------------------------------------------- SATCAL3C.125
C EXTERNAL ROUTINES CALLED SATCAL3C.126
C----------------------------------------------------------------------- SATCAL3C.127
C SATCAL3C.128
EXTERNAL QSAT, DQS_DTH SATCAL3C.129
C SATCAL3C.130
C----------------------------------------------------------------------- SATCAL3C.131
C SET INITIAL FIRST GUESS TEMPERATURE AND THETA - BASED UPON SATCAL3C.132
C ENVIRONMENTAL TEMPERATURE IN LAYER K SATCAL3C.133
C----------------------------------------------------------------------- SATCAL3C.134
C SATCAL3C.135
DO I=1,NPNTS SATCAL3C.136
TH_FG(I) = THE_K(I) SATCAL3C.137
T_FG(I) = TH_FG(I)*EXK(I) SATCAL3C.138
END DO SATCAL3C.139
C SATCAL3C.140
C---------------------------------------------------------------------- SATCAL3C.141
C CALCULATE QSAT FOR INITIAL FIRST GUESS TEMPERATURE SATCAL3C.142
C---------------------------------------------------------------------- SATCAL3C.143
C SATCAL3C.144
CALL QSAT
(QS,T_FG,PK,NPNTS) SATCAL3C.145
C SATCAL3C.146
C---------------------------------------------------------------------- SATCAL3C.147
C DO TWO ITERATIONS TO FIND SATURATION POINT DUE TO EVAPORATION SATCAL3C.148
C---------------------------------------------------------------------- SATCAL3C.149
C SATCAL3C.150
DO IC=1,2 SATCAL3C.151
C SATCAL3C.152
C---------------------------------------------------------------------- SATCAL3C.153
C CALCULATE DQSAT/DT FOR FIRST GUESS TEMPERATURE SATCAL3C.154
C---------------------------------------------------------------------- SATCAL3C.155
C SATCAL3C.156
CALL DQS_DTH
(DQBYDT,K,TH_FG,QS,EXK,NPNTS) SATCAL3C.157
C SATCAL3C.158
C---------------------------------------------------------------------- SATCAL3C.159
C CALCULATE UPDATED TEMPERATURE AT SATURATION SATCAL3C.160
C---------------------------------------------------------------------- SATCAL3C.161
C SATCAL3C.162
DO I=1,NPNTS SATCAL3C.163
C SATCAL3C.164
IF (T_FG(I).GT.TM) THEN SATCAL3C.165
L=LC SATCAL3C.166
ELSE SATCAL3C.167
L=LC+LF SATCAL3C.168
END IF SATCAL3C.169
C SATCAL3C.170
THDDS(I) = (TH(I)*CP*EXK(I) - L*(QS(I)-Q_K(I)- SATCAL3C.171
* TH_FG(I)*DQBYDT(I))) / SATCAL3C.172
* (CP*EXK(I)+L*DQBYDT(I)) SATCAL3C.173
C SATCAL3C.174
C---------------------------------------------------------------------- SATCAL3C.175
C CALCULATE TEMPERATURE AT SATURATION AND UPDATE FIRST GUESS SATCAL3C.176
C---------------------------------------------------------------------- SATCAL3C.177
C SATCAL3C.178
TH_FG(I) = THDDS(I) SATCAL3C.179
T_FG(I) = TH_FG(I)*EXK(I) SATCAL3C.180
C SATCAL3C.181
END DO SATCAL3C.182
C SATCAL3C.183
C---------------------------------------------------------------------- SATCAL3C.184
C CALCULATE REVISED SATURATION MIXING RATIO AT SATURATION SATCAL3C.185
C--------------------------------------------------------------------- SATCAL3C.186
C SATCAL3C.187
CALL QSAT
(QS,T_FG,PK,NPNTS) SATCAL3C.188
C SATCAL3C.189
END DO SATCAL3C.190
C SATCAL3C.191
RETURN SATCAL3C.192
END SATCAL3C.193
C SATCAL3C.194
*ENDIF SATCAL3C.195