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

Implementation of CCPP-ized tropopause_find #112

Merged
merged 33 commits into from
Sep 30, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
ebe25e3
Merge pull request #106 from ESCOMP/development
nusbaume Jul 25, 2024
a0fa36a
Setup Test SDF, copy existing tropopause.F90
jimmielin Aug 13, 2024
bf224a5
Initial updates for CCPP-ization:
jimmielin Aug 13, 2024
6e11a3b
Continue CCPP-ization of fields; split into diagnostics; read_file sp…
jimmielin Aug 14, 2024
d37246a
Add metadata and namelist for test build
jimmielin Aug 15, 2024
72ed07d
Remove incompatible hardcoded dimension; fix dimension for tropp_p_lo…
jimmielin Aug 15, 2024
bbf785b
Fix wrong intents and types
jimmielin Aug 15, 2024
cd76504
Add scheme_name for tropopause_find_run
jimmielin Aug 15, 2024
fd91d53
Delete tropopause_nl from scheme and move to CAM
jimmielin Aug 15, 2024
1d4f92a
Remove USE statements and replace with CCPP-ized error handling
jimmielin Aug 15, 2024
2a1b626
Fix compile type mismatches, duplicate local variable decls from phys…
jimmielin Aug 15, 2024
a6d9967
Removal of POINTERs per CCPP-convention
jimmielin Aug 15, 2024
b38715b
Prepare for multiple scheme calculation; setup for History diagnostics
jimmielin Aug 19, 2024
1cc3e24
Add history diagnostics for tropopause_find (initial)
jimmielin Aug 19, 2024
470ad75
Add metadata to tropopause_diagnostics
jimmielin Aug 19, 2024
b37c251
Fixes for building tropopause_diagnostics
jimmielin Aug 20, 2024
177b6e5
Correctly support findChemTrop using the new CHEMTROP option
jimmielin Aug 20, 2024
948d4da
Fix tropp_days is fraction day-of-year
jimmielin Aug 20, 2024
ac9a461
Merge branch 'development' into hplin/tropopause_find
jimmielin Aug 22, 2024
8498efc
Update with metadata in preparation for pull request
jimmielin Aug 22, 2024
56415e8
Add TROPP (primary only) output; fix intents in tropopause_diagnostic…
jimmielin Aug 23, 2024
f3838c4
Add TROPP (primary only) history field definition
jimmielin Aug 23, 2024
2b1d98e
Remove geopotential_temp from test SDF for tropopause_find
jimmielin Aug 23, 2024
4ea57ff
First batch of updates for review comments, including standard name u…
jimmielin Sep 3, 2024
113d041
Update CCPP standard names
jimmielin Sep 3, 2024
5355723
Cleanup: Remove unused variables in tropopause_find
jimmielin Sep 3, 2024
5d4a18d
Make 'fillvalue' an input argument instead of a local parameter.
nusbaume Sep 6, 2024
d400fb2
Update tropopause_find/tropopause_find.F90
jimmielin Sep 10, 2024
d9a5686
Update in response to code review comments
jimmielin Sep 12, 2024
b9e485b
Update standard name to tropopause_air_pressure_from_climatology_data…
jimmielin Sep 18, 2024
391c114
Remove recursive call to findUsing from findChemTrop
jimmielin Sep 23, 2024
7e73d8a
Make findWithBackup (not CCPP-run routine) optional arguments again
jimmielin Sep 24, 2024
886c895
Changes to findChemTrop to propagate OPTIONAL arguments
jimmielin Sep 24, 2024
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
57 changes: 31 additions & 26 deletions cam_diagnostics/tropopause_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -28,38 +28,43 @@ subroutine tropopause_diagnostics_init(errmsg, errflg)
errflg = 0

! Define the output fields.

