Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make env entr-detr and mixing length src terms explicit #484

Merged
merged 1 commit into from
Oct 31, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
234 changes: 117 additions & 117 deletions integration_tests/utils/mse_tables.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,149 +5,149 @@
all_best_mse = OrderedCollections.OrderedDict()
#
all_best_mse["ARM_SGP"] = OrderedCollections.OrderedDict()
all_best_mse["ARM_SGP"]["qt_mean"] = 0.2016843552515147
all_best_mse["ARM_SGP"]["updraft_area"] = 332.54485627699484
all_best_mse["ARM_SGP"]["updraft_w"] = 142.13903128436013
all_best_mse["ARM_SGP"]["updraft_qt"] = 28.51751862190134
all_best_mse["ARM_SGP"]["updraft_thetal"] = 170.9819543354705
all_best_mse["ARM_SGP"]["qt_mean"] = 0.201538650033358
all_best_mse["ARM_SGP"]["updraft_area"] = 332.4475533896447
all_best_mse["ARM_SGP"]["updraft_w"] = 142.1539164106749
all_best_mse["ARM_SGP"]["updraft_qt"] = 27.58807751331177
all_best_mse["ARM_SGP"]["updraft_thetal"] = 170.98096834533237
all_best_mse["ARM_SGP"]["u_mean"] = 1.3375737467153984e-5
all_best_mse["ARM_SGP"]["tke_mean"] = 1125.5549669556046
all_best_mse["ARM_SGP"]["temperature_mean"] = 0.00010080206733558572
all_best_mse["ARM_SGP"]["ql_mean"] = 184.14937975805202
all_best_mse["ARM_SGP"]["tke_mean"] = 1126.1518210646634
all_best_mse["ARM_SGP"]["temperature_mean"] = 0.00010040618174893608
all_best_mse["ARM_SGP"]["ql_mean"] = 184.10775227999574
all_best_mse["ARM_SGP"]["qi_mean"] = "NA"
all_best_mse["ARM_SGP"]["thetal_mean"] = 9.197712149833382e-5
all_best_mse["ARM_SGP"]["Hvar_mean"] = 2990.379011362635
all_best_mse["ARM_SGP"]["QTvar_mean"] = 1613.654323486596
all_best_mse["ARM_SGP"]["thetal_mean"] = 9.162091206439055e-5
all_best_mse["ARM_SGP"]["Hvar_mean"] = 2978.171369680538
all_best_mse["ARM_SGP"]["QTvar_mean"] = 1671.3077453248047
#
all_best_mse["Bomex"] = OrderedCollections.OrderedDict()
all_best_mse["Bomex"]["qt_mean"] = 0.11182331695442137
all_best_mse["Bomex"]["updraft_area"] = 129.54905277342996
all_best_mse["Bomex"]["updraft_w"] = 18.538153765713826
all_best_mse["Bomex"]["updraft_qt"] = 6.540168994614487
all_best_mse["Bomex"]["updraft_thetal"] = 69.4635399059126
all_best_mse["Bomex"]["v_mean"] = 67.04463361168976
all_best_mse["Bomex"]["u_mean"] = 0.3232369831318616
all_best_mse["Bomex"]["tke_mean"] = 74.33837630173835
all_best_mse["Bomex"]["temperature_mean"] = 4.451456748552087e-5
all_best_mse["Bomex"]["ql_mean"] = 9.06000885028478
all_best_mse["Bomex"]["qt_mean"] = 0.11278001700019959
all_best_mse["Bomex"]["updraft_area"] = 129.4846141534673
all_best_mse["Bomex"]["updraft_w"] = 18.576695876881924
all_best_mse["Bomex"]["updraft_qt"] = 6.540763450886481
all_best_mse["Bomex"]["updraft_thetal"] = 69.46330164759212
all_best_mse["Bomex"]["v_mean"] = 67.06625103060162
all_best_mse["Bomex"]["u_mean"] = 0.32364040197255045
all_best_mse["Bomex"]["tke_mean"] = 74.26022864520664
all_best_mse["Bomex"]["temperature_mean"] = 4.481581325182224e-5
all_best_mse["Bomex"]["ql_mean"] = 8.870584776786226
all_best_mse["Bomex"]["qi_mean"] = "NA"
all_best_mse["Bomex"]["thetal_mean"] = 4.523302157955378e-5
all_best_mse["Bomex"]["Hvar_mean"] = 4482.544389007811
all_best_mse["Bomex"]["QTvar_mean"] = 1671.5218952368998
all_best_mse["Bomex"]["thetal_mean"] = 4.552261706289574e-5
all_best_mse["Bomex"]["Hvar_mean"] = 3822.6582761010186
all_best_mse["Bomex"]["QTvar_mean"] = 1431.1011618463074
#
all_best_mse["DryBubble"] = OrderedCollections.OrderedDict()
all_best_mse["DryBubble"]["updraft_area"] = 0.19650192933848798
all_best_mse["DryBubble"]["updraft_w"] = 0.04908495514091068
all_best_mse["DryBubble"]["updraft_thetal"] = 8.564122786997383e-9
all_best_mse["DryBubble"]["updraft_area"] = 0.011709042090302288
all_best_mse["DryBubble"]["updraft_w"] = 0.025728630672039392
all_best_mse["DryBubble"]["updraft_thetal"] = 1.9250805446823891e-10
all_best_mse["DryBubble"]["u_mean"] = 0.0
all_best_mse["DryBubble"]["tke_mean"] = 0.9675601658368003
all_best_mse["DryBubble"]["temperature_mean"] = 5.559858405658734e-7
all_best_mse["DryBubble"]["thetal_mean"] = 9.63566811672262e-7
all_best_mse["DryBubble"]["Hvar_mean"] = 48.467795135053514
all_best_mse["DryBubble"]["tke_mean"] = 0.1656663898382522
all_best_mse["DryBubble"]["temperature_mean"] = 9.801370014218665e-7
all_best_mse["DryBubble"]["thetal_mean"] = 9.882724454029427e-7
all_best_mse["DryBubble"]["Hvar_mean"] = 106.6496531111275
#
all_best_mse["DYCOMS_RF01"] = OrderedCollections.OrderedDict()
all_best_mse["DYCOMS_RF01"]["qt_mean"] = 0.022677101040026477
all_best_mse["DYCOMS_RF01"]["ql_mean"] = 10.289057475163577
all_best_mse["DYCOMS_RF01"]["updraft_area"] = 30.546079255852018
all_best_mse["DYCOMS_RF01"]["updraft_w"] = 4.138365411045406
all_best_mse["DYCOMS_RF01"]["updraft_qt"] = 2.1515077761950536
all_best_mse["DYCOMS_RF01"]["updraft_thetal"] = 46.186912638532924
all_best_mse["DYCOMS_RF01"]["v_mean"] = 0.003017355570409969
all_best_mse["DYCOMS_RF01"]["u_mean"] = 0.0789765629146743
all_best_mse["DYCOMS_RF01"]["tke_mean"] = 21.337774822856744
all_best_mse["DYCOMS_RF01"]["temperature_mean"] = 8.086252765650384e-5
all_best_mse["DYCOMS_RF01"]["thetal_mean"] = 8.15922574638418e-5
all_best_mse["DYCOMS_RF01"]["Hvar_mean"] = 1243.0762012458238
all_best_mse["DYCOMS_RF01"]["QTvar_mean"] = 483.9169865868388
all_best_mse["DYCOMS_RF01"]["qt_mean"] = 0.022672135076186477
all_best_mse["DYCOMS_RF01"]["ql_mean"] = 10.265977035746493
all_best_mse["DYCOMS_RF01"]["updraft_area"] = 30.545071259208292
all_best_mse["DYCOMS_RF01"]["updraft_w"] = 4.138812260750362
all_best_mse["DYCOMS_RF01"]["updraft_qt"] = 2.151270428637389
all_best_mse["DYCOMS_RF01"]["updraft_thetal"] = 46.18691185853013
all_best_mse["DYCOMS_RF01"]["v_mean"] = 0.0030191062692069507
all_best_mse["DYCOMS_RF01"]["u_mean"] = 0.07898418966157564
all_best_mse["DYCOMS_RF01"]["tke_mean"] = 21.338575107469342
all_best_mse["DYCOMS_RF01"]["temperature_mean"] = 8.091792542369367e-5
all_best_mse["DYCOMS_RF01"]["thetal_mean"] = 8.164847128108202e-5
all_best_mse["DYCOMS_RF01"]["Hvar_mean"] = 1243.0756059302573
all_best_mse["DYCOMS_RF01"]["QTvar_mean"] = 483.9323354860703
#
all_best_mse["GABLS"] = OrderedCollections.OrderedDict()
all_best_mse["GABLS"]["updraft_thetal"] = 0.0
all_best_mse["GABLS"]["v_mean"] = 0.0
all_best_mse["GABLS"]["u_mean"] = 0.0
all_best_mse["GABLS"]["tke_mean"] = 0.0
all_best_mse["GABLS"]["temperature_mean"] = 0.0
all_best_mse["GABLS"]["thetal_mean"] = 0.0
all_best_mse["GABLS"]["Hvar_mean"] = 0.0
all_best_mse["GABLS"]["QTvar_mean"] = 0.0
all_best_mse["GABLS"]["qt_mean"] = 0.0
all_best_mse["GABLS"]["updraft_thetal"] = 9.362380584445123e-13
all_best_mse["GABLS"]["v_mean"] = 3.510422119969872e-7
all_best_mse["GABLS"]["u_mean"] = 6.622724912806718e-9
all_best_mse["GABLS"]["tke_mean"] = 1.918669376417244e-8
all_best_mse["GABLS"]["temperature_mean"] = 9.327167580027083e-13
all_best_mse["GABLS"]["thetal_mean"] = 9.326125693764193e-13
all_best_mse["GABLS"]["Hvar_mean"] = 7.012821412187712e-7
all_best_mse["GABLS"]["QTvar_mean"] = 8.04575610176886e-7
all_best_mse["GABLS"]["qt_mean"] = 1.1044780613485987e-7
#
all_best_mse["life_cycle_Tan2018"] = OrderedCollections.OrderedDict()
all_best_mse["life_cycle_Tan2018"]["qt_mean"] = 0.0024073016143687795
all_best_mse["life_cycle_Tan2018"]["ql_mean"] = 0.9313889067347976
all_best_mse["life_cycle_Tan2018"]["updraft_area"] = 0.6657381952552016
all_best_mse["life_cycle_Tan2018"]["updraft_w"] = 1.4681469474784932
all_best_mse["life_cycle_Tan2018"]["updraft_qt"] = 0.01058227504341623
all_best_mse["life_cycle_Tan2018"]["updraft_thetal"] = 6.1199275154961695e-6
all_best_mse["life_cycle_Tan2018"]["v_mean"] = 0.0527896755971735
all_best_mse["life_cycle_Tan2018"]["u_mean"] = 0.0001920073043722874
all_best_mse["life_cycle_Tan2018"]["tke_mean"] = 0.09554523516206548
all_best_mse["life_cycle_Tan2018"]["temperature_mean"] = 1.452667165790396e-6
all_best_mse["life_cycle_Tan2018"]["thetal_mean"] = 1.4382455008353157e-6
all_best_mse["life_cycle_Tan2018"]["Hvar_mean"] = 574.4458446979478
all_best_mse["life_cycle_Tan2018"]["QTvar_mean"] = 497.88589454573406
all_best_mse["life_cycle_Tan2018"]["qt_mean"] = 1.8798525422680512e-6
all_best_mse["life_cycle_Tan2018"]["ql_mean"] = 0.0033830465911644458
all_best_mse["life_cycle_Tan2018"]["updraft_area"] = 0.00063783826161396
all_best_mse["life_cycle_Tan2018"]["updraft_w"] = 0.0012832337290926965
all_best_mse["life_cycle_Tan2018"]["updraft_qt"] = 9.619633446170689e-6
all_best_mse["life_cycle_Tan2018"]["updraft_thetal"] = 1.3742982963574644e-9
all_best_mse["life_cycle_Tan2018"]["v_mean"] = 1.951328562118354e-5
all_best_mse["life_cycle_Tan2018"]["u_mean"] = 5.4074570518642695e-8
all_best_mse["life_cycle_Tan2018"]["tke_mean"] = 0.00022793966257988725
all_best_mse["life_cycle_Tan2018"]["temperature_mean"] = 8.44036369607394e-10
all_best_mse["life_cycle_Tan2018"]["thetal_mean"] = 8.389757260475431e-10
all_best_mse["life_cycle_Tan2018"]["Hvar_mean"] = 229.8101039255836
all_best_mse["life_cycle_Tan2018"]["QTvar_mean"] = 181.4139889463028
#
all_best_mse["Nieuwstadt"] = OrderedCollections.OrderedDict()
all_best_mse["Nieuwstadt"]["updraft_area"] = 99.13649030560836
all_best_mse["Nieuwstadt"]["updraft_w"] = 12.5505685866215
all_best_mse["Nieuwstadt"]["updraft_thetal"] = 117.3669863583512
all_best_mse["Nieuwstadt"]["u_mean"] = 14.606069077941628
all_best_mse["Nieuwstadt"]["tke_mean"] = 297.4827134008939
all_best_mse["Nieuwstadt"]["temperature_mean"] = 9.769381912457457e-6
all_best_mse["Nieuwstadt"]["thetal_mean"] = 1.0079939603970465e-5
all_best_mse["Nieuwstadt"]["Hvar_mean"] = 1262.2114665124902
all_best_mse["Nieuwstadt"]["updraft_area"] = 99.14697570408873
all_best_mse["Nieuwstadt"]["updraft_w"] = 12.54222203457601
all_best_mse["Nieuwstadt"]["updraft_thetal"] = 117.36698719902736
all_best_mse["Nieuwstadt"]["u_mean"] = 14.606306459489302
all_best_mse["Nieuwstadt"]["tke_mean"] = 297.4302677285086
all_best_mse["Nieuwstadt"]["temperature_mean"] = 9.768351533908172e-6
all_best_mse["Nieuwstadt"]["thetal_mean"] = 1.0079404153492178e-5
all_best_mse["Nieuwstadt"]["Hvar_mean"] = 1262.1809820975623
#
all_best_mse["Rico"] = OrderedCollections.OrderedDict()
all_best_mse["Rico"]["qt_mean"] = 1.4025323200465418
all_best_mse["Rico"]["updraft_area"] = 477.20578733479607
all_best_mse["Rico"]["updraft_w"] = 106.01683896557466
all_best_mse["Rico"]["updraft_qt"] = 11.39256224937475
all_best_mse["Rico"]["updraft_thetal"] = 133.3429603608533
all_best_mse["Rico"]["v_mean"] = 0.6645177527941996
all_best_mse["Rico"]["u_mean"] = 0.6155588506142172
all_best_mse["Rico"]["tke_mean"] = 86.96666792831482
all_best_mse["Rico"]["temperature_mean"] = 0.0006364566541222193
all_best_mse["Rico"]["ql_mean"] = 66.45329047685821
all_best_mse["Rico"]["qr_mean"] = 764.2944734653654
all_best_mse["Rico"]["qt_mean"] = 1.394509822350617
all_best_mse["Rico"]["updraft_area"] = 477.58308411654565
all_best_mse["Rico"]["updraft_w"] = 106.14973532039616
all_best_mse["Rico"]["updraft_qt"] = 11.21729208681497
all_best_mse["Rico"]["updraft_thetal"] = 133.33915303615132
all_best_mse["Rico"]["v_mean"] = 0.6617668189804893
all_best_mse["Rico"]["u_mean"] = 0.6085497589338993
all_best_mse["Rico"]["tke_mean"] = 86.61638437267273
all_best_mse["Rico"]["temperature_mean"] = 0.0006338887792755973
all_best_mse["Rico"]["ql_mean"] = 66.11922172706427
all_best_mse["Rico"]["qr_mean"] = 764.2877006604666
all_best_mse["Rico"]["qi_mean"] = "NA"
all_best_mse["Rico"]["thetal_mean"] = 0.0006266919733920106
all_best_mse["Rico"]["Hvar_mean"] = 33156.42102045994
all_best_mse["Rico"]["QTvar_mean"] = 7106.96666111255
all_best_mse["Rico"]["thetal_mean"] = 0.0006242575445085685
all_best_mse["Rico"]["Hvar_mean"] = 33159.004289018565
all_best_mse["Rico"]["QTvar_mean"] = 7104.507280789655
#
all_best_mse["Soares"] = OrderedCollections.OrderedDict()
all_best_mse["Soares"]["qt_mean"] = 0.12689661674565406
all_best_mse["Soares"]["updraft_area"] = 96.38657625619226
all_best_mse["Soares"]["updraft_w"] = 11.363272224504078
all_best_mse["Soares"]["updraft_qt"] = 23.08998055643125
all_best_mse["Soares"]["updraft_thetal"] = 65.25329732571137
all_best_mse["Soares"]["u_mean"] = 96.34800568698753
all_best_mse["Soares"]["tke_mean"] = 241.77068181913015
all_best_mse["Soares"]["temperature_mean"] = 1.0939843815478148e-5
all_best_mse["Soares"]["thetal_mean"] = 1.037267355458892e-5
all_best_mse["Soares"]["Hvar_mean"] = 1124.6141285521687
all_best_mse["Soares"]["qt_mean"] = 0.12766212300514143
all_best_mse["Soares"]["updraft_area"] = 96.30619582419114
all_best_mse["Soares"]["updraft_w"] = 11.377817345749362
all_best_mse["Soares"]["updraft_qt"] = 23.091827850445945
all_best_mse["Soares"]["updraft_thetal"] = 65.25329178215365
all_best_mse["Soares"]["u_mean"] = 96.34818688149957
all_best_mse["Soares"]["tke_mean"] = 241.78655894679807
all_best_mse["Soares"]["temperature_mean"] = 1.0950371444517424e-5
all_best_mse["Soares"]["thetal_mean"] = 1.0389159447653492e-5
all_best_mse["Soares"]["Hvar_mean"] = 1124.942565943812
#
all_best_mse["TRMM_LBA"] = OrderedCollections.OrderedDict()
all_best_mse["TRMM_LBA"]["qt_mean"] = 3.967134183275101
all_best_mse["TRMM_LBA"]["updraft_area"] = 7590.356267876008
all_best_mse["TRMM_LBA"]["updraft_w"] = 29123.83374632888
all_best_mse["TRMM_LBA"]["updraft_qt"] = 264.2918349123181
all_best_mse["TRMM_LBA"]["updraft_thetal"] = 1962.1765540314118
all_best_mse["TRMM_LBA"]["v_mean"] = 286.63121814606967
all_best_mse["TRMM_LBA"]["u_mean"] = 113.7948591086141
all_best_mse["TRMM_LBA"]["tke_mean"] = 25962.06650935473
all_best_mse["TRMM_LBA"]["temperature_mean"] = 0.0011270670911831125
all_best_mse["TRMM_LBA"]["ql_mean"] = 11332.658219963643
all_best_mse["TRMM_LBA"]["qt_mean"] = 3.967144253393629
all_best_mse["TRMM_LBA"]["updraft_area"] = 7590.339209296449
all_best_mse["TRMM_LBA"]["updraft_w"] = 29122.93012011217
all_best_mse["TRMM_LBA"]["updraft_qt"] = 264.284996212963
all_best_mse["TRMM_LBA"]["updraft_thetal"] = 1962.2135633942364
all_best_mse["TRMM_LBA"]["v_mean"] = 286.6266616106145
all_best_mse["TRMM_LBA"]["u_mean"] = 113.79376716173189
all_best_mse["TRMM_LBA"]["tke_mean"] = 25965.045111910775
all_best_mse["TRMM_LBA"]["temperature_mean"] = 0.001127041649680257
all_best_mse["TRMM_LBA"]["ql_mean"] = 11333.178177568238
all_best_mse["TRMM_LBA"]["qi_mean"] = "NA"
all_best_mse["TRMM_LBA"]["thetal_mean"] = 0.02111929207987654
all_best_mse["TRMM_LBA"]["Hvar_mean"] = 4343.447993195795
all_best_mse["TRMM_LBA"]["QTvar_mean"] = 2835.545829357872
all_best_mse["TRMM_LBA"]["thetal_mean"] = 0.02111933645016046
all_best_mse["TRMM_LBA"]["Hvar_mean"] = 4344.270372978066
all_best_mse["TRMM_LBA"]["QTvar_mean"] = 2835.9351283813576
#
all_best_mse["LES_driven_SCM"] = OrderedCollections.OrderedDict()
all_best_mse["LES_driven_SCM"]["qt_mean"] = 6.718293098139983
all_best_mse["LES_driven_SCM"]["v_mean"] = 3.7503234427737855
all_best_mse["LES_driven_SCM"]["u_mean"] = 1.2519047322072785
all_best_mse["LES_driven_SCM"]["temperature_mean"] = 0.002919663164442907
all_best_mse["LES_driven_SCM"]["ql_mean"] = 2038.6688332888941
all_best_mse["LES_driven_SCM"]["thetal_mean"] = 0.003229829620595727
all_best_mse["LES_driven_SCM"]["qt_mean"] = 6.734217555590809
all_best_mse["LES_driven_SCM"]["v_mean"] = 3.7490756531079428
all_best_mse["LES_driven_SCM"]["u_mean"] = 1.2514916509334006
all_best_mse["LES_driven_SCM"]["temperature_mean"] = 0.0029246618584022285
all_best_mse["LES_driven_SCM"]["ql_mean"] = 2183.4825582959747
all_best_mse["LES_driven_SCM"]["thetal_mean"] = 0.0032355608944500233
#
#################################
#################################
Expand Down
51 changes: 11 additions & 40 deletions src/Operators.jl
Original file line number Diff line number Diff line change
Expand Up @@ -538,33 +538,20 @@ some terms are treated implicitly. Here is a list of all
the terms in the matrix (and the overall equation solved):

