*IF DEF,CONTROL,AND,DEF,ATMOS SETLSCL1.2
C ******************************COPYRIGHT****************************** GTS2F400.8623
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.8624
C GTS2F400.8625
C Use, duplication or disclosure of this code is subject to the GTS2F400.8626
C restrictions as set forth in the contract. GTS2F400.8627
C GTS2F400.8628
C Meteorological Office GTS2F400.8629
C London Road GTS2F400.8630
C BRACKNELL GTS2F400.8631
C Berkshire UK GTS2F400.8632
C RG12 2SZ GTS2F400.8633
C GTS2F400.8634
C If no contract has been raised with this copy of the code, the use, GTS2F400.8635
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.8636
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.8637
C Modelling at the above address. GTS2F400.8638
C ******************************COPYRIGHT****************************** GTS2F400.8639
C GTS2F400.8640
CLL SUBROUTINE SETLSCLD ---------------------------------------------- SETLSCL1.3
CLL SETLSCL1.4
CLL PURPOSE: CALLS LS_CLD TO CONVERT LIQUID WATER TEMPERATURE SETLSCL1.5
CLL AND TOTAL WATER INTO TEMPERATURE, MOISTURE, CLOUD WATER SETLSCL1.6
CLL AND CLOUD ICE. SETLSCL1.7
CLL THIS ROUTINE IS A STRIPPED DOWN VERSION OF CLD_CTL WITH SETLSCL1.8
CLL ALL OUTPUT SUPPRESSED. SETLSCL1.9
CLL SETLSCL1.10
CLL LEVEL 2 CONTROL ROUTINE SETLSCL1.11
CLL VERSION FOR CRAY YMP SETLSCL1.12
CLL SETLSCL1.13
CLL TJ CW <- PROGRAMMER OF SOME OR ALL OF PREVIOUS CODE OR CHANGES SETLSCL1.14
CLL SETLSCL1.15
CLL MODEL MODIFICATION HISTORY FROM MODEL VERSION 3.0: SETLSCL1.16
CLL VERSION DATE SETLSCL1.17
CLL 3.1 8/02/93 : added comdeck CHSUNITS to define NUNITS for RS030293.224
CLL comdeck CCONTROL. RS030293.225
!LL 3.2 27/03/93 Dynamic allocation of main data arrays. R. Rawlins AYY2F400.53
!LL 3.3 24/09/93 added P_FIELDDA and Q_LEVELSDA to argument list AYY2F400.54
!LL for portable dynamic arrays. AYY2F400.55
!LL Author : Paul Burton AYY2F400.56
!LL 4.0 22/11/94 Extra arguments Qc, bs added to GLUE_CLD argument AYY2F400.57
!LL list for output to LS_PPN routine. A.C. Bushell. AYY2F400.58
CLL 3.5 19/05/95 : Sub_model changes - removal of run time ADR1F305.207
CLL constants from dump header. D. Robinson ADR1F305.208
!LL 4.5 13/05/98 Altered call to GLUE_CLD, and ensure bit ASK1F405.102
!LL comparison in new microphysics scheme. S. Cusack ASK1F405.103
!LL 4.5 27/04/98 Add Fujitsu vectorization directive. GRB0F405.53
!LL RBarnes@ecmwf.int GRB0F405.54
CLL SETLSCL1.18
CLL PROGRAMMING STANDARD : UNIFIED MODEL DOCUMENTATION PAPER NO 3 SETLSCL1.19
CLL SETLSCL1.20
CLL SYSTEM COMPONENTS COVERED : P29 SETLSCL1.21
CLL SETLSCL1.22
CLL SYSTEM TASK : P0 SETLSCL1.23
CLL SETLSCL1.24
CLL EXTERNAL DOCUMENTATION: UMDP P0, VERSION 12 DATED (12/90) SETLSCL1.25
CLLEND ----------------------------------------------------------------- SETLSCL1.26
C*L ARGUMENTS SETLSCL1.27
SETLSCL1.28
SUBROUTINE SETLSCLD( 1,6@DYALLOC.3240
*CALL ARGSIZE
@DYALLOC.3241
*CALL ARGD1
@DYALLOC.3242
*CALL ARGDUMA
@DYALLOC.3243
*CALL ARGPTRA
@DYALLOC.3244
*CALL ARGCONA
@DYALLOC.3245
& P_FIELDDA, Q_LEVELSDA, NF171193.51
& ICODE,CMESSAGE) @DYALLOC.3246
SETLSCL1.30
IMPLICIT NONE SETLSCL1.31
SETLSCL1.32
C @DYALLOC.3247
*CALL CMAXSIZE
@DYALLOC.3248
*CALL TYPSIZE
@DYALLOC.3249
*CALL TYPD1
@DYALLOC.3250
*CALL TYPDUMA
@DYALLOC.3251
*CALL TYPPTRA
@DYALLOC.3252
*CALL TYPCONA
@DYALLOC.3253
*CALL TYPFLDPT
ASK1F405.104
C @DYALLOC.3254
INTEGER ICODE ! OUT: Error return code @DYALLOC.3255
CHARACTER*256 CMESSAGE ! OUT: Error return message @DYALLOC.3256
C @DYALLOC.3257
INTEGER P_FIELDDA, ! IN : copy of P_FIELD NF171193.52
& Q_LEVELSDA ! IN : copy of Q_LEVELS NF171193.53
REAL AYY2F400.59
& CLOUD_FRACTION(P_FIELDDA,Q_LEVELSDA) ! LOCAL Cloud fraction AYY2F400.60
& ,LS_GRID_QC(P_FIELDDA,Q_LEVELSDA) ! LOCAL Qc from LS_CLD AYY2F400.61
& ,LS_BS(P_FIELDDA,Q_LEVELSDA) ! LOCAL bs from LS_CLD AYY2F400.62
C @DYALLOC.3259
SETLSCL1.42
C --------------------- INCLUDE COMDECKS -------------------------- SETLSCL1.43
*CALL PARVARS
ASK1F405.105
*CALL CSUBMODL
GDR3F305.181
*CALL CHSUNITS
RS030293.226
*CALL CCONTROL
SETLSCL1.44
*CALL CRUNTIMC
ADR1F305.209
*CALL C_R_CP
SETLSCL1.48
SETLSCL1.49
C*L SUBROUTINES CALLED SETLSCL1.50
EXTERNAL GLUE_CLD,TIMER AYY2F400.63
& ,RHCRIT_CALC ASK1F405.106
SETLSCL1.52
C local variables SETLSCL1.53
INTEGER LEVEL,I SETLSCL1.54
& ,FIRST_POINT ASK1F405.107
& ,LAST_POINT ASK1F405.108
& ,POINTS ASK1F405.109
& ,JS ASK1F405.110
SETLSCL1.55
REAL SETLSCL1.56
& PU,PL SETLSCL1.57
*CALL P_EXNERC
SETLSCL1.58
*CALL SETFLDPT
ASK1F405.111
SETLSCL1.59
CL INTERNAL STRUCTURE: SETLSCL1.60
CL SETLSCL1.61
CL -------------SECTION 9 CLOUD AMOUNT CALCULATIONS ------------------- SETLSCL1.62
SETLSCL1.63
CL Convert potential temperature to temperature SETLSCL1.64
SETLSCL1.65
DO LEVEL=1,Q_LEVELS SETLSCL1.66
! Fujitsu vectorization directive GRB0F405.55
!OCL NOVREC GRB0F405.56
DO I=1,P_FIELD SETLSCL1.67
PU=D1(JPSTAR+I-1)*BKH(LEVEL+1) + AKH(LEVEL+1) SETLSCL1.68
PL=D1(JPSTAR+I-1)*BKH(LEVEL) + AKH(LEVEL) SETLSCL1.69
D1(JTHETA(LEVEL)+I-1)=D1(JTHETA(LEVEL)+I-1)* SETLSCL1.70
& P_EXNER_C( D1(JP_EXNER(LEVEL+1)+I-1),D1(JP_EXNER(LEVEL)+I-1), SETLSCL1.71
& PU,PL,KAPPA ) SETLSCL1.72
ENDDO SETLSCL1.73
ENDDO SETLSCL1.74
SETLSCL1.75
!L 9.1 CALL GLUE_CLD TO CALCULATE CLOUD FRACTION AND AYY2F400.64
CL CLOUD WATER/ICE CONTENT SETLSCL1.77
SETLSCL1.78
IF(LTIMER) THEN SETLSCL1.79
CALL TIMER
('LS_CLD ',3) SETLSCL1.80
END IF SETLSCL1.81
SETLSCL1.82
IF (L_RHCPT) THEN ASK1F405.112
! ASK1F405.113
! Set data field with care - do not wish to use first row of P_FIELD at ASK1F405.114
! N.Pole, nor last row at S.Pole ASK1F405.115
FIRST_POINT = FIRST_VALID_PT ASK1F405.116
LAST_POINT = LAST_P_VALID_PT ASK1F405.117
POINTS = LAST_POINT-FIRST_POINT+1 ASK1F405.118
JS = FIRST_POINT-1 ASK1F405.119
! ASK1F405.120
! A swapbounds must be performed on theta, because values in the halo ASK1F405.121
! regions do not equal the corresponding values in the adjacent PE's ASK1F405.122
! data region. RHcrit depends upon theta, so bit comparison can be ASK1F405.123
! lost unless swapbounds is called for theta. ASK1F405.124
*IF DEF,MPP ASK1F405.125
CALL SWAPBOUNDS
(D1(JTHETA(1)),ROW_LENGTH,P_ROWS,EW_Halo,NS_Halo, ASK1F405.126
& Q_LEVELS) ASK1F405.127
*ENDIF ASK1F405.128
! ASK1F405.129
! Calculate critical relative humidity for all grid points ASK1F405.130
CALL RHCRIT_CALC
( ASK1F405.131
& A_LEVDEPC(JAK),A_LEVDEPC(JBK),AKH,BKH,D1(JPSTAR+JS), ASK1F405.132
& D1(JRHC(1)+JS),Q_LEVELS,POINTS,P_FIELD, ASK1F405.133
& D1(JTHETA(1)+JS),D1(JQ(1)+JS),D1(JQCF(1)+JS), ASK1F405.134
& ROW_LENGTH,D1(JLAND+JS),D1(JICE_FRACTION+JS),BL_LEVELS) ASK1F405.135
! ASK1F405.136
*IF DEF,MPP ASK1F405.137
CALL SWAPBOUNDS
(D1(JRHC(1)),ROW_LENGTH,P_ROWS,EW_Halo,NS_Halo, ASK1F405.138
& Q_LEVELS) ASK1F405.139
*ENDIF ASK1F405.140
! ASK1F405.141
ENDIF ASK1F405.142
CALL GLUE_CLD
( AYY2F400.65
& A_LEVDEPC(JAK),A_LEVDEPC(JBK),D1(JPSTAR), SETLSCL1.84
& RHCRIT,Q_LEVELS,D1(JRHC(1)), ASK1F405.143
& P_FIELD,P_FIELD,D1(JTHETA(1)), SETLSCL1.86
& CLOUD_FRACTION,D1(JQ(1)),D1(JQCF(1)),D1(JQCL(1)), AYY2F400.66
& LS_GRID_QC,LS_BS,ICODE) AYY2F400.67
SETLSCL1.88
IF(LTIMER) THEN SETLSCL1.89
CALL TIMER
('LS_CLD ',4) SETLSCL1.90
END IF SETLSCL1.91
SETLSCL1.92
IF(ICODE.GT.0) THEN SETLSCL1.93
CMESSAGE="CLD_CTL : ERROR IN LS_CLD" SETLSCL1.94
RETURN SETLSCL1.95
END IF SETLSCL1.96
SETLSCL1.97
CL Convert temperature to potential temperature SETLSCL1.98
SETLSCL1.99
DO LEVEL=1,Q_LEVELS SETLSCL1.100
! Fujitsu vectorization directive GRB0F405.57
!OCL NOVREC GRB0F405.58
DO I=1,P_FIELD SETLSCL1.101
PU=D1(JPSTAR+I-1)*BKH(LEVEL+1) + AKH(LEVEL+1) SETLSCL1.102
PL=D1(JPSTAR+I-1)*BKH(LEVEL) + AKH(LEVEL) SETLSCL1.103
D1(JTHETA(LEVEL)+I-1)=D1(JTHETA(LEVEL)+I-1)/ SETLSCL1.104
& P_EXNER_C( D1(JP_EXNER(LEVEL+1)+I-1),D1(JP_EXNER(LEVEL)+I-1), SETLSCL1.105
& PU,PL,KAPPA ) SETLSCL1.106
ENDDO SETLSCL1.107
ENDDO SETLSCL1.108
SETLSCL1.109
RETURN SETLSCL1.110
END SETLSCL1.111
*ENDIF SETLSCL1.112