Skip to content

Commit 9f1ae08

Browse files
dustinswalesgrantfirl
authored andcommitted
Add initialization flags.
1 parent 06c8cae commit 9f1ae08

8 files changed

Lines changed: 82 additions & 24 deletions

physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ module rrtmgp_lw_cloud_optics
4848
! ######################################################################################
4949
!>
5050
subroutine rrtmgp_lw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_clouds, &
51-
nrghice, mpicomm, mpirank, mpiroot, errmsg, errflg)
51+
nrghice, mpicomm, mpirank, mpiroot, is_initialized, errmsg, errflg)
5252

5353
! Inputs
5454
character(len=128),intent(in) :: &
@@ -64,9 +64,11 @@ subroutine rrtmgp_lw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_clouds,
6464
mpiroot !< Master MPI rank
6565

6666
! Outputs
67-
character(len=*), intent(out) :: &
67+
logical, intent(inout) :: &
68+
is_initialized !< Initialization flag
69+
character(len=*), intent( out) :: &
6870
errmsg !< Error message
69-
integer, intent(out) :: &
71+
integer, intent( out) :: &
7072
errflg !< Error code
7173

7274
! Local variables
@@ -77,6 +79,8 @@ subroutine rrtmgp_lw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_clouds,
7779
errmsg = ''
7880
errflg = 0
7981

82+
if (is_initialized) return
83+
8084
! Filenames are set in the physics_nml
8185
lw_cloud_props_file = trim(rrtmgp_root_dir)//trim(rrtmgp_lw_file_clouds)
8286

@@ -240,6 +244,8 @@ subroutine rrtmgp_lw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_clouds,
240244
lut_exticeLW, lut_ssaiceLW, lut_asyiceLW))
241245

242246
call check_error_msg('lw_cloud_optics_init',lw_cloud_props%set_ice_roughness(nrghice))
243-
247+
248+
is_initialized = .true.
249+
244250
end subroutine rrtmgp_lw_cloud_optics_init
245251
end module rrtmgp_lw_cloud_optics

physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ module rrtmgp_lw_gas_optics
7272

7373
!>
7474
subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, &
75-
active_gases_array, mpicomm, mpirank, mpiroot, errmsg, errflg)
75+
active_gases_array, mpicomm, mpirank, mpiroot, is_initialized, errmsg, errflg)
7676

7777
! Inputs
7878
character(len=128),intent(in) :: &
@@ -87,9 +87,11 @@ subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas,
8787
mpiroot !< Master MPI rank
8888

8989
! Outputs
90-
character(len=*), intent(out) :: &
90+
logical, intent(inout) :: &
91+
is_initialized !< Initialization flag.
92+
character(len=*), intent( out) :: &
9193
errmsg !< CCPP error message
92-
integer, intent(out) :: &
94+
integer, intent( out) :: &
9395
errflg !< CCPP error code
9496

9597
! Local variables
@@ -102,6 +104,8 @@ subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas,
102104
errmsg = ''
103105
errflg = 0
104106

107+
if (is_initialized) return
108+
105109
! Filenames are set in the physics_nml
106110
lw_gas_props_file = trim(rrtmgp_root_dir)//trim(rrtmgp_lw_file_gas)
107111

@@ -459,7 +463,9 @@ subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas,
459463
scaling_gas_lowerLW, scaling_gas_upperLW, scale_by_complement_lowerLW, &
460464
scale_by_complement_upperLW, kminor_start_lowerLW, kminor_start_upperLW, totplnkLW,&
461465
planck_fracLW, rayl_lowerLW, rayl_upperLW, optimal_angle_fitLW))
462-
466+
467+
is_initialized = .true.
468+
463469
end subroutine rrtmgp_lw_gas_optics_init
464470

465471
end module rrtmgp_lw_gas_optics

physics/Radiation/RRTMGP/rrtmgp_lw_main.F90

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ module rrtmgp_lw_main
3131
!!
3232
subroutine rrtmgp_lw_main_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, rrtmgp_lw_file_clouds,&
3333
active_gases_array, nrghice, mpicomm, mpirank, mpiroot, nLay, rrtmgp_phys_blksz, &
34-
errmsg, errflg)
34+
is_init_gas_optics, is_init_cloud_optics, errmsg, errflg)
3535

3636
! Inputs
3737
character(len=128),intent(in) :: &
@@ -53,9 +53,12 @@ subroutine rrtmgp_lw_main_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, rrtmgp_lw_fi
5353
nLay
5454

