Skip to content

Commit 0414f1a

Browse files
authored
Merge pull request #325 from grantfirl/release/public-v6_gjf
Update writing of tendency terms to avoid plotting errors
2 parents 2bd0487 + 25cbe03 commit 0414f1a

File tree

3 files changed

+158
-136
lines changed

3 files changed

+158
-136
lines changed

scm/etc/scripts/plot_configs/twpice_all_suites.ini

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
scm_datasets = output_twpice_SCM_GFS_v16/output.nc, output_twpice_SCM_HRRR/output.nc, output_twpice_SCM_RAP/output.nc, output_twpice_SCM_RRFS_v1beta/output.nc, output_twpice_SCM_WoFS_v0/output.nc
2-
scm_datasets_labels = GFSv16, HRRR, RAP, RRFSv1beta, WoFS_v0
1+
scm_datasets = output_twpice_SCM_GFS_v16/output.nc, output_twpice_SCM_GFS_v17_p8/output.nc, output_twpice_SCM_RAP/output.nc, output_twpice_SCM_RRFS_v1beta/output.nc, output_twpice_SCM_WoFS_v0/output.nc, output_twpice_SCM_HRRR/output.nc
2+
scm_datasets_labels = GFSv16, GFSv17p8, RAP, RRFSv1b, WoFSv0, HRRR
33
plot_dir = plots_twpice_all_suites/
44
obs_file = ../data/raw_case_input/twp180iopsndgvarana_v2.1_C3.c1.20060117.000000.cdf
55
obs_compare = True
@@ -15,7 +15,7 @@ time_series_resample = True
1515

1616
[plots]
1717
[[profiles_mean]]
18-
vars = qc, qv, T, dT_dt_pbl, dT_dt_micro, dT_dt_lwrad, dT_dt_swrad
18+
vars = qc, qv, T, dT_dt_PBL, dT_dt_conv, dT_dt_micro, dT_dt_lwrad, dT_dt_swrad
1919
vars_labels = 'cloud water mixing ratio ($g$ $kg^{-1}$)', 'specific humidity ($g$ $kg^{-1}$)', 'T (K)', 'PBL tendency (K/day)', 'conv. tendency (K/day)', 'microphysics tendency (K/day)', 'LW tendency (K/day)', 'SW tendency (K/day)'
2020
vert_axis = pres_l
2121
vert_axis_label = 'average pressure (Pa)'
@@ -27,8 +27,12 @@ time_series_resample = True
2727

2828
[[profiles_mean_multi]]
2929
[[[T_forcing]]]
30-
vars = T_force_tend, dT_dt_pbl, dT_dt_micro, dT_dt_lwrad, dT_dt_swrad
31-
vars_labels = 'force', 'PBL', 'MP', 'LW', 'SW'
30+
vars = T_force_tend, dT_dt_PBL, dT_dt_conv, dT_dt_micro, dT_dt_lwrad, dT_dt_swrad
31+
vars_labels = 'force', 'PBL', 'Conv', 'MP', 'LW', 'SW'
32+
x_label = 'K/day'
33+
[[[conv_tendencies]]]
34+
vars = dT_dt_deepconv, dT_dt_shalconv
35+
vars_labels = 'deep', 'shallow'
3236
x_label = 'K/day'
3337

3438
[[profiles_instant]]

scm/etc/scripts/scm_analysis.py

Lines changed: 50 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,17 @@
4242
def print_progress(n_complete, n_total):
4343
print(str(n_complete) + ' of ' + str(n_total) + ' complete: (' + str(100.0*n_complete/float(n_total)) + '%)')
4444

