Skip to content

Commit

Permalink
Merge pull request #16 from GEOS-ESM/develop
Browse files Browse the repository at this point in the history
GitFlow: Merge Develop into Main for release
  • Loading branch information
mathomp4 authored Mar 24, 2023
2 parents be45f26 + f97c10b commit dec6974
Show file tree
Hide file tree
Showing 5 changed files with 214 additions and 54 deletions.
4 changes: 2 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
version: 2.1

# Anchors to prevent forgetting to update a version
baselibs_version: &baselibs_version v7.5.0
bcs_version: &bcs_version v10.22.3
baselibs_version: &baselibs_version v7.7.0
bcs_version: &bcs_version v11.00.0

orbs:
ci: geos-esm/circleci-tools@1
Expand Down
32 changes: 30 additions & 2 deletions GEOSirrad_GridComp/GEOS_IrradGridComp.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1642,6 +1642,19 @@ subroutine Lw_Driver(IM,JM,LM,LATS,LONS,CoresPerNode,RC)
CWC (:,:,:,KRAIN ) = QR
CWC (:,:,:,KSNOW ) = QS

WHERE (RI == MAPL_UNDEF)
RI = 36.e-6
END WHERE
WHERE (RL == MAPL_UNDEF)
RL = 14.e-6
END WHERE
WHERE (RR == MAPL_UNDEF)
RR = 50.e-6
END WHERE
WHERE (RS == MAPL_UNDEF)
RS = 50.e-6
END WHERE

REFF(:,:,:,KICE ) = RI * 1.0e6
REFF(:,:,:,KLIQUID) = RL * 1.0e6
REFF(:,:,:,KRAIN ) = RR * 1.0e6
Expand Down Expand Up @@ -2747,8 +2760,10 @@ subroutine Lw_Driver(IM,JM,LM,LATS,LONS,CoresPerNode,RC)
allocate(DOLRBRG_DTS (nbndlw,IM*JM),__STAT__)

! choices for cloud physical to optical conversion
ICEFLGLW = 3
LIQFLGLW = 1
call MAPL_GetResource(MAPL,ICEFLGLW,'RRTMG_ICEFLG:',DEFAULT=3,RC=STATUS)
VERIFY_(STATUS)
call MAPL_GetResource(MAPL,LIQFLGLW,'RRTMG_LIQFLG:',DEFAULT=1,RC=STATUS)
VERIFY_(STATUS)

! calculate derivatives of upward flux with Tsurf
Ts_derivs = .true.
Expand Down Expand Up @@ -2875,6 +2890,19 @@ subroutine Lw_Driver(IM,JM,LM,LATS,LONS,CoresPerNode,RC)
enddo ! IM
enddo ! JM

! Clean up negatives
WHERE (Q_R < 0.) Q_R = 0.
WHERE (O3_R < 0.) O3_R = 0.
WHERE (CH4_R < 0.) CH4_R = 0.
WHERE (N2O_R < 0.) N2O_R = 0.
WHERE (CO2_R < 0.) CO2_R = 0.
WHERE (O2_R < 0.) O2_R = 0.
WHERE (CCL4_R < 0.) CCL4_R = 0.
WHERE (CFC11_R < 0.) CFC11_R = 0.
WHERE (CFC12_R < 0.) CFC12_R = 0.
WHERE (CFC22_R < 0.) CFC22_R = 0.
WHERE (FCLD_R < 0.) FCLD_R = 0.

call MAPL_TimerOff(MAPL,"---RRTMG_FLIP",RC=STATUS)
VERIFY_(STATUS)

Expand Down
103 changes: 62 additions & 41 deletions GEOSsatsim_GridComp/GEOS_SatsimGridComp.F90
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,14 @@ subroutine SetServices ( GC, RC )
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
VERIFY_(STATUS)