5555
! Outputs
56-
character(len=*), intent(out) :: &
56+
logical, intent(inout) :: &
57+
is_init_gas_optics, & !< Initialization flag
58+
is_init_cloud_optics !< Initialization flag
59+
character(len=*), intent( out) :: &
5760
errmsg !< CCPP error message
58-
integer, intent(out) :: &
61+
integer, intent( out) :: &
5962
errflg !< CCPP error code
6063

6164
! Initialize CCPP error handling variables
@@ -64,11 +67,11 @@ subroutine rrtmgp_lw_main_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, rrtmgp_lw_fi
6467

6568
! RRTMGP longwave gas-optics (k-distribution) initialization
6669
call rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, &
67-
active_gases_array, mpicomm, mpirank, mpiroot, errmsg, errflg)
70+
active_gases_array, mpicomm, mpirank, mpiroot, is_init_gas_optics, errmsg, errflg)
6871

6972
! RRTMGP longwave cloud-optics initialization
7073
call rrtmgp_lw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_clouds, &
71-
nrghice, mpicomm, mpirank, mpiroot, errmsg, errflg)
74+
nrghice, mpicomm, mpirank, mpiroot, is_init_cloud_optics, errmsg, errflg)
7275

7376
end subroutine rrtmgp_lw_main_init
7477

physics/Radiation/RRTMGP/rrtmgp_lw_main.meta

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,20 @@
8888
type = character
8989
kind = len=*
9090
intent = in
91+
[is_init_gas_optics]
92+
standard_name = flag_for_rrmtgp_lw_gas_optics_initialization
93+
long_name = flag carrying scheme initialization status
94+
units = flag
95+
dimensions = ()
96+
type = logical
97+
intent = inout
98+
[is_init_cloud_optics]
99+
standard_name = flag_for_rrmtgp_lw_cloud_optics_initialization
100+
long_name = flag carrying scheme initialization status
101+
units = flag
102+
dimensions = ()
103+
type = logical
104+
intent = inout
91105
[errmsg]
92106
standard_name = ccpp_error_message
93107
long_name = error message for error handling in CCPP

physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ module rrtmgp_sw_cloud_optics
4545
! ######################################################################################
4646
!>
4747
subroutine rrtmgp_sw_cloud_optics_init( rrtmgp_root_dir, rrtmgp_sw_file_clouds, &
48-
nrghice, mpicomm, mpirank, mpiroot, errmsg, errflg)
48+
nrghice, mpicomm, mpirank, mpiroot, is_initialized, errmsg, errflg)
4949

5050
! Inputs
5151
character(len=128),intent(in) :: &
@@ -60,9 +60,11 @@ subroutine rrtmgp_sw_cloud_optics_init( rrtmgp_root_dir, rrtmgp_sw_file_clouds,
6060
mpiroot !< Master MPI rank
6161

6262
! Outputs
63-
character(len=*), intent(out) :: &
63+
logical, intent(inout) :: &
64+
is_initialized !< Initialization flag
65+
character(len=*), intent( out) :: &
6466
errmsg !< CCPP error message
65-
integer, intent(out) :: &
67+
integer, intent( out) :: &
6668
errflg !< CCPP error code
6769

6870
! Local variables
@@ -73,6 +75,8 @@ subroutine rrtmgp_sw_cloud_optics_init( rrtmgp_root_dir, rrtmgp_sw_file_clouds,
7375
errmsg = ''
7476
errflg = 0
7577

78+
if (is_initialized) return
79+
7680
! Filenames are set in the physics_nml
7781
sw_cloud_props_file = trim(rrtmgp_root_dir)//trim(rrtmgp_sw_file_clouds)
7882

@@ -251,5 +255,7 @@ subroutine rrtmgp_sw_cloud_optics_init( rrtmgp_root_dir, rrtmgp_sw_file_clouds,
251255
c0s = (/0.970, 0.970, 0.970, 0.970, 0.970, 0.970, 0.970, &
252256
0.970, 0.970, 0.970, 0.700, 0.700, 0.700, 0.700/)
253257

258+
is_initialized = .true.
259+
254260
end subroutine rrtmgp_sw_cloud_optics_init
255261
end module rrtmgp_sw_cloud_optics

physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ module rrtmgp_sw_gas_optics
8383
!! the full k-distribution data is read in, reduced by the "active gases" provided, and
8484
!! loaded into the RRTMGP DDT, ty_gas_optics_rrtmgp.
8585
subroutine rrtmgp_sw_gas_optics_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, &
86-
active_gases_array, mpicomm, mpirank, mpiroot, errmsg, errflg)
86+
active_gases_array, mpicomm, mpirank, mpiroot, is_initialized, errmsg, errflg)
8787

8888
! Inputs
8989
character(len=128),intent(in) :: &
@@ -98,9 +98,11 @@ subroutine rrtmgp_sw_gas_optics_init(rrtmgp_root_dir, rrtmgp_sw_file_gas,
9898
mpiroot !< Master MPI rank
9999

100100
! Outputs
101-
character(len=*), intent(out) :: &
101+
logical, intent(inout) :: &
102+
is_initialized !< Initialization flag.
103+
character(len=*), intent( out) :: &
102104
errmsg !< CCPP error message
103-
integer, intent(out) :: &
105+
integer, intent( out) :: &
104106
errflg !< CCPP error code
105107

106108
! Local variables
@@ -113,6 +115,8 @@ subroutine rrtmgp_sw_gas_optics_init(rrtmgp_root_dir, rrtmgp_sw_file_gas,
113115
errmsg = ''
114116
errflg = 0
115117

118+
if (is_initialized) return
119+
116120
! Filenames are set in the gfphysics_nml
117121
sw_gas_props_file = trim(rrtmgp_root_dir)//trim(rrtmgp_sw_file_gas)
118122

@@ -509,6 +513,8 @@ subroutine rrtmgp_sw_gas_optics_init(rrtmgp_root_dir, rrtmgp_sw_file_gas,
509513
solar_quietSW, solar_facularSW, solar_sunspotSW, tsi_defaultSW, mg_defaultSW, &
510514
sb_defaultSW, rayl_lowerSW, rayl_upperSW))
511515

516+
is_initialized = .true.
517+
512518
end subroutine rrtmgp_sw_gas_optics_init
513519
end module rrtmgp_sw_gas_optics
514520

physics/Radiation/RRTMGP/rrtmgp_sw_main.F90

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ module rrtmgp_sw_main
3131
!!
3232
subroutine rrtmgp_sw_main_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, rrtmgp_sw_file_clouds,&
3333
active_gases_array, nrghice, mpicomm, mpirank, mpiroot, nLay, rrtmgp_phys_blksz, &
34-
errmsg, errflg)
34+
is_init_gas_optics, is_init_cloud_optics, errmsg, errflg)
3535

