Skip to content

Commit 2e0a3ad

Browse files
authored
Merge pull request #569 from grantfirl/rm_gfdl_parse_tracers
Updated version of "Move parse_tracers file from physics to host"
2 parents e6c40e1 + e1e045e commit 2e0a3ad

File tree

4 files changed

+85
-92
lines changed

4 files changed

+85
-92
lines changed

scm/src/GFS_typedefs.F90

Lines changed: 82 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ module GFS_typedefs
2929
integer, parameter :: dfi_radar_max_intervals = 4 !< Number of radar-derived temperature tendency and/or convection suppression intervals. Do not change.
3030

3131
real(kind=kind_phys), parameter :: limit_unspecified = 1e12 !< special constant for "namelist value was not provided" in radar-derived temperature tendency limit range
32-
32+
33+
integer, parameter :: no_tracer = -99
3334

3435
!> \section arg_table_GFS_typedefs
3536
!! \htmlinclude GFS_typedefs.html
@@ -3334,7 +3335,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
33343335
!--- modules
33353336
use physcons, only: con_rerth, con_pi, con_p0, rhowater
33363337
use mersenne_twister, only: random_setseed, random_number
3337-
use parse_tracers, only: get_tracer_index
33383338
use GFS_ccpp_suite_sim_pre, only: load_ccpp_suite_sim
33393339
!
33403340
implicit none
@@ -5307,48 +5307,48 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
53075307
Model%ntracp100 = Model%ntrac + 100
53085308
allocate (Model%tracer_names(Model%ntrac))
53095309
Model%tracer_names(:) = tracer_names(:)
5310-
Model%ntqv = get_tracer_index(Model%tracer_names, 'sphum', Model%me, Model%master, Model%debug)
5310+
Model%ntqv = get_tracer_index(Model%tracer_names, 'sphum')
53115311
#ifdef MULTI_GASES
5312-
Model%nto = get_tracer_index(Model%tracer_names, 'spo', Model%me, Model%master, Model%debug)
5313-
Model%nto2 = get_tracer_index(Model%tracer_names, 'spo2', Model%me, Model%master, Model%debug)
5314-
Model%ntoz = get_tracer_index(Model%tracer_names, 'spo3', Model%me, Model%master, Model%debug)
5312+
Model%nto = get_tracer_index(Model%tracer_names, 'spo')
5313+
Model%nto2 = get_tracer_index(Model%tracer_names, 'spo2')
5314+
Model%ntoz = get_tracer_index(Model%tracer_names, 'spo3')
53155315
#else
5316-
Model%ntoz = get_tracer_index(Model%tracer_names, 'o3mr', Model%me, Model%master, Model%debug)
5316+
Model%ntoz = get_tracer_index(Model%tracer_names, 'o3mr')
53175317
if( Model%ntoz <= 0 ) &
5318-
Model%ntoz = get_tracer_index(Model%tracer_names, 'spo3', Model%me, Model%master, Model%debug)
5318+
Model%ntoz = get_tracer_index(Model%tracer_names, 'spo3')
53195319
#endif
5320-
Model%ntcw = get_tracer_index(Model%tracer_names, 'liq_wat', Model%me, Model%master, Model%debug)
5321-
Model%ntiw = get_tracer_index(Model%tracer_names, 'ice_wat', Model%me, Model%master, Model%debug)
5322-
Model%ntrw = get_tracer_index(Model%tracer_names, 'rainwat', Model%me, Model%master, Model%debug)
5323-
Model%ntsw = get_tracer_index(Model%tracer_names, 'snowwat', Model%me, Model%master, Model%debug)
5324-
Model%ntgl = get_tracer_index(Model%tracer_names, 'graupel', Model%me, Model%master, Model%debug)
5325-
Model%nthl = get_tracer_index(Model%tracer_names, 'hailwat', Model%me, Model%master, Model%debug)
5326-
Model%ntclamt = get_tracer_index(Model%tracer_names, 'cld_amt', Model%me, Model%master, Model%debug)
5327-
Model%ntlnc = get_tracer_index(Model%tracer_names, 'water_nc', Model%me, Model%master, Model%debug)
5328-
Model%ntinc = get_tracer_index(Model%tracer_names, 'ice_nc', Model%me, Model%master, Model%debug)
5329-
Model%ntrnc = get_tracer_index(Model%tracer_names, 'rain_nc', Model%me, Model%master, Model%debug)
5330-
Model%ntsnc = get_tracer_index(Model%tracer_names, 'snow_nc', Model%me, Model%master, Model%debug)
5331-
Model%ntgnc = get_tracer_index(Model%tracer_names, 'graupel_nc', Model%me, Model%master, Model%debug)
5332-
Model%nthnc = get_tracer_index(Model%tracer_names, 'hail_nc', Model%me, Model%master, Model%debug)
5333-
Model%ntccn = get_tracer_index(Model%tracer_names, 'ccn_nc', Model%me, Model%master, Model%debug)
5334-
Model%ntccna = get_tracer_index(Model%tracer_names, 'ccna_nc', Model%me, Model%master, Model%debug)
5335-
Model%ntgv = get_tracer_index(Model%tracer_names, 'graupel_vol',Model%me, Model%master, Model%debug)
5336-
Model%nthv = get_tracer_index(Model%tracer_names, 'hail_vol', Model%me, Model%master, Model%debug)
5337-
Model%ntrz = get_tracer_index(Model%tracer_names, 'rain_ref', Model%me, Model%master, Model%debug)
5338-
Model%ntgz = get_tracer_index(Model%tracer_names, 'graupel_ref',Model%me, Model%master, Model%debug)
5339-
Model%nthz = get_tracer_index(Model%tracer_names, 'hail_ref', Model%me, Model%master, Model%debug)
5340-
Model%ntke = get_tracer_index(Model%tracer_names, 'sgs_tke', Model%me, Model%master, Model%debug)
5341-
Model%ntsigma = get_tracer_index(Model%tracer_names, 'sigmab', Model%me, Model%master, Model%debug)
5342-
Model%nqrimef = get_tracer_index(Model%tracer_names, 'q_rimef', Model%me, Model%master, Model%debug)
5343-
Model%ntwa = get_tracer_index(Model%tracer_names, 'liq_aero', Model%me, Model%master, Model%debug)
5344-
Model%ntia = get_tracer_index(Model%tracer_names, 'ice_aero', Model%me, Model%master, Model%debug)
5320+
Model%ntcw = get_tracer_index(Model%tracer_names, 'liq_wat')
5321+
Model%ntiw = get_tracer_index(Model%tracer_names, 'ice_wat')
5322+
Model%ntrw = get_tracer_index(Model%tracer_names, 'rainwat')
5323+
Model%ntsw = get_tracer_index(Model%tracer_names, 'snowwat')
5324+
Model%ntgl = get_tracer_index(Model%tracer_names, 'graupel')
5325+
Model%nthl = get_tracer_index(Model%tracer_names, 'hailwat')
5326+
Model%ntclamt = get_tracer_index(Model%tracer_names, 'cld_amt')
5327+
Model%ntlnc = get_tracer_index(Model%tracer_names, 'water_nc')
5328+
Model%ntinc = get_tracer_index(Model%tracer_names, 'ice_nc')
5329+
Model%ntrnc = get_tracer_index(Model%tracer_names, 'rain_nc')
5330+
Model%ntsnc = get_tracer_index(Model%tracer_names, 'snow_nc')
5331+
Model%ntgnc = get_tracer_index(Model%tracer_names, 'graupel_nc')
5332+
Model%nthnc = get_tracer_index(Model%tracer_names, 'hail_nc')
5333+
Model%ntccn = get_tracer_index(Model%tracer_names, 'ccn_nc')
5334+
Model%ntccna = get_tracer_index(Model%tracer_names, 'ccna_nc')
5335+
Model%ntgv = get_tracer_index(Model%tracer_names, 'graupel_vol')
5336+
Model%nthv = get_tracer_index(Model%tracer_names, 'hail_vol')
5337+
Model%ntrz = get_tracer_index(Model%tracer_names, 'rain_ref')
5338+
Model%ntgz = get_tracer_index(Model%tracer_names, 'graupel_ref')
5339+
Model%nthz = get_tracer_index(Model%tracer_names, 'hail_ref')
5340+
Model%ntke = get_tracer_index(Model%tracer_names, 'sgs_tke')
5341+
Model%ntsigma = get_tracer_index(Model%tracer_names, 'sigmab')
5342+
Model%nqrimef = get_tracer_index(Model%tracer_names, 'q_rimef')
5343+
Model%ntwa = get_tracer_index(Model%tracer_names, 'liq_aero')
5344+
Model%ntia = get_tracer_index(Model%tracer_names, 'ice_aero')
53455345
if (Model%cpl_fire) then
5346-
Model%ntfsmoke = get_tracer_index(Model%tracer_names, 'fsmoke', Model%me, Model%master, Model%debug)
5346+
Model%ntfsmoke = get_tracer_index(Model%tracer_names, 'fsmoke')
53475347
endif
53485348
if (Model%rrfs_sd) then
5349-
Model%ntsmoke = get_tracer_index(Model%tracer_names, 'smoke', Model%me, Model%master, Model%debug)
5350-
Model%ntdust = get_tracer_index(Model%tracer_names, 'dust', Model%me, Model%master, Model%debug)
5351-
Model%ntcoarsepm = get_tracer_index(Model%tracer_names, 'coarsepm', Model%me, Model%master, Model%debug)
5349+
Model%ntsmoke = get_tracer_index(Model%tracer_names, 'smoke')
5350+
Model%ntdust = get_tracer_index(Model%tracer_names, 'dust')
5351+
Model%ntcoarsepm = get_tracer_index(Model%tracer_names, 'coarsepm')
53525352
endif
53535353
!--- initialize parameters for atmospheric chemistry tracers
53545354
call Model%init_chemistry(tracer_types)
@@ -5406,21 +5406,21 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
54065406
Model%dtidx = -99
54075407

