*IF DEF,A09_1A,OR,DEF,A09_2A,OR,DEF,A09_2B,OR,DEF,A18_1A ASK1F405.396 C ******************************COPYRIGHT****************************** GTS2F400.901 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.902 C GTS2F400.903 C Use, duplication or disclosure of this code is subject to the GTS2F400.904 C restrictions as set forth in the contract. GTS2F400.905 C GTS2F400.906 C Meteorological Office GTS2F400.907 C London Road GTS2F400.908 C BRACKNELL GTS2F400.909 C Berkshire UK GTS2F400.910 C RG12 2SZ GTS2F400.911 C GTS2F400.912 C If no contract has been raised with this copy of the code, the use, GTS2F400.913 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.914 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.915 C Modelling at the above address. GTS2F400.916 C ******************************COPYRIGHT****************************** GTS2F400.917 C GTS2F400.918 CLL SUBROUTINEs RH_TO_CC & CC_TO_RH------------------------------------ CLD2RH1A.3 CLL CLD2RH1A.4 CLL Purpose: calculate cloud cover (fraction) from input rh (%) CLD2RH1A.5 CLL : and vice versa CLD2RH1A.6 CLL : uses eqs P292.19 to P292.21 in UM Doc Paper 29 CLD2RH1A.7 CLL CLD2RH1A.8 CLL Model Modification History : CLD2RH1A.9 CLL version Date CLD2RH1A.10 CLL 3.3 22/12/93 Coded by Bruce Macpherson and Nigel Richards CLD2RH1A.11 CLL CLD2RH1A.12 CLL Programming Standard : UM CLD2RH1A.13 CLL CLD2RH1A.14 CLL Project Task : P29 CLD2RH1A.15 CLL CLD2RH1A.16 CLLEND------------------------------------------------------------- CLD2RH1A.17 C CLD2RH1A.18 C----Arguments:--------------------------------------------------------- CLD2RH1A.19SUBROUTINE RH_TO_CC (RH,NPTS,RHC,CC) CLD2RH1A.20 CLD2RH1A.21 IMPLICIT NONE CLD2RH1A.22 CLD2RH1A.23 INTEGER CLD2RH1A.24 + NPTS ! IN No. of points on level. CLD2RH1A.25 CLD2RH1A.26 REAL CLD2RH1A.27 + RHC ! IN Critical relative humidity (fraction). CLD2RH1A.28 +,RH(NPTS) ! IN Rel humidity (%). CLD2RH1A.29 +,CC(NPTS) ! OUT Cloud cover (fraction). CLD2RH1A.30 CLD2RH1A.31 C---------------------------------------------------------------------- CLD2RH1A.32 C External subroutine calls NONE CLD2RH1A.33 C----------------------------------------------------------------------- CLD2RH1A.34 CLD2RH1A.35 C Local variables------------------------------------------------------ CLD2RH1A.36 REAL WRH ! Local rh (fraction) CLD2RH1A.37 CLD2RH1A.38 *CALL C_PI
CLD2RH1A.39 CLD2RH1A.40 REAL PC1,PC2,PC3 ! local constants. CLD2RH1A.41 PARAMETER ( CLD2RH1A.42 + PC1=1.060660172 ! 3/sqrt(8). CLD2RH1A.43 +,PC2=2.0*PC1 ! CLD2RH1A.44 +,PC3=PI/3.0 ! pi/3 CLD2RH1A.45 +) CLD2RH1A.46 CLD2RH1A.47 INTEGER I ! Do loop index CLD2RH1A.48 CLD2RH1A.49 DO I=1,NPTS CLD2RH1A.50 C----------------------------------------------------------------------- CLD2RH1A.51 CLL Calculate cloud fraction. CLD2RH1A.52 C----------------------------------------------------------------------- CLD2RH1A.53 C Work with rh fraction CLD2RH1A.54 WRH=0.01*RH(I) CLD2RH1A.55 C Remove any supersaturation CLD2RH1A.56 IF(WRH.GT.1.0) WRH=1.0 CLD2RH1A.57 CC(I)=0.0 CLD2RH1A.58 C For WRH<RHC (including WRH<0), CC remains zero. CLD2RH1A.59 C This treats the special MOPS rh=-85% for zero cloud cover. CLD2RH1A.60 IF(WRH.GT.RHC .AND. WRH.LT.(5.+RHC)/6.)THEN CLD2RH1A.61 CC(I)=2.*COS(PC3+ACOS( PC1*(WRH-RHC)/(1.-RHC) )/3.) CLD2RH1A.62 CC(I)=CC(I)*CC(I) CLD2RH1A.63 ENDIF CLD2RH1A.64 IF(WRH.GE.(5.+RHC)/6.)THEN CLD2RH1A.65 CC(I)=PC2*(1.-WRH)/(1.-RHC) CLD2RH1A.66 CC(I)=1.-CC(I)**(2./3.) CLD2RH1A.67 ENDIF CLD2RH1A.68 ENDDO ! end loop over points CLD2RH1A.69 CLD2RH1A.70 RETURN CLD2RH1A.71 END CLD2RH1A.72 CLD2RH1A.73 C----Arguments:--------------------------------------------------------- CLD2RH1A.74
SUBROUTINE CC_TO_RH (CC,NPTS,RHC,RH) CLD2RH1A.75 CLD2RH1A.76 IMPLICIT NONE CLD2RH1A.77 CLD2RH1A.78 INTEGER CLD2RH1A.79 + NPTS ! IN No. of points on level. CLD2RH1A.80 CLD2RH1A.81 REAL CLD2RH1A.82 + RHC ! IN Critical relative humidity (fraction). CLD2RH1A.83 +,CC(NPTS) ! IN Cloud cover (fraction). CLD2RH1A.84 +,RH(NPTS) ! OUT Rel humidity (%). CLD2RH1A.85 CLD2RH1A.86 C---------------------------------------------------------------------- CLD2RH1A.87 C External subroutine calls NONE CLD2RH1A.88 C----------------------------------------------------------------------- CLD2RH1A.89 CLD2RH1A.90 C Local variables------------------------------------------------------ CLD2RH1A.91 CLD2RH1A.92 INTEGER I ! Do loop index CLD2RH1A.93 CLD2RH1A.94 C Code in calling routine restricts CC to range 0-1 CLD2RH1A.95 C but check to be safe CLD2RH1A.96 CLD2RH1A.97 DO I=1,NPTS CLD2RH1A.98 IF (CC(I).GT.1.0) CC(I) = 1.0 CLD2RH1A.99 IF (CC(I).LT.0.0) CC(I) = 0.0 CLD2RH1A.100 CLD2RH1A.101 IF (CC(I).GT.0.5) THEN CLD2RH1A.102 C from eqn p292.21 CLD2RH1A.103 RH(I) = 1.0 - CLD2RH1A.104 & (1.-CC(I))**(3.0/2.0) * SQRT(2.0)/3.0 * (1.-RHC) CLD2RH1A.105 ELSE CLD2RH1A.106 C from eqn p292.19 CLD2RH1A.107 RH(I) = RHC + CLD2RH1A.108 & SQRT(2.0*CC(I)) * (1.0-CC(I)/3.0) * (1.-RHC) CLD2RH1A.109 ENDIF CLD2RH1A.110 RH(I) = RH(I) * 100.0 CLD2RH1A.111 END DO CLD2RH1A.112 CLD2RH1A.113 RETURN CLD2RH1A.114 END CLD2RH1A.115 *ENDIF CLD2RH1A.116