*IF DEF,A70_1A,OR,DEF,A70_1B APB4F405.85 *IF DEF,A01_3A,OR,DEF,A02_3A SCLGE3A.2 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.13858 C GTS2F400.13859 C Use, duplication or disclosure of this code is subject to the GTS2F400.13860 C restrictions as set forth in the contract. GTS2F400.13861 C GTS2F400.13862 C Meteorological Office GTS2F400.13863 C London Road GTS2F400.13864 C BRACKNELL GTS2F400.13865 C Berkshire UK GTS2F400.13866 C RG12 2SZ GTS2F400.13867 C GTS2F400.13868 C If no contract has been raised with this copy of the code, the use, GTS2F400.13869 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.13870 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.13871 C Modelling at the above address. GTS2F400.13872 C ******************************COPYRIGHT****************************** GTS2F400.13873 C GTS2F400.13874 !+ Subroutine to set geometry of clouds. SCLGE3A.3 ! SCLGE3A.4 ! Method: SCLGE3A.5 ! For use in multi-column mode arrays are set for each layer SCLGE3A.6 ! pointing to profiles which have non-negligible clear or SCLGE3A.7 ! cloudy fractions. The topmost cloudy layers are also SCLGE3A.8 ! detected. SCLGE3A.9 ! SCLGE3A.10 ! Current Owner of Code: J. M. Edwards SCLGE3A.11 ! SCLGE3A.12 ! History: SCLGE3A.13 ! Version Date Comment SCLGE3A.14 ! 4.0 27-07-95 Original Code SCLGE3A.15 ! (J. M. Edwards) SCLGE3A.16 ! 4.2 Nov. 96 T3E migration: CALL WHENFGT,WHENFLE GSS2F402.91 ! replaced by portable fortran code. GSS2F402.92 ! S.J.Swarbrick GSS2F402.93 ! SCLGE3A.17 ! Description of Code: SCLGE3A.18 ! FORTRAN 77 with extensions listed in documentation. SCLGE3A.19 ! SCLGE3A.20 !- --------------------------------------------------------------------- SCLGE3A.21SUBROUTINE SET_CLOUD_GEOMETRY(N_PROFILE, N_LAYER 1SCLGE3A.22 & , L_GLOBAL_CLOUD_TOP, N_CLOUD_TOP_GLOBAL ADB1F402.914 & , W_CLOUD SCLGE3A.23 & , N_CLOUD_PROFILE, I_CLOUD_PROFILE SCLGE3A.24 & , N_CLOUD_TOP SCLGE3A.25 & , N_FREE_PROFILE, I_FREE_PROFILE SCLGE3A.26 & , NPD_PROFILE, NPD_LAYER SCLGE3A.27 & ) SCLGE3A.28 ! SCLGE3A.29 ! SCLGE3A.30 ! SCLGE3A.31 IMPLICIT NONE SCLGE3A.32 ! SCLGE3A.33 ! SCLGE3A.34 ! SIZES OF DUMMY ARRAYS. SCLGE3A.35 INTEGER !, INTENT(IN) SCLGE3A.36 & NPD_PROFILE SCLGE3A.37 ! MAXIMUM NUMBER OF PROFILES SCLGE3A.38 & , NPD_LAYER SCLGE3A.39 ! MAXIMUM NUMBER OF LAYERS SCLGE3A.40 ! INCLUDE COMDECKS. SCLGE3A.41 *CALL PRMCH3A
SCLGE3A.42 *CALL PRECSN3A
SCLGE3A.43 ! SCLGE3A.44 ! DUMMY ARGUMENTS. SCLGE3A.45 INTEGER !, INTENT(IN) SCLGE3A.46 & N_PROFILE SCLGE3A.47 ! NUMBER OF PROFILES SCLGE3A.48 & , N_LAYER SCLGE3A.49 ! NUMBER OF LAYERS SCLGE3A.50 LOGICAL !, INTENT(IN) ADB1F402.915 & L_GLOBAL_CLOUD_TOP ADB1F402.916 ! FLAG TO USE A GLOBAL VALUE FOR THE TOPS OF CLOUDS ADB1F402.917 INTEGER !, INTENT(IN) ADB1F402.918 & N_CLOUD_TOP_GLOBAL ADB1F402.919 ! GLOBAL TOPMOST CLOUDY LAYER ADB1F402.920 ! ADB1F402.921 INTEGER !, INTENT(OUT) SCLGE3A.51 & N_CLOUD_TOP SCLGE3A.52 ! TOPMOST CLOUDY LAYER SCLGE3A.53 & , N_FREE_PROFILE(NPD_LAYER) SCLGE3A.54 ! NUMBER OF FREE PROFILES SCLGE3A.55 & , I_FREE_PROFILE(NPD_PROFILE, NPD_LAYER) SCLGE3A.56 ! CLOUD-FREE PROFILES SCLGE3A.57 & , N_CLOUD_PROFILE(NPD_LAYER) SCLGE3A.58 ! NUMBER OF CLOUDY PROFILES SCLGE3A.59 & , I_CLOUD_PROFILE(NPD_PROFILE, NPD_LAYER) SCLGE3A.60 ! PROFILES CONTAINING CLOUDS SCLGE3A.61 REAL !, INTENT(IN) SCLGE3A.62 & W_CLOUD(NPD_PROFILE, NPD_LAYER) SCLGE3A.63 ! AMOUNTS OF CLOUD SCLGE3A.64 ! SCLGE3A.65 ! SCLGE3A.66 ! LOCAL VARIABLES. SCLGE3A.67 INTEGER SCLGE3A.68 & I,J,L GSS2F402.94 ! LOOP VARIABLE SCLGE3A.70 ! SCLGE3A.71 ! SCLGE3A.72 ! SUBROUTINES CALLED: SCLGE3A.73 ! SCLGE3A.76 ! SCLGE3A.77 ! SCLGE3A.78 DO I=1, N_LAYER SCLGE3A.79 ! GSS2F402.97 J =1 GSS2F402.98 N_CLOUD_PROFILE(I)=0 GSS2F402.99 DO L =1,N_PROFILE GSS2F402.100 IF (W_CLOUD(L,I).GT.TOL_TEST) THEN GSS2F402.101 I_CLOUD_PROFILE(J,I)=L GSS2F402.102 J =J+1 GSS2F402.103 N_CLOUD_PROFILE( I)=N_CLOUD_PROFILE(I)+1 GSS2F402.104 END IF GSS2F402.105 END DO GSS2F402.106 ! GSS2F402.107 ! GSS2F402.110 J =1 GSS2F402.111 N_FREE_PROFILE(I)=0 GSS2F402.112 DO L =1,N_PROFILE GSS2F402.113 IF (W_CLOUD(L,I).LE.TOL_TEST) THEN GSS2F402.114 I_FREE_PROFILE(J,I)=L GSS2F402.115 J =J+1 GSS2F402.116 N_FREE_PROFILE( I)=N_FREE_PROFILE(I)+1 GSS2F402.117 END IF GSS2F402.118 END DO GSS2F402.119 ! GSS2F402.120 ENDDO SCLGE3A.84 ! SCLGE3A.85 IF (L_GLOBAL_CLOUD_TOP) THEN ADB1F402.922 N_CLOUD_TOP=N_CLOUD_TOP_GLOBAL ADB1F402.923 ELSE ADB1F402.924 N_CLOUD_TOP=1 ADB1F402.925 DO WHILE ( (N_CLOUD_TOP.LT.N_LAYER).AND. ADB1F402.926 & (N_CLOUD_PROFILE(N_CLOUD_TOP).EQ.0) ) ADB1F402.927 N_CLOUD_TOP=N_CLOUD_TOP+1 ADB1F402.928 ENDDO ADB1F402.929 ENDIF ADB1F402.930 ! SCLGE3A.93 ! SCLGE3A.94 ! SCLGE3A.95 RETURN SCLGE3A.96 END SCLGE3A.97 *ENDIF DEF,A01_3A,OR,DEF,A02_3A SCLGE3A.98 *ENDIF DEF,A70_1A,OR,DEF,A70_1B APB4F405.86