Changeset 4086 for trunk/LMDZ.VENUS


Ignore:
Timestamp:
Feb 26, 2026, 3:11:06 PM (5 weeks ago)
Author:
flefevre
Message:

Cosmetic changes in physiq_mod.F

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F

    r4080 r4086  
    988988c END OF INITIALISATIONS
    989989c======================================================================
    990 c======================================================================
    991990
    992991c=======================================================
     
    10751074
    10761075      else if (tr_scheme.eq.3) then
     1076
    10771077!====================================================================
    10781078! Case 3: Full chemistry and/or clouds.
     
    10881088         zctime = dtime*real(chempas)             ! chemical timestep
    10891089
    1090         IF (cl_scheme .eq. 2) THEN
    1091         DO i=1, klon
    1092           call aer_production(zctime,klev,pplay(i,:),
    1093      $          zzlev(i,:),zzlay(i,:),dM0_prod,dM3_prod)
    1094           tr_seri(i,:,i_m0_aer) = tr_seri(i,:,i_m0_aer) +
    1095      $                              dM0_prod(:)
    1096           tr_seri(i,:,i_m3_aer) = tr_seri(i,:,i_m3_aer) +
    1097      $                              dM3_prod(:)
    1098         END DO
    1099         ENDIF
     1090         if (cl_scheme == 2) then
     1091            do i = 1,klon
     1092               call aer_production(zctime,klev,pplay(i,:),
     1093     $             zzlev(i,:),zzlay(i,:),dM0_prod,dM3_prod)
     1094               tr_seri(i,:,i_m0_aer) = tr_seri(i,:,i_m0_aer)
     1095     $                               + dM0_prod(:)
     1096               tr_seri(i,:,i_m3_aer) = tr_seri(i,:,i_m3_aer)
     1097     $                               + dM3_prod(:)
     1098            end do
     1099         end if
    11001100
    11011101         if (mod(itap,chempas) == 0) then         ! <------- start of chemistry supercycling
     
    11031103!        photochemistry and microphysics
    11041104
    1105         call phytrac_chimie(debut,
     1105         call phytrac_chimie(debut,
    11061106     $                       gmtime,
    11071107     $                       nqmax,
     
    11231123     $                       o2_emission)
    11241124   
    1125         if (ok_sedim) then
     1125         if (ok_sedim) then
    11261126            if (cl_scheme == 1) then
    11271127
     
    11681168!        sedimentation for detailed microphysics
    11691169
    1170               d_tr_sed(:,:,:) = 0.
    1171 
    1172 !                 aerosols
     1170               d_tr_sed(:,:,:) = 0.
     1171
     1172!        aerosols
    11731173
    11741174               call sedim_mad_aer(klon, klev, zctime, pplay, paprs,
    1175      $                           rho, zzlev,t_seri,d_tr_sed(:,:,1:2),
    1176      $                      tr_seri,nqmax)
    1177 
    1178 
    1179         d_tr_sed(:,:,i_m0_aer)= d_tr_sed(:,:,1) / zctime
    1180         d_tr_sed(:,:,i_m3_aer) = d_tr_sed(:,:,2) / zctime
    1181 
    1182 
    1183 !                 mode 1
     1175     $                            rho, zzlev,t_seri,d_tr_sed(:,:,1:2),
     1176     $                            tr_seri,nqmax)
     1177
     1178               d_tr_sed(:,:,i_m0_aer) = d_tr_sed(:,:,1)/zctime
     1179               d_tr_sed(:,:,i_m3_aer) = d_tr_sed(:,:,2)/zctime
     1180
     1181!        mode 1
    11841182
    11851183               d_tr_sed(:,:,:) = 0.
    1186                   call sedim_mad_m1 (klon, klev, zctime, pplay, paprs,
     1184               call sedim_mad_m1(klon, klev, zctime, pplay, paprs,
    11871185     $                           rho, zzlev,t_seri,d_tr_sed(:,:,1:5),
    1188      $                      tr_seri,nqmax,r1tab,RHOtab,sigma1)
    1189 
    1190 
    1191         d_tr_sed(:,:,i_m0_mode1drop)= d_tr_sed(:,:,1) / zctime
    1192         d_tr_sed(:,:,i_m0_mode1ccn) = d_tr_sed(:,:,2) / zctime
    1193         d_tr_sed(:,:,i_m3_mode1ccn) = d_tr_sed(:,:,3) / zctime
    1194         d_tr_sed(:,:,i_m3_mode1sa)  = d_tr_sed(:,:,4) / zctime
    1195         d_tr_sed(:,:,i_m3_mode1wv)  = d_tr_sed(:,:,5) / zctime
    1196 
    1197 !                 mode 2
     1186     $                           tr_seri,nqmax,r1tab,RHOtab,sigma1)
     1187
     1188               d_tr_sed(:,:,i_m0_mode1drop) = d_tr_sed(:,:,1)/zctime
     1189               d_tr_sed(:,:,i_m0_mode1ccn)  = d_tr_sed(:,:,2)/zctime
     1190               d_tr_sed(:,:,i_m3_mode1ccn)  = d_tr_sed(:,:,3)/zctime
     1191               d_tr_sed(:,:,i_m3_mode1sa)   = d_tr_sed(:,:,4)/zctime
     1192               d_tr_sed(:,:,i_m3_mode1wv)   = d_tr_sed(:,:,5)/zctime
     1193
     1194!        mode 2
    11981195
    11991196               d_tr_sed(:,:,:) = 0.
    1200                   call sedim_mad_m2 (klon, klev, zctime, pplay, paprs,
    1201      $                            rho,zzlev,t_seri,d_tr_sed(:,:,1:5),
    1202      $                      tr_seri,nqmax,r2tab,RHOtab,sigma2)
    1203 
    1204 
    1205         d_tr_sed(:,:,i_m0_mode2drop)= d_tr_sed(:,:,1) / zctime
    1206         d_tr_sed(:,:,i_m0_mode2ccn) = d_tr_sed(:,:,2) / zctime
    1207         d_tr_sed(:,:,i_m3_mode2ccn) = d_tr_sed(:,:,3) / zctime
    1208         d_tr_sed(:,:,i_m3_mode2sa)  = d_tr_sed(:,:,4) / zctime
    1209         d_tr_sed(:,:,i_m3_mode2wv)  = d_tr_sed(:,:,5) / zctime
     1197               call sedim_mad_m2(klon, klev, zctime, pplay, paprs,
     1198     $                           rho,zzlev,t_seri,d_tr_sed(:,:,1:5),
     1199     $                           tr_seri,nqmax,r2tab,RHOtab,sigma2)
     1200
     1201               d_tr_sed(:,:,i_m0_mode2drop) = d_tr_sed(:,:,1)/zctime
     1202               d_tr_sed(:,:,i_m0_mode2ccn)  = d_tr_sed(:,:,2)/zctime
     1203               d_tr_sed(:,:,i_m3_mode2ccn)  = d_tr_sed(:,:,3)/zctime
     1204               d_tr_sed(:,:,i_m3_mode2sa)   = d_tr_sed(:,:,4)/zctime
     1205               d_tr_sed(:,:,i_m3_mode2wv)   = d_tr_sed(:,:,5)/zctime
    12101206         
    1211 !        tendency due to sedimentation
    1212 
    1213 
    1214 
    12151207#endif
    12161208            end if  ! cl_scheme
     
    12191211!        update gaseous tracers (chemistry)
    12201212
    1221         do iq = 1, nqmax - nmicro
    1222                tr_seri(:,:,iq) = max(tr_seri(:,:,iq)
    1223      $                         + d_tr_chem(:,:,iq)*zctime,1.e-30)
    1224             end do
     1213         do iq = 1, nqmax - nmicro
     1214            tr_seri(:,:,iq) = max(tr_seri(:,:,iq)
     1215     $                          + d_tr_chem(:,:,iq)*zctime,1.e-30)
     1216         end do
    12251217
    12261218!        update condensed tracers (condensation + sedimentation)
    12271219       
    1228             if (cl_scheme == 1) then
    1229                tr_seri(:,:,i_h2so4liq) = max(tr_seri(:,:,i_h2so4liq)
    1230      $                                 + d_tr_sed(:,:,1)*zctime, 1.e-30)
    1231                tr_seri(:,:,i_h2oliq)   = max(tr_seri(:,:,i_h2oliq)
    1232      $                                 + d_tr_sed(:,:,2)*zctime, 1.e-30)
    1233             else if (cl_scheme == 2) then
    1234 
    1235         tr_seri(:,:,i_m0_aer) = tr_seri(:,:,i_m0_aer)
    1236      $         + d_tr_micro(:,:,i_m0_aer)*zctime
    1237      $         +   d_tr_sed(:,:,i_m0_aer)*zctime
    1238         tr_seri(:,:,i_m3_aer) = tr_seri(:,:,i_m3_aer)
    1239      $         + d_tr_micro(:,:,i_m3_aer)*zctime
    1240      $         +   d_tr_sed(:,:,i_m3_aer)*zctime
    1241 
    1242         tr_seri(:,:,i_m0_mode1drop) = tr_seri(:,:,i_m0_mode1drop)
    1243      $         + d_tr_micro(:,:,i_m0_mode1drop)*zctime
    1244      $         +   d_tr_sed(:,:,i_m0_mode1drop)*zctime
    1245         tr_seri(:,:,i_m0_mode1ccn) = tr_seri(:,:,i_m0_mode1ccn)
    1246      $         + d_tr_micro(:,:,i_m0_mode1ccn)*zctime
    1247      $         +   d_tr_sed(:,:,i_m0_mode1ccn)*zctime
    1248 
    1249 
    1250         tr_seri(:,:,i_m3_mode1sa) = tr_seri(:,:,i_m3_mode1sa)
    1251      $         + d_tr_micro(:,:,i_m3_mode1sa)*zctime
    1252      $         +   d_tr_sed(:,:,i_m3_mode1sa)*zctime
    1253         tr_seri(:,:,i_m3_mode1wv) = tr_seri(:,:,i_m3_mode1wv)
    1254      $         + d_tr_micro(:,:,i_m3_mode1wv)*zctime
    1255      $         +   d_tr_sed(:,:,i_m3_mode1wv)*zctime
    1256         tr_seri(:,:,i_m3_mode1ccn) = tr_seri(:,:,i_m3_mode1ccn)
    1257      $         + d_tr_micro(:,:,i_m3_mode1ccn)*zctime
    1258      $         +   d_tr_sed(:,:,i_m3_mode1ccn)*zctime
    1259 
    1260         tr_seri(:,:,i_m0_mode2drop) = tr_seri(:,:,i_m0_mode2drop)
    1261      $         + d_tr_micro(:,:,i_m0_mode2drop)*zctime
    1262      $         +   d_tr_sed(:,:,i_m0_mode2drop)*zctime
    1263         tr_seri(:,:,i_m0_mode2ccn) = tr_seri(:,:,i_m0_mode2ccn)
    1264      $         + d_tr_micro(:,:,i_m0_mode2ccn)*zctime
    1265      $         +   d_tr_sed(:,:,i_m0_mode2ccn)*zctime
    1266 
    1267         tr_seri(:,:,i_m3_mode2sa) = tr_seri(:,:,i_m3_mode2sa)
    1268      $         + d_tr_micro(:,:,i_m3_mode2sa)*zctime
    1269      $         +   d_tr_sed(:,:,i_m3_mode2sa)*zctime
    1270         tr_seri(:,:,i_m3_mode2wv) = tr_seri(:,:,i_m3_mode2wv)
    1271      $         + d_tr_micro(:,:,i_m3_mode2wv)*zctime
    1272      $         +   d_tr_sed(:,:,i_m3_mode2wv)*zctime
    1273         tr_seri(:,:,i_m3_mode2ccn) = tr_seri(:,:,i_m3_mode2ccn)
    1274      $         + d_tr_micro(:,:,i_m3_mode2ccn)*zctime
    1275      $         +   d_tr_sed(:,:,i_m3_mode2ccn)*zctime
    1276 
    1277 
    1278         tr_seri(:,:,i_h2so4liq) = RHOas * (4.D0*PI/3.D0)*
    1279      $  (tr_seri(:,:,i_m3_mode2sa) + tr_seri(:,:,i_m3_mode1sa))
    1280 
    1281         tr_seri(:,:,i_h2oliq) = RHOwv * (4.D0*PI/3.D0)*
    1282      $  (tr_seri(:,:,i_m3_mode2wv) + tr_seri(:,:,i_m3_mode1wv))
    1283 
    1284         do k = 1, klev
    1285                   do i = 1, klon
    1286                        if (tr_seri(i,k,i_m3_mode1sa) .LT. 1e-18) then
    1287                         tr_seri(:,:,i_m0_aer) = tr_seri(:,:,i_m0_aer)+
    1288      $                  tr_seri(i,k,i_m0_mode1ccn)
    1289 
    1290                         tr_seri(:,:,i_m3_aer) = tr_seri(:,:,i_m3_aer)+
    1291      $                  tr_seri(i,k,i_m3_mode1ccn)
    1292 
    1293                         tr_seri(i,k,i_m3_mode1sa) = 0.D0
    1294                         tr_seri(i,k,i_m3_mode1wv) = 0.D0
    1295 
    1296                         tr_seri(i,k,i_m3_mode1ccn) = 0.D0
    1297 
    1298                         tr_seri(i,k,i_m0_mode1drop) = 0.D0
    1299                         tr_seri(i,k,i_m0_mode1ccn) = 0.D0
    1300                        endif
     1220         if (cl_scheme == 1) then
     1221
     1222            tr_seri(:,:,i_h2so4liq) = max(tr_seri(:,:,i_h2so4liq)
     1223     $                              + d_tr_sed(:,:,1)*zctime, 1.e-30)
     1224            tr_seri(:,:,i_h2oliq)   = max(tr_seri(:,:,i_h2oliq)
     1225     $                              + d_tr_sed(:,:,2)*zctime, 1.e-30)
     1226
     1227         else if (cl_scheme == 2) then
     1228
     1229            tr_seri(:,:,i_m0_aer) = tr_seri(:,:,i_m0_aer)
     1230     $                            + d_tr_micro(:,:,i_m0_aer)*zctime
     1231     $                            + d_tr_sed(:,:,i_m0_aer)*zctime
     1232            tr_seri(:,:,i_m3_aer) = tr_seri(:,:,i_m3_aer)
     1233     $                            + d_tr_micro(:,:,i_m3_aer)*zctime
     1234     $                            + d_tr_sed(:,:,i_m3_aer)*zctime
     1235
     1236            tr_seri(:,:,i_m0_mode1drop) = tr_seri(:,:,i_m0_mode1drop)
     1237     $                           + d_tr_micro(:,:,i_m0_mode1drop)*zctime
     1238     $                           + d_tr_sed(:,:,i_m0_mode1drop)*zctime
     1239            tr_seri(:,:,i_m0_mode1ccn) = tr_seri(:,:,i_m0_mode1ccn)
     1240     $                           + d_tr_micro(:,:,i_m0_mode1ccn)*zctime
     1241     $                           + d_tr_sed(:,:,i_m0_mode1ccn)*zctime
     1242
     1243            tr_seri(:,:,i_m3_mode1sa) = tr_seri(:,:,i_m3_mode1sa)
     1244     $                           + d_tr_micro(:,:,i_m3_mode1sa)*zctime
     1245     $                           + d_tr_sed(:,:,i_m3_mode1sa)*zctime
     1246            tr_seri(:,:,i_m3_mode1wv) = tr_seri(:,:,i_m3_mode1wv)
     1247     $                           + d_tr_micro(:,:,i_m3_mode1wv)*zctime
     1248     $                           + d_tr_sed(:,:,i_m3_mode1wv)*zctime
     1249            tr_seri(:,:,i_m3_mode1ccn) = tr_seri(:,:,i_m3_mode1ccn)
     1250     $                           + d_tr_micro(:,:,i_m3_mode1ccn)*zctime
     1251     $                           + d_tr_sed(:,:,i_m3_mode1ccn)*zctime
     1252
     1253            tr_seri(:,:,i_m0_mode2drop) = tr_seri(:,:,i_m0_mode2drop)
     1254     $                           + d_tr_micro(:,:,i_m0_mode2drop)*zctime
     1255     $                           + d_tr_sed(:,:,i_m0_mode2drop)*zctime
     1256            tr_seri(:,:,i_m0_mode2ccn) = tr_seri(:,:,i_m0_mode2ccn)
     1257     $                           + d_tr_micro(:,:,i_m0_mode2ccn)*zctime
     1258     $                           + d_tr_sed(:,:,i_m0_mode2ccn)*zctime
     1259
     1260            tr_seri(:,:,i_m3_mode2sa) = tr_seri(:,:,i_m3_mode2sa)
     1261     $                           + d_tr_micro(:,:,i_m3_mode2sa)*zctime
     1262     $                           + d_tr_sed(:,:,i_m3_mode2sa)*zctime
     1263            tr_seri(:,:,i_m3_mode2wv) = tr_seri(:,:,i_m3_mode2wv)
     1264     $                           + d_tr_micro(:,:,i_m3_mode2wv)*zctime
     1265     $                           + d_tr_sed(:,:,i_m3_mode2wv)*zctime
     1266            tr_seri(:,:,i_m3_mode2ccn) = tr_seri(:,:,i_m3_mode2ccn)
     1267     $                           + d_tr_micro(:,:,i_m3_mode2ccn)*zctime
     1268     $                           + d_tr_sed(:,:,i_m3_mode2ccn)*zctime
     1269
     1270            tr_seri(:,:,i_h2so4liq) = RHOas*(4.D0*PI/3.D0)
     1271     $                              *(tr_seri(:,:,i_m3_mode2sa)
     1272     $                              + tr_seri(:,:,i_m3_mode1sa))
     1273
     1274            tr_seri(:,:,i_h2oliq) = RHOwv*(4.D0*PI/3.D0)
     1275     $                            *(tr_seri(:,:,i_m3_mode2wv)
     1276     $                            + tr_seri(:,:,i_m3_mode1wv))
     1277
     1278            do k = 1, klev
     1279               do i = 1, klon
     1280                  if (tr_seri(i,k,i_m3_mode1sa) < 1e-18) then
     1281                     tr_seri(:,:,i_m0_aer) = tr_seri(:,:,i_m0_aer)
     1282     $                                     + tr_seri(i,k,i_m0_mode1ccn)
     1283
     1284                     tr_seri(:,:,i_m3_aer) = tr_seri(:,:,i_m3_aer)
     1285     $                                     + tr_seri(i,k,i_m3_mode1ccn)
     1286
     1287                     tr_seri(i,k,i_m3_mode1sa) = 0.D0
     1288                     tr_seri(i,k,i_m3_mode1wv) = 0.D0
     1289                     tr_seri(i,k,i_m3_mode1ccn) = 0.D0
     1290                     tr_seri(i,k,i_m0_mode1drop) = 0.D0
     1291                     tr_seri(i,k,i_m0_mode1ccn) = 0.D0
     1292                  end if
    13011293       
    1302                        if (tr_seri(i,k,i_m3_mode2sa) .LT. 1e-18) then
    1303                         tr_seri(:,:,i_m0_aer) = tr_seri(:,:,i_m0_aer)+
    1304      $                  tr_seri(i,k,i_m0_mode2ccn)
    1305 
    1306                         tr_seri(:,:,i_m3_aer) = tr_seri(:,:,i_m3_aer)+
    1307      $                  tr_seri(i,k,i_m3_mode2ccn)
    1308 
    1309                         tr_seri(i,k,i_m3_mode2sa) = 0.D0
    1310                         tr_seri(i,k,i_m3_mode2wv) = 0.D0
    1311                         tr_seri(i,k,i_m3_mode2ccn) = 0.D0
    1312 
    1313                         tr_seri(i,k,i_m0_mode2drop) = 0.D0
    1314                         tr_seri(i,k,i_m0_mode2ccn) = 0.D0
    1315                        endif
    1316                 enddo
    1317         enddo
    1318 
    1319         tr_seri(:,:,i_h2o) = tr_seri(:,:,i_h2o)
    1320      $         + d_tr_micro(:,:,i_h2o)*zctime
    1321         tr_seri(:,:,i_h2so4) = tr_seri(:,:,i_h2so4)
    1322      $         + d_tr_micro(:,:,i_h2so4)*zctime
    1323 
    1324             end if  ! cl_scheme
     1294                  if (tr_seri(i,k,i_m3_mode2sa) < 1e-18) then
     1295                     tr_seri(:,:,i_m0_aer) = tr_seri(:,:,i_m0_aer)
     1296     $                                     + tr_seri(i,k,i_m0_mode2ccn)
     1297
     1298                     tr_seri(:,:,i_m3_aer) = tr_seri(:,:,i_m3_aer)
     1299     $                                     + tr_seri(i,k,i_m3_mode2ccn)
     1300
     1301                     tr_seri(i,k,i_m3_mode2sa) = 0.D0
     1302                     tr_seri(i,k,i_m3_mode2wv) = 0.D0
     1303                     tr_seri(i,k,i_m3_mode2ccn) = 0.D0
     1304                     tr_seri(i,k,i_m0_mode2drop) = 0.D0
     1305                     tr_seri(i,k,i_m0_mode2ccn) = 0.D0
     1306                  end if
     1307               end do
     1308            end do
     1309
     1310            tr_seri(:,:,i_h2o) = tr_seri(:,:,i_h2o)
     1311     $                         + d_tr_micro(:,:,i_h2o)*zctime
     1312            tr_seri(:,:,i_h2so4) = tr_seri(:,:,i_h2so4)
     1313     $                         + d_tr_micro(:,:,i_h2so4)*zctime
     1314
     1315         end if     ! cl_scheme          <------- end of microphysics option
    13251316         end if     ! mod(itap,chempas)  <------- end of chemistry supercycling
    13261317
    1327 !=========
    1328 ! End Case 3: Full chemistry and/or clouds.
    1329 !====================================================================
    1330 
    1331          end if     ! tr_scheme
     1318         end if     ! tr_scheme          <------- end of chemistry option
    13321319      end if        ! iflag_trac
    13331320
Note: See TracChangeset for help on using the changeset viewer.