! Primary (Lapse rate) + backup (climatology) method
call history_add_field('TROP_P', 'tropopause_air_pressure', horiz_only, 'avg', 'Pa')
cacraigucar marked this conversation as resolved.
Show resolved Hide resolved
call history_add_field('TROP_T', 'tropopause_air_temperature', horiz_only, 'avg', 'K' )
call history_add_field('TROP_Z', 'tropopause_altitude', horiz_only, 'avg', 'm' )
call history_add_field('TROP_DZ', 'tropopause_altitude_relative', 'lev', 'avg', 'm')
call history_add_field('TROP_PD', 'probability_distribution_of_model_level_number_at_tropopause', 'lev', 'avg', 'probability')
call history_add_field('TROP_Z', 'tropopause_geopotential_height_wrt_surface', horiz_only, 'avg', 'm' )
call history_add_field('TROP_DZ', 'geopotential_height_difference_between_atmosphere_layer_and_tropopause', 'lev', 'avg', 'm')
call history_add_field('TROP_PD', 'probability_distribution_of_tropopause_vertical_layer_index', 'lev', 'avg', 'probability')
call history_add_field('TROP_FD', 'tropopause_found', horiz_only, 'avg', 'probability')

call history_add_field('TROPP_P', 'tropopause_air_pressure_assuming_lapse_rate', horiz_only, 'avg', 'Pa')
call history_add_field('TROPP_T', 'tropopause_air_temperature_assuming_lapse_rate', horiz_only, 'avg', 'K' )
call history_add_field('TROPP_Z', 'tropopause_altitude_assuming_lapse_rate', horiz_only, 'avg', 'm' )
call history_add_field('TROPP_DZ', 'tropopause_altitude_relative_assuming_lapse_rate', 'lev', 'avg', 'm')
call history_add_field('TROPP_PD', 'probability_distribution_of_model_level_number_at_tropopause_assuming_lapse_rate', 'lev', 'avg', 'probability')
call history_add_field('TROPP_FD', 'tropopause_found_assuming_lapse_rate', horiz_only, 'avg', 'probability')

call history_add_field('TROPF_P', 'tropopause_air_pressure_assuming_cold_point', horiz_only, 'avg', 'Pa')
call history_add_field('TROPF_T', 'tropopause_air_temperature_assuming_cold_point', horiz_only, 'avg', 'K' )
call history_add_field('TROPF_Z', 'tropopause_altitude_assuming_cold_point', horiz_only, 'avg', 'm' )
call history_add_field('TROPF_DZ', 'tropopause_altitude_relative_assuming_cold_point', 'lev', 'avg', 'm')
call history_add_field('TROPF_PD', 'probability_distribution_of_model_level_number_at_tropopause_assuming_cold_point', 'lev', 'avg', 'probability')
call history_add_field('TROPF_FD', 'tropopause_found_assuming_cold_point', horiz_only, 'avg', 'probability')

call history_add_field('TROPC_P', 'tropopause_air_pressure_assuming_climatology', horiz_only, 'avg', 'Pa')
call history_add_field('TROPC_T', 'tropopause_air_temperature_assuming_climatology', horiz_only, 'avg', 'K' )
call history_add_field('TROPC_Z', 'tropopause_altitude_assuming_climatology', horiz_only, 'avg', 'm' )
call history_add_field('TROPC_DZ', 'tropopause_altitude_relative_assuming_climatology', 'lev', 'avg', 'm')
call history_add_field('TROPC_PD', 'probability_distribution_of_model_level_number_at_tropopause_assuming_climatology', 'lev', 'avg', 'probability')
call history_add_field('TROPC_FD', 'tropopause_found_assuming_cold_point', horiz_only, 'avg', 'probability')
! Primary (Lapse rate) only
call history_add_field('TROPP_P', 'tropopause_air_pressure_from_lapse_rate_method', horiz_only, 'avg', 'Pa')
call history_add_field('TROPP_T', 'tropopause_air_temperature_from_lapse_rate_method', horiz_only, 'avg', 'K' )
call history_add_field('TROPP_Z', 'tropopause_geopotential_height_wrt_surface_from_lapse_rate_method', horiz_only, 'avg', 'm' )
call history_add_field('TROPP_DZ', 'geopotential_height_difference_between_atmosphere_layer_and_tropopause_from_lapse_rate_method', 'lev', 'avg', 'm')
call history_add_field('TROPP_PD', 'probability_distribution_of_tropopause_vertical_layer_index_from_lapse_rate_method', 'lev', 'avg', 'probability')
call history_add_field('TROPP_FD', 'tropopause_found_from_lapse_rate_method', horiz_only, 'avg', 'probability')

