1 MODULE module_gocart_so2so4
5 subroutine so2so4(chem,p_so2,p_sulf,p_h2o2,p_QC,T_PHY,MOIST,gd, &
6 gd_cldfr,NUM_CHEM,NUM_MOIST, &
7 ids,ide, jds,jde, kds,kde, &
8 ims,ime, jms,jme, kms,kme, &
9 its,ite, jts,jte, kts,kte )
10 INTEGER, INTENT(IN ) :: num_chem,num_moist, &
11 p_so2,p_sulf,p_h2o2,p_QC, &
12 ids,ide, jds,jde, kds,kde, &
13 ims,ime, jms,jme, kms,kme, &
14 its,ite, jts,jte, kts,kte
15 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_moist ), &
17 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), &
18 INTENT(INOUT ) :: chem
19 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), &
20 INTENT(IN ) :: t_phy,gd
21 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ), &
23 INTENT(IN ) :: gd_cldfr
26 real :: tc2,tc3,h2o2,cldf
32 ! if(moist(i,k,j,p_qc).gt.0 )cldf=1.
34 if(present(gd_cldfr) ) then
37 if(moist(i,k,j,p_qc).gt.0 )cldf=1.
40 IF (cldf > 0.0 .AND. tc2 > 0.0 .AND. t_phy(i,k,j) > 258.0) THEN
41 tc3=chem(i,k,j,p_sulf)
42 h2o2=chem(i,k,j,p_h2o2)
43 ! write(0,*)'1,so2,sulf,h2o2 = ',tc2,tc3,h2o2
46 ! ****************************************************************************
47 ! * Update SO2 concentration after cloud chemistry. *
48 ! * SO2 chemical loss rate = SO4 production rate (MixingRatio/timestep). *
49 ! ****************************************************************************
51 ! Cloud chemistry (above 258K):
54 cldf = cldf * (h2o2/tc2)
55 h2o2 = h2o2 * (1.0 - cldf)
57 h2o2 = h2o2 * (1.0 - cldf*tc2/h2o2)
59 chem(i,k,j,p_so2) = max(1.e-16,tc2 * (1.0 - cldf) )
60 chem(i,k,j,p_sulf) = max(1.e-16,(tc3 + tc2*cldf))
61 chem(i,k,j,p_h2o2)=max(1.e-16,h2o2)
62 ! write(0,*)'2,so2,sulf,h2o2 = ',chem(i,k,j,p_so2),chem(i,k,j,p_sulf),chem(i,k,j,p_h2o2)
68 ! ****************************************************************************
71 END MODULE module_gocart_so2so4