*IF DEF,A70_1A,OR,DEF,A70_1B                                               APB4F405.93     
*IF DEF,A01_3A,OR,DEF,A02_3A                                               SMAP3A.2      
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.13892  
C                                                                          GTS2F400.13893  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.13894  
C restrictions as set forth in the contract.                               GTS2F400.13895  
C                                                                          GTS2F400.13896  
C                Meteorological Office                                     GTS2F400.13897  
C                London Road                                               GTS2F400.13898  
C                BRACKNELL                                                 GTS2F400.13899  
C                Berkshire UK                                              GTS2F400.13900  
C                RG12 2SZ                                                  GTS2F400.13901  
C                                                                          GTS2F400.13902  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.13903  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.13904  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.13905  
C Modelling at the above address.                                          GTS2F400.13906  
C ******************************COPYRIGHT******************************    GTS2F400.13907  
C                                                                          GTS2F400.13908  
!+ Subroutine to set moist aerosol properties independent of bands.        SMAP3A.3      
!                                                                          SMAP3A.4      
! Method:                                                                  SMAP3A.5      
!       The mean relative humidities are calculated and pointers to        SMAP3A.6      
!       the lookup tables are set.                                         SMAP3A.7      
!                                                                          SMAP3A.8      
! Current Owner of Code: J. M. Edwards                                     SMAP3A.9      
!                                                                          SMAP3A.10     
! History:                                                                 SMAP3A.11     
!       Version         Date                    Comment                    SMAP3A.12     
!       4.0             27-07-95                Original Code              SMAP3A.13     
!                                               (J. M. Edwards)            SMAP3A.14     
!       4.3             17-12-96                Code extended to permit    AWO1F403.41     
!                                               use with both moist        AWO1F403.42     
!                                               and dry aerosols.          AWO1F403.43     
!                                               (J. M. Edwards)            AWO1F403.44     
!                                                                          SMAP3A.15     
! Description of Code:                                                     SMAP3A.16     
!   FORTRAN 77  with extensions listed in documentation.                   SMAP3A.17     
!                                                                          SMAP3A.18     
!- ---------------------------------------------------------------------   SMAP3A.19     

      SUBROUTINE SET_MOIST_AEROSOL_PROPERTIES(IERR                          1,1AWO1F403.45     
     &   , N_PROFILE, N_LAYER                                              AWO1F403.46     
     &   , L_LAYER, N_AEROSOL, I_AEROSOL_PARAMETRIZATION, NHUMIDITY        SMAP3A.21     
     &   , WATER_MIX_RATIO, T, P, DELTA_HUMIDITY                           SMAP3A.22     
     &   , MEAN_REL_HUMIDITY, I_HUMIDITY_POINTER                           SMAP3A.23     
     &   , NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES                     SMAP3A.24     
     &   )                                                                 SMAP3A.25     
!                                                                          SMAP3A.26     
!                                                                          SMAP3A.27     
!                                                                          SMAP3A.28     
      IMPLICIT NONE                                                        SMAP3A.29     
!                                                                          SMAP3A.30     
!                                                                          SMAP3A.31     
!     SIZES OF DUMMY ARRAYS.                                               SMAP3A.32     
      INTEGER   !, INTENT(IN)                                              SMAP3A.33     
     &     NPD_PROFILE                                                     SMAP3A.34     
!             MAXIMUM NUMBER OF PROFILES                                   SMAP3A.35     
     &   , NPD_LAYER                                                       SMAP3A.36     
!             MAXIMUM NUMBER OF LAYERS                                     SMAP3A.37     
     &   , NPD_AEROSOL_SPECIES                                             SMAP3A.38     
!             MAXIMUM NUMBER OF AEROSOLS                                   SMAP3A.39     
!                                                                          SMAP3A.40     
!     INCLUDE COMDECKS.                                                    AWO1F403.47     
*CALL ERROR3A                                                              AWO1F403.48     
*CALL AERPRM3A                                                             AWO1F403.49     
*CALL STDIO3A                                                              AWO1F403.50     
!                                                                          AWO1F403.51     
!     DUMMY ARGUMENTS.                                                     SMAP3A.41     
      INTEGER   !, INTENT(OUT)                                             AWO1F403.52     
     &     IERR                                                            AWO1F403.53     
