Changeset 1114
- Timestamp:
- Nov 20, 2013, 4:30:48 PM (11 years ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/README
r1088 r1114 1947 1947 A corresponding freedust option is added in newstart to rescale dust to acceptable values 1948 1948 before such a GCM run, although 'q=profile' could be used too. 1949 1950 == 20/11/2013 == EM 1951 - Correction: in physiq.F, move newcondens (CO2 condensation routine) so that 1952 it is the last atmospheric physical process to be computed. 1953 - Also corrected the setting of the South Pole surface temperature to 1954 CO2 condensation temperature (when obliquity < 27) to account for varying 1955 CO2 mixing ratio. This operation is now done in newcondens. -
trunk/LMDZ.MARS/libf/phymars/newcondens.F
r1047 r1114 8 8 use tracer_mod, only: noms 9 9 use surfdat_h, only: emissiv, phisfi 10 use comgeomfi_h, only: lati ! grid point latitudes (rad) 10 11 IMPLICIT NONE 11 12 c======================================================================= … … 64 65 #include "callkeys.h" 65 66 !#include "tracer.h" 67 #include "planete.h" 66 68 67 69 c----------------------------------------------------------------------- … … 126 128 REAL zt(ngrid,nlayer) 127 129 REAL zcpi 128 REAL ztcond (ngrid,nlayer+1) 129 REAL ztcondsol(ngrid) 130 REAL ztcond (ngrid,nlayer+1) ! CO2 condensation temperature (atm) 131 REAL ztcondsol(ngrid) ! CO2 condensation temperature (surface) 130 132 REAL zdiceco2(ngrid) 131 133 REAL zcondicea(ngrid,nlayer) … … 343 345 c Condensation/sublimation on the ground 344 346 c -------------------------------------- 345 c (c alcul of zcondices ,pdtsrfc)347 c (compute zcondices and pdtsrfc) 346 348 c 347 349 DO ig=1,ngrid 348 IF(ig.GT.ngrid/2+1) THEN 350 IF(lati(ig).lt.0) THEN 351 ! Southern hemisphere 349 352 icap=2 350 353 ELSE 354 ! Northern hemisphere 351 355 icap=1 352 356 ENDIF … … 636 640 637 641 END DO 642 638 643 #endif 639 644 … … 772 777 endif ! of if (bound_qco2.and.(ico2.ne.0)) then 773 778 779 #ifndef MESOSCALE 780 ! Extra special case for surface temperature tendency pdtsrfc: 781 ! we want to fix the south pole temperature to CO2 condensation temperature 782 if (caps.and.(obliquit.lt.27.)) then 783 ! check if last grid point is the south pole 784 if (abs(lati(ngrid)-(-pi/2.)).lt.1.e-5) then 785 ! NB: Updated surface pressure, at grid point 'ngrid', is 786 ! ps(ngrid)=pplev(ngrid,1)+pdpsrf(ngrid)*ptimestep 787 ! write(*,*) "newcondens: South pole: lati(ngrid)=", 788 ! & lati(ngrid) 789 ztcondsol(ngrid)= 790 & 1./(bcond-acond*log(.01*vmr_co2(ngrid,1)* 791 & (pplev(ngrid,1)+pdpsrf(ngrid)*ptimestep))) 792 pdtsrfc(ngrid)=(ztcondsol(ngrid)-ztsrf(ngrid))/ptimestep 793 endif 794 endif 795 #endif 796 774 797 return 775 798 end -
trunk/LMDZ.MARS/libf/phymars/physiq.F
r1112 r1114 1009 1009 ENDIF ! of IF(calladj) 1010 1010 1011 1012 1011 1013 c----------------------------------------------------------------------- 1012 c 6. Carbon dioxide condensation-sublimation: 1014 c 6. Specific parameterizations for tracers 1015 c: ----------------------------------------- 1016 1017 if (tracer) then 1018 1019 c 6a. Water and ice 1020 c --------------- 1021 1022 c --------------------------------------- 1023 c Water ice condensation in the atmosphere 1024 c ---------------------------------------- 1025 IF (water) THEN 1026 1027 call watercloud(ngrid,nlayer,ptimestep, 1028 & zplev,zplay,pdpsrf,zzlay, pt,pdt, 1029 & pq,pdq,zdqcloud,zdtcloud, 1030 & nq,tau,tauscaling,rdust,rice,nuice, 1031 & rsedcloud,rhocloud) 1032 1033 c Temperature variation due to latent heat release 1034 if (activice) then 1035 pdt(1:ngrid,1:nlayer) = 1036 & pdt(1:ngrid,1:nlayer) + 1037 & zdtcloud(1:ngrid,1:nlayer) 1038 endif 1039 1040 ! increment water vapour and ice atmospheric tracers tendencies 1041 pdq(1:ngrid,1:nlayer,igcm_h2o_vap) = 1042 & pdq(1:ngrid,1:nlayer,igcm_h2o_vap) + 1043 & zdqcloud(1:ngrid,1:nlayer,igcm_h2o_vap) 1044 pdq(1:ngrid,1:nlayer,igcm_h2o_ice) = 1045 & pdq(1:ngrid,1:nlayer,igcm_h2o_ice) + 1046 & zdqcloud(1:ngrid,1:nlayer,igcm_h2o_ice) 1047 1048 ! increment dust and ccn masses and numbers 1049 ! We need to check that we have Nccn & Ndust > 0 1050 ! This is due to single precision rounding problems 1051 if (microphys) then 1052 pdq(1:ngrid,1:nlayer,igcm_ccn_mass) = 1053 & pdq(1:ngrid,1:nlayer,igcm_ccn_mass) + 1054 & zdqcloud(1:ngrid,1:nlayer,igcm_ccn_mass) 1055 pdq(1:ngrid,1:nlayer,igcm_ccn_number) = 1056 & pdq(1:ngrid,1:nlayer,igcm_ccn_number) + 1057 & zdqcloud(1:ngrid,1:nlayer,igcm_ccn_number) 1058 where (pq(:,:,igcm_ccn_mass) + 1059 & ptimestep*pdq(:,:,igcm_ccn_mass) < 0.) 1060 pdq(:,:,igcm_ccn_mass) = 1061 & - pq(:,:,igcm_ccn_mass)/ptimestep + 1.e-30 1062 pdq(:,:,igcm_ccn_number) = 1063 & - pq(:,:,igcm_ccn_number)/ptimestep + 1.e-30 1064 end where 1065 where (pq(:,:,igcm_ccn_number) + 1066 & ptimestep*pdq(:,:,igcm_ccn_number) < 0.) 1067 pdq(:,:,igcm_ccn_mass) = 1068 & - pq(:,:,igcm_ccn_mass)/ptimestep + 1.e-30 1069 pdq(:,:,igcm_ccn_number) = 1070 & - pq(:,:,igcm_ccn_number)/ptimestep + 1.e-30 1071 end where 1072 endif 1073 1074 if (scavenging) then 1075 pdq(1:ngrid,1:nlayer,igcm_dust_mass) = 1076 & pdq(1:ngrid,1:nlayer,igcm_dust_mass) + 1077 & zdqcloud(1:ngrid,1:nlayer,igcm_dust_mass) 1078 pdq(1:ngrid,1:nlayer,igcm_dust_number) = 1079 & pdq(1:ngrid,1:nlayer,igcm_dust_number) + 1080 & zdqcloud(1:ngrid,1:nlayer,igcm_dust_number) 1081 where (pq(:,:,igcm_dust_mass) + 1082 & ptimestep*pdq(:,:,igcm_dust_mass) < 0.) 1083 pdq(:,:,igcm_dust_mass) = 1084 & - pq(:,:,igcm_dust_mass)/ptimestep + 1.e-30 1085 pdq(:,:,igcm_dust_number) = 1086 & - pq(:,:,igcm_dust_number)/ptimestep + 1.e-30 1087 end where 1088 where (pq(:,:,igcm_dust_number) + 1089 & ptimestep*pdq(:,:,igcm_dust_number) < 0.) 1090 pdq(:,:,igcm_dust_mass) = 1091 & - pq(:,:,igcm_dust_mass)/ptimestep + 1.e-30 1092 pdq(:,:,igcm_dust_number) = 1093 & - pq(:,:,igcm_dust_number)/ptimestep + 1.e-30 1094 end where 1095 endif ! of if scavenging 1096 1097 1098 END IF ! of IF (water) 1099 1100 c 6b. Aerosol particles 1101 c ------------------- 1102 1103 c ---------- 1104 c Dust devil : 1105 c ---------- 1106 IF(callddevil) then 1107 call dustdevil(ngrid,nlayer,nq, zplev,pu,pv,pt, tsurf,q2, 1108 & zdqdev,zdqsdev) 1109 1110 if (dustbin.ge.1) then 1111 do iq=1,nq 1112 DO l=1,nlayer 1113 DO ig=1,ngrid 1114 pdq(ig,l,iq)=pdq(ig,l,iq)+ zdqdev(ig,l,iq) 1115 ENDDO 1116 ENDDO 1117 enddo 1118 do iq=1,nq 1119 DO ig=1,ngrid 1120 dqsurf(ig,iq)= dqsurf(ig,iq) + zdqsdev(ig,iq) 1121 ENDDO 1122 enddo 1123 endif ! of if (dustbin.ge.1) 1124 1125 END IF ! of IF (callddevil) 1126 1127 c ------------- 1128 c Sedimentation : acts also on water ice 1129 c ------------- 1130 IF (sedimentation) THEN 1131 !call zerophys(ngrid*nlayer*nq, zdqsed) 1132 zdqsed(1:ngrid,1:nlayer,1:nq)=0 1133 !call zerophys(ngrid*nq, zdqssed) 1134 zdqssed(1:ngrid,1:nq)=0 1135 1136 call callsedim(ngrid,nlayer, ptimestep, 1137 & zplev,zzlev, zzlay, pt, pdt, rdust, rice, 1138 & rsedcloud,rhocloud, 1139 & pq, pdq, zdqsed, zdqssed,nq, 1140 & tau,tauscaling) 1141 1142 DO iq=1, nq 1143 DO l=1,nlayer 1144 DO ig=1,ngrid 1145 pdq(ig,l,iq)=pdq(ig,l,iq)+ zdqsed(ig,l,iq) 1146 ENDDO 1147 ENDDO 1148 ENDDO 1149 DO iq=1, nq 1150 DO ig=1,ngrid 1151 dqsurf(ig,iq)= dqsurf(ig,iq) + zdqssed(ig,iq) 1152 ENDDO 1153 ENDDO 1154 END IF ! of IF (sedimentation) 1155 1156 c Add lifted dust to tendancies after sedimentation in the LES 1157 #ifdef MESOSCALE 1158 #include "meso_inc/meso_inc_lift_les.F" 1159 #endif 1160 1161 c 1162 c 6c. Chemical species 1163 c ------------------ 1164 1165 #ifndef MESOSCALE 1166 c -------------- 1167 c photochemistry : 1168 c -------------- 1169 IF (photochem .or. thermochem) then 1170 1171 ! dust and ice surface area 1172 call surfacearea(ngrid, nlayer, ptimestep, zplay, zzlay, 1173 $ pt, pq, pdq, nq, 1174 $ rdust, rice, tau, tauscaling, 1175 $ surfdust, surfice) 1176 ! call photochemistry 1177 call calchim(ngrid,nlayer,nq, 1178 & ptimestep,zplay,zplev,pt,pdt,dist_sol,mu0, 1179 $ zzlev,zzlay,zday,pq,pdq,zdqchim,zdqschim, 1180 $ zdqcloud,zdqscloud,tauref,co2ice, 1181 $ pu,pdu,pv,pdv,surfdust,surfice) 1182 1183 ! increment values of tracers: 1184 DO iq=1,nq ! loop on all tracers; tendencies for non-chemistry 1185 ! tracers is zero anyways 1186 DO l=1,nlayer 1187 DO ig=1,ngrid 1188 pdq(ig,l,iq)=pdq(ig,l,iq)+zdqchim(ig,l,iq) 1189 ENDDO 1190 ENDDO 1191 ENDDO ! of DO iq=1,nq 1192 1193 ! add condensation tendency for H2O2 1194 if (igcm_h2o2.ne.0) then 1195 DO l=1,nlayer 1196 DO ig=1,ngrid 1197 pdq(ig,l,igcm_h2o2)=pdq(ig,l,igcm_h2o2) 1198 & +zdqcloud(ig,l,igcm_h2o2) 1199 ENDDO 1200 ENDDO 1201 endif 1202 1203 ! increment surface values of tracers: 1204 DO iq=1,nq ! loop on all tracers; tendencies for non-chemistry 1205 ! tracers is zero anyways 1206 DO ig=1,ngrid 1207 dqsurf(ig,iq)=dqsurf(ig,iq)+zdqschim(ig,iq) 1208 ENDDO 1209 ENDDO ! of DO iq=1,nq 1210 1211 ! add condensation tendency for H2O2 1212 if (igcm_h2o2.ne.0) then 1213 DO ig=1,ngrid 1214 dqsurf(ig,igcm_h2o2)=dqsurf(ig,igcm_h2o2) 1215 & +zdqscloud(ig,igcm_h2o2) 1216 ENDDO 1217 endif 1218 1219 END IF ! of IF (photochem.or.thermochem) 1220 #endif 1221 1222 c 6d. Updates 1223 c --------- 1224 1225 DO iq=1, nq 1226 DO ig=1,ngrid 1227 1228 c --------------------------------- 1229 c Updating tracer budget on surface 1230 c --------------------------------- 1231 qsurf(ig,iq)=qsurf(ig,iq)+ptimestep*dqsurf(ig,iq) 1232 1233 ENDDO ! (ig) 1234 ENDDO ! (iq) 1235 1236 endif ! of if (tracer) 1237 1238 #ifndef MESOSCALE 1239 c----------------------------------------------------------------------- 1240 c 7. THERMOSPHERE CALCULATION 1241 c----------------------------------------------------------------------- 1242 1243 if (callthermos) then 1244 call thermosphere(ngrid,nlayer,nq,zplev,zplay,dist_sol, 1245 $ mu0,ptimestep,ptime,zday,tsurf,zzlev,zzlay, 1246 & pt,pq,pu,pv,pdt,pdq, 1247 $ zdteuv,zdtconduc,zdumolvis,zdvmolvis,zdqmoldiff) 1248 1249 DO l=1,nlayer 1250 DO ig=1,ngrid 1251 dtrad(ig,l)=dtrad(ig,l)+zdteuv(ig,l) 1252 pdt(ig,l)=pdt(ig,l)+zdtconduc(ig,l) 1253 & +zdteuv(ig,l) 1254 pdv(ig,l)=pdv(ig,l)+zdvmolvis(ig,l) 1255 pdu(ig,l)=pdu(ig,l)+zdumolvis(ig,l) 1256 DO iq=1, nq 1257 pdq(ig,l,iq)=pdq(ig,l,iq)+zdqmoldiff(ig,l,iq) 1258 ENDDO 1259 ENDDO 1260 ENDDO 1261 1262 endif ! of if (callthermos) 1263 #endif 1264 1265 c----------------------------------------------------------------------- 1266 c 8. Carbon dioxide condensation-sublimation: 1267 c (should be the last atmospherical physical process to be computed) 1013 1268 c ------------------------------------------- 1014 1269 … … 1080 1335 1081 1336 1082 1083 c-----------------------------------------------------------------------1084 c 7. Specific parameterizations for tracers1085 c: -----------------------------------------1086 1087 if (tracer) then1088 1089 c 7a. Water and ice1090 c ---------------1091 1092 c ---------------------------------------1093 c Water ice condensation in the atmosphere1094 c ----------------------------------------1095 IF (water) THEN1096 1097 call watercloud(ngrid,nlayer,ptimestep,1098 & zplev,zplay,pdpsrf,zzlay, pt,pdt,1099 & pq,pdq,zdqcloud,zdtcloud,1100 & nq,tau,tauscaling,rdust,rice,nuice,1101 & rsedcloud,rhocloud)1102 1103 c Temperature variation due to latent heat release1104 if (activice) then1105 pdt(1:ngrid,1:nlayer) =1106 & pdt(1:ngrid,1:nlayer) +1107 & zdtcloud(1:ngrid,1:nlayer)1108 endif1109 1110 ! increment water vapour and ice atmospheric tracers tendencies1111 pdq(1:ngrid,1:nlayer,igcm_h2o_vap) =1112 & pdq(1:ngrid,1:nlayer,igcm_h2o_vap) +1113 & zdqcloud(1:ngrid,1:nlayer,igcm_h2o_vap)1114 pdq(1:ngrid,1:nlayer,igcm_h2o_ice) =1115 & pdq(1:ngrid,1:nlayer,igcm_h2o_ice) +1116 & zdqcloud(1:ngrid,1:nlayer,igcm_h2o_ice)1117 1118 ! increment dust and ccn masses and numbers1119 ! We need to check that we have Nccn & Ndust > 01120 ! This is due to single precision rounding problems1121 if (microphys) then1122 pdq(1:ngrid,1:nlayer,igcm_ccn_mass) =1123 & pdq(1:ngrid,1:nlayer,igcm_ccn_mass) +1124 & zdqcloud(1:ngrid,1:nlayer,igcm_ccn_mass)1125 pdq(1:ngrid,1:nlayer,igcm_ccn_number) =1126 & pdq(1:ngrid,1:nlayer,igcm_ccn_number) +1127 & zdqcloud(1:ngrid,1:nlayer,igcm_ccn_number)1128 where (pq(:,:,igcm_ccn_mass) +1129 & ptimestep*pdq(:,:,igcm_ccn_mass) < 0.)1130 pdq(:,:,igcm_ccn_mass) =1131 & - pq(:,:,igcm_ccn_mass)/ptimestep + 1.e-301132 pdq(:,:,igcm_ccn_number) =1133 & - pq(:,:,igcm_ccn_number)/ptimestep + 1.e-301134 end where1135 where (pq(:,:,igcm_ccn_number) +1136 & ptimestep*pdq(:,:,igcm_ccn_number) < 0.)1137 pdq(:,:,igcm_ccn_mass) =1138 & - pq(:,:,igcm_ccn_mass)/ptimestep + 1.e-301139 pdq(:,:,igcm_ccn_number) =1140 & - pq(:,:,igcm_ccn_number)/ptimestep + 1.e-301141 end where1142 endif1143 1144 if (scavenging) then1145 pdq(1:ngrid,1:nlayer,igcm_dust_mass) =1146 & pdq(1:ngrid,1:nlayer,igcm_dust_mass) +1147 & zdqcloud(1:ngrid,1:nlayer,igcm_dust_mass)1148 pdq(1:ngrid,1:nlayer,igcm_dust_number) =1149 & pdq(1:ngrid,1:nlayer,igcm_dust_number) +1150 & zdqcloud(1:ngrid,1:nlayer,igcm_dust_number)1151 where (pq(:,:,igcm_dust_mass) +1152 & ptimestep*pdq(:,:,igcm_dust_mass) < 0.)1153 pdq(:,:,igcm_dust_mass) =1154 & - pq(:,:,igcm_dust_mass)/ptimestep + 1.e-301155 pdq(:,:,igcm_dust_number) =1156 & - pq(:,:,igcm_dust_number)/ptimestep + 1.e-301157 end where1158 where (pq(:,:,igcm_dust_number) +1159 & ptimestep*pdq(:,:,igcm_dust_number) < 0.)1160 pdq(:,:,igcm_dust_mass) =1161 & - pq(:,:,igcm_dust_mass)/ptimestep + 1.e-301162 pdq(:,:,igcm_dust_number) =1163 & - pq(:,:,igcm_dust_number)/ptimestep + 1.e-301164 end where1165 endif ! of if scavenging1166 1167 1168 END IF ! of IF (water)1169 1170 c 7b. Aerosol particles1171 c -------------------1172 1173 c ----------1174 c Dust devil :1175 c ----------1176 IF(callddevil) then1177 call dustdevil(ngrid,nlayer,nq, zplev,pu,pv,pt, tsurf,q2,1178 & zdqdev,zdqsdev)1179 1180 if (dustbin.ge.1) then1181 do iq=1,nq1182 DO l=1,nlayer1183 DO ig=1,ngrid1184 pdq(ig,l,iq)=pdq(ig,l,iq)+ zdqdev(ig,l,iq)1185 ENDDO1186 ENDDO1187 enddo1188 do iq=1,nq1189 DO ig=1,ngrid1190 dqsurf(ig,iq)= dqsurf(ig,iq) + zdqsdev(ig,iq)1191 ENDDO1192 enddo1193 endif ! of if (dustbin.ge.1)1194 1195 END IF ! of IF (callddevil)1196 1197 c -------------1198 c Sedimentation : acts also on water ice1199 c -------------1200 IF (sedimentation) THEN1201 !call zerophys(ngrid*nlayer*nq, zdqsed)1202 zdqsed(1:ngrid,1:nlayer,1:nq)=01203 !call zerophys(ngrid*nq, zdqssed)1204 zdqssed(1:ngrid,1:nq)=01205 1206 call callsedim(ngrid,nlayer, ptimestep,1207 & zplev,zzlev, zzlay, pt, pdt, rdust, rice,1208 & rsedcloud,rhocloud,1209 & pq, pdq, zdqsed, zdqssed,nq,1210 & tau,tauscaling)1211 1212 DO iq=1, nq1213 DO l=1,nlayer1214 DO ig=1,ngrid1215 pdq(ig,l,iq)=pdq(ig,l,iq)+ zdqsed(ig,l,iq)1216 ENDDO1217 ENDDO1218 ENDDO1219 DO iq=1, nq1220 DO ig=1,ngrid1221 dqsurf(ig,iq)= dqsurf(ig,iq) + zdqssed(ig,iq)1222 ENDDO1223 ENDDO1224 END IF ! of IF (sedimentation)1225 1226 c Add lifted dust to tendancies after sedimentation in the LES1227 #ifdef MESOSCALE1228 #include "meso_inc/meso_inc_lift_les.F"1229 #endif1230 1231 c1232 c 7c. Chemical species1233 c ------------------1234 1235 #ifndef MESOSCALE1236 c --------------1237 c photochemistry :1238 c --------------1239 IF (photochem .or. thermochem) then1240 1241 ! dust and ice surface area1242 call surfacearea(ngrid, nlayer, ptimestep, zplay, zzlay,1243 $ pt, pq, pdq, nq,1244 $ rdust, rice, tau, tauscaling,1245 $ surfdust, surfice)1246 ! call photochemistry1247 call calchim(ngrid,nlayer,nq,1248 & ptimestep,zplay,zplev,pt,pdt,dist_sol,mu0,1249 $ zzlev,zzlay,zday,pq,pdq,zdqchim,zdqschim,1250 $ zdqcloud,zdqscloud,tauref,co2ice,1251 $ pu,pdu,pv,pdv,surfdust,surfice)1252 1253 ! increment values of tracers:1254 DO iq=1,nq ! loop on all tracers; tendencies for non-chemistry1255 ! tracers is zero anyways1256 DO l=1,nlayer1257 DO ig=1,ngrid1258 pdq(ig,l,iq)=pdq(ig,l,iq)+zdqchim(ig,l,iq)1259 ENDDO1260 ENDDO1261 ENDDO ! of DO iq=1,nq1262 1263 ! add condensation tendency for H2O21264 if (igcm_h2o2.ne.0) then1265 DO l=1,nlayer1266 DO ig=1,ngrid1267 pdq(ig,l,igcm_h2o2)=pdq(ig,l,igcm_h2o2)1268 & +zdqcloud(ig,l,igcm_h2o2)1269 ENDDO1270 ENDDO1271 endif1272 1273 ! increment surface values of tracers:1274 DO iq=1,nq ! loop on all tracers; tendencies for non-chemistry1275 ! tracers is zero anyways1276 DO ig=1,ngrid1277 dqsurf(ig,iq)=dqsurf(ig,iq)+zdqschim(ig,iq)1278 ENDDO1279 ENDDO ! of DO iq=1,nq1280 1281 ! add condensation tendency for H2O21282 if (igcm_h2o2.ne.0) then1283 DO ig=1,ngrid1284 dqsurf(ig,igcm_h2o2)=dqsurf(ig,igcm_h2o2)1285 & +zdqscloud(ig,igcm_h2o2)1286 ENDDO1287 endif1288 1289 END IF ! of IF (photochem.or.thermochem)1290 #endif1291 1292 c 7d. Updates1293 c ---------1294 1295 DO iq=1, nq1296 DO ig=1,ngrid1297 1298 c ---------------------------------1299 c Updating tracer budget on surface1300 c ---------------------------------1301 qsurf(ig,iq)=qsurf(ig,iq)+ptimestep*dqsurf(ig,iq)1302 1303 ENDDO ! (ig)1304 ENDDO ! (iq)1305 1306 endif ! of if (tracer)1307 1308 #ifndef MESOSCALE1309 c-----------------------------------------------------------------------1310 c 8. THERMOSPHERE CALCULATION1311 c-----------------------------------------------------------------------1312 1313 if (callthermos) then1314 call thermosphere(ngrid,nlayer,nq,zplev,zplay,dist_sol,1315 $ mu0,ptimestep,ptime,zday,tsurf,zzlev,zzlay,1316 & pt,pq,pu,pv,pdt,pdq,1317 $ zdteuv,zdtconduc,zdumolvis,zdvmolvis,zdqmoldiff)1318 1319 DO l=1,nlayer1320 DO ig=1,ngrid1321 dtrad(ig,l)=dtrad(ig,l)+zdteuv(ig,l)1322 pdt(ig,l)=pdt(ig,l)+zdtconduc(ig,l)1323 & +zdteuv(ig,l)1324 pdv(ig,l)=pdv(ig,l)+zdvmolvis(ig,l)1325 pdu(ig,l)=pdu(ig,l)+zdumolvis(ig,l)1326 DO iq=1, nq1327 pdq(ig,l,iq)=pdq(ig,l,iq)+zdqmoldiff(ig,l,iq)1328 ENDDO1329 ENDDO1330 ENDDO1331 1332 endif ! of if (callthermos)1333 #endif1334 1335 1337 c----------------------------------------------------------------------- 1336 1338 c 9. Surface and sub-surface soil temperature … … 1351 1353 1352 1354 IF (tracer.AND.water.AND.(ngrid.NE.1)) THEN 1353 #ifndef MESOSCALE 1354 if (caps.and.(obliquit.lt.27.)) then 1355 !#ifndef MESOSCALE 1356 ! if (caps.and.(obliquit.lt.27.)) then => now done in newcondens 1355 1357 ! NB: Updated surface pressure, at grid point 'ngrid', is 1356 1358 ! ps(ngrid)=zplev(ngrid,1)+pdpsrf(ngrid)*ptimestep 1357 tsurf(ngrid)=1./(1./136.27-r/5.9e+5*alog(0.0095* 1358 & (zplev(ngrid,1)+pdpsrf(ngrid)*ptimestep))) 1359 endif 1360 #endif 1359 ! tsurf(ngrid)=1./(1./136.27-r/5.9e+5*alog(0.0095* 1360 ! & (zplev(ngrid,1)+pdpsrf(ngrid)*ptimestep))) 1361 ! tsurf(ngrid)=1./(1./136.27-r/5.9e+5*alog(0.0095*ps(ngrid))) 1362 ! endif 1363 !#endif 1361 1364 c ------------------------------------------------------------- 1362 1365 c Change of surface albedo in case of ground frost … … 1392 1395 ENDIF 1393 1396 1394 1395 1397 1396 1398 c-----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.