Skip to content

Commit

Permalink
Merge #487
Browse files Browse the repository at this point in the history
487: Replace environment matrix inverse with explicit update r=charleskawczynski a=charleskawczynski



Co-authored-by: Charles Kawczynski <kawczynski.charles@gmail.com>
  • Loading branch information
bors[bot] and charleskawczynski committed Nov 1, 2021
2 parents 1ab603e + 65567a8 commit 57ad8c7
Show file tree
Hide file tree
Showing 4 changed files with 132 additions and 211 deletions.
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.22153032881351237
all_best_mse["ARM_SGP"]["updraft_area"] = 335.1685139295908
all_best_mse["ARM_SGP"]["updraft_w"] = 142.0290367004556
all_best_mse["ARM_SGP"]["updraft_qt"] = 27.726379242002476
all_best_mse["ARM_SGP"]["updraft_thetal"] = 170.98119756918584
all_best_mse["ARM_SGP"]["qt_mean"] = 0.22143401926585182
all_best_mse["ARM_SGP"]["updraft_area"] = 335.16785513690655
all_best_mse["ARM_SGP"]["updraft_w"] = 141.97803346792176
all_best_mse["ARM_SGP"]["updraft_qt"] = 27.57483064595048
all_best_mse["ARM_SGP"]["updraft_thetal"] = 170.98103520062713
all_best_mse["ARM_SGP"]["u_mean"] = 1.3375737467153984e-5
all_best_mse["ARM_SGP"]["tke_mean"] = 1317.668469319657
all_best_mse["ARM_SGP"]["temperature_mean"] = 0.00010873126782650757
all_best_mse["ARM_SGP"]["ql_mean"] = 176.21484974825347
all_best_mse["ARM_SGP"]["tke_mean"] = 1317.678548063657
all_best_mse["ARM_SGP"]["temperature_mean"] = 0.00010869927305570782
all_best_mse["ARM_SGP"]["ql_mean"] = 176.03297501190372
all_best_mse["ARM_SGP"]["qi_mean"] = "NA"
all_best_mse["ARM_SGP"]["thetal_mean"] = 0.00010015758560883269
all_best_mse["ARM_SGP"]["Hvar_mean"] = 10056.88907774507
all_best_mse["ARM_SGP"]["QTvar_mean"] = 6401.400692204485
all_best_mse["ARM_SGP"]["thetal_mean"] = 0.00010012167033603005
all_best_mse["ARM_SGP"]["Hvar_mean"] = 10019.605203648243
all_best_mse["ARM_SGP"]["QTvar_mean"] = 6380.233899055468
#
all_best_mse["Bomex"] = OrderedCollections.OrderedDict()
all_best_mse["Bomex"]["qt_mean"] = 0.11386633805268594
all_best_mse["Bomex"]["updraft_area"] = 129.46581508139394
all_best_mse["Bomex"]["updraft_w"] = 18.702330266802374
all_best_mse["Bomex"]["updraft_qt"] = 6.543770825965683
all_best_mse["Bomex"]["updraft_thetal"] = 69.46292306536425
all_best_mse["Bomex"]["v_mean"] = 67.06025112983149
all_best_mse["Bomex"]["u_mean"] = 0.3235625771364134
all_best_mse["Bomex"]["tke_mean"] = 74.28411645782818
all_best_mse["Bomex"]["temperature_mean"] = 4.532627706554993e-5
all_best_mse["Bomex"]["ql_mean"] = 9.147941859180515
all_best_mse["Bomex"]["qt_mean"] = 0.11224921120454945
all_best_mse["Bomex"]["updraft_area"] = 129.4906967797644
all_best_mse["Bomex"]["updraft_w"] = 18.517052531724794
all_best_mse["Bomex"]["updraft_qt"] = 6.542125775887841
all_best_mse["Bomex"]["updraft_thetal"] = 69.46310949586267
all_best_mse["Bomex"]["v_mean"] = 67.05698543673745
all_best_mse["Bomex"]["u_mean"] = 0.3235803034219502
all_best_mse["Bomex"]["tke_mean"] = 74.27500076671177
all_best_mse["Bomex"]["temperature_mean"] = 4.4589394073851936e-5
all_best_mse["Bomex"]["ql_mean"] = 8.84060550534244
all_best_mse["Bomex"]["qi_mean"] = "NA"
all_best_mse["Bomex"]["thetal_mean"] = 4.606179622443964e-5
all_best_mse["Bomex"]["Hvar_mean"] = 3873.1381522018696
all_best_mse["Bomex"]["QTvar_mean"] = 1451.2094598084998
all_best_mse["Bomex"]["thetal_mean"] = 4.528961998613632e-5
all_best_mse["Bomex"]["Hvar_mean"] = 3999.7718503825167
all_best_mse["Bomex"]["QTvar_mean"] = 1496.3117112659884
#
all_best_mse["DryBubble"] = OrderedCollections.OrderedDict()
all_best_mse["DryBubble"]["updraft_area"] = 21.611934188203705
all_best_mse["DryBubble"]["updraft_w"] = 7.557123600771639
all_best_mse["DryBubble"]["updraft_thetal"] = 2.036952758159372e-6
all_best_mse["DryBubble"]["u_mean"] = 1.148636655894699e-28
all_best_mse["DryBubble"]["tke_mean"] = 26.53285808455984
all_best_mse["DryBubble"]["temperature_mean"] = 1.199919770449516e-6
all_best_mse["DryBubble"]["thetal_mean"] = 1.855563170765923e-6
all_best_mse["DryBubble"]["Hvar_mean"] = 142.64632423429254
all_best_mse["DryBubble"]["updraft_area"] = 1.5600923378908404e-20
all_best_mse["DryBubble"]["updraft_w"] = 3.125970197997314e-21
all_best_mse["DryBubble"]["updraft_thetal"] = 2.2290997257401877e-28
all_best_mse["DryBubble"]["u_mean"] = 0.0
all_best_mse["DryBubble"]["tke_mean"] = 8.711612946005953e-21
all_best_mse["DryBubble"]["temperature_mean"] = 1.900994131825817e-28
all_best_mse["DryBubble"]["thetal_mean"] = 1.4035572383204598e-28
all_best_mse["DryBubble"]["Hvar_mean"] = 1.803251133793496e-30
#
all_best_mse["DYCOMS_RF01"] = OrderedCollections.OrderedDict()
all_best_mse["DYCOMS_RF01"]["qt_mean"] = 0.022674763550877195
all_best_mse["DYCOMS_RF01"]["ql_mean"] = 10.28174653104147
all_best_mse["DYCOMS_RF01"]["updraft_area"] = 30.54618421553255
all_best_mse["DYCOMS_RF01"]["updraft_w"] = 4.138810207371549
all_best_mse["DYCOMS_RF01"]["updraft_qt"] = 2.151446661713436
all_best_mse["DYCOMS_RF01"]["updraft_thetal"] = 46.18691260060391
all_best_mse["DYCOMS_RF01"]["v_mean"] = 0.003016440460043332
all_best_mse["DYCOMS_RF01"]["u_mean"] = 0.07896949921646965
all_best_mse["DYCOMS_RF01"]["tke_mean"] = 21.33850237115218
all_best_mse["DYCOMS_RF01"]["temperature_mean"] = 8.086418799808223e-5
all_best_mse["DYCOMS_RF01"]["thetal_mean"] = 8.159410303870621e-5
all_best_mse["DYCOMS_RF01"]["Hvar_mean"] = 1243.073059726701
all_best_mse["DYCOMS_RF01"]["QTvar_mean"] = 483.91943563744485
all_best_mse["DYCOMS_RF01"]["qt_mean"] = 0.022674763548033078
all_best_mse["DYCOMS_RF01"]["ql_mean"] = 10.28174651514448
all_best_mse["DYCOMS_RF01"]["updraft_area"] = 30.54618421803614
all_best_mse["DYCOMS_RF01"]["updraft_w"] = 4.138810210443974
all_best_mse["DYCOMS_RF01"]["updraft_qt"] = 2.1514466616728734
all_best_mse["DYCOMS_RF01"]["updraft_thetal"] = 46.18691260060387
all_best_mse["DYCOMS_RF01"]["v_mean"] = 0.003016440460640667
all_best_mse["DYCOMS_RF01"]["u_mean"] = 0.07896949921830682
all_best_mse["DYCOMS_RF01"]["tke_mean"] = 21.338502376891398
all_best_mse["DYCOMS_RF01"]["temperature_mean"] = 8.08641879994649e-5
all_best_mse["DYCOMS_RF01"]["thetal_mean"] = 8.159410304007782e-5
all_best_mse["DYCOMS_RF01"]["Hvar_mean"] = 1243.0730597273637
all_best_mse["DYCOMS_RF01"]["QTvar_mean"] = 483.9194356419018
#
all_best_mse["GABLS"] = OrderedCollections.OrderedDict()
all_best_mse["GABLS"]["updraft_thetal"] = 2.2719470669997437e-13
all_best_mse["GABLS"]["v_mean"] = 2.749199578689244e-8
all_best_mse["GABLS"]["u_mean"] = 9.975990231926342e-10
all_best_mse["GABLS"]["tke_mean"] = 1.6283908301945493e-8
all_best_mse["GABLS"]["temperature_mean"] = 2.2653366861407179e-13
all_best_mse["GABLS"]["thetal_mean"] = 2.263238925551045e-13
all_best_mse["GABLS"]["Hvar_mean"] = 1.3582473249617495e-7
all_best_mse["GABLS"]["QTvar_mean"] = 4.420829745954712e-8
all_best_mse["GABLS"]["qt_mean"] = 3.081460275568721e-8
all_best_mse["GABLS"]["updraft_thetal"] = 0.0
all_best_mse["GABLS"]["v_mean"] = 3.0258956903165754e-29
all_best_mse["GABLS"]["u_mean"] = 5.596072484918322e-31
all_best_mse["GABLS"]["tke_mean"] = 4.93825088596756e-29
all_best_mse["GABLS"]["temperature_mean"] = 0.0
all_best_mse["GABLS"]["thetal_mean"] = 0.0
all_best_mse["GABLS"]["Hvar_mean"] = 3.431124337761387e-28
all_best_mse["GABLS"]["QTvar_mean"] = 6.2713381408194e-31
all_best_mse["GABLS"]["qt_mean"] = 2.4026804723790953e-30
#
all_best_mse["life_cycle_Tan2018"] = OrderedCollections.OrderedDict()
all_best_mse["life_cycle_Tan2018"]["qt_mean"] = 6.778244112632275e-7
all_best_mse["life_cycle_Tan2018"]["ql_mean"] = 0.005144408670852792
all_best_mse["life_cycle_Tan2018"]["updraft_area"] = 0.005260393231250281
all_best_mse["life_cycle_Tan2018"]["updraft_w"] = 0.006184531796320973
all_best_mse["life_cycle_Tan2018"]["updraft_qt"] = 0.00032558294895705203
all_best_mse["life_cycle_Tan2018"]["updraft_thetal"] = 1.8572759342531365e-7
all_best_mse["life_cycle_Tan2018"]["v_mean"] = 4.94341700056881e-5
all_best_mse["life_cycle_Tan2018"]["u_mean"] = 3.600989329172465e-8
all_best_mse["life_cycle_Tan2018"]["tke_mean"] = 0.0005409635937153329
all_best_mse["life_cycle_Tan2018"]["temperature_mean"] = 2.48496845242293e-10
all_best_mse["life_cycle_Tan2018"]["thetal_mean"] = 2.6719835185305653e-10
all_best_mse["life_cycle_Tan2018"]["Hvar_mean"] = 4176.729638811834
all_best_mse["life_cycle_Tan2018"]["QTvar_mean"] = 3664.170325445772
all_best_mse["life_cycle_Tan2018"]["qt_mean"] = 4.2456838042947345e-11
all_best_mse["life_cycle_Tan2018"]["ql_mean"] = 2.039432562960598e-8
all_best_mse["life_cycle_Tan2018"]["updraft_area"] = 2.9943754373867077e-10
all_best_mse["life_cycle_Tan2018"]["updraft_w"] = 2.4372912126737867e-9
all_best_mse["life_cycle_Tan2018"]["updraft_qt"] = 8.847211719680312e-12
all_best_mse["life_cycle_Tan2018"]["updraft_thetal"] = 5.0322704745824535e-15
all_best_mse["life_cycle_Tan2018"]["v_mean"] = 1.744391825500784e-10
all_best_mse["life_cycle_Tan2018"]["u_mean"] = 4.807055831555187e-13
all_best_mse["life_cycle_Tan2018"]["tke_mean"] = 1.4390518237145982e-10
all_best_mse["life_cycle_Tan2018"]["temperature_mean"] = 2.1354141352137547e-14
all_best_mse["life_cycle_Tan2018"]["thetal_mean"] = 2.1044103615447052e-14
all_best_mse["life_cycle_Tan2018"]["Hvar_mean"] = 0.00563700994258815
all_best_mse["life_cycle_Tan2018"]["QTvar_mean"] = 0.004595094880303624
#
all_best_mse["Nieuwstadt"] = OrderedCollections.OrderedDict()
all_best_mse["Nieuwstadt"]["updraft_area"] = 98.6564977936147
all_best_mse["Nieuwstadt"]["updraft_w"] = 12.4745711005339
all_best_mse["Nieuwstadt"]["updraft_area"] = 98.6564977935179
all_best_mse["Nieuwstadt"]["updraft_w"] = 12.474571100534247
all_best_mse["Nieuwstadt"]["updraft_thetal"] = 117.36697441802559
all_best_mse["Nieuwstadt"]["u_mean"] = 14.602576944221713
all_best_mse["Nieuwstadt"]["tke_mean"] = 313.7437656358427
all_best_mse["Nieuwstadt"]["temperature_mean"] = 9.708439348857509e-6
all_best_mse["Nieuwstadt"]["thetal_mean"] = 1.0020176199912012e-5
all_best_mse["Nieuwstadt"]["Hvar_mean"] = 1278.96081165231
all_best_mse["Nieuwstadt"]["u_mean"] = 14.602576944221799
all_best_mse["Nieuwstadt"]["tke_mean"] = 313.7437656356189
all_best_mse["Nieuwstadt"]["temperature_mean"] = 9.708439348851666e-6
all_best_mse["Nieuwstadt"]["thetal_mean"] = 1.0020176199907293e-5
all_best_mse["Nieuwstadt"]["Hvar_mean"] = 1278.9608116518727
#
all_best_mse["Rico"] = OrderedCollections.OrderedDict()
all_best_mse["Rico"]["qt_mean"] = 1.2369530628742529
all_best_mse["Rico"]["updraft_area"] = 477.48306112645173
all_best_mse["Rico"]["updraft_w"] = 108.08587425694526
all_best_mse["Rico"]["updraft_qt"] = 12.134618749250066
all_best_mse["Rico"]["updraft_thetal"] = 133.36053918568405
all_best_mse["Rico"]["v_mean"] = 0.6110256586521275
all_best_mse["Rico"]["u_mean"] = 0.6945597375805941
all_best_mse["Rico"]["tke_mean"] = 82.22566437421101
all_best_mse["Rico"]["temperature_mean"] = 0.0005726890812789995
all_best_mse["Rico"]["ql_mean"] = 63.457646567689196
all_best_mse["Rico"]["qr_mean"] = 760.808614361998
all_best_mse["Rico"]["qt_mean"] = 1.240577610897265
all_best_mse["Rico"]["updraft_area"] = 477.4723365082512
all_best_mse["Rico"]["updraft_w"] = 107.93641059929224
all_best_mse["Rico"]["updraft_qt"] = 12.27330510190275
all_best_mse["Rico"]["updraft_thetal"] = 133.36345921192816
all_best_mse["Rico"]["v_mean"] = 0.6113313125463751
all_best_mse["Rico"]["u_mean"] = 0.6948989327737745
all_best_mse["Rico"]["tke_mean"] = 82.26914808072146
all_best_mse["Rico"]["temperature_mean"] = 0.0005737249256216108
all_best_mse["Rico"]["ql_mean"] = 63.483025341334695
all_best_mse["Rico"]["qr_mean"] = 760.8610598283299
all_best_mse["Rico"]["qi_mean"] = "NA"
all_best_mse["Rico"]["thetal_mean"] = 0.0005651345382555676
all_best_mse["Rico"]["Hvar_mean"] = 175963.54586843753
all_best_mse["Rico"]["QTvar_mean"] = 39542.99360626892
all_best_mse["Rico"]["thetal_mean"] = 0.0005661696874453951
all_best_mse["Rico"]["Hvar_mean"] = 187519.5898306167
all_best_mse["Rico"]["QTvar_mean"] = 41933.89043513789
#
all_best_mse["Soares"] = OrderedCollections.OrderedDict()
all_best_mse["Soares"]["qt_mean"] = 0.1258655678790617
all_best_mse["Soares"]["updraft_area"] = 96.57671044662798
all_best_mse["Soares"]["updraft_w"] = 11.362288111643732
all_best_mse["Soares"]["updraft_qt"] = 23.080321946904423
all_best_mse["Soares"]["updraft_thetal"] = 65.2533035952309
all_best_mse["Soares"]["u_mean"] = 96.34958378490317
all_best_mse["Soares"]["tke_mean"] = 241.93583693605962
all_best_mse["Soares"]["temperature_mean"] = 1.095414667223086e-5
all_best_mse["Soares"]["thetal_mean"] = 1.0381094800173531e-5
all_best_mse["Soares"]["Hvar_mean"] = 1122.5059232556414
all_best_mse["Soares"]["qt_mean"] = 0.125492505099034
all_best_mse["Soares"]["updraft_area"] = 99.07613100101109
all_best_mse["Soares"]["updraft_w"] = 11.354211142559235
all_best_mse["Soares"]["updraft_qt"] = 23.094442446856103
all_best_mse["Soares"]["updraft_thetal"] = 65.25330225554521
all_best_mse["Soares"]["u_mean"] = 96.34890749728717
all_best_mse["Soares"]["tke_mean"] = 241.84351768806397
all_best_mse["Soares"]["temperature_mean"] = 1.0933047642371797e-5
all_best_mse["Soares"]["thetal_mean"] = 1.0360692590042686e-5
all_best_mse["Soares"]["Hvar_mean"] = 1126.3241374374188
#
all_best_mse["TRMM_LBA"] = OrderedCollections.OrderedDict()
all_best_mse["TRMM_LBA"]["qt_mean"] = 3.9672114248087906
all_best_mse["TRMM_LBA"]["updraft_area"] = 7590.326979740355
all_best_mse["TRMM_LBA"]["updraft_w"] = 29122.6671022852
all_best_mse["TRMM_LBA"]["updraft_qt"] = 264.2824639454272
all_best_mse["TRMM_LBA"]["updraft_thetal"] = 1962.2134578126906
all_best_mse["TRMM_LBA"]["v_mean"] = 286.6265958324042
all_best_mse["TRMM_LBA"]["u_mean"] = 113.79375208017474
all_best_mse["TRMM_LBA"]["tke_mean"] = 25964.486606164868
all_best_mse["TRMM_LBA"]["temperature_mean"] = 0.0011270511013060588
all_best_mse["TRMM_LBA"]["ql_mean"] = 11333.082496936679
all_best_mse["TRMM_LBA"]["qt_mean"] = 3.96721142480849
all_best_mse["TRMM_LBA"]["updraft_area"] = 7590.326979740429
all_best_mse["TRMM_LBA"]["updraft_w"] = 29122.667102286345
all_best_mse["TRMM_LBA"]["updraft_qt"] = 264.28246394543794
all_best_mse["TRMM_LBA"]["updraft_thetal"] = 1962.213457812691
all_best_mse["TRMM_LBA"]["v_mean"] = 286.62659583240327
all_best_mse["TRMM_LBA"]["u_mean"] = 113.79375208017473
all_best_mse["TRMM_LBA"]["tke_mean"] = 25964.486606169423
all_best_mse["TRMM_LBA"]["temperature_mean"] = 0.001127051101306071
all_best_mse["TRMM_LBA"]["ql_mean"] = 11333.082496938974
all_best_mse["TRMM_LBA"]["qi_mean"] = "NA"
all_best_mse["TRMM_LBA"]["thetal_mean"] = 0.02111934332007885
all_best_mse["TRMM_LBA"]["Hvar_mean"] = 4344.199567757688
all_best_mse["TRMM_LBA"]["QTvar_mean"] = 2836.0095084457753
all_best_mse["TRMM_LBA"]["thetal_mean"] = 0.02111934332007892
all_best_mse["TRMM_LBA"]["Hvar_mean"] = 4344.199567761157
all_best_mse["TRMM_LBA"]["QTvar_mean"] = 2836.009508446295
#
all_best_mse["LES_driven_SCM"] = OrderedCollections.OrderedDict()
all_best_mse["LES_driven_SCM"]["qt_mean"] = 6.697931997427664
all_best_mse["LES_driven_SCM"]["v_mean"] = 3.7462480976394894
all_best_mse["LES_driven_SCM"]["u_mean"] = 1.250353901858044
all_best_mse["LES_driven_SCM"]["temperature_mean"] = 0.002913107242179287
all_best_mse["LES_driven_SCM"]["ql_mean"] = 1763.5602324832419
all_best_mse["LES_driven_SCM"]["thetal_mean"] = 0.0032212912453485347
all_best_mse["LES_driven_SCM"]["qt_mean"] = 6.695140418219589
all_best_mse["LES_driven_SCM"]["v_mean"] = 3.747051509524756
all_best_mse["LES_driven_SCM"]["u_mean"] = 1.2506833904476498
all_best_mse["LES_driven_SCM"]["temperature_mean"] = 0.0029125238780234835
all_best_mse["LES_driven_SCM"]["ql_mean"] = 1738.0999059121439
all_best_mse["LES_driven_SCM"]["thetal_mean"] = 0.00322061632952989
#
#################################
#################################
Expand Down
49 changes: 0 additions & 49 deletions src/Operators.jl
Original file line number Diff line number Diff line change
Expand Up @@ -524,52 +524,3 @@ function dual_centers(f, grid, k::CCO.PlusHalf, i_up::Int)
return SA.SVector(f[i_up, Cent(k.i - 1)], f[i_up, Cent(k.i)])
end
end