!             ERROR FLAG                                                   AWO1F403.54     
!                                                                          AWO1F403.55     
      INTEGER   !, INTENT(IN)                                              SMAP3A.42     
     &     N_PROFILE                                                       SMAP3A.43     
!             NUMBER OF PROFILES                                           SMAP3A.44     
     &   , N_LAYER                                                         SMAP3A.45     
!             NUMBER OF LAYERS                                             SMAP3A.46     
     &   , N_AEROSOL                                                       SMAP3A.47     
!             NUMBER OF AEROSOL SPECIES                                    SMAP3A.48     
     &   , I_AEROSOL_PARAMETRIZATION(NPD_AEROSOL_SPECIES)                  SMAP3A.49     
!             PARAMETRIZATIONS OF AEROSOL                                  SMAP3A.50     
!             SPECIES                                                      SMAP3A.51     
     &   , NHUMIDITY(NPD_AEROSOL_SPECIES)                                  SMAP3A.52     
!             NUMBER OF HUMIDITY VALUES                                    SMAP3A.53     
      INTEGER   !, INTENT(OUT)                                             SMAP3A.54     
     &     I_HUMIDITY_POINTER(NPD_PROFILE, NPD_LAYER)                      SMAP3A.55     
!             POINTERS TO LOOK-UP TABLES                                   SMAP3A.56     
      LOGICAL   !, INTENT(IN)                                              SMAP3A.57     
     &     L_LAYER                                                         SMAP3A.58     
!             LAYER FLAG                                                   SMAP3A.59     
      REAL      !, INTENT(IN)                                              SMAP3A.60     
     &     WATER_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER)                      SMAP3A.61     
!             MIXING RATIO OF WATER VAPOUR                                 SMAP3A.62     
     &   , T(NPD_PROFILE, 0: NPD_LAYER)                                    SMAP3A.63     
!             TEMPERATURES                                                 SMAP3A.64     
     &   , P(NPD_PROFILE, 0: NPD_LAYER)                                    SMAP3A.65     
!             PRESSURES                                                    SMAP3A.66     
      REAL      !, INTENT(OUT)                                             SMAP3A.67     
     &     MEAN_REL_HUMIDITY(NPD_PROFILE, NPD_LAYER)                       SMAP3A.68     
!             MEAN HUMIDITIES OF LAYERS                                    SMAP3A.69     
     &   , DELTA_HUMIDITY                                                  SMAP3A.70     
!             INCREMENT IN HUMIDITY                                        SMAP3A.71     
!                                                                          SMAP3A.72     
!                                                                          SMAP3A.73     
!     LOCAL VARIABLES.                                                     SMAP3A.74     
      INTEGER                                                              SMAP3A.75     
     &     I                                                               SMAP3A.76     
!             LOOP VARIABLE                                                SMAP3A.77     
     &   , J                                                               AWO1F403.56     
!             LOOP VARIABLE                                                AWO1F403.57     
     &   , L                                                               SMAP3A.78     
!             LOOP VARIABLE                                                SMAP3A.79     
     &   , NHUMIDITY_COMMON                                                AWO1F403.58     
!             COMMON NUMBER OF HUMIDITIES FOR MOIST AEROSOLS               AWO1F403.59     
      REAL                                                                 SMAP3A.80     
     &     MIX_RATIO_SAT(NPD_PROFILE, 0: NPD_LAYER)                        SMAP3A.81     
!             SATURATED HUMIDITY MIXING RATIO                              SMAP3A.82     
!                                                                          SMAP3A.83     
!     SUBROUTINES CALLED:                                                  SMAP3A.84     
      EXTERNAL                                                             SMAP3A.85     
     &     QSAT_WAT                                                        SMAP3A.86     
!                                                                          SMAP3A.87     
!                                                                          SMAP3A.88     
!                                                                          SMAP3A.89     
!     SET UP ARRAY OF POINTERS TO INCLUDE THE EFFECTS OF HUMIDITY.         SMAP3A.90     
!     CALCULATE THE SATURATED MIXING RATIO.                                SMAP3A.91     
      DO I=1, N_LAYER                                                      SMAP3A.92     
         CALL QSAT_WAT(MIX_RATIO_SAT(1, I), T(1, I), P(1, I)               SMAP3A.93     
     &      , N_PROFILE)                                                   SMAP3A.94     
      ENDDO                                                                SMAP3A.95     