3636
! Inputs
3737
character(len=128),intent(in) :: &
@@ -50,9 +50,12 @@ subroutine rrtmgp_sw_main_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, rrtmgp_sw_fi
5050
rrtmgp_phys_blksz, & !< Number of horizontal points to process at once.
5151
nLay
5252
! Outputs
53-
character(len=*), intent(out) :: &
53+
logical, intent(inout) :: &
54+
is_init_gas_optics, & !< Initialization flag
55+
is_init_cloud_optics !< Initialization flag
56+
character(len=*), intent( out) :: &
5457
errmsg !< CCPP error message
55-
integer, intent(out) :: &
58+
integer, intent( out) :: &
5659
errflg !< CCPP error code
5760

5861
! Initialize CCPP error handling variables
@@ -61,11 +64,11 @@ subroutine rrtmgp_sw_main_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, rrtmgp_sw_fi
6164

6265
! RRTMGP shortwave gas-optics (k-distribution) initialization
6366
call rrtmgp_sw_gas_optics_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, active_gases_array,&
64-
mpicomm, mpirank, mpiroot, errmsg, errflg)
67+
mpicomm, mpirank, mpiroot, is_init_gas_optics, errmsg, errflg)
6568

6669
! RRTMGP shortwave cloud-optics initialization
6770
call rrtmgp_sw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_sw_file_clouds, &
68-
nrghice, mpicomm, mpirank, mpiroot, errmsg, errflg)
71+
nrghice, mpicomm, mpirank, mpiroot, is_init_cloud_optics, errmsg, errflg)
6972

7073
end subroutine rrtmgp_sw_main_init
7174

physics/Radiation/RRTMGP/rrtmgp_sw_main.meta

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,20 @@
8787
type = character
8888
kind = len=*
8989
intent = in
90+
[is_init_gas_optics]
91+
standard_name = flag_for_rrmtgp_sw_gas_optics_initialization
92+
long_name = flag carrying scheme initialization status
93+
units = flag
94+
dimensions = ()
95+
type = logical
96+
intent = inout
97+
[is_init_cloud_optics]
98+
standard_name = flag_for_rrmtgp_sw_cloud_optics_initialization
99+
long_name = flag carrying scheme initialization status
100+
units = flag
101+
dimensions = ()
102+
type = logical
103+
intent = inout
90104
[errmsg]
91105
standard_name = ccpp_error_message
92106
long_name = error message for error handling in CCPP

0 commit comments

Comments
 (0)