Skip to content

Commit

Permalink
Merge #168
Browse files Browse the repository at this point in the history
168: Use even more discrete operators r=charleskawczynski a=charleskawczynski



Co-authored-by: Charles Kawczynski <kawczynski.charles@gmail.com>
  • Loading branch information
bors[bot] and charleskawczynski committed Aug 27, 2021
2 parents 5691afd + a21444f commit 78be08b
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 104 deletions.
140 changes: 70 additions & 70 deletions integration_tests/utils/mse_tables.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,33 @@
all_best_mse = OrderedDict()
#
all_best_mse["ARM_SGP"] = OrderedDict()
all_best_mse["ARM_SGP"]["qt_mean"] = 0.31083230679335183
all_best_mse["ARM_SGP"]["updraft_area"] = 2129.887040081693
all_best_mse["ARM_SGP"]["updraft_w"] = 335.65939747300877
all_best_mse["ARM_SGP"]["updraft_qt"] = 12.908050962527675
all_best_mse["ARM_SGP"]["updraft_thetal"] = 27.68113450321576
all_best_mse["ARM_SGP"]["u_mean"] = 87.99854727781786
all_best_mse["ARM_SGP"]["tke_mean"] = 514.8771310983082
all_best_mse["ARM_SGP"]["temperature_mean"] = 0.00012673869547986125
all_best_mse["ARM_SGP"]["ql_mean"] = 434.5076265731047
all_best_mse["ARM_SGP"]["thetal_mean"] = 0.0001312405013265037
all_best_mse["ARM_SGP"]["Hvar_mean"] = 1811.4318038760819
all_best_mse["ARM_SGP"]["QTvar_mean"] = 1475.3959416614648
all_best_mse["ARM_SGP"]["qt_mean"] = 0.3100948449743043
all_best_mse["ARM_SGP"]["updraft_area"] = 2130.003371811232
all_best_mse["ARM_SGP"]["updraft_w"] = 335.61694191886437
all_best_mse["ARM_SGP"]["updraft_qt"] = 13.507253332340785
all_best_mse["ARM_SGP"]["updraft_thetal"] = 27.680136021888845
all_best_mse["ARM_SGP"]["u_mean"] = 87.9985472778179
all_best_mse["ARM_SGP"]["tke_mean"] = 515.0005631604809
all_best_mse["ARM_SGP"]["temperature_mean"] = 0.00012661810230677262
all_best_mse["ARM_SGP"]["ql_mean"] = 434.10239476835926
all_best_mse["ARM_SGP"]["thetal_mean"] = 0.00013109679814794564
all_best_mse["ARM_SGP"]["Hvar_mean"] = 1850.5390248519595
all_best_mse["ARM_SGP"]["QTvar_mean"] = 1490.270860435377
#
all_best_mse["Bomex"] = OrderedDict()
all_best_mse["Bomex"]["qt_mean"] = 0.11530291480539559
all_best_mse["Bomex"]["updraft_area"] = 696.580444679966
all_best_mse["Bomex"]["updraft_w"] = 32.6498436301293
all_best_mse["Bomex"]["updraft_qt"] = 4.2825922378176005
all_best_mse["Bomex"]["updraft_thetal"] = 21.546300155493363
all_best_mse["Bomex"]["v_mean"] = 68.69179470764105
all_best_mse["Bomex"]["u_mean"] = 53.30953176101998
all_best_mse["Bomex"]["tke_mean"] = 42.30438685639641
all_best_mse["Bomex"]["temperature_mean"] = 4.941373792118928e-5
all_best_mse["Bomex"]["ql_mean"] = 14.703328528235684
all_best_mse["Bomex"]["thetal_mean"] = 5.043852827032637e-5
all_best_mse["Bomex"]["Hvar_mean"] = 5563.2477089832955
all_best_mse["Bomex"]["QTvar_mean"] = 3919.6882782407647
all_best_mse["Bomex"]["qt_mean"] = 0.1153034582519463
all_best_mse["Bomex"]["updraft_area"] = 696.6036023208976
all_best_mse["Bomex"]["updraft_w"] = 32.67620897261635
all_best_mse["Bomex"]["updraft_qt"] = 4.282874389487352
all_best_mse["Bomex"]["updraft_thetal"] = 21.546342190768865
all_best_mse["Bomex"]["v_mean"] = 68.69179383879826
all_best_mse["Bomex"]["u_mean"] = 53.30953176325872
all_best_mse["Bomex"]["tke_mean"] = 42.30463906609652
all_best_mse["Bomex"]["temperature_mean"] = 4.9412741603076475e-5
all_best_mse["Bomex"]["ql_mean"] = 14.7436021900751
all_best_mse["Bomex"]["thetal_mean"] = 5.043881043277929e-5
all_best_mse["Bomex"]["Hvar_mean"] = 5566.205230257673
all_best_mse["Bomex"]["QTvar_mean"] = 3922.009567840965
#
all_best_mse["DryBubble"] = OrderedDict()
all_best_mse["DryBubble"]["updraft_area"] = 0.0
Expand All @@ -44,19 +44,19 @@ all_best_mse["DryBubble"]["thetal_mean"] = 0.0
all_best_mse["DryBubble"]["Hvar_mean"] = 0.0
#
all_best_mse["DYCOMS_RF01"] = OrderedDict()
all_best_mse["DYCOMS_RF01"]["qt_mean"] = 0.017141595263082388
all_best_mse["DYCOMS_RF01"]["ql_mean"] = 3.9027826633491656
all_best_mse["DYCOMS_RF01"]["updraft_area"] = 238.7715164762518
all_best_mse["DYCOMS_RF01"]["updraft_w"] = 4.376046418525048
all_best_mse["DYCOMS_RF01"]["updraft_qt"] = 1.1293404340913655
all_best_mse["DYCOMS_RF01"]["updraft_thetal"] = 12.737856375819822
all_best_mse["DYCOMS_RF01"]["v_mean"] = 39.85706430135813
all_best_mse["DYCOMS_RF01"]["u_mean"] = 37.144800382648675
all_best_mse["DYCOMS_RF01"]["tke_mean"] = 12.187454105253483
all_best_mse["DYCOMS_RF01"]["temperature_mean"] = 3.68205187356337e-5
all_best_mse["DYCOMS_RF01"]["thetal_mean"] = 3.737433465590873e-5
all_best_mse["DYCOMS_RF01"]["Hvar_mean"] = 8002.439385600797
all_best_mse["DYCOMS_RF01"]["QTvar_mean"] = 628.9992701382023
all_best_mse["DYCOMS_RF01"]["qt_mean"] = 0.017141595263060583
all_best_mse["DYCOMS_RF01"]["ql_mean"] = 3.902782663378424
all_best_mse["DYCOMS_RF01"]["updraft_area"] = 238.77151647647452
all_best_mse["DYCOMS_RF01"]["updraft_w"] = 4.37604641851428
all_best_mse["DYCOMS_RF01"]["updraft_qt"] = 1.1293404340911508
all_best_mse["DYCOMS_RF01"]["updraft_thetal"] = 12.737856375819918
all_best_mse["DYCOMS_RF01"]["v_mean"] = 39.85706430135339
all_best_mse["DYCOMS_RF01"]["u_mean"] = 37.14480038264424
all_best_mse["DYCOMS_RF01"]["tke_mean"] = 12.187454105342148
all_best_mse["DYCOMS_RF01"]["temperature_mean"] = 3.682051873558375e-5
all_best_mse["DYCOMS_RF01"]["thetal_mean"] = 3.7374334655874835e-5
all_best_mse["DYCOMS_RF01"]["Hvar_mean"] = 8002.439386517841
all_best_mse["DYCOMS_RF01"]["QTvar_mean"] = 628.9992701868507
#
all_best_mse["GABLS"] = OrderedDict()
all_best_mse["GABLS"]["updraft_thetal"] = 0.0
Expand Down Expand Up @@ -94,19 +94,19 @@ all_best_mse["Nieuwstadt"]["thetal_mean"] = 1.1168053403192467e-5
all_best_mse["Nieuwstadt"]["Hvar_mean"] = 207.8534876488109
#
all_best_mse["Rico"] = OrderedDict()
all_best_mse["Rico"]["qt_mean"] = 0.39429604103275545
all_best_mse["Rico"]["updraft_area"] = 2013.2701876832032
all_best_mse["Rico"]["updraft_w"] = 155.5005223050154
all_best_mse["Rico"]["updraft_qt"] = 15.287315187565602
all_best_mse["Rico"]["updraft_thetal"] = 63.610299165920786
all_best_mse["Rico"]["v_mean"] = 106.22389568484279
all_best_mse["Rico"]["u_mean"] = 114.11113266820267
all_best_mse["Rico"]["tke_mean"] = 350.8208409228491
all_best_mse["Rico"]["temperature_mean"] = 0.0001831151724761663
all_best_mse["Rico"]["ql_mean"] = 46.934654210777424
all_best_mse["Rico"]["thetal_mean"] = 0.00015949425192269306
all_best_mse["Rico"]["Hvar_mean"] = 20291.397257510616
all_best_mse["Rico"]["QTvar_mean"] = 11655.345172764153
all_best_mse["Rico"]["qt_mean"] = 0.39517579712946777
all_best_mse["Rico"]["updraft_area"] = 2011.5259710270589
all_best_mse["Rico"]["updraft_w"] = 156.61078840409775
all_best_mse["Rico"]["updraft_qt"] = 15.384266731132021
all_best_mse["Rico"]["updraft_thetal"] = 63.61039430511314
all_best_mse["Rico"]["v_mean"] = 106.22362722040619
all_best_mse["Rico"]["u_mean"] = 114.11031007028288
all_best_mse["Rico"]["tke_mean"] = 350.2361887885428
all_best_mse["Rico"]["temperature_mean"] = 0.00018366543763861278
all_best_mse["Rico"]["ql_mean"] = 47.232259276723035
all_best_mse["Rico"]["thetal_mean"] = 0.00016004182737077617
all_best_mse["Rico"]["Hvar_mean"] = 18992.670764730676
all_best_mse["Rico"]["QTvar_mean"] = 10907.929700079643
#
all_best_mse["Soares"] = OrderedDict()
all_best_mse["Soares"]["qt_mean"] = 0.14716663824689807
Expand Down Expand Up @@ -135,27 +135,27 @@ all_best_mse["SP"]["Hvar_mean"] = 0.0
all_best_mse["SP"]["QTvar_mean"] = 0.0
#
all_best_mse["TRMM_LBA"] = OrderedDict()
all_best_mse["TRMM_LBA"]["qt_mean"] = 1.58348832185085
all_best_mse["TRMM_LBA"]["updraft_area"] = 23661.145609241987
all_best_mse["TRMM_LBA"]["updraft_w"] = 874.7053835685812
all_best_mse["TRMM_LBA"]["updraft_qt"] = 27.334000033055865
all_best_mse["TRMM_LBA"]["updraft_thetal"] = 110.0156654232232
all_best_mse["TRMM_LBA"]["v_mean"] = 292.06873681324146
all_best_mse["TRMM_LBA"]["u_mean"] = 1688.1637119508557
all_best_mse["TRMM_LBA"]["tke_mean"] = 1133.0570484602802
all_best_mse["TRMM_LBA"]["temperature_mean"] = 0.0006159543641257377
all_best_mse["TRMM_LBA"]["ql_mean"] = 1012.4814052110991
all_best_mse["TRMM_LBA"]["thetal_mean"] = 0.008134034386983655
all_best_mse["TRMM_LBA"]["Hvar_mean"] = 1539.1355527815185
all_best_mse["TRMM_LBA"]["QTvar_mean"] = 1603.3436795331029
all_best_mse["TRMM_LBA"]["qt_mean"] = 1.583488321850344
all_best_mse["TRMM_LBA"]["updraft_area"] = 23661.14560924765
all_best_mse["TRMM_LBA"]["updraft_w"] = 874.7053835686512
all_best_mse["TRMM_LBA"]["updraft_qt"] = 27.334000033056196
all_best_mse["TRMM_LBA"]["updraft_thetal"] = 110.01566542322274
all_best_mse["TRMM_LBA"]["v_mean"] = 292.0687368132412
all_best_mse["TRMM_LBA"]["u_mean"] = 1688.163711950856
all_best_mse["TRMM_LBA"]["tke_mean"] = 1133.0570484604486
all_best_mse["TRMM_LBA"]["temperature_mean"] = 0.0006159543641259404
all_best_mse["TRMM_LBA"]["ql_mean"] = 1012.4814052120518
all_best_mse["TRMM_LBA"]["thetal_mean"] = 0.008134034386983801
all_best_mse["TRMM_LBA"]["Hvar_mean"] = 1539.1355527822789
all_best_mse["TRMM_LBA"]["QTvar_mean"] = 1603.3436795342975
#
all_best_mse["LES_driven_SCM"] = OrderedDict()
all_best_mse["LES_driven_SCM"]["qt_mean"] = 7.002673544885207
all_best_mse["LES_driven_SCM"]["v_mean"] = 3.7069751180781934
all_best_mse["LES_driven_SCM"]["u_mean"] = 1.1960543190154145
all_best_mse["LES_driven_SCM"]["temperature_mean"] = 0.004911981765108061
all_best_mse["LES_driven_SCM"]["ql_mean"] = 351.37815211486225
all_best_mse["LES_driven_SCM"]["thetal_mean"] = 0.003199788458992111
all_best_mse["LES_driven_SCM"]["qt_mean"] = 7.001420431316564
all_best_mse["LES_driven_SCM"]["v_mean"] = 3.706983915103995
all_best_mse["LES_driven_SCM"]["u_mean"] = 1.1960521401810782
all_best_mse["LES_driven_SCM"]["temperature_mean"] = 0.00491153518337588
all_best_mse["LES_driven_SCM"]["ql_mean"] = 351.1878784597711
all_best_mse["LES_driven_SCM"]["thetal_mean"] = 0.00319935965541255
#
#################################
#################################
Expand Down
62 changes: 28 additions & 34 deletions src/Turbulence_PrognosticTKE.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1427,48 +1427,42 @@ function compute_covariance_shear(
)