!                                                                          AWO1F403.60     
!     DETERMINE THE NUMBER OF HUMIDITIES TO BE USED FOR MOIST              AWO1F403.61     
!     AEROSOLS. THIS MUST BE THE SAME FOR ALL MOIST AEROSOLS               AWO1F403.62     
!     IN THE CURRENT VERSION OF THE CODE.                                  AWO1F403.63     
      NHUMIDITY_COMMON=0                                                   AWO1F403.64     
      DO J=1, N_AEROSOL                                                    AWO1F403.65     
         IF (I_AEROSOL_PARAMETRIZATION(J).EQ.IP_AEROSOL_PARAM_MOIST)       AWO1F403.66     
     &         THEN                                                        AWO1F403.67     
            IF (NHUMIDITY(J).GT.0) THEN                                    AWO1F403.68     
!              SET THE ACTUAL COMMON VALUE.                                AWO1F403.69     
               IF (NHUMIDITY_COMMON.EQ.0) THEN                             AWO1F403.70     
                  NHUMIDITY_COMMON=NHUMIDITY(J)                            AWO1F403.71     
               ELSE IF (NHUMIDITY(J).NE.NHUMIDITY_COMMON) THEN             AWO1F403.72     
!                 THERE IS AN INCONSISTENCY.                               AWO1F403.73     
                  WRITE(IU_ERR, '(/A)')                                    AWO1F403.74     
     &               '***ERROR: THE LOOK-UP TABLES FOR MOIST AEROSOLS '    AWO1F403.75     
     &               , 'ARE OF DIFFERENT SIZES. THIS IS NOT PERMITTED.'    AWO1F403.76     
                  IERR=I_ERR_FATAL                                         AWO1F403.77     
                  RETURN                                                   AWO1F403.78     
               ENDIF                                                       AWO1F403.79     
            ENDIF                                                          AWO1F403.80     
         ENDIF                                                             AWO1F403.81     
      ENDDO                                                                AWO1F403.82     
!     THE LOOK-UP TABLE IS ASSUMED TO BE UNIFORM IN HUMIDITY.              SMAP3A.96     
      DELTA_HUMIDITY=1.0E+00/(REAL(NHUMIDITY_COMMON)-1.0E+00)              AWO1F403.83     
      DO I=1, N_LAYER                                                      SMAP3A.98     
         DO L=1, N_PROFILE                                                 SMAP3A.99     
            MEAN_REL_HUMIDITY(L, I)                                        SMAP3A.100    
     &         =WATER_MIX_RATIO(L, I)*(1.0E+00-MIX_RATIO_SAT(L, I))        SMAP3A.101    
     &         /((1.0E+00-WATER_MIX_RATIO(L, I))*MIX_RATIO_SAT(L, I))      SMAP3A.102    
!           CHECK THAT THE MEAN RELATIVE HUMIDITY                          AWO1F403.84     
!           DOES NOT EXCEED OR EQUAL 1.0.                                  AWO1F403.85     
            MEAN_REL_HUMIDITY(L, I)=MIN(MEAN_REL_HUMIDITY(L, I)            AWO1F403.86     
     &        , 0.99999)                                                   AWO1F403.87     
            I_HUMIDITY_POINTER(L, I)=1                                     SMAP3A.103    
     &         +INT(MEAN_REL_HUMIDITY(L, I)*(NHUMIDITY_COMMON-1))          AWO1F403.88     
         ENDDO                                                             SMAP3A.105    
      ENDDO                                                                SMAP3A.106    
!                                                                          SMAP3A.107    
!                                                                          SMAP3A.108    
!                                                                          AWO1F403.89     
                                                                           AWO1F403.90     
      RETURN                                                               SMAP3A.109    
      END                                                                  SMAP3A.110    
*ENDIF DEF,A01_3A,OR,DEF,A02_3A                                            SMAP3A.111    
*ENDIF DEF,A70_1A,OR,DEF,A70_1B                                            APB4F405.94