45-
def replace_fill_with_nan(nc_ds, var_name, var, group):
46-
raw_data = nc_ds.variables[var_name][:]
47-
raw_data[raw_data == nc_fid.variables[var_name]._FillValue] = np.nan
48-
var.append(raw_data)
45+
def replace_fill_with_nan(nc_ds, var_name, var, group, time_diag, pres_l, dataset):
46+
try:
47+
raw_data = nc_ds.variables[var_name][:]
48+
raw_data[raw_data == nc_fid.variables[var_name]._FillValue] = np.nan
49+
var.append(nc_fid.variables[var_name][:])
50+
except KeyError:
51+
print('{0} is not in the output file {1}'.format(var_name, dataset))
52+
print('Missing variables are replaced with {0}'.format(0))
53+
var.append(np.zeros((len(time_diag[-1]),pres_l[-1].shape[1],pres_l[-1].shape[2])))
4954
group.append(var_name)
50-
return [var, group]
55+
return[var,group]
5156

5257
#set up command line argument parser to read in name of config file to use
5358
parser = argparse.ArgumentParser()
@@ -584,97 +589,97 @@ def replace_fill_with_nan(nc_ds, var_name, var, group):
584589
hpbl.append(nc_fid.variables['hpbl'][:])
585590
inst_time_group.append('hpbl')
586591

