Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
7995176
Test no standalone
mathomp4 Apr 17, 2024
cf91268
Make GOCART a project only if standalone
mathomp4 Apr 17, 2024
f741a52
Addresses the incorrect seasonal cycle in the CEDS emissions for the …
acollow Jul 19, 2024
2b3a8e5
Update to match GEOSgcm as of 2024Jul18
mathomp4 Jul 19, 2024
b0e4b93
Merge branch 'release/sdr_v2.2.1' into hotfix/acollow/#280-cedspathsf…
mathomp4 Jul 22, 2024
1a4bd25
Fix up standalone
mathomp4 Jul 22, 2024
7ea0290
Merge pull request #282 from GEOS-ESM/hotfix/acollow/#280-cedspathsfo…
mathomp4 Jul 22, 2024
acee94e
Adjust emission values of DU and SS for L181
sdrabenh Nov 26, 2024
c2fb84f
Added missing runAlarm to control long DT. Replaced GOCART_DT with
atrayano Dec 5, 2024
e90d78c
update pressure lids for aerosols and address GOCART2G_DT alarms
wmputman Dec 6, 2024
8eb89cd
updated CEDS emissions per Allie
wmputman Dec 8, 2024
6301420
bug fix for plid/klid implementation
wmputman Dec 8, 2024
bd3b8f0
Removed diagnostic print realted to RUN_DT alarm
atrayano Dec 9, 2024
429e0ca
Fixed the handling of RUN_DT alarm
atrayano Dec 9, 2024
0f55fa5
Merge remote-tracking branch 'origin/feature/wmputman/LM_v12rc3_WMP' …
sdrabenh Dec 10, 2024
9d33a42
updated DT alarms from Atanas
wmputman Dec 11, 2024
3a84900
hand-merge feature/wmputman/LM_v12rc3_WMP into feature/sdrabenh/gcm_v12
sdrabenh Dec 11, 2024
aca0ced
Hand merge v2.3.0 into feature/sdrabenh/gcm_v12
sdrabenh Feb 7, 2025
d33ac01
updated diffusion in FV3, chemistry handling of plid, 1M aerosol acti…
wmputman Mar 25, 2025
724639e
Merge GCMv12 from feature/sdrabenh/gcm_v12 changes into develop
sdrabenh May 9, 2025
6008079
Update CI
mathomp4 May 20, 2025
022d038
Merge branch 'develop' into feature/sdrabenh/GCMv12_into_dev
mathomp4 May 28, 2025
7190fbd
Merge branch 'develop' into feature/sdrabenh/GCMv12_into_dev
mathomp4 May 28, 2025
cfb1da1
Fix changelog
mathomp4 May 28, 2025
56c9a24
Update changelog
mathomp4 May 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- The pressure lid change associated with the introduction of run0 to set 0 above the lid
- Fwet value in dust modified from 0.8 to 1.0
- Dust and Sea salt Emission scale factors updated for L181
- Several changes in the DT alarm logic
- GOCART reference time removed in `GOCART2G_GridCompMod.F90`
- Heartbeat time step removed and `timeToWork` logical added

### Fixed

### Added
Expand Down
90 changes: 73 additions & 17 deletions ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ subroutine SetServices (GC, RC)
call MAPL_GridCompSetEntryPoint (GC, ESMF_Method_Run, Run, __RC__)
if (data_driven .neqv. .true.) then
call MAPL_GridCompSetEntryPoint (GC, ESMF_Method_Run, Run2, __RC__)
call MAPL_GridCompSetEntryPoint (GC, ESMF_METHOD_RUN, Run0, __RC__)
end if

DEFVAL = 0.0
Expand Down Expand Up @@ -385,10 +386,8 @@ subroutine Initialize (GC, import, export, clock, RC)
type (ESMF_Field) :: field, fld
character (len=ESMF_MAXSTR) :: prefix, GCsuffix, diurnal_bb, bin_index
character (len=ESMF_MAXSTR),allocatable :: aerosol_names(:)
real, pointer, dimension(:,:,:) :: int_ptr
real :: CDT ! chemistry timestep (secs)
integer :: HDT ! model timestep (secs)
real, pointer, dimension(:,:,:) :: ple
logical :: data_driven
logical :: bands_are_present
integer, allocatable, dimension(:) :: channels_
Expand Down Expand Up @@ -433,7 +432,7 @@ subroutine Initialize (GC, import, export, clock, RC)
! Get DTs
! -------
call MAPL_GetResource(mapl, HDT, Label='RUN_DT:', __RC__)
call MAPL_GetResource(mapl, CDT, Label='GOCART_DT:', default=real(HDT), __RC__)
call MAPL_GetResource(mapl, CDT, Label='GOCART2G_DT:', default=real(HDT), __RC__)
self%CDT = CDT

