File indexing completed on 2018-03-02 18:37:20 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
a27dd2281d Jean*0001 #include "AIM_OPTIONS.h"
0002 #ifdef ALLOW_LAND
0003 #include "LAND_OPTIONS.h"
0004 #endif
0005
0006
0007
0008
b3097ed02d Jean*0009 SUBROUTINE AIM_LAND2AIM(
0010 I land_frc, land_veg, grnd_alb, snowFld,
0011 U aimTld, aimSWA, aimAlb,
0012 I myTime, myIter, bi, bj, myThid )
a27dd2281d Jean*0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 IMPLICIT NONE
0027
0028
0029
0030 #include "AIM_SIZE.h"
0031
0032
0033 #include "EEPARAMS.h"
0034 #include "PARAMS.h"
0035
0036
0037 #include "AIM_PARAMS.h"
b3097ed02d Jean*0038 #include "com_forcon.h"
a27dd2281d Jean*0039
0040 #ifdef ALLOW_LAND
0041
0042 #include "LAND_SIZE.h"
0043 #include "LAND_PARAMS.h"
0044 #include "LAND_VARS.h"
0045 #endif
0046
0047
b3097ed02d Jean*0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059 _RS land_frc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0060 _RS land_veg(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0061 _RS grnd_alb(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0062 _RL snowFld(sNx,sNy)
0063 _RL aimTld(sNx,sNy)
0064 _RL aimSWA(sNx,sNy)
0065 _RL aimAlb(sNx,sNy)
a27dd2281d Jean*0066 INTEGER myIter, bi, bj, myThid
0067 _RL myTime
0068
0069
0070
0071
0072 #ifdef ALLOW_AIM
0073 #ifdef ALLOW_LAND
0074
0075
b3097ed02d Jean*0076
0077
0078
bea6259b65 Jean*0079
0080
b3097ed02d Jean*0081 INTEGER i,j,k
cb4802039f Jean*0082 INTEGER kFillW
b3097ed02d Jean*0083 _RL grd_HeatCp, mWater
0084 _RL RSD
bea6259b65 Jean*0085 _RL recip_hSnWet, recip_mSnWet
a27dd2281d Jean*0086
0087
0088
f55a588e76 Jean*0089 IF ( land_calc_grT ) THEN
a27dd2281d Jean*0090
0091 DO j=1,sNy
0092 DO i=1,sNx
b3097ed02d Jean*0093 aimTld(i,j) = land_skinT(i,j,bi,bj)+celsius2K
a27dd2281d Jean*0094 ENDDO
0095 ENDDO
0096 ELSE
0097
0098 DO k=1,land_nLev
0099 DO j=1,sNy
0100 DO i=1,sNx
b3097ed02d Jean*0101 land_groundT(i,j,k,bi,bj) = aimTld(i,j)-celsius2K
a27dd2281d Jean*0102 ENDDO
0103 ENDDO
0104 ENDDO
b3097ed02d Jean*0105 DO j=1,sNy
0106 DO i=1,sNx
0107 land_skinT(i,j,bi,bj) = land_groundT(i,j,1,bi,bj)
0108 ENDDO
0109 ENDDO
a27dd2281d Jean*0110 ENDIF
0111
f55a588e76 Jean*0112 IF (land_calc_grW) THEN
a27dd2281d Jean*0113
bea6259b65 Jean*0114 IF ( land_calc_snow ) THEN
0115
0116 recip_hSnWet = 0. _d 0
0117 IF ( hSnowWetness .NE. 0. _d 0 )
0118 & recip_hSnWet = 1. _d 0 / hSnowWetness
0119 DO j=1,sNy
0120 DO i=1,sNx
b3097ed02d Jean*0121 aimSWA(i,j) = land_groundW(i,j,1,bi,bj)
bea6259b65 Jean*0122 & + land_hSnow(i,j,bi,bj)*recip_hSnWet
c2ff084b73 Jean*0123 aimSWA(i,j) = MIN( MAX(0. _d 0, aimSWA(i,j)), 1. _d 0 )
bea6259b65 Jean*0124 ENDDO
a27dd2281d Jean*0125 ENDDO
bea6259b65 Jean*0126 ELSE
0127
0128 recip_mSnWet = 0. _d 0
0129 IF ( hSnowWetness .NE. 0. _d 0 )
0130 & recip_mSnWet = land_rhoLiqW
0131 & / (land_rhoSnow*hSnowWetness*1000. _d 0)
0132 DO j=1,sNy
0133 DO i=1,sNx
0134 aimSWA(i,j) = land_groundW(i,j,1,bi,bj)
0135 & + snowFld(i,j)*recip_mSnWet
c2ff084b73 Jean*0136 aimSWA(i,j) = MIN( MAX(0. _d 0, aimSWA(i,j)), 1. _d 0 )
bea6259b65 Jean*0137 ENDDO
0138 ENDDO
0139 ENDIF
a27dd2281d Jean*0140 ELSE
0141
cb4802039f Jean*0142 kFillW = land_nLev
0143 IF (land_calc_grT) kFillW = 1
0144 DO k=1,kFillW
a27dd2281d Jean*0145 DO j=1,sNy
0146 DO i=1,sNx
b3097ed02d Jean*0147 land_groundW(i,j,k,bi,bj) = aimSWA(i,j)
a27dd2281d Jean*0148 ENDDO
0149 ENDDO
0150 ENDDO
b3097ed02d Jean*0151
0152
0153
0154 IF ( .FALSE. ) THEN
0155 DO j=1,sNy
0156 DO i=1,sNx
0157
0158 DO k=1,land_nLev
0159 mWater = land_rhoLiqW*land_waterCap
0160 & *land_groundW(i,j,k,bi,bj)
0161 grd_HeatCp = land_heatCs + land_CpWater*mWater
0162
0163 land_enthalp(i,j,k,bi,bj) =
0164 & grd_HeatCp*land_groundT(i,j,k,bi,bj)
0165 ENDDO
0166
0167 ENDDO
0168 ENDDO
0169 ENDIF
0170
0171
0172 ENDIF
0173
0174 IF (land_calc_snow) THEN
0175
0176 IF (land_calc_alb) THEN
0177
0178 CALL LAND_ALBEDO(
0179 I land_frc, grnd_alb,
0180 O aimAlb,
0181 I bi,bj, myTime, myIter, myThid )
0182
0183 ELSE
0184
0185 RSD = 1. _d 0/SDALB
0186 DO j=1,sNy
0187 DO i=1,sNx
0188 aimAlb(i,j) = grnd_alb(i,j,bi,bj)
0189 & + MAX( 0. _d 0, ALBSN-grnd_alb(i,j,bi,bj) )
0190 & *MIN( 1. _d 0, RSD*snowFld(i,j) )
0191 ENDDO
0192 ENDDO
0193 ENDIF
0194
a27dd2281d Jean*0195 ENDIF
0196
0197
0198
0199 #endif /* ALLOW_LAND */
0200 #endif /* ALLOW_AIM */
0201
0202 RETURN
0203 END