Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable GOCART integration in UFS #310

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
f78aa42
Reset to zero coupling arrays for accumulated snow,
rmontuoro Dec 3, 2019
75654ac
Properly set kind type of literal constants
rmontuoro Dec 3, 2019
2870f5e
Initialize to zero canopy resistance output variable
rmontuoro Dec 3, 2019
37fb245
Re-implement radiation diagnostic output involving spectral
rmontuoro Dec 3, 2019
1c0a9ba
Reset to zero instantaneous total moisture tendency
rmontuoro Dec 3, 2019
afb4c67
Merge NOAA-EMC branch 'develop' into develop.
rmontuoro Apr 21, 2020
3004022
Merge NOAA-EMC branch 'develop' into develop.
rmontuoro Apr 24, 2020
617b907
Merge NOAA-EMC branch 'develop' into develop.
rmontuoro May 8, 2020
bdd1131
Merge EMC-NOAA branch 'develop' into develop.
rmontuoro Oct 19, 2020
735eb9e
Temporarily disable filling export fields during
rmontuoro Oct 19, 2020
59cf366
Moving previous commit to a branch.
rmontuoro Oct 19, 2020
4849674
Merge NOAA-EMC branch 'develop' into develop
rmontuoro Apr 25, 2021
862f9e8
Allow coupled components to access exported fields
rmontuoro Apr 25, 2021
824d9d5
Add missing time sampling call and rearrange time sampling
rmontuoro Nov 10, 2020
a6d0ebd
Implement preliminary coupling to NASA GOCART.
rmontuoro Nov 11, 2020
be9bf3a
Prevent importing diagnostic quantities from
rmontuoro Nov 18, 2020
fb489d4
Do not rescale constant arrays before writing
rmontuoro Mar 16, 2021
ed69d2c
Use proper CCPP control data type.
rmontuoro Apr 26, 2021
781d718
Enable diagnostic tracers for aerosols.
rmontuoro Apr 26, 2021
61dccf3
Update ccpp/physics submodule to point to forked repository.
rmontuoro Apr 26, 2021
c9daf4a
Fill export fields only if data array is allocated
rmontuoro Apr 28, 2021
b13d76c
Update ccpp/physics submodule.
rmontuoro Apr 28, 2021
1912e9e
Add metadata for logical flag 'cplgocart'.
rmontuoro Apr 28, 2021
94967f8
Do not set cplflx to .true. when coupling with GOCART.
rmontuoro Apr 28, 2021
ebc4fec
Populate only the export fields required by each
rmontuoro Apr 28, 2021
0619729
Merge NOAA-EMC branch 'develop' into develop
rmontuoro Apr 28, 2021
6e95699
Merge branch 'develop' into feature/gocart-integration
rmontuoro Apr 28, 2021
c7f26f0
Update atmos_cubed_sphere submodule to point to fork.
rmontuoro Apr 28, 2021
abb3134
Export instantaneous normalized soil wetness.
rmontuoro Apr 28, 2021
336ad7f
Export instantaneous 3D cloud fraction.
rmontuoro Apr 28, 2021
ef3ab9d
Export surface snow area fraction.
rmontuoro Apr 28, 2021
c7e0b39
Enable export of soil liquid water content
rmontuoro Apr 28, 2021
24a2a4d
Output debug information on aerosol diagnostics
rmontuoro May 1, 2021
7b38017
Export instantaneous 3D non-convective liquid and
rmontuoro May 1, 2021
8a98b80
Rename temporarily upward sensible heat flux field
rmontuoro May 1, 2021
6f730ae
Merge EMC branch 'develop' into develop
rmontuoro May 2, 2021
9f7c611
Merge branch 'develop' into feature/gocart-integration
rmontuoro May 2, 2021
374d895
Update ccpp-physics submodule.
rmontuoro May 3, 2021
deda93d
Merge NOAA-EMC branch 'develop' into develop
rmontuoro May 11, 2021
cdd0739
Merge branch 'develop' into feature/gocart-integration
rmontuoro May 11, 2021
bb754cc
Merge EMC branch 'develop' into develop
rmontuoro May 13, 2021
a0e6483
Merge branch 'develop' into feature/gocart-integration
rmontuoro May 13, 2021
a3e8096
Provide tracer names to coupled model component accessing
rmontuoro May 16, 2021
cdeaf48
Implement a more general way to identify and validate input tracers.
rmontuoro May 16, 2021
d85570d
Increase length and size of character array used in the
rmontuoro May 16, 2021
c9a40cd
Upgrade code initializing aerosol scavenging factors and
rmontuoro May 16, 2021
39ea6e7
Improve sharing of tracer names and units with coupled
rmontuoro May 19, 2021
cf1dab5
Remove GSDCHEM-specific legacy coupling and diagnostic code.
rmontuoro May 20, 2021
fefc233
Merge NOAA-EMC branch 'develop' into develop
rmontuoro May 21, 2021
8754b1e
Merge branch 'develop' into feature/gocart-integration
rmontuoro May 21, 2021
9f8c159
Improve validation of chemistry tracer lists in field_table file.
rmontuoro May 21, 2021
0ec3000
Merge NOAA-EMC branch 'develop' into develop
rmontuoro May 21, 2021
5660a9a
Merge branch 'develop' into feature/gocart-integration
rmontuoro May 22, 2021
ab94e52
Refactor updated setup_exportdata() (#301) to work
rmontuoro May 23, 2021
6b0ef7e
Merge 'hotfix/#301-exportdata' into feature/gocart-integration
rmontuoro May 23, 2021
c75cb0a
Use proper rank pointer and improve error handling
rmontuoro May 23, 2021
fd0e4ef
Merge branch 'hotfix/#301-exportdata' into feature/gocart-integration
rmontuoro May 23, 2021
c01c1f7
Rename exported ice fraction field as 'ice_fraction_in_atm'
rmontuoro May 24, 2021
afeda2d
Update ccpp-physics submodule.
rmontuoro May 24, 2021
c48922a
Update error message for consistency (PR #310).
rmontuoro May 24, 2021
03f841d
Further refactoring setup_exportdata() (#301) to replace
rmontuoro May 27, 2021
72ec69e
Merge branch 'hotfix/#301-exportdata' into feature/gocart-integration
rmontuoro May 27, 2021
7d331b4
Remove no longer needed include path in CMakeLists.txt
rmontuoro May 27, 2021
17fd7d2
Merge branch 'hotfix/#301-exportdata' into feature/gocart-integration
rmontuoro May 27, 2021
2adafb4
Use proper kind for real type.
rmontuoro May 27, 2021
c5f5d6e
Merge branch 'hotfix/#301-exportdata' into feature/gocart-integration
rmontuoro May 27, 2021
3c4d18f
Merge NOAA-EMC branch 'develop' into develop
rmontuoro Jun 3, 2021
208e5b2
Merge branch 'develop' into feature/gocart-integration
rmontuoro Jun 3, 2021
76d546b
Revert "Rename temporarily upward sensible heat flux field"
rmontuoro Jun 3, 2021
be17583
Use proper datatype to retrieve instantaneous land/sea/ice mask.
rmontuoro Jun 3, 2021
783321a
Implement return code in block data methods and update
rmontuoro Jun 3, 2021
911b4c4
Update error message.
rmontuoro Jun 3, 2021
9d29ae8
Initialize return code variable.
rmontuoro Jun 3, 2021
520418b
Use coupling data array to export instantaneous surface
rmontuoro Jun 3, 2021
24cb285
Merge branch 'hotfix/#301-exportdata' into feature/gocart-integration
rmontuoro Jun 3, 2021
0aafc8f
Return with error if no match is found for an
rmontuoro Jun 3, 2021
88a1be6
Disable setup_exportdata() if coupling with chemistry.
rmontuoro Jun 4, 2021
77550ca
Merge branch 'develop' into feature/gocart-integration
rmontuoro Jun 13, 2021
02314a0
Merge NOAA-EMC branch 'develop' into feature/gocart-integration
rmontuoro Jun 16, 2021
b2c5d23
Update ccpp/physics submodule.
rmontuoro Jun 16, 2021
96960c4
Merge branch 'develop' into feature/gocart-integration
rmontuoro Jun 16, 2021
aeab36a
Update submodule pointer for ccpp-physics
climbfuji Jun 30, 2021
b28c9de
Update submodule pointer for ccpp-physics
climbfuji Jun 30, 2021
ef6ba4c
Update submodule pointer for ccpp-physics
climbfuji Jun 30, 2021
86ae84d
Revert change to .gitmodules and update submodule pointer for ccpp-ph…
climbfuji Jun 30, 2021
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
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ add_library(fv3atm
module_fv3_config.F90
module_fcst_grid_comp.F90
stochastic_physics/stochastic_physics_wrapper.F90
cpl/module_block_data.F90
cpl/module_cplfields.F90
cpl/module_cap_cpl.F90
io/ffsync.F90
Expand Down
1,656 changes: 497 additions & 1,159 deletions atmos_model.F90

Large diffs are not rendered by default.

324 changes: 137 additions & 187 deletions ccpp/data/GFS_typedefs.F90

Large diffs are not rendered by default.

136 changes: 40 additions & 96 deletions ccpp/data/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -2277,14 +2277,6 @@
type = real
kind = kind_phys
active = (index_for_stochastic_land_surface_perturbation_type .ne. 0)
[dqdti]
standard_name = instantaneous_water_vapor_specific_humidity_tendency_due_to_convection
long_name = instantaneous moisture tendency due to convection
units = kg kg-1 s-1
dimensions = (horizontal_loop_extent,vertical_dimension)
type = real
kind = kind_phys
active = (flag_for_chemistry_coupling)
[nwfa2d]
standard_name = tendency_of_water_friendly_aerosols_at_surface
long_name = instantaneous water-friendly sfc aerosol source
Expand All @@ -2309,14 +2301,6 @@
type = real
kind = kind_phys
active = (flag_for_chemistry_coupling)
[dkt]
standard_name = instantaneous_atmosphere_heat_diffusivity
long_name = instantaneous atmospheric heat diffusivity
units = m2 s-1
dimensions = (horizontal_loop_extent,vertical_dimension)
type = real
kind = kind_phys
active = (flag_for_chemistry_coupling)
[qci_conv]
standard_name = convective_cloud_condesate_after_rainout
long_name = convective cloud condesate after rainout
Expand All @@ -2325,6 +2309,22 @@
type = real
kind = kind_phys
active = (flag_for_mass_flux_deep_convection_scheme == flag_for_gf_deep_convection_scheme)
[pfi_lsan]
standard_name = ice_flux_due_to_large_scale_precipitation
long_name = instantaneous 3D flux of ice from nonconvective precipitation
units = kg m-2 s-1
dimensions = (horizontal_loop_extent,vertical_dimension)
type = real
kind = kind_phys
active = (flag_for_chemistry_coupling)
[pfl_lsan]
standard_name = liquid_flux_due_to_large_scale_precipitation
long_name = instantaneous 3D flux of liquid water from nonconvective precipitation
units = kg m-2 s-1
dimensions = (horizontal_loop_extent,vertical_dimension)
type = real
kind = kind_phys
active = (flag_for_chemistry_coupling)
########################################################################
[ccpp-table-properties]
name = GFS_control_type
Expand Down Expand Up @@ -4560,6 +4560,30 @@
units = index
dimensions = ()
type = integer
[ntche]
standard_name = index_for_last_chemical_tracer
long_name = tracer index for last chemical tracer
units = index
dimensions = ()
type = integer
[ndchm]
standard_name = number_of_diagnostic_chemical_tracers
long_name = number of diagnostic chemical tracers
units = count
dimensions = ()
type = integer
[ndchs]
standard_name = index_for_first_diagnostic_chemical_tracer
long_name = tracer index for first diagnostic chemical tracer
units = index
dimensions = ()
type = integer
[ndche]
standard_name = index_for_last_diagnostic_chemical_tracer
long_name = tracer index for last diagnostic chemical tracer
units = index
dimensions = ()
type = integer
[ntdiag]
standard_name = diagnostics_control_for_chemical_tracers
long_name = array to control diagnostics for chemical tracers
Expand Down Expand Up @@ -7058,86 +7082,6 @@
dimensions = (horizontal_loop_extent,adjusted_vertical_layer_dimension_for_radiation)
type = real
kind = kind_phys
[ndust]
standard_name = number_of_dust_bins_for_diagnostics
long_name = number of dust bins for diagnostics
units = count
dimensions = ()
type = integer
[nseasalt]
standard_name = number_of_seasalt_bins_for_diagnostics
long_name = number of seasalt bins for diagnostics
units = count
dimensions = ()
type = integer
[ntchmdiag]
standard_name = number_of_chemical_tracers_for_diagnostics
long_name = number of chemical tracers for diagnostic output
units = count
dimensions = ()
type = integer
[duem]
standard_name = instantaneous_dust_emission_flux
long_name = instantaneous dust emission flux
units = kg m-2 s-1
dimensions = (horizonal_dimension,number_of_dust_bins_for_diagnostics)
type = real
kind = kind_phys
active = (number_of_dust_bins_for_diagnostics > 0)
[ssem]
standard_name = instantaneous_seasalt_emission_flux
long_name = instantaneous sea salt emission flux
units = kg m-2 s-1
dimensions = (horizonal_dimension,number_of_seasalt_bins_for_diagnostics)
type = real
kind = kind_phys
active = (number_of_seasalt_bins_for_diagnostics > 0)
[sedim]
standard_name = instantaneous_sedimentation
long_name = instantaneous sedimentation
units = kg m-2 s-1
dimensions = (horizonal_dimension,number_of_chemical_tracers_for_diagnostics)
type = real
kind = kind_phys
active = (number_of_chemical_tracers_for_diagnostics > 0)
[drydep]
standard_name = instantaneous_dry_deposition
long_name = instantaneous dry deposition
units = kg m-2 s-1
dimensions = (horizonal_dimension,number_of_chemical_tracers_for_diagnostics)
type = real
kind = kind_phys
active = (number_of_chemical_tracers_for_diagnostics > 0)
[wetdpl]
standard_name = instantaneous_large_scale_wet_deposition
long_name = instantaneous large-scale wet deposition
units = kg m-2 s-1
dimensions = (horizonal_dimension,number_of_chemical_tracers_for_diagnostics)
type = real
kind = kind_phys
active = (number_of_chemical_tracers_for_diagnostics > 0)
[wetdpc]
standard_name = instantaneous_convective_scale_wet_deposition
long_name = instantaneous convective-scale wet deposition
units = kg m-2 s-1
dimensions = (horizonal_dimension,number_of_chemical_tracers_for_diagnostics)
type = real
kind = kind_phys
active = (number_of_chemical_tracers_for_diagnostics > 0)
[abem]
standard_name = instantaneous_anthopogenic_and_biomass_burning_emissions
long_name = instantaneous anthopogenic and biomass burning emissions for black carbon, organic carbon, and sulfur dioxide
units = ug m-2 s-1
dimensions = (horizontal_loop_extent,6)
type = real
kind = kind_phys
[aecm]
standard_name = instantaneous_aerosol_column_mass_densities
long_name = instantaneous aerosol column mass densities for pm2.5, black carbon, organic carbon, sulfate, dust, sea salt
units = g m-2
dimensions = (horizontal_loop_extent,6)
type = real
kind = kind_phys
[edmf_a]
standard_name = emdf_updraft_area
long_name = updraft area from mass flux scheme
Expand Down
155 changes: 0 additions & 155 deletions ccpp/driver/GFS_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -3944,161 +3944,6 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop

! print *,'in gfdl_diag_register,af all extdiag, idx=',idx

! -- chemistry diagnostic variables
if (Model%cplchm) then

if (Model%ntchm > 0) then

if (associated(IntDiag(1)%duem)) then
do num = 1, size(IntDiag(1)%duem, dim=2)
idx = idx + 1
ExtDiag(idx)%axes = 2
write(ExtDiag(idx)%name,'("duem",i3.3)') num
write(ExtDiag(idx)%desc,'("Dust Emission Bin ",i0)') num
ExtDiag(idx)%unit = 'kg/m2/s'
ExtDiag(idx)%mod_name = 'gfs_phys'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var2 => IntDiag(nb)%duem(:,num)
enddo
enddo
endif

if (associated(IntDiag(1)%ssem)) then
do num = 1, size(IntDiag(1)%ssem, dim=2)
idx = idx + 1
ExtDiag(idx)%axes = 2
write(ExtDiag(idx)%name,'("ssem",i3.3)') num
write(ExtDiag(idx)%desc,'("Seasalt Emission Bin ",i0)') num
ExtDiag(idx)%unit = 'kg/m2/s'
ExtDiag(idx)%mod_name = 'gfs_phys'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var2 => IntDiag(nb)%ssem(:,num)
enddo
enddo
endif

if (associated(Model%ntdiag)) then
idt = 0
do num = Model%ntchs, Model%ntchm + Model%ntchs - 1
if (Model%ntdiag(num-Model%ntchs+1)) then
idt = idt + 1
idx = idx + 1
ExtDiag(idx)%axes = 2
ExtDiag(idx)%name = trim(Model%tracer_names(num)) // 'sd'
ExtDiag(idx)%desc = trim(Model%tracer_names(num)) // ' Sedimentation'
ExtDiag(idx)%unit = 'kg/m2/s'
ExtDiag(idx)%mod_name = 'gfs_phys'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var2 => IntDiag(nb)%sedim(:,idt)
enddo

idx = idx + 1
ExtDiag(idx)%axes = 2
ExtDiag(idx)%name = trim(Model%tracer_names(num)) // 'dp'
ExtDiag(idx)%desc = trim(Model%tracer_names(num)) // ' Dry Deposition'
ExtDiag(idx)%unit = 'kg/m2/s'
ExtDiag(idx)%mod_name = 'gfs_phys'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var2 => IntDiag(nb)%drydep(:,idt)
enddo

idx = idx + 1
ExtDiag(idx)%axes = 2
ExtDiag(idx)%name = trim(Model%tracer_names(num)) // 'wtl'
ExtDiag(idx)%desc = trim(Model%tracer_names(num)) // ' Large-Scale Wet Deposition'
ExtDiag(idx)%unit = 'kg/m2/s'
ExtDiag(idx)%mod_name = 'gfs_phys'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var2 => IntDiag(nb)%wetdpl(:,idt)
enddo

idx = idx + 1
ExtDiag(idx)%axes = 2
ExtDiag(idx)%name = trim(Model%tracer_names(num)) // 'wtc'
ExtDiag(idx)%desc = trim(Model%tracer_names(num)) // ' Convective-Scale Wet Deposition'
ExtDiag(idx)%unit = 'kg/m2/s'
ExtDiag(idx)%mod_name = 'gfs_phys'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var2 => IntDiag(nb)%wetdpc(:,idt)
enddo
endif
enddo
endif

endif

num = size(IntDiag(1)%abem, dim=2)
do num = 1, size(IntDiag(1)%abem, dim=2)
idx = idx + 1
select case (mod(num,3))
case (0)
ExtDiag(idx)%name = 'bcem'
ExtDiag(idx)%desc = 'Black Carbon'
case (1)
ExtDiag(idx)%name = 'ocem'
ExtDiag(idx)%desc = 'Organic Carbon'
case (2)
ExtDiag(idx)%name = 'so2em'
ExtDiag(idx)%desc = 'SO2'
end select

if (num > 3) then
ExtDiag(idx)%name = trim(ExtDiag(idx)%name) // 'bb'
ExtDiag(idx)%desc = trim(ExtDiag(idx)%desc) // ' Biomass Burning Emissions'
else
ExtDiag(idx)%name = trim(ExtDiag(idx)%name) // 'an'
ExtDiag(idx)%desc = trim(ExtDiag(idx)%desc) // ' Anthropogenic Emissions'
end if

ExtDiag(idx)%axes = 2
ExtDiag(idx)%unit = 'ug/m2/s'
ExtDiag(idx)%mod_name = 'gfs_phys'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var2 => IntDiag(nb)%abem(:,num)
enddo
end do

do num = 1, size(IntDiag(1)%aecm, dim=2)
idx = idx + 1
select case (num)
case(1)
ExtDiag(idx)%name = 'aecmass'
ExtDiag(idx)%desc = 'Aerosol Column Mass Density (PM2.5)'
case(2)
ExtDiag(idx)%name = 'bccmass'
ExtDiag(idx)%desc = 'Black Carbon Column Mass Density'
case(3)
ExtDiag(idx)%name = 'occmass'
ExtDiag(idx)%desc = 'Organic Carbon Column Mass Density'
case(4)
ExtDiag(idx)%name = 'sucmass'
ExtDiag(idx)%desc = 'Sulfate Column Mass Density'
case(5)
ExtDiag(idx)%name = 'ducmass'
ExtDiag(idx)%desc = 'Dust Column Mass Density'
case(6)
ExtDiag(idx)%name = 'sscmass'
ExtDiag(idx)%desc = 'Seasalt Column Mass Density'
end select

ExtDiag(idx)%axes = 2
ExtDiag(idx)%unit = 'g/m2'
ExtDiag(idx)%mod_name = 'gfs_phys'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var2 => IntDiag(nb)%aecm(:,num)
enddo
end do

endif

!--- prognostic variable tendencies (t, u, v, sph, clwmr, o3)
!rab idx = idx + 1
!rab ExtDiag(idx)%axes = 3
Expand Down
1 change: 1 addition & 0 deletions ccpp/driver/GFS_init.F90
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ subroutine GFS_initialize (Model, Statein, Stateout, Sfcprop, &
Init_parm%iau_offset, Init_parm%bdat, &
Init_parm%cdat, Init_parm%nwat, &
Init_parm%tracer_names, &
Init_parm%tracer_types, &
Init_parm%input_nml_file, Init_parm%tile_num, &
Init_parm%blksz, Init_parm%ak, Init_parm%bk, &
Init_parm%restart, Init_parm%hydrostatic, &
Expand Down
Loading