Changeset 2203 for trunk/LMDZ.VENUS/libf


Ignore:
Timestamp:
Dec 24, 2019, 1:57:50 PM (5 years ago)
Author:
flefevre
Message:
  • correction du supercycling de la chimie
  • changements cosmetiques dans la sedimentation
Location:
trunk/LMDZ.VENUS/libf/phyvenus
Files:
2 edited

Legend:

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

    r2200 r2203  
    11      subroutine new_cloud_sedim(n_lon, n_lev, ptimestep,
    22     $                           pmidlay, pbndlay, pt, pq,
    3      $                           d_tr_chem, pdqsed, pdqs_sed,
     3     $                           d_tr_chem, pdqsed,
    44     $                           nq, F_sed)
    55
     
    3333      real pdqsed(n_lon,n_lev,2)    ! tendency due to sedimentation (kg/kg)
    3434      real d_tr_chem(n_lon,n_lev,nq)! tendency due to chemistry and clouds (kg/kg)
    35       real pdqs_sed(n_lon)          ! surface density (Flux if /ptimestep) at surface due to sedimentation (kg.m-2)
    3635     
    3736c   local:
     
    5352c     Gas molecular viscosity (N.s.m-2)
    5453c      real,parameter :: visc=1.e-5       ! CO2
    55         REAL :: VISCOSITY_CO2
     54      REAL :: VISCOSITY_CO2
    5655c     Effective gas molecular radius (m)
    5756      real,parameter :: molrad=2.2e-10   ! CO2
     
    9190c    -----------------
    9291   
    93 !     Updating the droplet mass mixing ratio with the partition H2O/H2SO4
     92!     update water vapour and sulfuric acid mixing ratios
    9493
    9594      zqi_wv(:,:) = pq(:,:,i_h2oliq) + d_tr_chem(:,:,i_h2oliq)*ptimestep
    9695      zqi_sa(:,:) = pq(:,:,i_h2so4liq)
    9796     $            + d_tr_chem(:,:,i_h2so4liq)*ptimestep
     97
    9898      wgt_SA(:,:) = wh2so4(:,:)
    9999
     
    348348           
    349349         ENDDO
    350 c****************************************************************
    351350
    352351c     Passage du Flux au Flux pour un pas de temps (== kg.m-2)     
    353       F_sed(:,:)=F_sed(:,:)*ptimestep
    354 
    355 
    356 c       VENUS: le flux à la surface est fixé à 0
    357 c     les conditions P/T en surface ne permettent pas la condensation
    358       DO ig=1,n_lon
    359       pdqs_sed(ig) = 0.0d0
    360       ENDDO
    361      
    362 c         Compute the final tendency:
    363 c         ---------------------------
    364 
    365 c     Partie H2SO4l
    366 c     ~~~~~~~~~~~~
    367 
    368       DO l = 1, n_lev
    369          DO ig=1,n_lon
    370             zqi_sa(ig,l) = zqi_sa(ig,l) + (
    371      &                         F_sed(ig,l+1)*wgt_SA(ig,l+1)
    372      &                       - F_sed(ig,l)*wgt_SA(ig,l))
    373      &                       / m_lay(ig,l)
    374 c     On peut avoir theoriquement le cas ou on epuise tout le VMR present
    375              IF (zqi_sa(ig,l).LT.0.0D0) THEN
    376 c              PRINT*,'STOP sedimentation on epuise tout le VMR present'
    377 c              PRINT*,'couche',ig,'level',l
    378 c               STOP
    379 c              Ce n est pas juste mais il faudrait alors adapter les pas
    380 c              de tps de la phys, microphys et chimie
    381 c              car dans ce cas, c est comme si on epuisait la couche pour un pdtphys
    382 c              mais en fait on l epuise pour un pdt<pdtphys
    383                zqi_sa(ig,l) = 0.0D0
    384              ENDIF
    385             pdqsed(ig,l,1) = zqi_sa(ig,l) - pq(ig,l,i_h2so4liq)                       
    386          ENDDO
    387       ENDDO
    388 
    389 c     Partie H2Ol
    390 c     ~~~~~~~~~~~
     352
     353      F_sed(:,:) = F_sed(:,:)*ptimestep
     354
     355!=========================================================
     356!     compute tendency due to sedimentation
     357!=========================================================
     358
     359!     h2so4
     360
     361      do l = 1,n_lev
     362         do ig = 1,n_lon
     363            zqi_sa(ig,l) = zqi_sa(ig,l)
     364     $                   + (F_sed(ig,l+1)*wgt_SA(ig,l+1)
     365     $                    - F_sed(ig,l)*wgt_SA(ig,l))/m_lay(ig,l)
     366!           if (zqi_sa(ig,l) < 0.) THEN
     367!              print*,'STOP sedim on epuise tout le H2SO4l present'
     368!              print*,'point ',ig,'level ',l
     369!              print*,'zqi_sa = ', zqi_sa(ig,l)
     370!              STOP
     371!              zqi_sa(ig,l) = 0.
     372!           end if
     373            zqi_sa(ig,l) = max(zqi_sa(ig,l), 0.)
     374            pdqsed(ig,l,1) = zqi_sa(ig,l) - pq(ig,l,i_h2so4liq)
     375         end do
     376      end do
     377
     378!     h2o
    391379                     
    392       DO l = 1, n_lev
    393          DO ig=1,n_lon
    394             zqi_wv(ig,l) = zqi_wv(ig,l) + (
    395      &                         F_sed(ig,l+1)*(1. - wgt_SA(ig,l+1))
    396      &                       - F_sed(ig,l)*(1. - wgt_SA(ig,l)))
    397      &                       / m_lay(ig,l)
    398 c     On peut avoir theoriquement le cas ou on epuise tout le VMR present
    399              IF (zqi_wv(ig,l).LT.0.0D0) THEN
    400 c              PRINT*,'STOP sedimentation on epuise tout le VMR present'
    401 c              PRINT*,'couche',ig,'level',l
    402 c               STOP
    403 c              Ce n est pas juste mais il faudrait alors adapter les pas
    404 c              de tps de la phys, microphys et chimie
    405 c              car dans ce cas, c est comme si on epuisait la couche pour un pdtphys
    406 c              mais en fait on l epuise pour un pdt<pdtphys
    407                zqi_wv(ig,l) = 0.0D0
    408              ENDIF
    409             pdqsed(ig,l,2) = zqi_wv(ig,l) - pq(ig,l,i_h2oliq)                   
    410          ENDDO
    411       ENDDO
     380      do l = 1, n_lev
     381         do ig=1,n_lon
     382            zqi_wv(ig,l) = zqi_wv(ig,l)
     383     $                   + (F_sed(ig,l+1)*(1. - wgt_SA(ig,l+1))
     384     &                    - F_sed(ig,l)*(1. - wgt_SA(ig,l)))
     385     &                    /m_lay(ig,l)
     386!           if (zqi_wv(ig,l) < 0.) THEN
     387!              print*,'STOP sedim on epuise tout le H2Ol present'
     388!              print*,'point ',ig,'level ',l
     389!              print*,'zqi_wv = ', zqi_wv(ig,l)
     390!              STOP
     391!              zqi_wv(ig,l) = 0.
     392!           end if
     393            zqi_wv(ig,l) = max(zqi_wv(ig,l), 0.)
     394            pdqsed(ig,l,2) = zqi_wv(ig,l) - pq(ig,l,i_h2oliq)
     395         end do
     396      end do
    412397
    413398c               Save output file in 1D model
    414399c               ============================
    415                
    416400c      IF (n_lon .EQ. 1) THEN
    417401c      PRINT*,'Save output sedim'       
  • trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F

    r2200 r2203  
    300300      REAL :: d_drop_sed(klev),d_ccn_sed(klev,2),d_liq_sed(klev,2)
    301301      REAL :: aer_flux(klev)
    302       REAL :: d_tr_ssed(klon)
    303302c
    304303c Variables du changement
     
    10151014     $                              d_tr_chem,
    10161015     $                              d_tr_sed(:,:,1:2),
    1017      $                              d_tr_ssed,
    10181016     $                              nqmax,
    10191017     $                              Fsedim)
     
    10351033               end do
    10361034
    1037 !        tendency due to sedimentation
    1038 
    1039                d_tr_sed(:,:,:) = d_tr_sed(:,:,:)/zctime
     1035!        tendency due to condensation and sedimentation
     1036
     1037               d_tr_sed(:,:,1:2) = d_tr_sed(:,:,1:2)/zctime
    10401038               Fsedim(:,1:klev) = Fsedim(:,1:klev)/zctime
    10411039               Fsedim(:,klev+1) = 0.
     
    11191117#endif
    11201118            end if  ! cl_scheme
     1119
     1120!        update gaseous tracers (chemistry)
     1121
     1122            do iq = 1, nqmax - nmicro
     1123               tr_seri(:,:,iq) = tr_seri(:,:,iq)
     1124     $                         + d_tr_chem(:,:,iq)*zctime
     1125            end do
     1126
     1127!        update condensed tracers (condensation + sedimentation)
     1128
     1129            if (cl_scheme == 1) then
     1130               tr_seri(:,:,i_h2so4liq) = max(tr_seri(:,:,i_h2so4liq)
     1131     $                                 + d_tr_sed(:,:,1)*zctime, 1.e-30)
     1132               tr_seri(:,:,i_h2oliq)   = max(tr_seri(:,:,i_h2oliq)
     1133     $                                 + d_tr_sed(:,:,2)*zctime, 1.e-30)
     1134            else if (cl_scheme == 2) then
     1135               do iq = nqmax-nmicro+1,nqmax
     1136                  tr_seri(:,:,iq) = tr_seri(:,:,iq)
     1137     $                            + d_tr_sed(:,:,iq)*zctime
     1138               end do
     1139            end if  ! cl_scheme
     1140
    11211141         end if     ! ok_sedim
    11221142         end if     ! mod(itap,chempas)  <------- end of chemistry supercycling
    11231143
    1124 !        update tracers (chemistry)
    1125 
    1126          do iq = 1, nqmax - nmicro
    1127             tr_seri(:,:,iq) = tr_seri(:,:,iq) + d_tr_chem(:,:,iq)*dtime
    1128          end do
    1129 
    1130 !        update tracers (sedimentation)
    1131 
    1132          if (ok_sedim) then
    1133             if (cl_scheme == 1) then
    1134          tr_seri(:,:,i_h2so4liq) = tr_seri(:,:,i_h2so4liq)
    1135      $                           + d_tr_sed(:,:,1)*dtime
    1136          tr_seri(:,:,i_h2oliq)   = tr_seri(:,:,i_h2oliq)
    1137      $                           + d_tr_sed(:,:,2)*dtime
    1138             else if (cl_scheme == 2) then
    1139          do iq = nqmax-nmicro+1,nqmax
    1140             tr_seri(:,:,iq) = tr_seri(:,:,iq) + d_tr_sed(:,:,iq)*dtime
    1141          end do
    1142             end if  ! cl_scheme
    1143          end if     ! ok_sedim
    11441144!====================================================================
    11451145! End Case 3: Full chemistry and/or clouds.
Note: See TracChangeset for help on using the changeset viewer.