! Cold point (CPP) only
call history_add_field('TROPF_P', 'tropopause_air_pressure_from_cold_point_method', horiz_only, 'avg', 'Pa')
call history_add_field('TROPF_T', 'tropopause_air_temperature_from_cold_point_method', horiz_only, 'avg', 'K' )
call history_add_field('TROPF_Z', 'tropopause_geopotential_height_wrt_surface_from_cold_point_method', horiz_only, 'avg', 'm' )
call history_add_field('TROPF_DZ', 'geopotential_height_difference_between_atmosphere_layer_and_tropopause_from_cold_point_method', 'lev', 'avg', 'm')
call history_add_field('TROPF_PD', 'probability_distribution_of_tropopause_vertical_layer_index_from_cold_point_method', 'lev', 'avg', 'probability')
call history_add_field('TROPF_FD', 'tropopause_found_from_cold_point_method', horiz_only, 'avg', 'probability')

! Climatology only - will never fail
cacraigucar marked this conversation as resolved.
Show resolved Hide resolved
call history_add_field('TROPC_P', 'tropopause_air_pressure_from_climatological_method', horiz_only, 'avg', 'Pa')
call history_add_field('TROPC_T', 'tropopause_air_temperature_from_climatological_method', horiz_only, 'avg', 'K' )
call history_add_field('TROPC_Z', 'tropopause_geopotential_height_wrt_surface_from_climatological_method', horiz_only, 'avg', 'm' )
call history_add_field('TROPC_DZ', 'geopotential_height_difference_between_atmosphere_layer_and_tropopause_from_climatological_method', 'lev', 'avg', 'm')
call history_add_field('TROPC_PD', 'probability_distribution_of_tropopause_vertical_layer_index_from_climatological_method', 'lev', 'avg', 'probability')
call history_add_field('TROPC_FD', 'tropopause_found_from_climatological_method', horiz_only, 'avg', 'probability')
cacraigucar marked this conversation as resolved.
Show resolved Hide resolved

! Hybridstobie output fields
call history_add_field('hstobie_trop', 'lower_bound_of_model_level_number_for_stratospheric_chemistry', 'lev', 'inst', 'fraction of model time')
call history_add_field('hstobie_linoz', 'lower_bound_of_model_level_number_for_linoz_chemistry', 'lev', 'inst', 'fraction of model time')
call history_add_field('hstobie_tropop', 'model_level_number_at_tropopause_for_chemistry', 'lev', 'inst', 'fraction of model time')
call history_add_field('hstobie_trop', 'vertical_layer_index_lower_bound_from_hybrid_stobie_linoz_with_climatological_backup_method_for_stratospheric_chemistry', 'lev', 'inst', 'fraction of model time')
call history_add_field('hstobie_linoz', 'vertical_layer_index_lower_bound_from_hybrid_stobie_linoz_with_climatological_backup_method_for_linearized_ozone_chemistry', 'lev', 'inst', 'fraction of model time')
call history_add_field('hstobie_tropop', 'tropopause_vertical_layer_index_from_hybrid_stobie_linoz_with_climatological_backup_method_for_chemistry', 'lev', 'inst', 'fraction of model time')

end subroutine tropopause_diagnostics_init