#####
##### Implicit operators
#####

#= TODO: clean this up somehow!
construct_tridiag_diffusion_en configures the tridiagonal
matrix for solving 2nd order environment variables where
some terms are treated implicitly. Here is a list of all
the terms in the matrix (and the overall equation solved):
N_a terms = 0 ()
N_diagonal terms = 1 (unsteady)
N_c terms = 0 ()
∂_t ρa*tke x unsteady
+ ∂_z(ρaw*tke) = x advection
+ ρaK*(∂²_z(u)+∂²_z(v)+∂²_z(w̄)) x shear?
+ ρawΣᵢ(εᵢ(wⱼ-w₀)²-δ₀*tke) x entr-detr
+ ∂_z(ρa₀K ∂_z(tke)) x diffusion
+ ρa₀*w̅₀b̅₀ x buoyancy
- a₀(u⋅∇p) x pressure term
+ ρa₀D x dissipation
=#
function construct_tridiag_diffusion_en(grid::Grid, state, TS)
dti = TS.dti
a = center_field(grid)
b = center_field(grid)
c = center_field(grid)
ρ0_c = center_ref_state(state).ρ0
aux_tc = center_aux_turbconv(state)

ae = 1 .- aux_tc.bulk.area

@inbounds for k in real_center_indices(grid)
a[k] = 0
c[k] = 0
b[k] = if is_surface_center(grid, k)
1
else
ρ0_c[k] * ae[k] * dti
end
end

A = LinearAlgebra.Tridiagonal(a[2:end], vec(b), c[1:(end - 1)])
return A
end
Loading

0 comments on commit 57ad8c7

Please sign in to comment.