*IF DEF,A70_1A,OR,DEF,A70_1B APB4F405.9 *IF DEF,A01_3A,OR,DEF,A02_3A CADEN3A.2 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.13127 C GTS2F400.13128 C Use, duplication or disclosure of this code is subject to the GTS2F400.13129 C restrictions as set forth in the contract. GTS2F400.13130 C GTS2F400.13131 C Meteorological Office GTS2F400.13132 C London Road GTS2F400.13133 C BRACKNELL GTS2F400.13134 C Berkshire UK GTS2F400.13135 C RG12 2SZ GTS2F400.13136 C GTS2F400.13137 C If no contract has been raised with this copy of the code, the use, GTS2F400.13138 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.13139 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.13140 C Modelling at the above address. GTS2F400.13141 C ******************************COPYRIGHT****************************** GTS2F400.13142 C GTS2F400.13143 !+ Subroutine to calculate densities. CADEN3A.3 ! CADEN3A.4 ! Method: CADEN3A.5 ! This routine calculates the density of air and the molar CADEN3A.6 ! densities of the broadening species for the self and foreign- CADEN3A.7 ! broadened continua using the gas law including the effect CADEN3A.8 ! of water vapour. CADEN3A.9 ! CADEN3A.10 ! Current Owner of Code: J. M. Edwards CADEN3A.11 ! CADEN3A.12 ! History: CADEN3A.13 ! Version Date Comment CADEN3A.14 ! 4.0 27-07-95 Original Code CADEN3A.15 ! (J. M. Edwards) CADEN3A.16 ! CADEN3A.17 ! Description of Code: CADEN3A.18 ! FORTRAN 77 with extensions listed in documentation. CADEN3A.19 ! CADEN3A.20 !- --------------------------------------------------------------------- CADEN3A.21SUBROUTINE CALCULATE_DENSITY(N_PROFILE, N_LAYER, L_CONTINUUM 1CADEN3A.22 & , WATER_FRAC, P, T, I_TOP CADEN3A.23 & , DENSITY, MOLAR_DENSITY_WATER, MOLAR_DENSITY_FRN CADEN3A.24 & , NPD_PROFILE, NPD_LAYER CADEN3A.25 & ) CADEN3A.26 ! CADEN3A.27 ! CADEN3A.28 IMPLICIT NONE CADEN3A.29 ! CADEN3A.30 ! CADEN3A.31 ! SIZES OF DUMMY ARRAYS. CADEN3A.32 INTEGER !, INTENT(IN) CADEN3A.33 & NPD_PROFILE CADEN3A.34 ! MAXIMUM NUMBER OF PROFILES CADEN3A.35 & , NPD_LAYER CADEN3A.36 ! MAXIMUM NUMBER OF LAYERS CADEN3A.37 ! CADEN3A.38 ! INCLUDE COMDECKS CADEN3A.39 *CALL C_R_CP
CADEN3A.40 *CALL C_EPSLON
CADEN3A.41 *CALL PHYCN03A
CADEN3A.42 ! CADEN3A.43 ! DUMMY ARGUMENTS. CADEN3A.44 INTEGER !, INTENT(IN) CADEN3A.45 & N_PROFILE CADEN3A.46 ! NUMBER OF PROFILES CADEN3A.47 & , N_LAYER CADEN3A.48 ! NUMBER OF LAYERS CADEN3A.49 & , I_TOP CADEN3A.50 ! TOP VERTICAL INDEX CADEN3A.51 LOGICAL CADEN3A.52 & L_CONTINUUM CADEN3A.53 ! CONTINUUM FLAG CADEN3A.54 REAL !, INTENT(IN) CADEN3A.55 & WATER_FRAC(NPD_PROFILE, 0: NPD_LAYER) CADEN3A.56 ! MASS FRACTION OF WATER CADEN3A.57 & , P(NPD_PROFILE, 0: NPD_LAYER) CADEN3A.58 ! PRESSURE CADEN3A.59 & , T(NPD_PROFILE, 0: NPD_LAYER) CADEN3A.60 ! TEMPERATURE CADEN3A.61 REAL !, INTENT(OUT) CADEN3A.62 & DENSITY(NPD_PROFILE, 0: NPD_LAYER) CADEN3A.63 ! AIR DENSITY CADEN3A.64 & , MOLAR_DENSITY_WATER(NPD_PROFILE, 0: NPD_LAYER) CADEN3A.65 ! MOLAR DENSITY OF WATER CADEN3A.66 & , MOLAR_DENSITY_FRN(NPD_PROFILE, 0: NPD_LAYER) CADEN3A.67 ! MOLAR DENSITY OF FOREIGN SPECIES CADEN3A.68 ! CADEN3A.69 ! LOCAL VARIABLES. CADEN3A.70 INTEGER CADEN3A.71 & L CADEN3A.72 ! LOOP VARIABLE CADEN3A.73 & , I CADEN3A.74 ! LOOP VARIABLE CADEN3A.75 ! CADEN3A.76 ! CADEN3A.77 ! FIND THE AIR DENSITY FIRST. CADEN3A.78 DO I=I_TOP, N_LAYER CADEN3A.79 DO L=1, N_PROFILE CADEN3A.80 DENSITY(L, I)=P(L, I)/(R*T(L, I) CADEN3A.81 & *(1.0E+00+C_VIRTUAL*WATER_FRAC(L, I))) CADEN3A.82 ENDDO CADEN3A.83 ENDDO CADEN3A.84 ! CADEN3A.85 IF (L_CONTINUUM) THEN CADEN3A.86 DO I=I_TOP, N_LAYER CADEN3A.87 DO L=1, N_PROFILE CADEN3A.88 MOLAR_DENSITY_FRN(L, I)=DENSITY(L, I) CADEN3A.89 & *(1.0E+00-WATER_FRAC(L, I))/MOL_WEIGHT_AIR CADEN3A.90 MOLAR_DENSITY_WATER(L, I)=DENSITY(L, I) CADEN3A.91 & *WATER_FRAC(L, I)/(EPSILON*MOL_WEIGHT_AIR) CADEN3A.92 ENDDO CADEN3A.93 ENDDO CADEN3A.94 ENDIF CADEN3A.95 ! CADEN3A.96 ! CADEN3A.97 RETURN CADEN3A.98 END CADEN3A.99 *ENDIF DEF,A01_3A,OR,DEF,A02_3A CADEN3A.100 *ENDIF DEF,A70_1A,OR,DEF,A70_1B APB4F405.10