587-
[dT_dt_lwrad, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_lwrad', dT_dt_lwrad, diag_time_group)
592+
[dT_dt_lwrad, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_lwrad', dT_dt_lwrad, diag_time_group, time_diag, pres_l, scm_datasets[i])
588593

589-
[dT_dt_swrad, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_swrad', dT_dt_swrad, diag_time_group)
594+
[dT_dt_swrad, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_swrad', dT_dt_swrad, diag_time_group, time_diag, pres_l, scm_datasets[i])
590595

591-
[dT_dt_pbl, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_pbl', dT_dt_pbl, diag_time_group)
596+
[dT_dt_pbl, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_pbl', dT_dt_pbl, diag_time_group, time_diag, pres_l, scm_datasets[i])
592597

593-
[dT_dt_deepconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_deepconv', dT_dt_deepconv, diag_time_group)
598+
[dT_dt_deepconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_deepconv', dT_dt_deepconv, diag_time_group, time_diag, pres_l, scm_datasets[i])
594599

595-
[dT_dt_shalconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_shalconv', dT_dt_shalconv, diag_time_group)
600+
[dT_dt_shalconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_shalconv', dT_dt_shalconv, diag_time_group, time_diag, pres_l, scm_datasets[i])
596601

597-
[dT_dt_micro, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_micro', dT_dt_micro, diag_time_group)
602+
[dT_dt_micro, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_micro', dT_dt_micro, diag_time_group, time_diag, pres_l, scm_datasets[i])
598603

599604
dT_dt_conv.append(dT_dt_deepconv[-1] + dT_dt_shalconv[-1])
600605
diag_time_group.append('dT_dt_conv')
601606

602-
[dT_dt_ogwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_ogwd', dT_dt_ogwd, diag_time_group)
607+
[dT_dt_ogwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_ogwd', dT_dt_ogwd, diag_time_group, time_diag, pres_l, scm_datasets[i])
603608

604-
[dT_dt_rayleigh, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_rayleigh', dT_dt_rayleigh, diag_time_group)
609+
[dT_dt_rayleigh, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_rayleigh', dT_dt_rayleigh, diag_time_group, time_diag, pres_l, scm_datasets[i])
605610

606-
[dT_dt_cgwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_cgwd', dT_dt_cgwd, diag_time_group)
611+
[dT_dt_cgwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_cgwd', dT_dt_cgwd, diag_time_group, time_diag, pres_l, scm_datasets[i])
607612

608-
[dT_dt_phys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_phys', dT_dt_phys, diag_time_group)
613+
[dT_dt_phys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_phys', dT_dt_phys, diag_time_group, time_diag, pres_l, scm_datasets[i])
609614

610-
[dT_dt_nonphys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_nonphys', dT_dt_nonphys, diag_time_group)
615+
[dT_dt_nonphys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dT_dt_nonphys', dT_dt_nonphys, diag_time_group, time_diag, pres_l, scm_datasets[i])
611616

612-
[dq_dt_pbl, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_pbl', dq_dt_pbl, diag_time_group)
617+
[dq_dt_pbl, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_pbl', dq_dt_pbl, diag_time_group, time_diag, pres_l, scm_datasets[i])
613618

614-
[dq_dt_deepconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_deepconv', dq_dt_deepconv, diag_time_group)
619+
[dq_dt_deepconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_deepconv', dq_dt_deepconv, diag_time_group, time_diag, pres_l, scm_datasets[i])
615620

616-
[dq_dt_shalconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_shalconv', dq_dt_shalconv, diag_time_group)
621+
[dq_dt_shalconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_shalconv', dq_dt_shalconv, diag_time_group, time_diag, pres_l, scm_datasets[i])
617622

618-
[dq_dt_micro, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_micro', dq_dt_micro, diag_time_group)
623+
[dq_dt_micro, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_micro', dq_dt_micro, diag_time_group, time_diag, pres_l, scm_datasets[i])
619624

620625
dq_dt_conv.append(dq_dt_deepconv[-1] + dq_dt_shalconv[-1])
621626
diag_time_group.append('dq_dt_conv')
622627

623-
[dq_dt_phys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_phys', dq_dt_phys, diag_time_group)
628+
[dq_dt_phys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_phys', dq_dt_phys, diag_time_group, time_diag, pres_l, scm_datasets[i])
624629

625-
[dq_dt_nonphys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_nonphys', dq_dt_nonphys, diag_time_group)
630+
[dq_dt_nonphys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dq_dt_nonphys', dq_dt_nonphys, diag_time_group, time_diag, pres_l, scm_datasets[i])
626631

627-
[doz_dt_pbl, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_pbl', doz_dt_pbl, diag_time_group)
632+
[doz_dt_pbl, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_pbl', doz_dt_pbl, diag_time_group, time_diag, pres_l, scm_datasets[i])
628633

629-
[doz_dt_prodloss, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_prodloss', doz_dt_prodloss, diag_time_group)
634+
[doz_dt_prodloss, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_prodloss', doz_dt_prodloss, diag_time_group, time_diag, pres_l, scm_datasets[i])
630635

631-
[doz_dt_oz, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_oz', doz_dt_oz, diag_time_group)
636+
[doz_dt_oz, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_oz', doz_dt_oz, diag_time_group, time_diag, pres_l, scm_datasets[i])
632637

633-
[doz_dt_T, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_T', doz_dt_T, diag_time_group)
638+
[doz_dt_T, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_T', doz_dt_T, diag_time_group, time_diag, pres_l, scm_datasets[i])
634639

635-
[doz_dt_ovhd, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_ovhd', doz_dt_ovhd, diag_time_group)
640+
[doz_dt_ovhd, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_ovhd', doz_dt_ovhd, diag_time_group, time_diag, pres_l, scm_datasets[i])
636641

637-
[doz_dt_phys, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_phys', doz_dt_phys, diag_time_group)
642+
[doz_dt_phys, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_phys', doz_dt_phys, diag_time_group, time_diag, pres_l, scm_datasets[i])
638643

639-
[doz_dt_nonphys, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_nonphys', doz_dt_nonphys, diag_time_group)
644+
[doz_dt_nonphys, diag_time_group] = replace_fill_with_nan(nc_fid, 'doz_dt_nonphys', doz_dt_nonphys, diag_time_group, time_diag, pres_l, scm_datasets[i])
640645

641-
[du_dt_pbl, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_pbl', du_dt_pbl, diag_time_group)
646+
[du_dt_pbl, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_pbl', du_dt_pbl, diag_time_group, time_diag, pres_l, scm_datasets[i])
642647

643-
[du_dt_ogwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_ogwd', du_dt_ogwd, diag_time_group)
648+
[du_dt_ogwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_ogwd', du_dt_ogwd, diag_time_group, time_diag, pres_l, scm_datasets[i])
644649

645-
[du_dt_deepconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_deepconv', du_dt_deepconv, diag_time_group)
650+
[du_dt_deepconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_deepconv', du_dt_deepconv, diag_time_group, time_diag, pres_l, scm_datasets[i])
646651

647-
[du_dt_cgwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_cgwd', du_dt_cgwd, diag_time_group)
652+
[du_dt_cgwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_cgwd', du_dt_cgwd, diag_time_group, time_diag, pres_l, scm_datasets[i])
648653

649-
[du_dt_rayleigh, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_rayleigh', du_dt_rayleigh, diag_time_group)
654+
[du_dt_rayleigh, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_rayleigh', du_dt_rayleigh, diag_time_group, time_diag, pres_l, scm_datasets[i])
650655

651-
[du_dt_shalconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_shalconv', du_dt_shalconv, diag_time_group)
656+
[du_dt_shalconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_shalconv', du_dt_shalconv, diag_time_group, time_diag, pres_l, scm_datasets[i])
652657

653658
du_dt_conv.append(du_dt_deepconv[-1] + du_dt_shalconv[-1])
654659
diag_time_group.append('du_dt_conv')
655660

656-
[du_dt_phys, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_phys', du_dt_phys, diag_time_group)
661+
[du_dt_phys, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_phys', du_dt_phys, diag_time_group, time_diag, pres_l, scm_datasets[i])
657662

658-
[du_dt_nonphys, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_nonphys', du_dt_nonphys, diag_time_group)
663+
[du_dt_nonphys, diag_time_group] = replace_fill_with_nan(nc_fid, 'du_dt_nonphys', du_dt_nonphys, diag_time_group, time_diag, pres_l, scm_datasets[i])
659664

660-
[dv_dt_pbl, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_pbl', dv_dt_pbl, diag_time_group)
665+
[dv_dt_pbl, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_pbl', dv_dt_pbl, diag_time_group, time_diag, pres_l, scm_datasets[i])
661666

662-
[dv_dt_ogwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_ogwd', dv_dt_ogwd, diag_time_group)
667+
[dv_dt_ogwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_ogwd', dv_dt_ogwd, diag_time_group, time_diag, pres_l, scm_datasets[i])
663668

664-
[dv_dt_deepconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_deepconv', dv_dt_deepconv, diag_time_group)
669+
[dv_dt_deepconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_deepconv', dv_dt_deepconv, diag_time_group, time_diag, pres_l, scm_datasets[i])
665670

666-
[dv_dt_cgwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_cgwd', dv_dt_cgwd, diag_time_group)
671+
[dv_dt_cgwd, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_cgwd', dv_dt_cgwd, diag_time_group, time_diag, pres_l, scm_datasets[i])
667672

668-
[dv_dt_rayleigh, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_rayleigh', dv_dt_rayleigh, diag_time_group)
673+
[dv_dt_rayleigh, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_rayleigh', dv_dt_rayleigh, diag_time_group, time_diag, pres_l, scm_datasets[i])
669674

670-
[dv_dt_shalconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_shalconv', dv_dt_shalconv, diag_time_group)
675+
[dv_dt_shalconv, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_shalconv', dv_dt_shalconv, diag_time_group, time_diag, pres_l, scm_datasets[i])
671676

672677
dv_dt_conv.append(dv_dt_deepconv[-1] + dv_dt_shalconv[-1])
673678
diag_time_group.append('dv_dt_conv')
674679

675-
[dv_dt_phys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_phys', dv_dt_phys, diag_time_group)
680+
[dv_dt_phys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_phys', dv_dt_phys, diag_time_group, time_diag, pres_l, scm_datasets[i])
676681

677-
[dv_dt_nonphys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_nonphys', dv_dt_nonphys, diag_time_group)
682+
[dv_dt_nonphys, diag_time_group] = replace_fill_with_nan(nc_fid, 'dv_dt_nonphys', dv_dt_nonphys, diag_time_group, time_diag, pres_l, scm_datasets[i])
678683

679684
tprcp_accum.append(nc_fid.variables['tprcp_accum'][:])
680685
diag_time_group.append('tprcp_accum')

0 commit comments

Comments
 (0)