Skip to content

Commit

Permalink
Use ClimaCore operators
Browse files Browse the repository at this point in the history
  • Loading branch information
charleskawczynski committed Nov 30, 2021
1 parent 08fc2dd commit dd1fa5d
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 64 deletions.
2 changes: 2 additions & 0 deletions integration_tests/utils/main.jl
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ cent_aux_vars_gm(FT) = (;
v_nudge = FT(0), #Reference v profile for relaxation tendency
ug = FT(0), #Geostrophic u velocity
vg = FT(0), #Geostrophic v velocity
∇θ_liq_ice_gm = FT(0),
∇q_tot_gm = FT(0),
)
cent_aux_vars_en_2m(FT) = (;
dissipation = FT(0),
Expand Down
108 changes: 54 additions & 54 deletions integration_tests/utils/mse_tables.jl
Original file line number Diff line number Diff line change
Expand Up @@ -20,30 +20,30 @@ all_best_mse["ARM_SGP"]["Hvar_mean"] = 10050.287844276096
all_best_mse["ARM_SGP"]["QTvar_mean"] = 6409.072907454158
#
all_best_mse["Bomex"] = OrderedCollections.OrderedDict()
all_best_mse["Bomex"]["qt_mean"] = 0.11386593804223395
all_best_mse["Bomex"]["updraft_area"] = 129.6036478299415
all_best_mse["Bomex"]["updraft_w"] = 18.269073825654836
all_best_mse["Bomex"]["updraft_qt"] = 7.172813510835134
all_best_mse["Bomex"]["updraft_thetal"] = 69.79574099595605
all_best_mse["Bomex"]["v_mean"] = 66.93611979214278
all_best_mse["Bomex"]["u_mean"] = 0.31831686414232385
all_best_mse["Bomex"]["tke_mean"] = 74.04439277772684
all_best_mse["Bomex"]["temperature_mean"] = 4.534964149172667e-5
all_best_mse["Bomex"]["ql_mean"] = 9.06220414748308
all_best_mse["Bomex"]["qt_mean"] = 0.1106923137150576
all_best_mse["Bomex"]["updraft_area"] = 129.60272062634158
all_best_mse["Bomex"]["updraft_w"] = 17.690466168067342
all_best_mse["Bomex"]["updraft_qt"] = 6.929092109626689
all_best_mse["Bomex"]["updraft_thetal"] = 69.79095024237947
all_best_mse["Bomex"]["v_mean"] = 66.98297659096178
all_best_mse["Bomex"]["u_mean"] = 0.31859092657788696
all_best_mse["Bomex"]["tke_mean"] = 74.05740862876598
all_best_mse["Bomex"]["temperature_mean"] = 4.387214792883629e-5
all_best_mse["Bomex"]["ql_mean"] = 7.898741934670023
all_best_mse["Bomex"]["qi_mean"] = "NA"
all_best_mse["Bomex"]["thetal_mean"] = 4.6114572394924826e-5
all_best_mse["Bomex"]["Hvar_mean"] = 3929.5862955085718
all_best_mse["Bomex"]["QTvar_mean"] = 1471.025865172192
all_best_mse["Bomex"]["thetal_mean"] = 4.454314249470174e-5
all_best_mse["Bomex"]["Hvar_mean"] = 4228.589789854231
all_best_mse["Bomex"]["QTvar_mean"] = 1570.7718722475322
#
all_best_mse["DryBubble"] = OrderedCollections.OrderedDict()
all_best_mse["DryBubble"]["updraft_area"] = 1.0468607169176005e-21
all_best_mse["DryBubble"]["updraft_w"] = 7.731625286715597e-22
all_best_mse["DryBubble"]["updraft_thetal"] = 1.6249094098122142e-28
all_best_mse["DryBubble"]["updraft_area"] = 0.0
all_best_mse["DryBubble"]["updraft_w"] = 0.0
all_best_mse["DryBubble"]["updraft_thetal"] = 0.0
all_best_mse["DryBubble"]["u_mean"] = 0.0
all_best_mse["DryBubble"]["tke_mean"] = 5.049479188006379e-21
all_best_mse["DryBubble"]["temperature_mean"] = 4.077972346806205e-29
all_best_mse["DryBubble"]["thetal_mean"] = 3.5394053402535673e-29
all_best_mse["DryBubble"]["Hvar_mean"] = 2.9924679420898647e-21
all_best_mse["DryBubble"]["tke_mean"] = 0.0
all_best_mse["DryBubble"]["temperature_mean"] = 0.0
all_best_mse["DryBubble"]["thetal_mean"] = 0.0
all_best_mse["DryBubble"]["Hvar_mean"] = 0.0
#
all_best_mse["DYCOMS_RF01"] = OrderedCollections.OrderedDict()
all_best_mse["DYCOMS_RF01"]["qt_mean"] = 0.023204890213439345
Expand All @@ -55,7 +55,7 @@ all_best_mse["DYCOMS_RF01"]["updraft_thetal"] = 46.1881703698088
all_best_mse["DYCOMS_RF01"]["v_mean"] = 0.002984566999515788
all_best_mse["DYCOMS_RF01"]["u_mean"] = 0.07894318758971025
all_best_mse["DYCOMS_RF01"]["tke_mean"] = 21.331159027170038
all_best_mse["DYCOMS_RF01"]["temperature_mean"] = 7.604096303774697e-5
all_best_mse["DYCOMS_RF01"]["temperature_mean"] = 7.604096303774715e-5
all_best_mse["DYCOMS_RF01"]["thetal_mean"] = 7.642464404652118e-5
all_best_mse["DYCOMS_RF01"]["Hvar_mean"] = 1288.1706746716493
all_best_mse["DYCOMS_RF01"]["QTvar_mean"] = 518.9390189083833
Expand All @@ -72,19 +72,19 @@ all_best_mse["GABLS"]["QTvar_mean"] = 0.0
all_best_mse["GABLS"]["qt_mean"] = 0.0
#
all_best_mse["life_cycle_Tan2018"] = OrderedCollections.OrderedDict()
all_best_mse["life_cycle_Tan2018"]["qt_mean"] = 1.1301395729117972e-10
all_best_mse["life_cycle_Tan2018"]["ql_mean"] = 6.885610456230736e-8
all_best_mse["life_cycle_Tan2018"]["updraft_area"] = 1.0650639202780091e-9
all_best_mse["life_cycle_Tan2018"]["updraft_w"] = 4.412853249807393e-9
all_best_mse["life_cycle_Tan2018"]["updraft_qt"] = 2.0834237326020182e-11
all_best_mse["life_cycle_Tan2018"]["updraft_thetal"] = 1.2290664718154136e-14
all_best_mse["life_cycle_Tan2018"]["v_mean"] = 3.5370643087557025e-10
all_best_mse["life_cycle_Tan2018"]["u_mean"] = 1.333755913538528e-12
all_best_mse["life_cycle_Tan2018"]["tke_mean"] = 4.0026919871474993e-10
all_best_mse["life_cycle_Tan2018"]["temperature_mean"] = 5.49702103791042e-14
all_best_mse["life_cycle_Tan2018"]["thetal_mean"] = 5.403807380431132e-14
all_best_mse["life_cycle_Tan2018"]["Hvar_mean"] = 0.0006520458481563525
all_best_mse["life_cycle_Tan2018"]["QTvar_mean"] = 0.0005521351618329725
all_best_mse["life_cycle_Tan2018"]["qt_mean"] = 1.040201456183157e-10
all_best_mse["life_cycle_Tan2018"]["ql_mean"] = 6.339124373524877e-8
all_best_mse["life_cycle_Tan2018"]["updraft_area"] = 9.806718601088474e-10
all_best_mse["life_cycle_Tan2018"]["updraft_w"] = 4.061214002736451e-9
all_best_mse["life_cycle_Tan2018"]["updraft_qt"] = 1.9178005490897857e-11
all_best_mse["life_cycle_Tan2018"]["updraft_thetal"] = 1.1313447584072501e-14
all_best_mse["life_cycle_Tan2018"]["v_mean"] = 3.258535553669558e-10
all_best_mse["life_cycle_Tan2018"]["u_mean"] = 1.2289273222328453e-12
all_best_mse["life_cycle_Tan2018"]["tke_mean"] = 3.685000196344194e-10
all_best_mse["life_cycle_Tan2018"]["temperature_mean"] = 5.059639034227088e-14
all_best_mse["life_cycle_Tan2018"]["thetal_mean"] = 4.9738328807256563e-14
all_best_mse["life_cycle_Tan2018"]["Hvar_mean"] = 0.0005984844754654284
all_best_mse["life_cycle_Tan2018"]["QTvar_mean"] = 0.0005067724620515855
#
all_best_mse["Nieuwstadt"] = OrderedCollections.OrderedDict()
all_best_mse["Nieuwstadt"]["updraft_area"] = 98.58868568320953
Expand All @@ -97,21 +97,21 @@ all_best_mse["Nieuwstadt"]["thetal_mean"] = 9.917616755053735e-6
all_best_mse["Nieuwstadt"]["Hvar_mean"] = 1280.8007043658781
#
all_best_mse["Rico"] = OrderedCollections.OrderedDict()
all_best_mse["Rico"]["qt_mean"] = 1.2374332817585152
all_best_mse["Rico"]["updraft_area"] = 476.42828102112094
all_best_mse["Rico"]["updraft_w"] = 107.63994685627974
all_best_mse["Rico"]["updraft_qt"] = 13.561257420867225
all_best_mse["Rico"]["updraft_thetal"] = 133.82585090829056
all_best_mse["Rico"]["v_mean"] = 0.6139821705021405
all_best_mse["Rico"]["u_mean"] = 0.6873796298887406
all_best_mse["Rico"]["tke_mean"] = 81.73582834680109
all_best_mse["Rico"]["temperature_mean"] = 0.000572523750928536
all_best_mse["Rico"]["ql_mean"] = 62.68774587854839
all_best_mse["Rico"]["qt_mean"] = 1.2379817678813374
all_best_mse["Rico"]["updraft_area"] = 476.4332441804219
all_best_mse["Rico"]["updraft_w"] = 107.5565016731201
all_best_mse["Rico"]["updraft_qt"] = 13.571714766962765
all_best_mse["Rico"]["updraft_thetal"] = 133.82434969427942
all_best_mse["Rico"]["v_mean"] = 0.6143413555117644
all_best_mse["Rico"]["u_mean"] = 0.68705319628077
all_best_mse["Rico"]["tke_mean"] = 81.70739554010115
all_best_mse["Rico"]["temperature_mean"] = 0.0005733219123889063
all_best_mse["Rico"]["ql_mean"] = 62.75505390677565
all_best_mse["Rico"]["qi_mean"] = "NA"
all_best_mse["Rico"]["qr_mean"] = 761.0071192508036
all_best_mse["Rico"]["thetal_mean"] = 0.000564880580847811
all_best_mse["Rico"]["Hvar_mean"] = 172497.32482685937
all_best_mse["Rico"]["QTvar_mean"] = 38768.421549556835
all_best_mse["Rico"]["qr_mean"] = 761.0167618473477
all_best_mse["Rico"]["thetal_mean"] = 0.0005656864371822172
all_best_mse["Rico"]["Hvar_mean"] = 173280.11274300521
all_best_mse["Rico"]["QTvar_mean"] = 38946.4291539475
#
all_best_mse["Soares"] = OrderedCollections.OrderedDict()
all_best_mse["Soares"]["qt_mean"] = 0.1254170125375242
Expand Down Expand Up @@ -144,12 +144,12 @@ all_best_mse["TRMM_LBA"]["Hvar_mean"] = 4347.857247874721
all_best_mse["TRMM_LBA"]["QTvar_mean"] = 2834.5221950389873
#
all_best_mse["LES_driven_SCM"] = OrderedCollections.OrderedDict()
all_best_mse["LES_driven_SCM"]["qt_mean"] = 3.6787564218423423
all_best_mse["LES_driven_SCM"]["v_mean"] = 1.3104599245585289
all_best_mse["LES_driven_SCM"]["u_mean"] = 0.4499328257766739
all_best_mse["LES_driven_SCM"]["temperature_mean"] = 0.0012871391706061209
all_best_mse["LES_driven_SCM"]["ql_mean"] = 82323.24310668586
all_best_mse["LES_driven_SCM"]["thetal_mean"] = 0.0015567358670710684
all_best_mse["LES_driven_SCM"]["qt_mean"] = 3.678756609605833
all_best_mse["LES_driven_SCM"]["v_mean"] = 1.3104598555707683
all_best_mse["LES_driven_SCM"]["u_mean"] = 0.4499328324090225
all_best_mse["LES_driven_SCM"]["temperature_mean"] = 0.0012871512844187208
all_best_mse["LES_driven_SCM"]["ql_mean"] = 82322.65889490423
all_best_mse["LES_driven_SCM"]["thetal_mean"] = 0.0015567358822997865
#
#################################
#################################
Expand Down
29 changes: 19 additions & 10 deletions src/Turbulence_PrognosticTKE.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,13 @@ end

function compute_gm_tendencies!(edmf::EDMF_PrognosticTKE, grid, state, Case, gm, TS)
tendencies_gm = center_tendencies_grid_mean(state)
kc_toa = kc_top_of_atmos(grid)
FT = eltype(grid)
param_set = parameter_set(gm)
prog_gm = center_prog_grid_mean(state)
aux_gm = center_aux_grid_mean(state)
∇θ_liq_ice_gm = center_aux_grid_mean(state).∇θ_liq_ice_gm
∇q_tot_gm = center_aux_grid_mean(state).∇q_tot_gm
aux_en = center_aux_environment(state)
aux_en_f = face_aux_environment(state)
aux_up = center_aux_updrafts(state)
Expand All @@ -48,6 +52,15 @@ function compute_gm_tendencies!(edmf::EDMF_PrognosticTKE, grid, state, Case, gm,
en = edmf.EnvVar
aux_tc = center_aux_turbconv(state)

θ_liq_ice_gm_toa = prog_gm.θ_liq_ice[kc_toa]
q_tot_gm_toa = prog_gm.q_tot[kc_toa]
RBθ = CCO.RightBiasedC2F(; top = CCO.SetValue(θ_liq_ice_gm_toa))
RBq = CCO.RightBiasedC2F(; top = CCO.SetValue(q_tot_gm_toa))
wvec = CC.Geometry.WVector
= CCO.DivergenceF2C()
@. ∇θ_liq_ice_gm = (wvec(RBθ(prog_gm.θ_liq_ice)))
@. ∇q_tot_gm = (wvec(RBq(prog_gm.q_tot)))

@inbounds for k in real_center_indices(grid)
# Apply large-scale horizontal advection tendencies
ts = thermo_state_pθq(param_set, p0_c[k], prog_gm.θ_liq_ice[k], prog_gm.q_tot[k])
Expand All @@ -60,22 +73,18 @@ function compute_gm_tendencies!(edmf::EDMF_PrognosticTKE, grid, state, Case, gm,
if rad_type(Case.Rad) <: Union{RadiationDYCOMS_RF01, RadiationLES}
tendencies_gm.θ_liq_ice[k] += aux_gm.dTdt_rad[k] / Π
end
H_cut = ccut_downwind(prog_gm.θ_liq_ice, grid, k)
q_tot_cut = ccut_downwind(prog_gm.q_tot, grid, k)
∇H = c∇_downwind(H_cut, grid, k; bottom = FreeBoundary(), top = SetGradient(0))
∇q_tot = c∇_downwind(q_tot_cut, grid, k; bottom = FreeBoundary(), top = SetGradient(0))

if force_type(Case.Fo) <: ForcingDYCOMS_RF01
tendencies_gm.q_tot[k] += aux_gm.dqtdt[k]
# Apply large-scale subsidence tendencies
tendencies_gm.θ_liq_ice[k] -=H * aux_gm.subsidence[k]
tendencies_gm.q_tot[k] -=q_tot * aux_gm.subsidence[k]
tendencies_gm.θ_liq_ice[k] -=θ_liq_ice_gm[k] * aux_gm.subsidence[k]
tendencies_gm.q_tot[k] -=q_tot_gm[k] * aux_gm.subsidence[k]
end

if force_type(Case.Fo) <: ForcingStandard
if Case.Fo.apply_subsidence
tendencies_gm.θ_liq_ice[k] -=H * aux_gm.subsidence[k]
tendencies_gm.q_tot[k] -=q_tot * aux_gm.subsidence[k]
tendencies_gm.θ_liq_ice[k] -=θ_liq_ice_gm[k] * aux_gm.subsidence[k]
tendencies_gm.q_tot[k] -=q_tot_gm[k] * aux_gm.subsidence[k]
end
tendencies_gm.θ_liq_ice[k] += aux_gm.dTdt[k] / Π
tendencies_gm.q_tot[k] += aux_gm.dqtdt[k]
Expand All @@ -100,8 +109,8 @@ function compute_gm_tendencies!(edmf::EDMF_PrognosticTKE, grid, state, Case, gm,

if Case.Fo.apply_subsidence
# Apply large-scale subsidence tendencies
gm_H_subsidence_k = -H * aux_gm.subsidence[k]
gm_QT_subsidence_k = -q_tot * aux_gm.subsidence[k]
gm_H_subsidence_k = -θ_liq_ice_gm[k] * aux_gm.subsidence[k]
gm_QT_subsidence_k = -q_tot_gm[k] * aux_gm.subsidence[k]
else
gm_H_subsidence_k = 0.0
gm_QT_subsidence_k = 0.0
Expand Down

0 comments on commit dd1fa5d

Please sign in to comment.