Skip to content

Commit

Permalink
Build and run fixes following merge
Browse files Browse the repository at this point in the history
Signed-off-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
  • Loading branch information
lizziel committed Feb 7, 2022
1 parent c3133e7 commit 6ff0554
Show file tree
Hide file tree
Showing 20 changed files with 222 additions and 234 deletions.
5 changes: 2 additions & 3 deletions GeosCore/aero_drydep.F90
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ SUBROUTINE AERO_DRYDEP( Input_Opt, State_Chm, State_Diag, &
USE PhysConstants, ONLY : g0
USE PhysConstants, ONLY : AVO
USE PRECISION_MOD
!ewlspc
USE Species_Mod, ONLY : SpcConc
USE State_Chm_Mod, ONLY : ChmState
USE State_Chm_Mod, ONLY : Ind_
Expand Down Expand Up @@ -494,7 +493,7 @@ SUBROUTINE AERO_DRYDEP( Input_Opt, State_Chm, State_Diag, &
! mixing_mod.F90 (ckeller, 3/5/15)
! ***********************************************************************
! Dry deposit H2SO4 gas (win, 5/24/06)
Y0 = Spc(id_H2SO4)%Conc(I,J,L,)
Y0 = Spc(id_H2SO4)%Conc(I,J,L)
RKT = DepFreq(I,J,H2SO4ID) * State_Met%F_UNDER_PBLTOP(I,J,L)
Y = Y0 * EXP(-RKT)

Expand All @@ -519,7 +518,7 @@ SUBROUTINE AERO_DRYDEP( Input_Opt, State_Chm, State_Diag, &
#endif

!Swap final H2SO4 back into Spc array
Spc(id_H2SO4)%Conc(I,J,L,) = Y
Spc(id_H2SO4)%Conc(I,J,L) = Y

ENDDO
ENDDO
Expand Down
127 changes: 70 additions & 57 deletions GeosCore/apm_driv_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
REAL :: p_atm,cairclmdum,gas(4),aer(14),aerh2o,XM,VRATIO
REAL :: gasold(4),aerold(14)
REAL :: t_k4,rh4,dtchem,aersize
REAL :: so4_bin_sum, sea_bin_sum
REAL :: SO4_bin_sum, SEA_bin_sum, DST_bin_sum

! Array dimensions
INTEGER, PARAMETER :: NOTHERA = 9
Expand Down Expand Up @@ -727,6 +727,7 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
!$OMP PRIVATE( TNO3, AERLIQ, AERSLD, OTHER, TNH4, TNIT ) &
!$OMP PRIVATE( TSO4COAT ,DNH3MAX ) &
!$OMP PRIVATE( TH2O, XM,VRATIO) &
!$OMP PRIVATE( SO4_bin_sum, SEA_bin_sum) &
!$OMP SCHEDULE( DYNAMIC )
DO L = 1, State_Grid%NZ
DO J = 1, State_Grid%NY
Expand Down Expand Up @@ -763,13 +764,15 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &

!GanLuo+ Deduce SULFLO form TSO4,
! Add those sulfate coated on primary particles
!ewl
!GanLuo mv LVSOG TSO4 = (SUM(Spc(I,J,L,APMIDS%id_SO4BIN1:(APMIDS%id_SO4BIN1+NSO4-1)))
!GanLuo mv LVSOG & ) * 1.e+3_fp / ( 96.e+0_fp * VOL )
TSO4 = (SUM( &
!ewl
Spc(I,J,L,APMIDS%ID_SO4BIN1:(APMIDS%id_SO4BIN1+NSO4-1))) &
- Spc(APMIDS%id_CTSO4)%Conc(I,J,L))*1.e+3_fp / ( 96.e+0_fp * VOL )
SO4_bin_sum = 0.d8
DO M = APMIDS%id_SO4BIN1, APMIDS%id_SO4BIN1+NSO4-1
SO4_bin_sum = SO4_bin_sum + Spc(M)%Conc(I,J,L)
ENDDO

!GanLuo mv LVSOG TSO4 = SO4_bin_sum*1.e+3_fp/(96.e+0_fp*VOL)

TSO4 = ( SO4_bin_sum - Spc(APMIDS%id_CTSO4)%Conc(I,J,L) ) &
* 1.e+3_fp / ( 96.e+0_fp * VOL )

TSO4COAT = (Spc(APMIDS%id_CTBC)%Conc(I,J,L) + &
Spc(APMIDS%id_CTOC)%Conc(I,J,L) + &
Expand All @@ -790,15 +793,16 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
DNH3MAX * 1.e+3_fp / ( 17.e+0_fp * VOL )
MASSISRP(I,J,L,1) = Spc(APMIDS%id_NH3)%Conc(I,J,L)-DNH3MAX !remaining NH3

!sea_bin_sum=0.d8
!DO M = APMIDS%id_SEABIN1, APMIDS%id_SEABIN1+NSEA-1
! sea_bin_sum = sea_bin_sum + Spc(M)%Conc(I,J,L)
!ENDDO

! Total Na+ (30.61% by weight of seasalt) [mole/m3]
!ewl
!TNA = SUM(Spc(I,J,L,APMIDS%id_SEABIN1:(APMIDS%id_SEABIN1+NSEA-1))) &
! * 0.3061e+0_fp * 1.e+3_fp /( 22.99e+0_fp * VOL )
!TNA = SEA_BIN_SUM * 0.3061e+0_fp * 1.e+3_fp /( 22.99e+0_fp * VOL )

! Total Cl- (55.04% by weight of seasalt) [mole/m3]
!ewl
!TCL = SUM(Spc(I,J,L,APMIDS%id_SEABIN1:(APMIDS%id_SEABIN1+NSEA-1))) &
! * 0.5504e+0_fp * 1.e+3_fp /( 22.99e+0_fp * VOL )
!TCL = SEA_BIN_SUM * 0.5504e+0_fp * 1.e+3_fp /( 22.99e+0_fp * VOL )

!GLuo: Sea salt in ISORROPIA needs to be updated.
TNA = 0e+0_fp
Expand Down Expand Up @@ -892,24 +896,24 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
DO J = 1, State_Grid%NY
DO I = 1, State_Grid%NX

if((Spc(APMIDS%id_NH3)%Conc(I,J,L) + &
Spc(APMIDS%id_NH4)%Conc(I,J,L) + &
Spc(APMIDS%id_HNO3)%Conc(I,J,L) + &
Spc(APMIDS%id_NIT)%Conc(I,J,L)) > 1.d-16)then
if( ( Spc(APMIDS%id_NH3 )%Conc(I,J,L) &
+ Spc(APMIDS%id_NH4 )%Conc(I,J,L) &
+ Spc(APMIDS%id_HNO3)%Conc(I,J,L) &
+ Spc(APMIDS%id_NIT )%Conc(I,J,L) ) > 1.d-16)then

aersize=0.d0

so4_bin_sum=0.d0
SO4_bin_sum = 0.d0
DO M = APMIDS%id_SO4BIN1, APMIDS%id_SO4BIN1+NSO4-1
so4_bin_sum = so4_bin_sum + Spc(M)%Conc(I,J,L)
SO4_bin_sum = SO4_bin_sum + Spc(M)%Conc(I,J,L)
ENDDO

ssea_bin_sum=0.d0
SEA_bin_sum = 0.d0
DO M = APMIDS%id_SEABIN1, APMIDS%id_SEABIN1+NSEA-1
sea_bin_sum = sea_bin_sum + Spc(M)%Conc(I,J,L)
SEA_bin_sum = SEA_bin_sum + Spc(M)%Conc(I,J,L)
ENDDO

IF( so4_bin_sum + sea_binsum ) > 1.d-30)THEN
IF( ( SO4_bin_sum + SEA_bin_sum ) > 1.d-30 )THEN
DO N=1,NSO4
SIZENUM=APMIDS%id_SO4BIN1+N-1
aersize=aersize+Spc(SIZENUM)%Conc(I,J,L)*RDRY(N)*GFTOT3D(I,J,L,1)
Expand All @@ -918,7 +922,7 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
SIZENUM=APMIDS%id_SEABIN1+N-1
aersize=aersize+Spc(SIZENUM)%Conc(I,J,L)*RSALT(N)*GFTOT3D(I,J,L,2)
ENDDO
aersize=aersize / ( so4_bin_sum + sea_bin_sum )
aersize=aersize / ( SO4_bin_sum + SEA_bin_sum )
ELSE
aersize=50.D-9
ENDIF
Expand All @@ -938,12 +942,11 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
gas(3) = real(Spc(APMIDS%id_HNO3)%Conc(I,J,L)*MAIR/ &
(State_Met%AD(I,J,L)*63.0e-3))!HNO3

aer(1) = real(((MAX(1.e-30, &
( so4_bin_sum &
-Spc(APMIDS%id_CTSO4)%Conc(I,J,L)) )) &
+Spc(APMIDS%id_CTBC)%Conc(I,J,L)) &
+Spc(APMIDS%id_CTOC)%Conc(I,J,L)) &
+Spc(APMIDS%id_CTDST)%Conc(I,J,L)+Spc(I,J,L,APMIDS%id_CTSEA)%Conc(I,J,L))*MAIR&
aer(1) = real(((MAX(1.e-30, (SO4_bin_sum - Spc(APMIDS%id_CTSO4)%Conc(I,J,L)) )) &
+Spc(APMIDS%id_CTBC)%Conc(I,J,L) &
+Spc(APMIDS%id_CTOC)%Conc(I,J,L) &
+Spc(APMIDS%id_CTDST)%Conc(I,J,L) &
+Spc(APMIDS%id_CTSEA)%Conc(I,J,L) )*MAIR&
/(State_Met%AD(I,J,L)*96.0e-3)) !SO4
aer(2) = real(Spc(APMIDS%id_NH4)%Conc(I,J,L)*MAIR/ &
(State_Met%AD(I,J,L)*18.0e-3))!NH4
Expand Down Expand Up @@ -1323,13 +1326,13 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
ENDDO

DO N=1,NDSTB ! dust
XMDST(N) = Spc((APMIDS%id_DSTBIN1+N-1)%Conc(I,J,L))/VOL !kg/m3
XMDST(N) = Spc(APMIDS%id_DSTBIN1+N-1)%Conc(I,J,L)/VOL !kg/m3
IF(XMDST(N).LT.1.d-20) THEN !debug force
XMDST(N) = 1.d-20
Spc((APMIDS%id_DSTBIN1+N-1)%Conc(I,J,L)) = XMDST(N) * VOL
Spc(APMIDS%id_DSTBIN1+N-1)%Conc(I,J,L) = XMDST(N) * VOL
ENDIF
MWSIZE3D(I,J,L,3)=MWSIZE3D(I,J,L,3)+ &
Spc((APMIDS%id_DSTBIN1+N-1)%Conc(I,J,L))*RDST(N)
Spc(APMIDS%id_DSTBIN1+N-1)%Conc(I,J,L)*RDST(N)
ENDDO

DO N= 1, NBCOC
Expand Down Expand Up @@ -2284,47 +2287,57 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
REAL(State_Met%U(ATOMGRID(1,J),ATOMGRID(2,J),L)), &
REAL(State_Met%V(ATOMGRID(1,J),ATOMGRID(2,J),L)), &
(REAL(TEMPOUT(ATOMGRID(1,J),ATOMGRID(2,J),L,N)),N=1,77), &
(REAL(Spc(M)%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L)), &
(REAL(Spc(M)%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L)), &
M=APMIDS%id_SO4G,(APMIDS%id_AMINE+2)), &
REAL(Spc(APMIDS%id_SO2)%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L))), &
REAL(Spc(APMIDS%id_NH3)%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L))), &
REAL(Spc(APMIDS%id_NH4)%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L))), &
REAL(Spc(APMIDS%id_HNO3)%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L))),&
REAL(Spc(APMIDS%ID_NIT)%CONC(ATOMGRID(1,J),ATOMGRID(2,J),L)))
REAL(Spc(APMIDS%id_SO2 )%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L)), &
REAL(Spc(APMIDS%id_NH3 )%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L)), &
REAL(Spc(APMIDS%id_NH4 )%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L)), &
REAL(Spc(APMIDS%id_HNO3)%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L)), &
REAL(Spc(APMIDS%ID_NIT )%Conc(ATOMGRID(1,J),ATOMGRID(2,J),L))
RECID=RECID+1
ENDDO
ENDDO
CLOSE(100)
ENDIF
ENDIF

