Changeset 1114


Ignore:
Timestamp:
Nov 20, 2013, 4:30:48 PM (11 years ago)
Author:
emillour
Message:

Mars GCM:

  • Correction: in physiq.F, move newcondens (CO2 condensation routine) so that it is the last atmospheric physical process to be computed.
  • Also corrected the setting of the South Pole surface temperature to CO2 condensation temperature (when obliquity < 27) to account for varying CO2 mixing ratio. This operation is now done in newcondens.

EM

Location:
trunk/LMDZ.MARS
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/README

    r1088 r1114  
    19471947  A corresponding freedust option is added in newstart to rescale dust to acceptable values
    19481948  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  
    88       use tracer_mod, only: noms
    99       use surfdat_h, only: emissiv, phisfi
     10       use comgeomfi_h, only: lati ! grid point latitudes (rad)
    1011       IMPLICIT NONE
    1112c=======================================================================
     
    6465#include "callkeys.h"
    6566!#include "tracer.h"
     67#include "planete.h"
    6668
    6769c-----------------------------------------------------------------------
     
    126128      REAL zt(ngrid,nlayer)
    127129      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)
    130132      REAL zdiceco2(ngrid)
    131133      REAL zcondicea(ngrid,nlayer)
     
    343345c      Condensation/sublimation on the ground
    344346c      --------------------------------------
    345 c      (calcul of zcondices , pdtsrfc)
     347c      (compute zcondices and pdtsrfc)
    346348c
    347349      DO ig=1,ngrid
    348          IF(ig.GT.ngrid/2+1) THEN
     350         IF(lati(ig).lt.0) THEN
     351           ! Southern hemisphere
    349352            icap=2
    350353         ELSE
     354           ! Northern hemisphere
    351355            icap=1
    352356         ENDIF
     
    636640
    637641            END DO
     642
    638643#endif
    639644
     
    772777      endif ! of if (bound_qco2.and.(ico2.ne.0)) then
    773778
     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
    774797      return
    775798      end
  • trunk/LMDZ.MARS/libf/phymars/physiq.F

    r1112 r1114  
    10091009      ENDIF ! of IF(calladj)
    10101010
     1011
     1012
    10111013c-----------------------------------------------------------------------
    1012 c   6. Carbon dioxide condensation-sublimation:
     1014c   6. Specific parameterizations for tracers
     1015c:   -----------------------------------------
     1016
     1017      if (tracer) then
     1018
     1019c   6a. Water and ice
     1020c     ---------------
     1021
     1022c        ---------------------------------------
     1023c        Water ice condensation in the atmosphere
     1024c        ----------------------------------------
     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
     1033c 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
     1100c   6b. Aerosol particles
     1101c     -------------------
     1102
     1103c        ----------
     1104c        Dust devil :
     1105c        ----------
     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
     1127c        -------------
     1128c        Sedimentation :   acts also on water ice
     1129c        -------------
     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       
     1156c 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
     1161c
     1162c   6c. Chemical species
     1163c     ------------------
     1164
     1165#ifndef MESOSCALE
     1166c        --------------
     1167c        photochemistry :
     1168c        --------------
     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
     1222c   6d. Updates
     1223c     ---------
     1224
     1225        DO iq=1, nq
     1226          DO ig=1,ngrid
     1227
     1228c       ---------------------------------
     1229c       Updating tracer budget on surface
     1230c       ---------------------------------
     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
     1239c-----------------------------------------------------------------------
     1240c   7. THERMOSPHERE CALCULATION
     1241c-----------------------------------------------------------------------
     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
     1265c-----------------------------------------------------------------------
     1266c   8. Carbon dioxide condensation-sublimation:
     1267c     (should be the last atmospherical physical process to be computed)
    10131268c   -------------------------------------------
    10141269
     
    10801335     
    10811336
    1082 
    1083 c-----------------------------------------------------------------------
    1084 c   7. Specific parameterizations for tracers
    1085 c:   -----------------------------------------
    1086 
    1087       if (tracer) then
    1088 
    1089 c   7a. Water and ice
    1090 c     ---------------
    1091 
    1092 c        ---------------------------------------
    1093 c        Water ice condensation in the atmosphere
    1094 c        ----------------------------------------
    1095          IF (water) THEN
    1096 
    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 release
    1104            if (activice) then
    1105                pdt(1:ngrid,1:nlayer) =
    1106      &          pdt(1:ngrid,1:nlayer) +
    1107      &          zdtcloud(1:ngrid,1:nlayer)
    1108            endif
    1109            
    1110 ! increment water vapour and ice atmospheric tracers tendencies
    1111            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 numbers
    1119 ! We need to check that we have Nccn & Ndust > 0
    1120 ! This is due to single precision rounding problems
    1121            if (microphys) then
    1122              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-30
    1132                pdq(:,:,igcm_ccn_number) =
    1133      &         - pq(:,:,igcm_ccn_number)/ptimestep + 1.e-30
    1134              end where
    1135              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-30
    1139                pdq(:,:,igcm_ccn_number) =
    1140      &         - pq(:,:,igcm_ccn_number)/ptimestep + 1.e-30
    1141              end where
    1142            endif
    1143 
    1144            if (scavenging) then
    1145              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-30
    1155                pdq(:,:,igcm_dust_number) =
    1156      &         - pq(:,:,igcm_dust_number)/ptimestep + 1.e-30
    1157              end where
    1158              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-30
    1162                pdq(:,:,igcm_dust_number) =
    1163      &         - pq(:,:,igcm_dust_number)/ptimestep + 1.e-30
    1164              end where
    1165            endif ! of if scavenging
    1166                      
    1167 
    1168          END IF  ! of IF (water)
    1169 
    1170 c   7b. Aerosol particles
    1171 c     -------------------
    1172 
    1173 c        ----------
    1174 c        Dust devil :
    1175 c        ----------
    1176          IF(callddevil) then
    1177            call dustdevil(ngrid,nlayer,nq, zplev,pu,pv,pt, tsurf,q2,
    1178      &                zdqdev,zdqsdev)
    1179  
    1180            if (dustbin.ge.1) then
    1181               do iq=1,nq
    1182                  DO l=1,nlayer
    1183                     DO ig=1,ngrid
    1184                        pdq(ig,l,iq)=pdq(ig,l,iq)+ zdqdev(ig,l,iq)
    1185                     ENDDO
    1186                  ENDDO
    1187               enddo
    1188               do iq=1,nq
    1189                  DO ig=1,ngrid
    1190                     dqsurf(ig,iq)= dqsurf(ig,iq) + zdqsdev(ig,iq)
    1191                  ENDDO
    1192               enddo
    1193            endif  ! of if (dustbin.ge.1)
    1194 
    1195          END IF ! of IF (callddevil)
    1196 
    1197 c        -------------
    1198 c        Sedimentation :   acts also on water ice
    1199 c        -------------
    1200          IF (sedimentation) THEN
    1201            !call zerophys(ngrid*nlayer*nq, zdqsed)
    1202            zdqsed(1:ngrid,1:nlayer,1:nq)=0
    1203            !call zerophys(ngrid*nq, zdqssed)
    1204            zdqssed(1:ngrid,1:nq)=0
    1205 
    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, nq
    1213              DO l=1,nlayer
    1214                DO ig=1,ngrid
    1215                     pdq(ig,l,iq)=pdq(ig,l,iq)+ zdqsed(ig,l,iq)
    1216                ENDDO
    1217              ENDDO
    1218            ENDDO
    1219            DO iq=1, nq
    1220              DO ig=1,ngrid
    1221                 dqsurf(ig,iq)= dqsurf(ig,iq) + zdqssed(ig,iq)
    1222              ENDDO
    1223            ENDDO
    1224          END IF   ! of IF (sedimentation)
    1225        
    1226 c Add lifted dust to tendancies after sedimentation in the LES
    1227 #ifdef MESOSCALE
    1228 #include "meso_inc/meso_inc_lift_les.F"
    1229 #endif
    1230 
    1231 c
    1232 c   7c. Chemical species
    1233 c     ------------------
    1234 
    1235 #ifndef MESOSCALE
    1236 c        --------------
    1237 c        photochemistry :
    1238 c        --------------
    1239          IF (photochem .or. thermochem) then
    1240 
    1241 !           dust and ice surface area
    1242             call surfacearea(ngrid, nlayer, ptimestep, zplay, zzlay,
    1243      $                       pt, pq, pdq, nq,
    1244      $                       rdust, rice, tau, tauscaling,
    1245      $                       surfdust, surfice)
    1246 !           call photochemistry
    1247             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-chemistry
    1255                       ! tracers is zero anyways
    1256              DO l=1,nlayer
    1257                DO ig=1,ngrid
    1258                  pdq(ig,l,iq)=pdq(ig,l,iq)+zdqchim(ig,l,iq)
    1259                ENDDO
    1260              ENDDO
    1261            ENDDO ! of DO iq=1,nq
    1262            
    1263            ! add condensation tendency for H2O2
    1264            if (igcm_h2o2.ne.0) then
    1265              DO l=1,nlayer
    1266                DO ig=1,ngrid
    1267                  pdq(ig,l,igcm_h2o2)=pdq(ig,l,igcm_h2o2)
    1268      &                                +zdqcloud(ig,l,igcm_h2o2)
    1269                ENDDO
    1270              ENDDO
    1271            endif
    1272 
    1273            ! increment surface values of tracers:
    1274            DO iq=1,nq ! loop on all tracers; tendencies for non-chemistry
    1275                       ! tracers is zero anyways
    1276              DO ig=1,ngrid
    1277                dqsurf(ig,iq)=dqsurf(ig,iq)+zdqschim(ig,iq)
    1278              ENDDO
    1279            ENDDO ! of DO iq=1,nq
    1280 
    1281            ! add condensation tendency for H2O2
    1282            if (igcm_h2o2.ne.0) then
    1283              DO ig=1,ngrid
    1284                dqsurf(ig,igcm_h2o2)=dqsurf(ig,igcm_h2o2)
    1285      &                                +zdqscloud(ig,igcm_h2o2)
    1286              ENDDO
    1287            endif
    1288 
    1289          END IF  ! of IF (photochem.or.thermochem)
    1290 #endif
    1291 
    1292 c   7d. Updates
    1293 c     ---------
    1294 
    1295         DO iq=1, nq
    1296           DO ig=1,ngrid
    1297 
    1298 c       ---------------------------------
    1299 c       Updating tracer budget on surface
    1300 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 MESOSCALE
    1309 c-----------------------------------------------------------------------
    1310 c   8. THERMOSPHERE CALCULATION
    1311 c-----------------------------------------------------------------------
    1312 
    1313       if (callthermos) then
    1314         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,nlayer
    1320           DO ig=1,ngrid
    1321             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, nq
    1327               pdq(ig,l,iq)=pdq(ig,l,iq)+zdqmoldiff(ig,l,iq)
    1328             ENDDO
    1329           ENDDO
    1330         ENDDO
    1331 
    1332       endif ! of if (callthermos)
    1333 #endif
    1334 
    13351337c-----------------------------------------------------------------------
    13361338c   9. Surface  and sub-surface soil temperature
     
    13511353
    13521354      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
    13551357           ! NB: Updated surface pressure, at grid point 'ngrid', is
    13561358           !     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
    13611364c       -------------------------------------------------------------
    13621365c       Change of surface albedo in case of ground frost
     
    13921395      ENDIF
    13931396     
    1394 
    13951397
    13961398c-----------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.