N_a terms = 1 (diffusion)
N_diagonal terms = 6 (unsteady+upwind_advection+2diffusion+entr_detr+dissipation)
N_diagonal terms = 5 (unsteady+upwind_advection+2diffusion)
N_c terms = 2 (diffusion+upwind_advection)

∂_t ρa*tke ✓ unsteady
+ ∂_z(ρaw*tke) = ✓ advection
+ ρaK*(∂²_z(u)+∂²_z(v)+∂²_z(w̄))
+ ρawΣᵢ(εᵢ(wⱼ-w₀)²-δ₀*tke) ✓ entr_detr
+ ρawΣᵢ(εᵢ(wⱼ-w₀)²-δ₀*tke)
+ ∂_z(ρa₀K ∂_z(tke)) ✓ diffusion
+ ρa₀*w̅₀b̅₀
- a₀(u⋅∇p)
+ ρa₀D ✓ dissipation
+ ρa₀D
=#
function construct_tridiag_diffusion_en(
grid::Grid,
param_set::APS,
state,
TS,
n_updrafts::Int,
minimum_area::Float64,
pressure_plume_spacing::Vector,
frac_turb_entr,
entr_sc,
mixing_length,
is_tke,
)

c_d = CPEDMF.c_d(param_set)
function construct_tridiag_diffusion_en(grid::Grid, state, TS, n_updrafts::Int, is_tke)