call MAPL_AddImportSpec(GC, &
SHORT_NAME='RG', &
LONG_NAME ='graupel_particle_effective_radius', &
UNITS ='m', &
DIMS = MAPL_DimsHorzVert, &
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
VERIFY_(STATUS)

call MAPL_AddImportSpec(GC, &
SHORT_NAME='RS', &
LONG_NAME ='snow_particle_effective_radius', &
Expand Down Expand Up @@ -215,48 +223,40 @@ subroutine SetServices ( GC, RC )
VERIFY_(STATUS)

call MAPL_AddImportSpec(GC, &
SHORT_NAME ='QLLS', &
LONG_NAME ='mass_fraction_of_large_scale_cloud_liquid_water', &
SHORT_NAME ='QL', &
LONG_NAME ='mass_fraction_of_cloud_liquid_water', &
UNITS ='1', &
DIMS = MAPL_DimsHorzVert, &
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
VERIFY_(STATUS)

call MAPL_AddImportSpec(GC, &
SHORT_NAME ='QLCN', &
LONG_NAME ='mass_fraction_of_convective_cloud_liquid_water', &
SHORT_NAME ='QI', &
LONG_NAME ='mass_fraction_of_cloud_ice_water', &
UNITS ='1', &
DIMS = MAPL_DimsHorzVert, &
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
VERIFY_(STATUS)

call MAPL_AddImportSpec(GC, &
SHORT_NAME ='QILS', &
LONG_NAME ='mass_fraction_of_large_scale_cloud_ice_water', &
UNITS ='1', &
DIMS = MAPL_DimsHorzVert, &
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
VERIFY_(STATUS)

call MAPL_AddImportSpec(GC, &
SHORT_NAME ='QICN', &
LONG_NAME ='mass_fraction_of_convective_cloud_ice_water', &
UNITS ='1', &
call MAPL_AddImportSpec(GC, &
SHORT_NAME ='QR', &
LONG_NAME ='mass_fraction_of_falling_rain', &
UNITS ='kg kg-1', &
DIMS = MAPL_DimsHorzVert, &
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
VERIFY_(STATUS)

call MAPL_AddImportSpec(GC, &
SHORT_NAME ='QRTOT', &
LONG_NAME ='mass_fraction_of_falling_rain', &
SHORT_NAME ='QS', &
LONG_NAME ='mass_fraction_of_falling_snow', &
UNITS ='kg kg-1', &
DIMS = MAPL_DimsHorzVert, &
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
VERIFY_(STATUS)

call MAPL_AddImportSpec(GC, &
SHORT_NAME ='QSTOT', &
LONG_NAME ='mass_fraction_of_falling_snow', &
SHORT_NAME ='QG', &
LONG_NAME ='mass_fraction_of_falling_graupel', &
UNITS ='kg kg-1', &
DIMS = MAPL_DimsHorzVert, &
VLOCATION = MAPL_VLocationCenter, RC=STATUS )
Expand Down Expand Up @@ -2812,10 +2812,9 @@ subroutine SIM_DRIVER(IM,JM,LM, RC)
! These are the gen-u-ine import arrays in GEOS-5 dimensions
! PLE and ZLE are indexed 0:LM
real, pointer, dimension(:,:,:) :: T, PLE, QV, FCLD, ZLE
real, pointer, dimension(:,:,:) :: RDFL, RDFI, QLLS, QILS, QLCN, QICN
real, pointer, dimension(:,:,:) :: RDFR, RDFS
real, pointer, dimension(:,:,:) :: QRTOT, QSTOT
real, dimension(IM,JM,LM) :: QLTOT, QITOT
real, pointer, dimension(:,:,:) :: RDFL, RDFI
real, pointer, dimension(:,:,:) :: RDFR, RDFS, RDFG
real, pointer, dimension(:,:,:) :: QLTOT, QITOT, QRTOT, QSTOT, QGTOT
real, pointer, dimension(:,:) :: MCOSZ,FRLAND,TS,FROCEAN

! These are the same, in logical 2 dimensions for icarus's sake
Expand All @@ -2824,10 +2823,10 @@ subroutine SIM_DRIVER(IM,JM,LM, RC)

! These are the same, converted to upside-down and 2d
real, dimension(IM*JM,LM) :: TCOSP, PLOCOSP, QVCOSP, FCLDCOSP
real, dimension(IM*JM,LM) :: RDFLCOSP, RDFICOSP, QLLSCOSP, QILSCOSP, QLCNCOSP, QICNCOSP
real, dimension(IM*JM,LM) :: RDFLCOSP, RDFICOSP
real, dimension(IM*JM,LM) :: QLTOTCOSP, QITOTCOSP
real, dimension(IM*JM,LM) :: QRTOTCOSP, QSTOTCOSP
real, dimension(IM*JM,LM) :: RDFRCOSP, RDFSCOSP
real, dimension(IM*JM,LM) :: QRTOTCOSP, QSTOTCOSP, QGTOTCOSP
real, dimension(IM*JM,LM) :: RDFRCOSP, RDFSCOSP, RDFGCOSP
real, dimension(IM*JM,0:LM) :: PLECOSP, PLE2DTOA0INV, ZLECOSP

! Local variables needed for all simulators
Expand Down Expand Up @@ -3082,13 +3081,13 @@ subroutine SIM_DRIVER(IM,JM,LM, RC)
call MAPL_GetPointer(IMPORT, RDFI, 'RI' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, RDFR, 'RR' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, RDFS, 'RS' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, FCLD, 'FCLD' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QLLS, 'QLLS', RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QILS, 'QILS', RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QLCN, 'QLCN', RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QICN, 'QICN', RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QRTOT , 'QRTOT', RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QSTOT , 'QSTOT', RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, RDFG, 'RG' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, FCLD, 'FCLD' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QLTOT, 'QL' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QITOT, 'QI' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QRTOT, 'QR' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QSTOT, 'QS' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, QGTOT, 'QG' , RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, MCOSZ, 'MCOSZ', RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, FRLAND,'FRLAND', RC=STATUS); VERIFY_(STATUS)
call MAPL_GetPointer(IMPORT, FROCEAN,'FROCEAN', RC=STATUS); VERIFY_(STATUS)
Expand Down Expand Up @@ -3374,9 +3373,6 @@ subroutine SIM_DRIVER(IM,JM,LM, RC)
! The following are convective terms, which we don't want now
CCA = 0.0

QLTOT = QLLS + QLCN
QITOT = QILS + QICN

! the following is in lieu of
! where(FCLD.gt.0.)
! to avoid stupid high cwc, which makes for stupid high dtau_s, which
Expand All @@ -3395,6 +3391,24 @@ subroutine SIM_DRIVER(IM,JM,LM, RC)

! delp in Pascals, reff in microns

#ifdef USE_MAPL_UNDEF
WHERE (RDFI == MAPL_UNDEF)
RDFI = 36.e-6
END WHERE
WHERE (RDFL == MAPL_UNDEF)
RDFL = 14.e-6
END WHERE
WHERE (RDFR == MAPL_UNDEF)
RDFR = 50.e-6
END WHERE
WHERE (RDFS == MAPL_UNDEF)
RDFS = 50.e-6
END WHERE
WHERE (RDFG == MAPL_UNDEF)
RDFG = 50.e-6
END WHERE
#endif

reff(:,:,:,1) = RDFI *1.e6
reff(:,:,:,2) = RDFL *1.e6
reff(:,:,:,3) = RDFR *1.e6
Expand Down Expand Up @@ -3545,21 +3559,24 @@ subroutine SIM_DRIVER(IM,JM,LM, RC)
RDFICOSP = reshape( RDFI(:,:,LM:1:-1), (/ IM*JM , LM /) )
RDFRCOSP = reshape( RDFR(:,:,LM:1:-1), (/ IM*JM , LM /) )
RDFSCOSP = reshape( RDFS(:,:,LM:1:-1), (/ IM*JM , LM /) )
RDFGCOSP = reshape( RDFG(:,:,LM:1:-1), (/ IM*JM , LM /) )
QLTOTCOSP = reshape( QLTOT(:,:,LM:1:-1), (/ IM*JM , LM /) )
QITOTCOSP = reshape( QITOT(:,:,LM:1:-1), (/ IM*JM , LM /) )
QRTOTCOSP = reshape( QRTOT(:,:,LM:1:-1), (/ IM*JM , LM /) )
QSTOTCOSP = reshape( QSTOT(:,:,LM:1:-1), (/ IM*JM , LM /) )
QLCNCOSP = reshape( QLCN(:,:,LM:1:-1), (/ IM*JM , LM /) )
QICNCOSP = reshape( QICN(:,:,LM:1:-1), (/ IM*JM , LM /) )
QGTOTCOSP = reshape( QGTOT(:,:,LM:1:-1), (/ IM*JM , LM /) )
PLECOSP = reshape( PLE(:,:,LM:0:-1), (/ IM*JM , LM+1 /) )
ZLECOSP = ZLE2D(:,LM:0:-1)
MCOSZCOSP = reshape( MCOSZ , (/ IM*JM /) )
FRLANDCOSP = reshape( FRLAND , (/ IM*JM /) )
FROCEANCOSP = reshape( FROCEAN , (/ IM*JM /) )
TSCOSP = reshape( TS , (/ IM*JM /) )

ZLE2D = reshape( ZLE, (/ IM*JM , LM+1 /) )
zlo2d = 0.5*( zle2d(:,0:LM-1)+zle2d(:,1:lm))
do k = 0,LM
ZLE2D(:,k) = ZLE2D(:,k)-ZLE2D(:,LM)
enddo
ZLECOSP = ZLE2D(:,LM:0:-1)
ZLO2D = 0.5*( ZLE2D(:,0:LM-1)+ZLE2D(:,1:LM))
ZLOCOSP = ZLO2D(:,LM:1:-1)


Expand Down Expand Up @@ -3666,12 +3683,16 @@ subroutine SIM_DRIVER(IM,JM,LM, RC)
gbx%mr_hydro(:,:,I_LSCICE) = QITOTCOSP(BEGSEG:ENDSEG,:)
gbx%mr_hydro(:,:,I_LSRAIN) = QRTOTCOSP(BEGSEG:ENDSEG,:)
gbx%mr_hydro(:,:,I_LSSNOW) = QSTOTCOSP(BEGSEG:ENDSEG,:)
gbx%mr_hydro(:,:,I_LSGRPL) = QGTOTCOSP(BEGSEG:ENDSEG,:)
gbx%mr_hydro(:,:,I_CVCLIQ) = 0.0
gbx%mr_hydro(:,:,I_CVCICE) = 0.0
gbx%mr_hydro(:,:,I_CVRAIN) = 0.0
gbx%mr_hydro(:,:,I_CVSNOW) = 0.0
gbx%reff(:,:,I_LSCLIQ) = RDFLCOSP(BEGSEG:ENDSEG,:)
gbx%reff(:,:,I_LSCICE) = RDFICOSP(BEGSEG:ENDSEG,:)
gbx%reff(:,:,I_LSRAIN) = RDFRCOSP(BEGSEG:ENDSEG,:)
gbx%reff(:,:,I_LSSNOW) = RDFSCOSP(BEGSEG:ENDSEG,:)
gbx%reff(:,:,I_LSGRPL) = RDFGCOSP(BEGSEG:ENDSEG,:)
gbx%zlev = ZLOCOSP(BEGSEG:ENDSEG,:)
gbx%zlev_half = ZLECOSP(BEGSEG:ENDSEG,1:LM)

Expand Down
29 changes: 27 additions & 2 deletions GEOSsolar_GridComp/GEOS_SolarGridComp.F90
Original file line number Diff line number Diff line change
Expand Up @@ -2863,6 +2863,20 @@ subroutine SORADCORE(IM,JM,LM,NO_AERO,CURRTIME,LoadBalance,RC)
QQ3(:,:,2) = QL
QQ3(:,:,3) = QR
QQ3(:,:,4) = QS

WHERE (RI == MAPL_UNDEF)
RI = 36.e-6
END WHERE
WHERE (RL == MAPL_UNDEF)
RL = 14.e-6
END WHERE
WHERE (RR == MAPL_UNDEF)
RR = 50.e-6
END WHERE
WHERE (RS == MAPL_UNDEF)
RS = 50.e-6
END WHERE

RR3(:,:,1) = RI*1.e6 ! microns
RR3(:,:,2) = RL*1.e6
RR3(:,:,3) = RR*1.e6
Expand Down Expand Up @@ -3650,8 +3664,11 @@ subroutine SORADCORE(IM,JM,LM,NO_AERO,CURRTIME,LoadBalance,RC)
! Set flags related to cloud properties (see RRTMG_SW)
! ----------------------------------------------------

ICEFLGSW = 3
LIQFLGSW = 1
! Set flags related to cloud properties
call MAPL_GetResource(MAPL,ICEFLGSW,'RRTMG_ICEFLG:',DEFAULT=3,RC=STATUS)
VERIFY_(STATUS)
call MAPL_GetResource(MAPL,LIQFLGSW,'RRTMG_LIQFLG:',DEFAULT=1,RC=STATUS)
VERIFY_(STATUS)

! Get number of cores per node for RRTMG GPU
! ------------------------------------------
Expand Down Expand Up @@ -3742,6 +3759,14 @@ subroutine SORADCORE(IM,JM,LM,NO_AERO,CURRTIME,LoadBalance,RC)
O2_R (:,1:LM ) = O2
FCLD_R(:,1:LM ) = CL (:,LM:1:-1)

! Clean up negatives
WHERE (Q_R < 0.) Q_R = 0.
WHERE (O3_R < 0.) O3_R = 0.
WHERE (CH4_R < 0.) CH4_R = 0.
WHERE (CO2_R < 0.) CO2_R = 0.
WHERE (O2_R < 0.) O2_R = 0.
WHERE (FCLD_R < 0.) FCLD_R = 0.

! Adjustment for Earth/Sun distance, from MAPL_SunGetInsolation
ADJES = DIST

Expand Down
Loading

0 comments on commit dec6974

Please sign in to comment.