Expand Down
58 changes: 29 additions & 29 deletions cam_diagnostics/tropopause_diagnostics.meta
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
dimensions = (horizontal_loop_extent, vertical_layer_dimension)
intent = in
[ tropLev ]
standard_name = model_level_number_at_tropopause
units = 1
standard_name = tropopause_vertical_layer_index
units = index
type = integer
dimensions = (horizontal_loop_extent)
intent = in
Expand All @@ -58,122 +58,122 @@
dimensions = (horizontal_loop_extent)
intent = in
[ tropZ ]
standard_name = tropopause_altitude
standard_name = tropopause_geopotential_height_wrt_surface
units = m
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropLev_twmo ]
standard_name = model_level_number_at_tropopause_assuming_lapse_rate
units = 1
standard_name = tropopause_vertical_layer_index_from_lapse_rate_method
units = index
type = integer
dimensions = (horizontal_loop_extent)
intent = in
[ tropP_twmo ]
standard_name = tropopause_air_pressure_assuming_lapse_rate
standard_name = tropopause_air_pressure_from_lapse_rate_method
units = Pa
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropT_twmo ]
standard_name = tropopause_air_temperature_assuming_lapse_rate
standard_name = tropopause_air_temperature_from_lapse_rate_method
units = K
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropZ_twmo ]
standard_name = tropopause_altitude_assuming_lapse_rate
standard_name = tropopause_geopotential_height_wrt_surface_from_lapse_rate_method
units = m
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropLev_clim ]
standard_name = model_level_number_at_tropopause_assuming_climatology
units = 1
standard_name = tropopause_vertical_layer_index_from_climatological_method
units = index
type = integer
dimensions = (horizontal_loop_extent)
intent = in
[ tropP_clim ]
standard_name = tropopause_air_pressure_assuming_climatology
standard_name = tropopause_air_pressure_from_climatological_method
units = Pa
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropT_clim ]
standard_name = tropopause_air_temperature_assuming_climatology
standard_name = tropopause_air_temperature_from_climatological_method
units = K
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropZ_clim ]
standard_name = tropopause_altitude_assuming_climatology
standard_name = tropopause_geopotential_height_wrt_surface_from_climatological_method
units = m
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropLev_hybstob ]
standard_name = model_level_number_at_tropopause_assuming_hybridstobie_and_climatology
units = 1
standard_name = tropopause_vertical_layer_index_from_hybrid_stobie_linoz_with_climatological_backup_method
units = index
type = integer
dimensions = (horizontal_loop_extent)
intent = in
[ tropP_hybstob ]
standard_name = tropopause_air_pressure_assuming_hybridstobie_and_climatology
standard_name = tropopause_air_pressure_from_hybrid_stobie_linoz_with_climatological_backup_method
units = Pa
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropT_hybstob ]
standard_name = tropopause_air_temperature_assuming_hybridstobie_and_climatology
standard_name = tropopause_air_temperature_from_hybrid_stobie_linoz_with_climatological_backup_method
units = K
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropZ_hybstob ]
standard_name = tropopause_altitude_assuming_hybridstobie_and_climatology
standard_name = tropopause_geopotential_height_wrt_surface_from_hybrid_stobie_linoz_with_climatological_backup_method
units = m
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropLev_cpp ]
standard_name = model_level_number_at_tropopause_assuming_cold_point
units = 1
standard_name = tropopause_vertical_layer_index_from_cold_point_method
units = index
type = integer
dimensions = (horizontal_loop_extent)
intent = in
[ tropP_cpp ]
standard_name = tropopause_air_pressure_assuming_cold_point
standard_name = tropopause_air_pressure_from_cold_point_method
units = Pa
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropT_cpp ]
standard_name = tropopause_air_temperature_assuming_cold_point
standard_name = tropopause_air_temperature_from_cold_point_method
units = K
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ tropZ_cpp ]
standard_name = tropopause_altitude_assuming_cold_point
standard_name = tropopause_geopotential_height_wrt_surface_from_cold_point_method
units = m
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent)
intent = in
[ hstobie_trop ]
standard_name = lower_bound_of_model_level_number_for_stratospheric_chemistry
units = 1
standard_name = vertical_layer_index_lower_bound_from_hybrid_stobie_linoz_with_climatological_backup_method_for_stratospheric_chemistry
units = index
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent, vertical_layer_dimension)
intent = in
[ hstobie_linoz ]
standard_name = lower_bound_of_model_level_number_for_linoz_chemistry
units = 1
standard_name = vertical_layer_index_lower_bound_from_hybrid_stobie_linoz_with_climatological_backup_method_for_linearized_ozone_chemistry
units = index
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent, vertical_layer_dimension)
intent = in
[ hstobie_tropop ]
standard_name = model_level_number_at_tropopause_for_chemistry
units = 1
standard_name = tropopause_vertical_layer_index_from_hybrid_stobie_linoz_with_climatological_backup_method_for_chemistry
units = index
type = real | kind = kind_phys
dimensions = (horizontal_loop_extent, vertical_layer_dimension)
intent = in
Expand Down
5 changes: 2 additions & 3 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Tag name:
Originator(s): jimmielin
Date: August 22, 2024
One-line Summary: tropopause_find CCPP-ization
Github PR URL:
Github PR URL: https://github.com/ESCOMP/atmospheric_physics/pull/112

This PR fixes the following NCAR/atmospheric_physics Github issues:
- Creates the CCPP interface for the tropopause_find routine
Expand Down Expand Up @@ -37,8 +37,7 @@ M doc/NamesNotInDictionary.txt

List and Describe any test failures: N/A

Summarize any changes to answers:
Difference in
Summarize any changes to answers: none

===============================================================

Expand Down
Loading