grid = get_grid(self)
dzi = grid.dzi
ae = 1 .- self.UpdVar.Area.bulkvalues
diff_var1 = 0.0
diff_var2 = 0.0
du = 0.0
dv = 0.0
tke_factor = 1.0
du_high = 0.0
dv_high = 0.0
KH = diffusivity_h(self).values
rho0_half = reference_state(self).rho0_half
is_tke = Covar.name == "tke"
tke_factor = is_tke ? 0.5 : 1
k_eddy = is_tke ? diffusivity_m(self).values : diffusivity_h(self).values

@inbounds for k in real_center_indicies(grid)
if Covar.name == "tke"
du_low = du_high
dv_low = dv_high
du_high = (GMV.U.values[k + 1] - GMV.U.values[k]) * dzi
dv_high = (GMV.V.values[k + 1] - GMV.V.values[k]) * dzi
diff_var2 = (EnvVar2[k] - EnvVar2[k - 1]) * dzi
diff_var1 = (EnvVar1[k] - EnvVar1[k - 1]) * dzi
tke_factor = 0.5
k_eddy = diffusivity_m(self).values[k]
else
if is_tke
@inbounds for k in real_center_indicies(grid)
v_cut = cut(GMV.V.values, grid, k)
∇v = c∇(v_cut, grid, k; bottom = Extrapolate(), top = SetGradient(0))