54085408
if(Model%ntchm>0) then
5409-
Model%ntdu1 = get_tracer_index(Model%tracer_names, 'dust1', Model%me, Model%master, Model%debug)
5410-
Model%ntdu2 = get_tracer_index(Model%tracer_names, 'dust2', Model%me, Model%master, Model%debug)
5411-
Model%ntdu3 = get_tracer_index(Model%tracer_names, 'dust3', Model%me, Model%master, Model%debug)
5412-
Model%ntdu4 = get_tracer_index(Model%tracer_names, 'dust4', Model%me, Model%master, Model%debug)
5413-
Model%ntdu5 = get_tracer_index(Model%tracer_names, 'dust5', Model%me, Model%master, Model%debug)
5414-
Model%ntss1 = get_tracer_index(Model%tracer_names, 'seas1', Model%me, Model%master, Model%debug)
5415-
Model%ntss2 = get_tracer_index(Model%tracer_names, 'seas2', Model%me, Model%master, Model%debug)
5416-
Model%ntss3 = get_tracer_index(Model%tracer_names, 'seas3', Model%me, Model%master, Model%debug)
5417-
Model%ntss4 = get_tracer_index(Model%tracer_names, 'seas4', Model%me, Model%master, Model%debug)
5418-
Model%ntss5 = get_tracer_index(Model%tracer_names, 'seas5', Model%me, Model%master, Model%debug)
5419-
Model%ntsu = get_tracer_index(Model%tracer_names, 'so4', Model%me, Model%master, Model%debug)
5420-
Model%ntbcb = get_tracer_index(Model%tracer_names, 'bc1', Model%me, Model%master, Model%debug)
5421-
Model%ntbcl = get_tracer_index(Model%tracer_names, 'bc2', Model%me, Model%master, Model%debug)
5422-
Model%ntocb = get_tracer_index(Model%tracer_names, 'oc1', Model%me, Model%master, Model%debug)
5423-
Model%ntocl = get_tracer_index(Model%tracer_names, 'oc2', Model%me, Model%master, Model%debug)
5409+
Model%ntdu1 = get_tracer_index(Model%tracer_names, 'dust1')
5410+
Model%ntdu2 = get_tracer_index(Model%tracer_names, 'dust2')
5411+
Model%ntdu3 = get_tracer_index(Model%tracer_names, 'dust3')
5412+
Model%ntdu4 = get_tracer_index(Model%tracer_names, 'dust4')
5413+
Model%ntdu5 = get_tracer_index(Model%tracer_names, 'dust5')
5414+
Model%ntss1 = get_tracer_index(Model%tracer_names, 'seas1')
5415+
Model%ntss2 = get_tracer_index(Model%tracer_names, 'seas2')
5416+
Model%ntss3 = get_tracer_index(Model%tracer_names, 'seas3')
5417+
Model%ntss4 = get_tracer_index(Model%tracer_names, 'seas4')
5418+
Model%ntss5 = get_tracer_index(Model%tracer_names, 'seas5')
5419+
Model%ntsu = get_tracer_index(Model%tracer_names, 'so4')
5420+
Model%ntbcb = get_tracer_index(Model%tracer_names, 'bc1')
5421+
Model%ntbcl = get_tracer_index(Model%tracer_names, 'bc2')
5422+
Model%ntocb = get_tracer_index(Model%tracer_names, 'oc1')
5423+
Model%ntocl = get_tracer_index(Model%tracer_names, 'oc2')
54245424
end if
54255425

