Changeset 2203
- Timestamp:
- Dec 24, 2019, 1:57:50 PM (5 years ago)
- 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 1 1 subroutine new_cloud_sedim(n_lon, n_lev, ptimestep, 2 2 $ pmidlay, pbndlay, pt, pq, 3 $ d_tr_chem, pdqsed, pdqs_sed,3 $ d_tr_chem, pdqsed, 4 4 $ nq, F_sed) 5 5 … … 33 33 real pdqsed(n_lon,n_lev,2) ! tendency due to sedimentation (kg/kg) 34 34 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)36 35 37 36 c local: … … 53 52 c Gas molecular viscosity (N.s.m-2) 54 53 c real,parameter :: visc=1.e-5 ! CO2 55 54 REAL :: VISCOSITY_CO2 56 55 c Effective gas molecular radius (m) 57 56 real,parameter :: molrad=2.2e-10 ! CO2 … … 91 90 c ----------------- 92 91 93 ! Updating the droplet mass mixing ratio with the partition H2O/H2SO492 ! update water vapour and sulfuric acid mixing ratios 94 93 95 94 zqi_wv(:,:) = pq(:,:,i_h2oliq) + d_tr_chem(:,:,i_h2oliq)*ptimestep 96 95 zqi_sa(:,:) = pq(:,:,i_h2so4liq) 97 96 $ + d_tr_chem(:,:,i_h2so4liq)*ptimestep 97 98 98 wgt_SA(:,:) = wh2so4(:,:) 99 99 … … 348 348 349 349 ENDDO 350 c****************************************************************351 350 352 351 c 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 391 379 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 412 397 413 398 c Save output file in 1D model 414 399 c ============================ 415 416 400 c IF (n_lon .EQ. 1) THEN 417 401 c PRINT*,'Save output sedim' -
trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F
r2200 r2203 300 300 REAL :: d_drop_sed(klev),d_ccn_sed(klev,2),d_liq_sed(klev,2) 301 301 REAL :: aer_flux(klev) 302 REAL :: d_tr_ssed(klon)303 302 c 304 303 c Variables du changement … … 1015 1014 $ d_tr_chem, 1016 1015 $ d_tr_sed(:,:,1:2), 1017 $ d_tr_ssed,1018 1016 $ nqmax, 1019 1017 $ Fsedim) … … 1035 1033 end do 1036 1034 1037 ! tendency due to sedimentation1038 1039 d_tr_sed(:,:, :) = d_tr_sed(:,:,:)/zctime1035 ! tendency due to condensation and sedimentation 1036 1037 d_tr_sed(:,:,1:2) = d_tr_sed(:,:,1:2)/zctime 1040 1038 Fsedim(:,1:klev) = Fsedim(:,1:klev)/zctime 1041 1039 Fsedim(:,klev+1) = 0. … … 1119 1117 #endif 1120 1118 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 1121 1141 end if ! ok_sedim 1122 1142 end if ! mod(itap,chempas) <------- end of chemistry supercycling 1123 1143 1124 ! update tracers (chemistry)1125 1126 do iq = 1, nqmax - nmicro1127 tr_seri(:,:,iq) = tr_seri(:,:,iq) + d_tr_chem(:,:,iq)*dtime1128 end do1129 1130 ! update tracers (sedimentation)1131 1132 if (ok_sedim) then1133 if (cl_scheme == 1) then1134 tr_seri(:,:,i_h2so4liq) = tr_seri(:,:,i_h2so4liq)1135 $ + d_tr_sed(:,:,1)*dtime1136 tr_seri(:,:,i_h2oliq) = tr_seri(:,:,i_h2oliq)1137 $ + d_tr_sed(:,:,2)*dtime1138 else if (cl_scheme == 2) then1139 do iq = nqmax-nmicro+1,nqmax1140 tr_seri(:,:,iq) = tr_seri(:,:,iq) + d_tr_sed(:,:,iq)*dtime1141 end do1142 end if ! cl_scheme1143 end if ! ok_sedim1144 1144 !==================================================================== 1145 1145 ! End Case 3: Full chemistry and/or clouds.
Note: See TracChangeset
for help on using the changeset viewer.