u_cut = cut(GMV.U.values, grid, k)
∇u = c∇(u_cut, grid, k; bottom = Extrapolate(), top = SetGradient(0))

var2_dual = dual_faces(EnvVar2, grid, k)
var1_dual = dual_faces(EnvVar1, grid, k)

∇var2 = ∇f2c(var2_dual, grid, k; bottom = SetValue(0), top = SetGradient(0))
∇var1 = ∇f2c(var1_dual, grid, k; bottom = SetValue(0), top = SetGradient(0))

Covar.shear[k] = tke_factor * 2 * (rho0_half[k] * ae[k] * k_eddy[k] * (∇var1 * ∇var2 + ∇u^2 + ∇v^2))
end
else
@inbounds for k in real_center_indicies(grid)
# Defined correctly only for covariance between half-level variables.
du_low = 0.0
dv_low = 0.0
du_high = 0.0
dv_high = 0.0
diff_var2 = interp2pt((EnvVar2[k + 1] - EnvVar2[k]), (EnvVar2[k] - EnvVar2[k - 1])) * dzi
diff_var1 = interp2pt((EnvVar1[k + 1] - EnvVar1[k]), (EnvVar1[k] - EnvVar1[k - 1])) * dzi
tke_factor = 1.0
k_eddy = KH[k]
var1_cut = cut(EnvVar1, grid, k)
∇var1 = c∇(var1_cut, grid, k; bottom = Extrapolate(), top = SetGradient(0))

var2_cut = cut(EnvVar2, grid, k)
∇var2 = c∇(var2_cut, grid, k; bottom = Extrapolate(), top = SetGradient(0))

Covar.shear[k] = tke_factor * 2 * (rho0_half[k] * ae[k] * k_eddy[k] * (∇var1 * ∇var2))
end
Covar.shear[k] =
tke_factor *
2.0 *
(
rho0_half[k] *
ae[k] *
k_eddy *
(diff_var1 * diff_var2 + interp2pt(du_low, du_high)^2 + interp2pt(dv_low, dv_high)^2)
)
end
return
end
Expand Down

0 comments on commit 78be08b

Please sign in to comment.