! Check whether to de-activate diurnal biomass burning (default is *on*)
Expand Down Expand Up @@ -492,24 +491,11 @@ subroutine Initialize (GC, import, export, clock, RC)
fld = MAPL_FieldCreate (field, trim(comp_name)//'phobic', __RC__)
call MAPL_StateAdd (aero, fld, __RC__)

! Set internal CAphobic values to 0 where above klid
call MAPL_GetPointer (internal, int_ptr, trim(comp_name)//'phobic', __RC__)
call setZeroKlid(self%km, self%klid, int_ptr)

call ESMF_StateGet (internal, trim(comp_name)//'philic', field, __RC__)
call ESMF_AttributeSet (field, NAME='ScavengingFractionPerKm', VALUE=self%fscav(2), __RC__)
fld = MAPL_FieldCreate (field, trim(comp_name)//'philic', __RC__)
call MAPL_StateAdd (aero, fld, __RC__)

if (.not. data_driven) then
! Set klid
call MAPL_GetPointer(import, ple, 'PLE', __RC__)
call findKlid (self%klid, self%plid, ple, __RC__)
! Set internal CAphilic values to 0 where above klid
call MAPL_GetPointer (internal, int_ptr, trim(comp_name)//'philic', __RC__)
call setZeroKlid(self%km, self%klid, int_ptr)
end if

if (data_driven) then
instance = instanceData

Expand Down Expand Up @@ -607,7 +593,71 @@ subroutine Initialize (GC, import, export, clock, RC)
end subroutine Initialize

!============================================================================
!BOP
! !IROUTINE: Run0

! !INTERFACE:
subroutine Run0 (GC, import, export, clock, RC)

! !ARGUMENTS:
type (ESMF_GridComp), intent(inout) :: GC ! Gridded component
type (ESMF_State), intent(inout) :: import ! Import state
type (ESMF_State), intent(inout) :: export ! Export state
type (ESMF_Clock), intent(inout) :: clock ! The clock
integer, optional, intent( out) :: RC ! Error code:

! !DESCRIPTION: Clears klid to 0.0 for Carbon

!EOP
!============================================================================
! Locals
character (len=ESMF_MAXSTR) :: COMP_NAME
type (MAPL_MetaComp), pointer :: MAPL
type (ESMF_State) :: internal
type (wrap_) :: wrap
type (CA2G_GridComp), pointer :: self
real, pointer, dimension(:,:,:) :: intPtr_phobic, intPtr_philic
real, pointer, dimension(:,:,:) :: ple

__Iam__('Run0')

!*****************************************************************************
! Begin...

! Get my name and set-up traceback handle
! ---------------------------------------
call ESMF_GridCompGet (GC, NAME=COMP_NAME, __RC__)
Iam = trim(COMP_NAME) // '::' // Iam

! Get my internal MAPL_Generic state
! -----------------------------------
call MAPL_GetObjectFromGC (GC, MAPL, __RC__)

! Get parameters from generic state.
! -----------------------------------
call MAPL_Get (MAPL, INTERNAL_ESMF_STATE=internal, __RC__)

call MAPL_GetPointer (internal, intPtr_phobic, trim(comp_name)//'phobic', __RC__)
call MAPL_GetPointer (internal, intPtr_philic, trim(comp_name)//'philic', __RC__)

! Get my private internal state
! ------------------------------
call ESMF_UserCompGetInternalState(GC, 'CA2G_GridComp', wrap, STATUS)
VERIFY_(STATUS)
self => wrap%ptr

! Set klid and Set internal values to 0 above klid
! ---------------------------------------------------
call MAPL_GetPointer(import, ple, 'PLE', __RC__)
call findKlid (self%klid, self%plid, ple, __RC__)
call setZeroKlid (self%km, self%klid, intPtr_phobic)
call setZeroKlid (self%km, self%klid, intPtr_philic)

RETURN_(ESMF_SUCCESS)

end subroutine Run0

!============================================================================
!BOP
! !IROUTINE: Run

Expand All @@ -621,7 +671,7 @@ subroutine Run (GC, import, export, clock, rc)
type (ESMF_Clock), intent(inout) :: clock ! The clock
integer, optional, intent( out) :: rc ! Error code:

! !DESCRIPTION: Run method for the Sea Salt Grid Component. Determines whether to run
! !DESCRIPTION: Run method for the Carbon Grid Component. Determines whether to run
! data or computational run method.

!EOP
Expand Down Expand Up @@ -989,6 +1039,12 @@ subroutine Run2 (GC, import, export, clock, RC)
VERIFY_(STATUS)
self => wrap%ptr

! Set klid and Set internal values to 0 above klid
! ---------------------------------------------------
call findKlid (self%klid, self%plid, ple, __RC__)
call setZeroKlid (self%km, self%klid, intPtr_phobic)
call setZeroKlid (self%km, self%klid, intPtr_philic)

! Add on SOA from Anthropogenic VOC oxidation
! -------------------------------------------
if (trim(comp_name) == 'CA.oc') then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ particle_radius_microns: 0.35 0.35
# Sigma of lognormal number distribution
sigma: 2.0 2.0

pressure_lid_in_hPa: 0.01
pressure_lid_in_hPa: 40.0

nbins: 2

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ fnum: 9.76e17 9.76e17
# Sigma of lognormal number distribution
sigma: 2.20 2.20

pressure_lid_in_hPa: 0.01
pressure_lid_in_hPa: 40.0

nbins: 2

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ fnum: 9.76e17 9.76e17
# Sigma of lognormal number distribution
sigma: 2.20 2.20

pressure_lid_in_hPa: 0.01
pressure_lid_in_hPa: 40.0

nbins: 2

Expand Down
82 changes: 69 additions & 13 deletions ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ subroutine SetServices (GC, RC)
call MAPL_GridCompSetEntryPoint (GC, ESMF_Method_Run, Run, __RC__)
if (data_driven .neqv. .true.) then
call MAPL_GridCompSetEntryPoint (GC, ESMF_Method_Run, Run2, __RC__)
call MAPL_GridCompSetEntryPoint (GC, ESMF_Method_Run, Run0, __RC__)
end if

DEFVAL = 0.0
Expand Down Expand Up @@ -404,8 +405,6 @@ subroutine Initialize (GC, import, export, clock, RC)
character (len=ESMF_MAXSTR) :: bin_index, prefix
real :: CDT ! chemistry timestep (secs)
integer :: HDT ! model timestep (secs)
real, pointer, dimension(:,:,:,:) :: int_ptr
real, pointer, dimension(:,:,:) :: ple
logical :: data_driven
integer :: NUM_BANDS
logical :: bands_are_present
Expand Down Expand Up @@ -458,7 +457,7 @@ subroutine Initialize (GC, import, export, clock, RC)
! Get DTs
! -------
call MAPL_GetResource(mapl, HDT, Label='RUN_DT:', __RC__)
call MAPL_GetResource(mapl, CDT, Label='GOCART_DT:', default=real(HDT), __RC__)
call MAPL_GetResource(mapl, CDT, Label='GOCART2G_DT:', default=real(HDT), __RC__)
self%CDT = CDT

! Load resource file
Expand Down Expand Up @@ -511,15 +510,6 @@ subroutine Initialize (GC, import, export, clock, RC)
fld = MAPL_FieldCreate (field, 'DU', __RC__)
call MAPL_StateAdd (aero, fld, __RC__)

if (.not. data_driven) then
! Set klid
call MAPL_GetPointer(import, ple, 'PLE', __RC__)
call findKlid (self%klid, self%plid, ple, __RC__)
! Set internal DU values to 0 where above klid
call MAPL_GetPointer (internal, int_ptr, 'DU', __RC__)
call setZeroKlid4d (self%km, self%klid, int_ptr)
end if

call ESMF_AttributeSet(field, NAME='ScavengingFractionPerKm', value=self%fscav(1), __RC__)

if (data_driven) then
Expand Down Expand Up @@ -611,6 +601,67 @@ subroutine Initialize (GC, import, export, clock, RC)

end subroutine Initialize

!============================================================================
!BOP
! !IROUTINE: Run0

! !INTERFACE:
subroutine Run0 (GC, import, export, clock, RC)

! !ARGUMENTS:
type (ESMF_GridComp), intent(inout) :: GC ! Gridded component
type (ESMF_State), intent(inout) :: import ! Import state
type (ESMF_State), intent(inout) :: export ! Export state
type (ESMF_Clock), intent(inout) :: clock ! The clock
integer, optional, intent( out) :: RC ! Error code:

! !DESCRIPTION: Clears klid to 0.0 for Dust

!EOP
!============================================================================
! Locals
character (len=ESMF_MAXSTR) :: COMP_NAME
type (MAPL_MetaComp), pointer :: MAPL
type (ESMF_State) :: internal
type (wrap_) :: wrap
type (DU2G_GridComp), pointer :: self
real, pointer, dimension(:,:,:) :: ple
real, pointer, dimension(:,:,:,:) :: ptr4d_int

__Iam__('Run0')

!*****************************************************************************
! Begin...

! Get my name and set-up traceback handle
! ---------------------------------------
call ESMF_GridCompGet (GC, NAME=COMP_NAME, __RC__)
Iam = trim(COMP_NAME) // '::' // Iam

! Get my internal MAPL_Generic state
! -----------------------------------
call MAPL_GetObjectFromGC (GC, MAPL, __RC__)

! Get parameters from generic state.
! -----------------------------------
call MAPL_Get (MAPL, INTERNAL_ESMF_STATE=internal, __RC__)

! Get my private internal state
! ------------------------------
call ESMF_UserCompGetInternalState(GC, 'DU2G_GridComp', wrap, STATUS)
VERIFY_(STATUS)
self => wrap%ptr

! Set klid and Set internal values to 0 above klid
! ---------------------------------------------------
call MAPL_GetPointer(import, ple, 'PLE', __RC__)
call findKlid (self%klid, self%plid, ple, __RC__)
call MAPL_GetPointer (internal, NAME='DU', ptr=ptr4d_int, __RC__)
call setZeroKlid4d (self%km, self%klid, ptr4d_int)

RETURN_(ESMF_SUCCESS)

end subroutine Run0

!============================================================================
!BOP
Expand Down Expand Up @@ -966,6 +1017,11 @@ subroutine Run2 (GC, import, export, clock, RC)
allocate(dqa, mold=wet1, __STAT__)
allocate(drydepositionfrequency, mold=wet1, __STAT__)

! Set klid and Set internal DU values to 0 above klid
! ---------------------------------------------------
call findKlid (self%klid, self%plid, ple, __RC__)
call setZeroKlid4d (self%km, self%klid, DU)

! Dust Settling
! -------------
do n = 1, self%nbins
Expand Down Expand Up @@ -1001,7 +1057,7 @@ subroutine Run2 (GC, import, export, clock, RC)
select case (self%wet_removal_scheme)
case ('gocart')
do n = 1, self%nbins
fwet = 0.8
fwet = 1.0
call WetRemovalGOCART2G(self%km, self%klid, self%nbins, self%nbins, n, self%cdt, 'dust', &
KIN, MAPL_GRAV, fwet, DU(:,:,:,n), ple, t, airdens, &
pfl_lsan, pfi_lsan, cn_prcp, ncn_prcp, DUWT, __RC__)
Expand Down
6 changes: 3 additions & 3 deletions ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_instance_DU.rc
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ particle_density: 2500. 2650. 2650. 2650. 2650.
# Ginoux emission scheme
# -----------------------
emission_scheme: ginoux
#Ch_DU: 0.2 0.2 0.07 0.07 0.07 0.056 #original values for (a,b,c,d,e,f)
Ch_DU: 0.3 0.3 0.11 0.11 0.11 0.088
Ch_DU: 0.20 0.15 0.10 0.09 0.080 0.070 # L181 values for (a,b,c,d,e,f)
#Ch_DU: 0.30 0.30 0.11 0.11 0.110 0.088 # L072 values for (a,b,c,d,e,f)

# source_fraction: 0.0435465 0.106903 0.220117 0.484606 0.144828
source_fraction: 0.1 0.25 0.25 0.25 0.25
Expand Down Expand Up @@ -63,7 +63,7 @@ maringFlag: .true.

nbins: 5

pressure_lid_in_hPa: 0.01
pressure_lid_in_hPa: 40.0

# FENGSHA settings
alpha: 0.16
Expand Down
Loading
Loading