kc_surf = kc_surface(grid)
kc_toa = kc_top_of_atmos(grid)
Δzi = grid.Δzi
Expand All @@ -581,37 +568,23 @@ function construct_tridiag_diffusion_en(
aux_up = center_aux_updrafts(state)

ae = 1 .- aux_tc.bulk.area
rho_ae_K_m = face_field(grid)
ρ_ae_K = face_field(grid)
w_en_c = center_field(grid)
D_env = 0.0
KM = center_aux_turbconv(state).KM
KH = center_aux_turbconv(state).KH

aeK = is_tke ? ae .* KM : ae .* KH
aeK_bcs = (; bottom = SetValue(aeK[kc_surf]), top = SetValue(aeK[kc_toa]))

@inbounds for k in real_face_indices(grid)
rho_ae_K_m[k] = interpc2f(aeK, grid, k; aeK_bcs...) * ρ0_f[k]
ρ_ae_K[k] = interpc2f(aeK, grid, k; aeK_bcs...) * ρ0_f[k]
end

@inbounds for k in real_center_indices(grid)
w_en_c[k] = interpf2c(w_en, grid, k)
end

@inbounds for k in real_center_indices(grid)
D_env = 0.0

@inbounds for i in 1:n_updrafts
if aux_up[i].area[k] > minimum_area
turb_entr = frac_turb_entr[i, k]
R_up = pressure_plume_spacing[i]
w_up_c = interpf2c(aux_up_f[i].w, grid, k)
D_env += ρ0_c[k] * aux_up[i].area[k] * w_up_c * (entr_sc[i, k] + turb_entr)
else
D_env = 0.0
end
end

# TODO: this tridiagonal matrix needs to be re-verified, as it's been pragmatically
# modified to not depend on ghost points, and these changes have not been
# carefully verified.
Expand All @@ -620,18 +593,16 @@ function construct_tridiag_diffusion_en(
b[k] = 1.0
c[k] = 0.0
else
a[k] = (-rho_ae_K_m[k] * Δzi * Δzi)
a[k] = (-ρ_ae_K[k] * Δzi * Δzi)
b[k] = (
ρ0_c[k] * ae[k] * dti - ρ0_c[k] * ae[k] * w_en_c[k] * Δzi +
rho_ae_K_m[k + 1] * Δzi * Δzi +
rho_ae_K_m[k] * Δzi * Δzi +
D_env +
ρ0_c[k] * ae[k] * c_d * sqrt(max(prog_en.tke[k], 0)) / max(mixing_length[k], 1)
ρ_ae_K[k + 1] * Δzi * Δzi +
ρ_ae_K[k] * Δzi * Δzi
)
if is_toa_center(grid, k)
c[k] = 0.0
else
c[k] = (ρ0_c[k + 1] * ae[k + 1] * w_en_c[k + 1] * Δzi - rho_ae_K_m[k + 1] * Δzi * Δzi)
c[k] = (ρ0_c[k + 1] * ae[k + 1] * w_en_c[k + 1] * Δzi - ρ_ae_K[k + 1] * Δzi * Δzi)
end
end
end
Expand Down
Loading