From df2a8853004a857fdd56f54997bacedc4564e696 Mon Sep 17 00:00:00 2001 From: Charles Kawczynski Date: Thu, 28 Oct 2021 14:41:00 -0700 Subject: [PATCH] Prep for using OrdinaryDiffEq.jl --- integration_tests/utils/initial_conditions.jl | 6 +- integration_tests/utils/mse_tables.jl | 234 +++++++++--------- src/Turbulence_PrognosticTKE.jl | 43 ++-- src/update_aux.jl | 2 +- 4 files changed, 140 insertions(+), 145 deletions(-) diff --git a/integration_tests/utils/initial_conditions.jl b/integration_tests/utils/initial_conditions.jl index f52a0c049..ccaf85d12 100644 --- a/integration_tests/utils/initial_conditions.jl +++ b/integration_tests/utils/initial_conditions.jl @@ -12,7 +12,7 @@ function initialize_edmf(edmf::TC.EDMF_PrognosticTKE, grid, state, Case, gm::TC. else initialize_updrafts(edmf, grid, state, up, gm) end - TC.set_updraft_surface_bc(edmf, grid, state, up, Case.Sur) + TC.set_edmf_surface_bc(edmf, grid, state, up, Case.Sur) return end @@ -25,7 +25,7 @@ function initialize_covariance(edmf::TC.EDMF_PrognosticTKE, grid, state, gm, Cas prog_en.tke .= aux_gm.tke - TC.reset_surface_covariance(edmf, grid, state, gm, Case) + TC.get_GMV_CoVar(edmf, grid, state, :tke, :w) aux_gm.Hvar .= aux_gm.Hvar[kc_surf] .* aux_gm.tke aux_gm.QTvar .= aux_gm.QTvar[kc_surf] .* aux_gm.tke aux_gm.HQTcov .= aux_gm.HQTcov[kc_surf] .* aux_gm.tke @@ -45,6 +45,7 @@ function initialize_updrafts(edmf, grid, state, up::TC.UpdraftVariables, gm::TC. aux_gm = TC.center_aux_grid_mean(state) prog_up = TC.center_prog_updrafts(state) prog_up_f = TC.face_prog_updrafts(state) + ρ0_c = TC.center_ref_state(state).ρ0 @inbounds for i in 1:(up.n_updrafts) @inbounds for k in TC.real_face_indices(grid) aux_up_f[i].w[k] = 0 @@ -67,6 +68,7 @@ function initialize_updrafts(edmf, grid, state, up::TC.UpdraftVariables, gm::TC. end aux_up[i].area[kc_surf] = edmf.area_surface_bc[i] + prog_up[i].ρarea[kc_surf] = ρ0_c[kc_surf] * aux_up[i].area[kc_surf] end return end diff --git a/integration_tests/utils/mse_tables.jl b/integration_tests/utils/mse_tables.jl index 593c7d8e7..0ab76c250 100644 --- a/integration_tests/utils/mse_tables.jl +++ b/integration_tests/utils/mse_tables.jl @@ -5,149 +5,149 @@ all_best_mse = OrderedCollections.OrderedDict() # all_best_mse["ARM_SGP"] = OrderedCollections.OrderedDict() -all_best_mse["ARM_SGP"]["qt_mean"] = 0.19390367930350438 -all_best_mse["ARM_SGP"]["updraft_area"] = 332.4402027548815 -all_best_mse["ARM_SGP"]["updraft_w"] = 139.58192065054712 -all_best_mse["ARM_SGP"]["updraft_qt"] = 27.44198525874918 -all_best_mse["ARM_SGP"]["updraft_thetal"] = 170.98080431855797 +all_best_mse["ARM_SGP"]["qt_mean"] = 0.19521378250782828 +all_best_mse["ARM_SGP"]["updraft_area"] = 332.46796791556216 +all_best_mse["ARM_SGP"]["updraft_w"] = 139.48538889791166 +all_best_mse["ARM_SGP"]["updraft_qt"] = 27.714974809973956 +all_best_mse["ARM_SGP"]["updraft_thetal"] = 170.98111300672224 all_best_mse["ARM_SGP"]["u_mean"] = 1.3375737467153984e-5 -all_best_mse["ARM_SGP"]["tke_mean"] = 1111.5588787005 -all_best_mse["ARM_SGP"]["temperature_mean"] = 9.995455908960415e-5 -all_best_mse["ARM_SGP"]["ql_mean"] = 180.82073242686013 +all_best_mse["ARM_SGP"]["tke_mean"] = 1111.5856429323646 +all_best_mse["ARM_SGP"]["temperature_mean"] = 0.00010026411968244522 +all_best_mse["ARM_SGP"]["ql_mean"] = 179.67711528062338 all_best_mse["ARM_SGP"]["qi_mean"] = "NA" -all_best_mse["ARM_SGP"]["thetal_mean"] = 9.09304374163764e-5 -all_best_mse["ARM_SGP"]["Hvar_mean"] = 3509.857560166501 -all_best_mse["ARM_SGP"]["QTvar_mean"] = 2092.8715199107323 +all_best_mse["ARM_SGP"]["thetal_mean"] = 9.120797704890738e-5 +all_best_mse["ARM_SGP"]["Hvar_mean"] = 3338.7084519105374 +all_best_mse["ARM_SGP"]["QTvar_mean"] = 1975.1125593433067 # all_best_mse["Bomex"] = OrderedCollections.OrderedDict() -all_best_mse["Bomex"]["qt_mean"] = 0.11483242578948855 -all_best_mse["Bomex"]["updraft_area"] = 129.47539487351594 -all_best_mse["Bomex"]["updraft_w"] = 18.456353562473677 -all_best_mse["Bomex"]["updraft_qt"] = 6.293139703853067 -all_best_mse["Bomex"]["updraft_thetal"] = 69.45789505720731 -all_best_mse["Bomex"]["v_mean"] = 67.20327183395196 -all_best_mse["Bomex"]["u_mean"] = 0.3239495912530888 -all_best_mse["Bomex"]["tke_mean"] = 74.20959898036108 -all_best_mse["Bomex"]["temperature_mean"] = 4.579692123533297e-5 -all_best_mse["Bomex"]["ql_mean"] = 8.845365805526594 +all_best_mse["Bomex"]["qt_mean"] = 0.11395620725565793 +all_best_mse["Bomex"]["updraft_area"] = 129.49184229644928 +all_best_mse["Bomex"]["updraft_w"] = 18.302150201622116 +all_best_mse["Bomex"]["updraft_qt"] = 6.286910020646356 +all_best_mse["Bomex"]["updraft_thetal"] = 69.4578097143864 +all_best_mse["Bomex"]["v_mean"] = 67.19672615630495 +all_best_mse["Bomex"]["u_mean"] = 0.3239413953021834 +all_best_mse["Bomex"]["tke_mean"] = 74.19955484631983 +all_best_mse["Bomex"]["temperature_mean"] = 4.539850718167517e-5 +all_best_mse["Bomex"]["ql_mean"] = 8.632344647855602 all_best_mse["Bomex"]["qi_mean"] = "NA" -all_best_mse["Bomex"]["thetal_mean"] = 4.653466535219922e-5 -all_best_mse["Bomex"]["Hvar_mean"] = 3660.042308512486 -all_best_mse["Bomex"]["QTvar_mean"] = 1370.1578026813831 +all_best_mse["Bomex"]["thetal_mean"] = 4.611479052480279e-5 +all_best_mse["Bomex"]["Hvar_mean"] = 3814.995163482323 +all_best_mse["Bomex"]["QTvar_mean"] = 1425.6002609384852 # all_best_mse["DryBubble"] = OrderedCollections.OrderedDict() -all_best_mse["DryBubble"]["updraft_area"] = 0.008809732970125968 -all_best_mse["DryBubble"]["updraft_w"] = 0.009196708755788522 -all_best_mse["DryBubble"]["updraft_thetal"] = 6.109350513252823e-11 +all_best_mse["DryBubble"]["updraft_area"] = 0.004691098262744143 +all_best_mse["DryBubble"]["updraft_w"] = 0.009337026113730287 +all_best_mse["DryBubble"]["updraft_thetal"] = 5.24818887415922e-11 all_best_mse["DryBubble"]["u_mean"] = 0.0 -all_best_mse["DryBubble"]["tke_mean"] = 0.06695998474152366 -all_best_mse["DryBubble"]["temperature_mean"] = 1.7442763395288954e-7 -all_best_mse["DryBubble"]["thetal_mean"] = 1.7627117194572037e-7 -all_best_mse["DryBubble"]["Hvar_mean"] = 13.983572050341268 +all_best_mse["DryBubble"]["tke_mean"] = 0.16416507642078532 +all_best_mse["DryBubble"]["temperature_mean"] = 3.610960892317067e-7 +all_best_mse["DryBubble"]["thetal_mean"] = 5.697383039230275e-7 +all_best_mse["DryBubble"]["Hvar_mean"] = 14.804110280665785 # all_best_mse["DYCOMS_RF01"] = OrderedCollections.OrderedDict() -all_best_mse["DYCOMS_RF01"]["qt_mean"] = 0.022666713104234296 -all_best_mse["DYCOMS_RF01"]["ql_mean"] = 10.256139166342813 -all_best_mse["DYCOMS_RF01"]["updraft_area"] = 30.54669809874986 -all_best_mse["DYCOMS_RF01"]["updraft_w"] = 4.138415405707247 -all_best_mse["DYCOMS_RF01"]["updraft_qt"] = 2.151277943091616 -all_best_mse["DYCOMS_RF01"]["updraft_thetal"] = 46.18691202772125 -all_best_mse["DYCOMS_RF01"]["v_mean"] = 0.003017573985754719 -all_best_mse["DYCOMS_RF01"]["u_mean"] = 0.07897757036807564 -all_best_mse["DYCOMS_RF01"]["tke_mean"] = 21.339576090856358 -all_best_mse["DYCOMS_RF01"]["temperature_mean"] = 8.090792610798844e-5 -all_best_mse["DYCOMS_RF01"]["thetal_mean"] = 8.163443100286099e-5 -all_best_mse["DYCOMS_RF01"]["Hvar_mean"] = 1243.0759306183045 -all_best_mse["DYCOMS_RF01"]["QTvar_mean"] = 483.9211443079225 +all_best_mse["DYCOMS_RF01"]["qt_mean"] = 0.02266636085165055 +all_best_mse["DYCOMS_RF01"]["ql_mean"] = 10.256786435636744 +all_best_mse["DYCOMS_RF01"]["updraft_area"] = 30.546902409099616 +all_best_mse["DYCOMS_RF01"]["updraft_w"] = 4.138434525780426 +all_best_mse["DYCOMS_RF01"]["updraft_qt"] = 2.15127232556415 +all_best_mse["DYCOMS_RF01"]["updraft_thetal"] = 46.18691193597647 +all_best_mse["DYCOMS_RF01"]["v_mean"] = 0.003017079502734161 +all_best_mse["DYCOMS_RF01"]["u_mean"] = 0.07897907570542834 +all_best_mse["DYCOMS_RF01"]["tke_mean"] = 21.3393663716632 +all_best_mse["DYCOMS_RF01"]["temperature_mean"] = 8.091538899139706e-5 +all_best_mse["DYCOMS_RF01"]["thetal_mean"] = 8.164184894991467e-5 +all_best_mse["DYCOMS_RF01"]["Hvar_mean"] = 1243.0757829256086 +all_best_mse["DYCOMS_RF01"]["QTvar_mean"] = 483.9205781724523 # all_best_mse["GABLS"] = OrderedCollections.OrderedDict() -all_best_mse["GABLS"]["updraft_thetal"] = 1.0347573167600641e-13 -all_best_mse["GABLS"]["v_mean"] = 8.474414920833814e-9 -all_best_mse["GABLS"]["u_mean"] = 4.287157494955059e-10 -all_best_mse["GABLS"]["tke_mean"] = 1.2057264985586782e-8 -all_best_mse["GABLS"]["temperature_mean"] = 1.0310663877232706e-13 -all_best_mse["GABLS"]["thetal_mean"] = 1.0309378452566319e-13 -all_best_mse["GABLS"]["Hvar_mean"] = 2.7619617172167112e-8 -all_best_mse["GABLS"]["QTvar_mean"] = 6.729746679456171e-9 -all_best_mse["GABLS"]["qt_mean"] = 8.796506450344822e-9 +all_best_mse["GABLS"]["updraft_thetal"] = 9.53895187053867e-12 +all_best_mse["GABLS"]["v_mean"] = 6.768808908036174e-7 +all_best_mse["GABLS"]["u_mean"] = 5.4162831564433675e-8 +all_best_mse["GABLS"]["tke_mean"] = 1.8077283429700687e-6 +all_best_mse["GABLS"]["temperature_mean"] = 9.508648235953297e-12 +all_best_mse["GABLS"]["thetal_mean"] = 9.503507211978058e-12 +all_best_mse["GABLS"]["Hvar_mean"] = 3.2676398094383723e-6 +all_best_mse["GABLS"]["QTvar_mean"] = 1.5762416714138826e-6 +all_best_mse["GABLS"]["qt_mean"] = 1.732213815525182e-6 # all_best_mse["life_cycle_Tan2018"] = OrderedCollections.OrderedDict() -all_best_mse["life_cycle_Tan2018"]["qt_mean"] = 2.7148310462950577e-5 -all_best_mse["life_cycle_Tan2018"]["ql_mean"] = 0.011254012032056294 -all_best_mse["life_cycle_Tan2018"]["updraft_area"] = 0.10347078513588603 -all_best_mse["life_cycle_Tan2018"]["updraft_w"] = 0.009492942717518256 -all_best_mse["life_cycle_Tan2018"]["updraft_qt"] = 0.006554317087522834 -all_best_mse["life_cycle_Tan2018"]["updraft_thetal"] = 3.892925485566945e-6 -all_best_mse["life_cycle_Tan2018"]["v_mean"] = 0.0006612746186875956 -all_best_mse["life_cycle_Tan2018"]["u_mean"] = 7.785180319487577e-7 -all_best_mse["life_cycle_Tan2018"]["tke_mean"] = 0.00041409108819202373 -all_best_mse["life_cycle_Tan2018"]["temperature_mean"] = 1.3095740966422832e-8 -all_best_mse["life_cycle_Tan2018"]["thetal_mean"] = 1.3006328599924384e-8 -all_best_mse["life_cycle_Tan2018"]["Hvar_mean"] = 61.843265856117526 -all_best_mse["life_cycle_Tan2018"]["QTvar_mean"] = 55.14222261251299 +all_best_mse["life_cycle_Tan2018"]["qt_mean"] = 1.405446173026528e-9 +all_best_mse["life_cycle_Tan2018"]["ql_mean"] = 3.225475699971793e-7 +all_best_mse["life_cycle_Tan2018"]["updraft_area"] = 3.085325800643837e-8 +all_best_mse["life_cycle_Tan2018"]["updraft_w"] = 1.2114651556059095e-7 +all_best_mse["life_cycle_Tan2018"]["updraft_qt"] = 3.0940564530082745e-10 +all_best_mse["life_cycle_Tan2018"]["updraft_thetal"] = 1.7237134578744866e-13 +all_best_mse["life_cycle_Tan2018"]["v_mean"] = 9.035282158200848e-9 +all_best_mse["life_cycle_Tan2018"]["u_mean"] = 2.605959541026179e-11 +all_best_mse["life_cycle_Tan2018"]["tke_mean"] = 1.1890111029620171e-8 +all_best_mse["life_cycle_Tan2018"]["temperature_mean"] = 6.465374972222593e-13 +all_best_mse["life_cycle_Tan2018"]["thetal_mean"] = 6.461011757717789e-13 +all_best_mse["life_cycle_Tan2018"]["Hvar_mean"] = 0.0018878645023517003 +all_best_mse["life_cycle_Tan2018"]["QTvar_mean"] = 0.0016927273353823551 # all_best_mse["Nieuwstadt"] = OrderedCollections.OrderedDict() -all_best_mse["Nieuwstadt"]["updraft_area"] = 99.30680730241976 -all_best_mse["Nieuwstadt"]["updraft_w"] = 12.532603831055757 -all_best_mse["Nieuwstadt"]["updraft_thetal"] = 117.36698420064039 -all_best_mse["Nieuwstadt"]["u_mean"] = 14.605846002991228 -all_best_mse["Nieuwstadt"]["tke_mean"] = 297.6200902436141 -all_best_mse["Nieuwstadt"]["temperature_mean"] = 9.76975747628881e-6 -all_best_mse["Nieuwstadt"]["thetal_mean"] = 1.0079671223620376e-5 -all_best_mse["Nieuwstadt"]["Hvar_mean"] = 1262.4021288867405 +all_best_mse["Nieuwstadt"]["updraft_area"] = 99.24383637277221 +all_best_mse["Nieuwstadt"]["updraft_w"] = 12.537446287818756 +all_best_mse["Nieuwstadt"]["updraft_thetal"] = 117.36698417005931 +all_best_mse["Nieuwstadt"]["u_mean"] = 14.605861937365315 +all_best_mse["Nieuwstadt"]["tke_mean"] = 297.62339332009805 +all_best_mse["Nieuwstadt"]["temperature_mean"] = 9.771358613793565e-6 +all_best_mse["Nieuwstadt"]["thetal_mean"] = 1.0081394294178032e-5 +all_best_mse["Nieuwstadt"]["Hvar_mean"] = 1262.3619757067681 # all_best_mse["Rico"] = OrderedCollections.OrderedDict() -all_best_mse["Rico"]["qt_mean"] = 1.4091519722032944 -all_best_mse["Rico"]["updraft_area"] = 477.1573419655477 -all_best_mse["Rico"]["updraft_w"] = 104.33661141777853 -all_best_mse["Rico"]["updraft_qt"] = 11.129158977839953 -all_best_mse["Rico"]["updraft_thetal"] = 133.33586643054403 -all_best_mse["Rico"]["v_mean"] = 0.6345416474916987 -all_best_mse["Rico"]["u_mean"] = 0.5931838976831404 -all_best_mse["Rico"]["tke_mean"] = 87.9373416741573 -all_best_mse["Rico"]["temperature_mean"] = 0.0006398511287561713 -all_best_mse["Rico"]["ql_mean"] = 67.25059874346336 -all_best_mse["Rico"]["qr_mean"] = 764.2426257410092 +all_best_mse["Rico"]["qt_mean"] = 1.408093806999423 +all_best_mse["Rico"]["updraft_area"] = 477.12110616283934 +all_best_mse["Rico"]["updraft_w"] = 104.79578036944613 +all_best_mse["Rico"]["updraft_qt"] = 11.277640390855302 +all_best_mse["Rico"]["updraft_thetal"] = 133.3401989058359 +all_best_mse["Rico"]["v_mean"] = 0.6355937862510441 +all_best_mse["Rico"]["u_mean"] = 0.5945762642032222 +all_best_mse["Rico"]["tke_mean"] = 88.10356313039424 +all_best_mse["Rico"]["temperature_mean"] = 0.0006390557023788322 +all_best_mse["Rico"]["ql_mean"] = 66.87169380076365 +all_best_mse["Rico"]["qr_mean"] = 764.3364937693593 all_best_mse["Rico"]["qi_mean"] = "NA" -all_best_mse["Rico"]["thetal_mean"] = 0.0006301103134104575 -all_best_mse["Rico"]["Hvar_mean"] = 35877.508288558216 -all_best_mse["Rico"]["QTvar_mean"] = 7780.226919628343 +all_best_mse["Rico"]["thetal_mean"] = 0.0006292179772653366 +all_best_mse["Rico"]["Hvar_mean"] = 34227.52177840785 +all_best_mse["Rico"]["QTvar_mean"] = 7332.362202597154 # all_best_mse["Soares"] = OrderedCollections.OrderedDict() -all_best_mse["Soares"]["qt_mean"] = 0.12520821109639335 -all_best_mse["Soares"]["updraft_area"] = 98.22912055780739 -all_best_mse["Soares"]["updraft_w"] = 11.347807786528925 -all_best_mse["Soares"]["updraft_qt"] = 23.082327239155074 -all_best_mse["Soares"]["updraft_thetal"] = 65.25330382463778 -all_best_mse["Soares"]["u_mean"] = 96.34764012532587 -all_best_mse["Soares"]["tke_mean"] = 241.8004426711386 -all_best_mse["Soares"]["temperature_mean"] = 1.0933312621550153e-5 -all_best_mse["Soares"]["thetal_mean"] = 1.0358997967028737e-5 -all_best_mse["Soares"]["Hvar_mean"] = 1125.2655700207752 +all_best_mse["Soares"]["qt_mean"] = 0.12561396121050508 +all_best_mse["Soares"]["updraft_area"] = 100.6471842789194 +all_best_mse["Soares"]["updraft_w"] = 11.356577970159242 +all_best_mse["Soares"]["updraft_qt"] = 23.095776172081937 +all_best_mse["Soares"]["updraft_thetal"] = 65.25330176251013 +all_best_mse["Soares"]["u_mean"] = 96.34754202198201 +all_best_mse["Soares"]["tke_mean"] = 241.77099136376492 +all_best_mse["Soares"]["temperature_mean"] = 1.0930925454233865e-5 +all_best_mse["Soares"]["thetal_mean"] = 1.035904026424884e-5 +all_best_mse["Soares"]["Hvar_mean"] = 1126.231187080514 # all_best_mse["TRMM_LBA"] = OrderedCollections.OrderedDict() -all_best_mse["TRMM_LBA"]["qt_mean"] = 4.146956999545959 -all_best_mse["TRMM_LBA"]["updraft_area"] = 7593.167519865197 -all_best_mse["TRMM_LBA"]["updraft_w"] = 30164.962706317317 -all_best_mse["TRMM_LBA"]["updraft_qt"] = 264.6429860959435 -all_best_mse["TRMM_LBA"]["updraft_thetal"] = 1962.507965899428 -all_best_mse["TRMM_LBA"]["v_mean"] = 286.18819257818774 -all_best_mse["TRMM_LBA"]["u_mean"] = 113.68034995977092 -all_best_mse["TRMM_LBA"]["tke_mean"] = 26124.28884332928 -all_best_mse["TRMM_LBA"]["temperature_mean"] = 0.0012035732376905165 -all_best_mse["TRMM_LBA"]["ql_mean"] = 11006.291727503945 +all_best_mse["TRMM_LBA"]["qt_mean"] = 4.1469422898202914 +all_best_mse["TRMM_LBA"]["updraft_area"] = 7593.169718675856 +all_best_mse["TRMM_LBA"]["updraft_w"] = 30165.03504065058 +all_best_mse["TRMM_LBA"]["updraft_qt"] = 264.6436012874319 +all_best_mse["TRMM_LBA"]["updraft_thetal"] = 1962.5108177179297 +all_best_mse["TRMM_LBA"]["v_mean"] = 286.1881692287207 +all_best_mse["TRMM_LBA"]["u_mean"] = 113.68034401520471 +all_best_mse["TRMM_LBA"]["tke_mean"] = 26124.4693000629 +all_best_mse["TRMM_LBA"]["temperature_mean"] = 0.0012035693261363942 +all_best_mse["TRMM_LBA"]["ql_mean"] = 11006.268116099867 all_best_mse["TRMM_LBA"]["qi_mean"] = "NA" -all_best_mse["TRMM_LBA"]["thetal_mean"] = 0.02112567312586219 -all_best_mse["TRMM_LBA"]["Hvar_mean"] = 4353.553914713869 -all_best_mse["TRMM_LBA"]["QTvar_mean"] = 2808.6300851874603 +all_best_mse["TRMM_LBA"]["thetal_mean"] = 0.021125670457651565 +all_best_mse["TRMM_LBA"]["Hvar_mean"] = 4353.557342005811 +all_best_mse["TRMM_LBA"]["QTvar_mean"] = 2808.6218443728276 # all_best_mse["LES_driven_SCM"] = OrderedCollections.OrderedDict() -all_best_mse["LES_driven_SCM"]["qt_mean"] = 6.720941274456452 -all_best_mse["LES_driven_SCM"]["v_mean"] = 3.7497621211432155 -all_best_mse["LES_driven_SCM"]["u_mean"] = 1.2516967001878967 -all_best_mse["LES_driven_SCM"]["temperature_mean"] = 0.0029205165425626226 -all_best_mse["LES_driven_SCM"]["ql_mean"] = 2028.7452506033694 -all_best_mse["LES_driven_SCM"]["thetal_mean"] = 0.003230479151299842 +all_best_mse["LES_driven_SCM"]["qt_mean"] = 6.72866129885154 +all_best_mse["LES_driven_SCM"]["v_mean"] = 3.74978592890649 +all_best_mse["LES_driven_SCM"]["u_mean"] = 1.251748745890675 +all_best_mse["LES_driven_SCM"]["temperature_mean"] = 0.0029229622432610136 +all_best_mse["LES_driven_SCM"]["ql_mean"] = 2105.0474733449523 +all_best_mse["LES_driven_SCM"]["thetal_mean"] = 0.003233714061260108 # ################################# ################################# diff --git a/src/Turbulence_PrognosticTKE.jl b/src/Turbulence_PrognosticTKE.jl index 0cbd8cc1e..9cc28b0ae 100755 --- a/src/Turbulence_PrognosticTKE.jl +++ b/src/Turbulence_PrognosticTKE.jl @@ -406,10 +406,12 @@ function update(edmf::EDMF_PrognosticTKE, grid, state, gm::GridMeanVariables, Ca tendencies_gm = center_tendencies_grid_mean(state) tendencies_up = center_tendencies_updrafts(state) + tendencies_up_f = face_tendencies_updrafts(state) tendencies_en = center_tendencies_environment(state) tendencies_ra = center_tendencies_rain(state) parent(tendencies_gm) .= 0 parent(tendencies_up) .= 0 + parent(tendencies_up_f) .= 0 parent(tendencies_en) .= 0 parent(tendencies_ra) .= 0 compute_rain_formation_tendencies(up_thermo, grid, state, edmf.UpdVar, edmf.Rain, TS.dt, param_set) # causes division error in dry bubble first time step @@ -471,7 +473,7 @@ function update(edmf::EDMF_PrognosticTKE, grid, state, gm::GridMeanVariables, Ca ### ### Filters ### - set_updraft_surface_bc(edmf, grid, state, up, Case.Sur) + set_edmf_surface_bc(edmf, grid, state, up, Case.Sur) filter_updraft_vars(edmf, grid, state, gm) @inbounds for k in real_center_indices(grid) prog_en.tke[k] = max(prog_en.tke[k], 0.0) @@ -484,12 +486,14 @@ function update(edmf::EDMF_PrognosticTKE, grid, state, gm::GridMeanVariables, Ca return end -function set_updraft_surface_bc(edmf::EDMF_PrognosticTKE, grid, state, up, surface) +function set_edmf_surface_bc(edmf::EDMF_PrognosticTKE, grid, state, up, surface) + en = edmf.EnvVar kc_surf = kc_surface(grid) kf_surf = kf_surface(grid) ρ_0_c = center_ref_state(state).ρ0 ρ_0_f = face_ref_state(state).ρ0 prog_up = center_prog_updrafts(state) + prog_en = center_prog_environment(state) prog_up_f = face_prog_updrafts(state) @inbounds for i in 1:(up.n_updrafts) prog_up[i].ρarea[kc_surf] = ρ_0_c[kc_surf] * edmf.area_surface_bc[i] @@ -497,6 +501,18 @@ function set_updraft_surface_bc(edmf::EDMF_PrognosticTKE, grid, state, up, surfa prog_up[i].ρaq_tot[kc_surf] = prog_up[i].ρarea[kc_surf] * edmf.qt_surface_bc[i] prog_up_f[i].ρaw[kf_surf] = ρ_0_f[kf_surf] * edmf.w_surface_bc[i] end + + flux1 = surface.rho_hflux + flux2 = surface.rho_qtflux + zLL = grid.zc[kc_surf] + ustar = surface.ustar + oblength = surface.obukhov_length + α0LL = center_ref_state(state).α0[kc_surf] + + prog_en.tke[kc_surf] = get_surface_tke(surface.ustar, grid.zc[kc_surf], surface.obukhov_length) + prog_en.Hvar[kc_surf] = get_surface_variance(flux1 * α0LL, flux1 * α0LL, ustar, zLL, oblength) + prog_en.QTvar[kc_surf] = get_surface_variance(flux2 * α0LL, flux2 * α0LL, ustar, zLL, oblength) + prog_en.HQTcov[kc_surf] = get_surface_variance(flux1 * α0LL, flux2 * α0LL, ustar, zLL, oblength) end @@ -539,29 +555,6 @@ function compute_updraft_surface_bc(edmf::EDMF_PrognosticTKE, grid, state, Case: return end -function reset_surface_covariance(edmf::EDMF_PrognosticTKE, grid, state, gm, Case::CasesBase) - flux1 = Case.Sur.rho_hflux - flux2 = Case.Sur.rho_qtflux - kc_surf = kc_surface(grid) - zLL = grid.zc[kc_surf] - ustar = Case.Sur.ustar - oblength = Case.Sur.obukhov_length - α0LL = center_ref_state(state).α0[kc_surf] - - gm = gm - up = edmf.UpdVar - en = edmf.EnvVar - prog_en = center_prog_environment(state) - - prog_en.tke[kc_surf] = get_surface_tke(Case.Sur.ustar, grid.zc[kc_surf], Case.Sur.obukhov_length) - get_GMV_CoVar(edmf, grid, state, :tke, :w) - - prog_en.Hvar[kc_surf] = get_surface_variance(flux1 * α0LL, flux1 * α0LL, ustar, zLL, oblength) - prog_en.QTvar[kc_surf] = get_surface_variance(flux2 * α0LL, flux2 * α0LL, ustar, zLL, oblength) - prog_en.HQTcov[kc_surf] = get_surface_variance(flux1 * α0LL, flux2 * α0LL, ustar, zLL, oblength) - return -end - # Note: this assumes all variables are defined on half levels not full levels (i.e. phi, psi are not w) # if covar_e.name is not "tke". function get_GMV_CoVar(edmf::EDMF_PrognosticTKE, grid, state, covar_sym::Symbol, ϕ_sym::Symbol, ψ_sym::Symbol = ϕ_sym) diff --git a/src/update_aux.jl b/src/update_aux.jl index 8d80a0a9a..887b5b126 100644 --- a/src/update_aux.jl +++ b/src/update_aux.jl @@ -511,7 +511,7 @@ function update_aux!(edmf, gm, grid, state, Case, param_set, TS) aux_en_2m.HQTcov.rain_src[k] = ρ0_c[k] * ae[k] * en_thermo.HQTcov_rain_dt[k] end - reset_surface_covariance(edmf, grid, state, gm, Case) + get_GMV_CoVar(edmf, grid, state, :tke, :w) compute_diffusive_fluxes(edmf, grid, state, gm, Case, TS, param_set) update_cloud_frac(edmf, grid, state, gm)