54265426
! Lake & fractional grid safety checks
@@ -5484,11 +5484,11 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
54845484
! Need better descriptions of these.
54855485
call label_dtend_tracer(Model,100+Model%ntchm+Model%ntchs-1,'pp10','pp10 concentration','kg kg-1 s-1')
54865486

5487-
itrac=get_tracer_index(Model%tracer_names, 'DMS', Model%me, Model%master, Model%debug)
5487+
itrac=get_tracer_index(Model%tracer_names, 'DMS')
54885488
if(itrac>0) then
54895489
call label_dtend_tracer(Model,100+itrac,'DMS','DMS concentration','kg kg-1 s-1')
54905490
endif
5491-
itrac=get_tracer_index(Model%tracer_names, 'msa', Model%me, Model%master, Model%debug)
5491+
itrac=get_tracer_index(Model%tracer_names, 'msa')
54925492
if(itrac>0) then
54935493
call label_dtend_tracer(Model,100+itrac,'msa','msa concentration','kg kg-1 s-1')
54945494
endif
@@ -6505,8 +6505,6 @@ subroutine control_chemistry_initialize(Model, tracer_types)
65056505
!--- prognostic and diagnostic chemistry tracers.
65066506
!--- Each tracer set is assumed to be contiguous.
65076507

6508-
use parse_tracers, only: NO_TRACER
6509-
65106508
!--- interface variables
65116509
class(GFS_control_type) :: Model
65126510
integer, intent(in) :: tracer_types(:)
@@ -6555,8 +6553,6 @@ end subroutine control_chemistry_initialize
65556553
!----------------------------
65566554
subroutine control_scavenging_initialize(Model, fscav)
65576555

