File indexing completed on 2018-03-02 18:37:27 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
d676f916b2 Jean*0001 #include "AIM_OPTIONS.h"
0002
0003 SUBROUTINE VDIFSC (dpFac,SE,RH,QA,QSAT,
0004 O TTENVD,QTENVD,
0005 I kGrd,bi,bj,myThid)
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035 IMPLICIT NONE
0036
0037
0038
0039
0040 #include "AIM_SIZE.h"
0041
0042 #include "EEPARAMS.h"
0043
0044
0045 #include "com_physcon.h"
0046
0047
0048 #include "com_vdicon.h"
0049
0050
0051
0052 _RL dpFac(NGP,NLEV)
0053 _RL SE(NGP,NLEV), RH(NGP,NLEV), QA(NGP,NLEV), QSAT(NGP,NLEV)
0054
0055
0056
0057 _RL TTENVD(NGP,NLEV), QTENVD(NGP,NLEV)
0058
0059 INTEGER kGrd(NGP)
0060 INTEGER bi,bj,myThid
0061
0062 #ifdef ALLOW_AIM
0063
0064
0065 INTEGER J, K, Ktmp, NL1
0066 _RL RSIG(NLEV)
0067 _RL dSEdp(NGP,NLEV-1), DeltaPI(NLEV-1), factP
0068
0069
0070 _RL CVDI(NGP), FSHCQ
0071 _RL DRH0, DRH, DMSE, FLUXSE, FLUXQ
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090 DO J=1,NGP
0091 NL1 = kGrd(J)-1
0092 CVDI(J) = 0.
0093 IF (NL1.GE.2) THEN
0094 CVDI(J) = (SIGH(NL1)-SIGH(1))/((NL1-1)*3600. _d 0)
0095 ENDIF
0096 ENDDO
0097
0098 DO K=1,NLEV
0099 RSIG(K)=1./DSIG(K)
0100 ENDDO
0101
0102 DO K=1,NLEV
0103 DO J=1,NGP
0104
0105
0106 TTENVD(J,K) = 0.
0107 QTENVD(J,K) = 0.
0108 ENDDO
0109 ENDDO
0110
0111
0112
0113
0114
0115
0116 DO K=1,NLEV-1
0117 factP = CP*SIGH(K)**(RD/CP)
0118 DO J=1,NGP
0119 dSEdp(J,K)=(SE(J,K+1)-SE(J,K))*factP
0120 ENDDO
0121 DeltaPI(K) = SIG(K+1)**(RD/CP) - SIG(K)**(RD/CP)
0122 ENDDO
0123
0124
0125
0126 DO J=1,NGP
0127 Ktmp = kGrd(J)
0128 NL1 = Ktmp - 1
0129 IF (Ktmp.GE.2) THEN
0130
0131 DRH0=RHGRAD*(SIG(Ktmp)-SIG(NL1))
0132 FSHCQ = DSIG(Ktmp)*dpFac(J,Ktmp)/(TRSHC*3600. _d 0)
0133
0134
0135 DMSE = dSEdp(J,NL1) + ALHC*(QA(J,Ktmp)-QSAT(J,NL1))
0136 DRH = RH(J,Ktmp)-RH(J,NL1)
0137
0138 IF (DMSE.GE.0.0) THEN
0139
0140
0141 FLUXSE = FSHCQ *DMSE/CP
0142 TTENVD(J,NL1) = FLUXSE*RSIG(NL1)
0143 TTENVD(J,Ktmp) =-FLUXSE*RSIG(Ktmp)
0144
0145 IF (DRH.GE.0.0) THEN
0146 FLUXQ = FSHCQ*QSAT(J,Ktmp)*DRH
0147 QTENVD(J,NL1) = FLUXQ*RSIG(NL1)
0148 QTENVD(J,Ktmp) =-FLUXQ*RSIG(Ktmp)
0149 ENDIF
0150
0151 ELSE IF (DRH.GE.DRH0) THEN
0152
0153
0154 FLUXQ = QSAT(J,NL1)*DRH*CVDI(J)/TRVDI
0155 QTENVD(J,NL1) = FLUXQ*RSIG(NL1)
0156 QTENVD(J,Ktmp) =-FLUXQ*RSIG(Ktmp)
0157
0158 ENDIF
0159
0160 ENDIF
0161 ENDDO
0162
0163
0164
0165 DO J=1,NGP
0166
0167 DO K=3,kGrd(J)-2
0168
0169 DRH0=RHGRAD*(SIG(K+1)-SIG(K))
0170
0171 DRH=RH(J,K+1)-RH(J,K)
0172
0173 IF (DRH.GE.DRH0) THEN
0174
0175 FLUXQ = QSAT(J,K)*DRH*CVDI(J)/TRVDI
0176 QTENVD(J,K) = QTENVD(J,K) +FLUXQ*RSIG(K)
0177 QTENVD(J,K+1)= QTENVD(J,K+1)-FLUXQ*RSIG(K+1)
0178 ENDIF
0179
0180 ENDDO
0181
0182 ENDDO
0183
0184
0185
0186 DO J=1,NGP
0187 DO K=1,kGrd(J)-1
0188
0189
0190 DMSE = dSEdp(J,K)
0191 & +SEGRAD*CP*DeltaPI(K)*(SE(J,K+1)+SE(J,K))*0.5 _d 0
0192
0193
0194
0195 IF (DMSE.GT.0.) THEN
0196 FLUXSE = DMSE*CVDI(J)/(TRVDS*CP)
0197 TTENVD(J,K ) = TTENVD(J,K )+FLUXSE*RSIG(K)
0198 TTENVD(J,K+1) = TTENVD(J,K+1)-FLUXSE*RSIG(K+1)
0199 ENDIF
0200
0201 ENDDO
0202 ENDDO
0203
0204
0205 #endif /* ALLOW_AIM */
0206
0207 RETURN
0208 END