!$OMP PARALLEL DO &
!$OMP DEFAULT( SHARED ) &
!$OMP PRIVATE( I, J, L ) &
!$OMP PARALLEL DO &
!$OMP DEFAULT( SHARED ) &
!$OMP PRIVATE( I, J, L, M ) &
!$OMP PRIVATE( SO4_bin_sum, SEA_bin_sum, DST_bin_sum ) &
!$OMP SCHEDULE( DYNAMIC )
DO L = 1, STATE_GRID%NZ
DO J = 1, STATE_GRID%NY
DO I = 1, STATE_GRID%NX
IF(SUM(SPC(I,J,L,APMIDS%id_SO4BIN1:(APMIDS%id_SO4BIN1+NSO4-1))) &
>1.d-30)THEN
MWSIZE3D(I,J,L,1)=MWSIZE3D(I,J,L,1)/ &
SUM(Spc(I,J,L,APMIDS%id_SO4BIN1:(APMIDS%id_SO4BIN1+NSO4-1)))

SO4_bin_sum = 0.d0
DO M = 1, NSO4
SO4_bin_sum = SO4_bin_sum + Spc(APMIDS%id_SO4BIN1+M-1)%Conc(I,J,L)
ENDDO
IF( SO4_bin_sum > 1.d-30 )THEN
MWSIZE3D(I,J,L,1) = MWSIZE3D(I,J,L,1) / SO4_bin_sum
ELSE
MWSIZE3D(I,J,L,1)=RDRY(39)*GFTOT3D(I,J,L,1)
MWSIZE3D(I,J,L,1) = RDRY(39) * GFTOT3D(I,J,L,1)
ENDIF
IF(SUM(Spc(I,J,L,APMIDS%id_SEABIN1:(APMIDS%id_SEABIN1+NSEA-1))) &
>1.d-30)THEN
MWSIZE3D(I,J,L,2)=MWSIZE3D(I,J,L,2)/ &
SUM(Spc(I,J,L,APMIDS%id_SEABIN1:(APMIDS%id_SEABIN1+NSEA-1)))