6558-
use parse_tracers, only: get_tracer_index
6559-
65606556
!--- interface variables
65616557
class(GFS_control_type) :: Model
65626558
character(len=*), intent(in) :: fscav(:)
@@ -6590,7 +6586,7 @@ subroutine control_scavenging_initialize(Model, fscav)
65906586
if (j > 1) then
65916587
read(fscav(i)(j+1:), *, iostat=ios) tem
65926588
if (ios /= 0) cycle
6593-
n = get_tracer_index(Model%tracer_names, adjustl(fscav(i)(:j-1)), Model%me, Model%master, Model%debug) &
6589+
n = get_tracer_index(Model%tracer_names, adjustl(fscav(i)(:j-1))) &
65946590
- Model%ntchs + 1
65956591
if (n > 0) Model%fscav(n) = tem
65966592
endif
@@ -7811,7 +7807,6 @@ end subroutine label_dtend_cause
78117807
! GFS_diag%create
78127808
!----------------
78137809
subroutine diag_create (Diag, Model)
7814-
use parse_tracers, only: get_tracer_index
78157810
class(GFS_diag_type) :: Diag
78167811
type(GFS_control_type), intent(in) :: Model
78177812
integer :: IM
@@ -8412,5 +8407,32 @@ subroutine diag_phys_zero (Diag, Model, linit, iauwindow_center)
84128407
endif
84138408

