*IF DEF,A70_1A ADB1F402.1 *IF DEF,A01_3A,OR,DEF,A02_3A AGFX3A.2 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.13059 C GTS2F400.13060 C Use, duplication or disclosure of this code is subject to the GTS2F400.13061 C restrictions as set forth in the contract. GTS2F400.13062 C GTS2F400.13063 C Meteorological Office GTS2F400.13064 C London Road GTS2F400.13065 C BRACKNELL GTS2F400.13066 C Berkshire UK GTS2F400.13067 C RG12 2SZ GTS2F400.13068 C GTS2F400.13069 C If no contract has been raised with this copy of the code, the use, GTS2F400.13070 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.13071 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.13072 C Modelling at the above address. GTS2F400.13073 C ******************************COPYRIGHT****************************** GTS2F400.13074 C GTS2F400.13075 !+ Subroutine to increment a sum of fluxes. AGFX3A.3 ! AGFX3A.4 ! Method: AGFX3A.5 ! The arrays holding the summed fluxes are incremented AGFX3A.6 ! by a weighted sum of the variables suffixed with _INCR. AGFX3A.7 ! Arguments specify which arrays are to be incremented. AGFX3A.8 ! AGFX3A.9 ! Current Owner of Code: J. M. Edwards AGFX3A.10 ! AGFX3A.11 ! History: AGFX3A.12 ! Version Date Comment AGFX3A.13 ! 4.0 27-07-95 Original Code AGFX3A.14 ! (J. M. Edwards) AGFX3A.15 ! AGFX3A.16 ! Description of Code: AGFX3A.17 ! FORTRAN 77 with extensions listed in documentation. AGFX3A.18 ! AGFX3A.19 !- --------------------------------------------------------------------- AGFX3A.20SUBROUTINE AUGMENT_FLUX(N_PROFILE, N_LAYER, N_AUGMENT 7AGFX3A.21 & , ISOLIR, L_CLEAR AGFX3A.22 & , WEIGHT_INCR AGFX3A.23 & , FLUX_DIRECT, FLUX_TOTAL AGFX3A.24 & , FLUX_DIRECT_INCR, FLUX_TOTAL_INCR AGFX3A.25 & , FLUX_DIRECT_CLEAR, FLUX_TOTAL_CLEAR AGFX3A.26 & , FLUX_DIRECT_INCR_CLEAR, FLUX_TOTAL_INCR_CLEAR AGFX3A.27 & , NPD_PROFILE, NPD_LAYER AGFX3A.28 & ) AGFX3A.29 ! AGFX3A.30 ! AGFX3A.31 IMPLICIT NONE AGFX3A.32 ! AGFX3A.33 ! AGFX3A.34 ! SIZES OF DUMMY ARRAYS. AGFX3A.35 INTEGER !, INTENT(IN) AGFX3A.36 & NPD_PROFILE AGFX3A.37 ! MAXIMUM NUMBER OF PROFILES AGFX3A.38 & , NPD_LAYER AGFX3A.39 ! MAXIMUM NUMBER OF LAYERS AGFX3A.40 ! AGFX3A.41 ! INCLUDE COMDECKS AGFX3A.42 *CALL SPCRG3A
AGFX3A.43 ! AGFX3A.44 ! DUMMY ARGUMENTS. AGFX3A.45 INTEGER !, INTENT(IN) AGFX3A.46 & N_PROFILE AGFX3A.47 ! NUMBER OF PROFILES AGFX3A.48 & , N_LAYER AGFX3A.49 ! NUMBER OF LAYERS AGFX3A.50 & , N_AUGMENT AGFX3A.51 ! LENGTH OF VECTOR TO AUGMENT AGFX3A.52 & , ISOLIR AGFX3A.53 ! SPECTRAL REGION AGFX3A.54 LOGICAL !, INTENT(IN) AGFX3A.55 & L_CLEAR AGFX3A.56 ! CLEAR FLUXES CALCULATED AGFX3A.57 REAL !, INTENT(IN) AGFX3A.58 & WEIGHT_INCR AGFX3A.59 ! WEIGHT TO APPLY TO FLUXES AGFX3A.60 & , FLUX_DIRECT_INCR(NPD_PROFILE, 0: NPD_LAYER) AGFX3A.61 ! DIRECT FLUX IN BAND AGFX3A.62 & , FLUX_TOTAL_INCR(NPD_PROFILE, 2*NPD_LAYER+2) AGFX3A.63 ! TOTAL FLUX IN BAND AGFX3A.64 & , FLUX_DIRECT_INCR_CLEAR(NPD_PROFILE, 0: NPD_LAYER) AGFX3A.65 ! CLEAR DIRECT FLUX IN BAND AGFX3A.66 & , FLUX_TOTAL_INCR_CLEAR(NPD_PROFILE, 2*NPD_LAYER+2) AGFX3A.67 ! CLEAR TOTAL FLUX IN BAND AGFX3A.68 REAL !, INTENT(INOUT) AGFX3A.69 & FLUX_DIRECT(NPD_PROFILE, 0: NPD_LAYER) AGFX3A.70 ! DIRECT FLUX AGFX3A.71 & , FLUX_TOTAL(NPD_PROFILE, 2*NPD_LAYER+2) AGFX3A.72 ! TOTAL FLUX AGFX3A.73 & , FLUX_DIRECT_CLEAR(NPD_PROFILE, 0: NPD_LAYER) AGFX3A.74 ! CLEAR DIRECT FLUX AGFX3A.75 & , FLUX_TOTAL_CLEAR(NPD_PROFILE, 2*NPD_LAYER+2) AGFX3A.76 ! CLEAR TOTAL FLUX AGFX3A.77 ! AGFX3A.78 ! LOCAL ARGUMENTS. AGFX3A.79 INTEGER AGFX3A.80 & I AGFX3A.81 ! LOOP VARIABLE AGFX3A.82 & , L AGFX3A.83 ! LOOP VARIABLE AGFX3A.84 ! AGFX3A.85 ! AGFX3A.86 ! INCREMENT THE ACTUAL FLUXES. AGFX3A.87 IF (ISOLIR.EQ.IP_SOLAR) THEN AGFX3A.88 DO I=0, N_LAYER AGFX3A.89 DO L=1, N_PROFILE AGFX3A.90 FLUX_DIRECT(L, I)=FLUX_DIRECT(L, I) AGFX3A.91 & +WEIGHT_INCR*FLUX_DIRECT_INCR(L, I) AGFX3A.92 ENDDO AGFX3A.93 ENDDO AGFX3A.94 ENDIF AGFX3A.95 DO I=1, N_AUGMENT AGFX3A.96 DO L=1, N_PROFILE AGFX3A.97 FLUX_TOTAL(L, I)=FLUX_TOTAL(L, I) AGFX3A.98 & +WEIGHT_INCR*FLUX_TOTAL_INCR(L, I) AGFX3A.99 ENDDO AGFX3A.100 ENDDO AGFX3A.101 ! AGFX3A.102 IF (L_CLEAR) THEN AGFX3A.103 IF (ISOLIR.EQ.IP_SOLAR) THEN AGFX3A.104 DO I=0, N_LAYER AGFX3A.105 DO L=1, N_PROFILE AGFX3A.106 FLUX_DIRECT_CLEAR(L, I)=FLUX_DIRECT_CLEAR(L, I) AGFX3A.107 & +WEIGHT_INCR*FLUX_DIRECT_INCR_CLEAR(L, I) AGFX3A.108 ENDDO AGFX3A.109 ENDDO AGFX3A.110 ENDIF AGFX3A.111 DO I=1, N_AUGMENT AGFX3A.112 DO L=1, N_PROFILE AGFX3A.113 FLUX_TOTAL_CLEAR(L, I)=FLUX_TOTAL_CLEAR(L, I) AGFX3A.114 & +WEIGHT_INCR*FLUX_TOTAL_INCR_CLEAR(L, I) AGFX3A.115 ENDDO AGFX3A.116 ENDDO AGFX3A.117 ENDIF AGFX3A.118 ! AGFX3A.119 ! AGFX3A.120 RETURN AGFX3A.121 END AGFX3A.122 *ENDIF DEF,A01_3A,OR,DEF,A02_3A AGFX3A.123 *ENDIF DEF,A70_1A ADB1F402.2