SEA_bin_sum = 0.d0
DO M = 1, NSEA
SEA_bin_sum = SEA_bin_sum + Spc(APMIDS%id_SEABIN1+M-1)%Conc(I,J,L)
ENDDO
IF( SEA_bin_sum > 1.d-30 ) THEN
MWSIZE3D(I,J,L,2) = MWSIZE3D(I,J,L,2) / SEA_bin_sum
ELSE
MWSIZE3D(I,J,L,2)=RSALT(19)*GFTOT3D(I,J,L,2)
MWSIZE3D(I,J,L,2) = RSALT(19) * GFTOT3D(I,J,L,2)
ENDIF
IF(SUM(Spc(I,J,L,APMIDS%id_DSTBIN1:(APMIDS%id_DSTBIN1+NDSTB-1))) &
>1.d-30)THEN
MWSIZE3D(I,J,L,3)=MWSIZE3D(I,J,L,3)/ &
SUM(Spc(I,J,L,APMIDS%id_DSTBIN1:(APMIDS%id_DSTBIN1+NDSTB-1)))

DST_bin_sum = 0.d0
DO M = 1, NDSTB
DST_bin_sum = DST_bin_sum + Spc(APMIDS%id_DSTBIN1+M-1)%Conc(I,J,L)
ENDDO
IF( DST_bin_sum > 1.d-30 )THEN
MWSIZE3D(I,J,L,3) = MWSIZE3D(I,J,L,3) / DST_bin_sum
ELSE
MWSIZE3D(I,J,L,3)=RDRY(14)
MWSIZE3D(I,J,L,3) = RDRY(14)
ENDIF
ENDDO
ENDDO
Expand Down

0 comments on commit 6ff0554

Please sign in to comment.