84148409
end subroutine diag_phys_zero
8410+
8411+
function get_tracer_index (tracer_names, name)
8412+
8413+
character(len=32), intent(in) :: tracer_names(:)
8414+
character(len=*), intent(in) :: name
8415+
8416+
!--- local variables
8417+
integer :: get_tracer_index
8418+
integer :: i
8419+
8420+
get_tracer_index = no_tracer
8421+
8422+
do i=1, size(tracer_names)
8423+
if (trim(name) == trim(tracer_names(i))) then
8424+
get_tracer_index = i
8425+
exit
8426+
endif
8427+
enddo
8428+
8429+
if (get_tracer_index == no_tracer) then
8430+
print *,'tracer with name '//trim(name)//' not found'
8431+
else
8432+
print *,'tracer FOUND:',trim(name)
8433+
endif
8434+
8435+
return
8436+
end function get_tracer_index
84158437

84168438
end module GFS_typedefs

scm/src/GFS_typedefs.meta

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10247,7 +10247,7 @@
1024710247
dependencies = hooks/machine.F,hooks/physcons.F90
1024810248
dependencies = Radiation/RRTMG/radlw_param.f,Radiation/RRTMG/radsw_param.f
1024910249
dependencies = photochem/module_ozphys.F90,photochem/module_h2ophys.F90
10250-
dependencies = SFC_Models/Land/Noahmp/lnd_iau_mod.F90,MP/GFDL/GFDL_parse_tracers.F90
10250+
dependencies = SFC_Models/Land/Noahmp/lnd_iau_mod.F90
1025110251
dependencies = Interstitials/UFS_SCM_NEPTUNE/GFS_ccpp_suite_sim_pre.F90
1025210252

1025310253
[ccpp-arg-table]

scm/src/scm_type_defs.F90

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ module scm_type_defs
1818
GFS_cldprop_type, &
1919
GFS_radtend_type, &
2020
GFS_diag_type, &
21-
GFS_init_type
21+
GFS_init_type, &
22+
get_tracer_index
2223
use CCPP_typedefs, only: GFS_interstitial_type
2324
use machine, only: kind_phys
2425
use ccpp_types, only: ccpp_t
@@ -1471,33 +1472,5 @@ subroutine physics_set(physics, scm_input, scm_state)
14711472
end do
14721473

14731474
end subroutine physics_set
1474-
1475-
function get_tracer_index (tracer_names, name)
1476-
1477-
character(len=32), intent(in) :: tracer_names(:)
1478-
character(len=*), intent(in) :: name
1479-
1480-
!--- local variables
1481-
integer :: get_tracer_index
1482-
integer :: i
1483-
integer, parameter :: no_tracer = -99
1484-
1485-
get_tracer_index = no_tracer
1486-
1487-
do i=1, size(tracer_names)
1488-
if (trim(name) == trim(tracer_names(i))) then
1489-
get_tracer_index = i
1490-
exit
1491-
endif
1492-
enddo
1493-
1494-
if (get_tracer_index == no_tracer) then
1495-
print *,'tracer with name '//trim(name)//' not found'
1496-
else
1497-
print *,'tracer FOUND:',trim(name)
1498-
endif
1499-
1500-
return
1501-
end function get_tracer_index
15021475

15031476
end module scm_type_defs

test/cmp_scmout.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,8 @@ def main():
4141
# Housekeeping
4242
if file_rt is not None:
4343
result = os.system('tar -cvf scm_out_abs.tar scm_plots/*.png')
44-
result = os.system('tar -cvf /scratch1/data_untrusted/Dustin.Swales/scm_out_abs.tar scm_plots/*.png')
4544
else:
4645
result = os.system('tar -cvf scm_out_diff.tar scm_plots/*.png')
47-
result = os.system('tar -cvf /scratch1/data_untrusted/Dustin.Swales/scm_out_diff.tar scm_plots/*.png')
4846
# end if
4947
result = os.system('rm -rf scm_plots/')
5048
#

0 commit comments

Comments
 (0)