From 972af79bceb5c7a9fb8e3737b333cbff1728796e Mon Sep 17 00:00:00 2001 From: Anna Jaruga Date: Wed, 22 Mar 2023 23:03:54 -0700 Subject: [PATCH] Add temporary TKE profiles for testing in CA.jl --- docs/src/plot_profiles.jl | 57 +++++++++++++++++++------------- src/profiles/ARM_SGP.jl | 22 ++++++++++++ src/profiles/Bomex.jl | 15 +++++++++ src/profiles/Dycoms_RF01.jl | 9 +++++ src/profiles/GABLS.jl | 7 ++++ src/profiles/LifeCycleTan2018.jl | 19 +++++++++++ src/profiles/Nieuwstadt.jl | 39 ++++++++++++++++++++++ src/profiles/Rico.jl | 22 ++++++++++++ src/profiles/Soares.jl | 29 ++++++++++++++++ src/profiles/TRMM_LBA.jl | 28 ++++++++++++++++ 10 files changed, 224 insertions(+), 23 deletions(-) diff --git a/docs/src/plot_profiles.jl b/docs/src/plot_profiles.jl index 96b3720..d16db4d 100644 --- a/docs/src/plot_profiles.jl +++ b/docs/src/plot_profiles.jl @@ -46,13 +46,18 @@ z_profiles = [ (; func = APL.Soares_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), (; func = APL.Soares_u , kwargs = (;z_range = zr_lo, xlabel = "u")), (; func = APL.Soares_tke , kwargs = (;z_range = zr_lo, xlabel = "tke")), - (; func = APL.Nieuwstadt_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), - (; func = APL.Nieuwstadt_u , kwargs = (;z_range = zr_lo, xlabel = "u")), - (; func = APL.Nieuwstadt_tke , kwargs = (;z_range = zr_lo, xlabel = "tke")), + (; func = APL.Soares_tke_prescribed, kwargs = (;z_range = zr_lo, xlabel = "tke")), + + (; func = APL.Nieuwstadt_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), + (; func = APL.Nieuwstadt_u , kwargs = (;z_range = zr_lo, xlabel = "u")), + (; func = APL.Nieuwstadt_tke , kwargs = (;z_range = zr_lo, xlabel = "tke")), + (; func = APL.Nieuwstadt_tke_prescribed, kwargs = (;z_range = zr_lo, xlabel = "tke")), + (; func = APL.Bomex_q_tot , kwargs = (;z_range = zr_lo, xlabel = "q_tot")), (; func = APL.Bomex_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), (; func = APL.Bomex_u , kwargs = (;z_range = zr_lo, xlabel = "u")), (; func = APL.Bomex_tke , kwargs = (;z_range = zr_lo, xlabel = "tke")), + (; func = APL.Bomex_tke_prescribed , kwargs = (;z_range = zr_lo, xlabel = "tke")), (; func = APL.Bomex_geostrophic_u , kwargs = (;z_range = zr_lo, xlabel = "u")), (; func = APL.Bomex_geostrophic_v , kwargs = (;z_range = zr_lo, xlabel = "v")), # (; func = APL.Bomex_dTdt , kwargs = (;z_range = zr_lo, xlabel = "dTdt")), # Callable by (Π, z) @@ -63,8 +68,9 @@ z_profiles = [ (; func = APL.LifeCycleTan2018_q_tot , kwargs = (;z_range = zr_lo, xlabel = "q_tot")), (; func = APL.LifeCycleTan2018_u , kwargs = (;z_range = zr_lo, xlabel = "u")), (; func = APL.LifeCycleTan2018_tke , kwargs = (;z_range = zr_lo, xlabel = "tke")), - (; func = APL.LifeCycleTan2018_geostrophic_u, kwargs = (;z_range = zr_lo, xlabel = "u")), - (; func = APL.LifeCycleTan2018_geostrophic_v, kwargs = (;z_range = zr_lo, xlabel = "v")), + (; func = APL.LifeCycleTan2018_tke_prescribed, kwargs = (;z_range = zr_lo, xlabel = "tke")), + (; func = APL.LifeCycleTan2018_geostrophic_u, kwargs = (;z_range = zr_lo, xlabel = "u")), + (; func = APL.LifeCycleTan2018_geostrophic_v, kwargs = (;z_range = zr_lo, xlabel = "v")), # (; func = APL.LifeCycleTan2018_dTdt , kwargs = (;z_range = zr_lo, xlabel = "dTdt")), # callable by (Π, z) (; func = APL.LifeCycleTan2018_dqtdt , kwargs = (;z_range = zr_lo, xlabel = "dqtdt")), (; func = APL.LifeCycleTan2018_subsidence , kwargs = (;z_range = zr_lo, xlabel = "subsidence")), @@ -78,18 +84,21 @@ z_profiles = [ # (; func = APL.Rico_dTdt , kwargs = (;z_range = zr_lo, xlabel = "dTdt")), # callable by (Π, z) (; func = APL.Rico_dqtdt , kwargs = (;z_range = zr_lo, xlabel = "dqtdt")), (; func = APL.Rico_subsidence , kwargs = (;z_range = zr_lo, xlabel = "v")), - - (; func = APL.TRMM_LBA_p , kwargs = (;z_range = zr_hi, xlabel = "p")), - (; func = APL.TRMM_LBA_T , kwargs = (;z_range = zr_hi, xlabel = "T")), - (; func = APL.TRMM_LBA_RH , kwargs = (;z_range = zr_hi, xlabel = "RH")), - (; func = APL.TRMM_LBA_u , kwargs = (;z_range = zr_hi, xlabel = "u")), - (; func = APL.TRMM_LBA_v , kwargs = (;z_range = zr_hi, xlabel = "v")), - (; func = APL.TRMM_LBA_tke , kwargs = (;z_range = zr_hi, xlabel = "tke")), - - (; func = APL.ARM_SGP_u , kwargs = (;z_range = zr_lo, xlabel = "u")), - (; func = APL.ARM_SGP_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), - (; func = APL.ARM_SGP_q_tot , kwargs = (;z_range = zr_lo, xlabel = "q_tot")), - (; func = APL.ARM_SGP_tke , kwargs = (;z_range = zr_lo, xlabel = "tke")), + (; func = APL.Rico_tke_prescribed , kwargs = (;z_range = zr_lo, xlabel = "tke")), + + (; func = APL.TRMM_LBA_p , kwargs = (;z_range = zr_hi, xlabel = "p")), + (; func = APL.TRMM_LBA_T , kwargs = (;z_range = zr_hi, xlabel = "T")), + (; func = APL.TRMM_LBA_RH , kwargs = (;z_range = zr_hi, xlabel = "RH")), + (; func = APL.TRMM_LBA_u , kwargs = (;z_range = zr_hi, xlabel = "u")), + (; func = APL.TRMM_LBA_v , kwargs = (;z_range = zr_hi, xlabel = "v")), + (; func = APL.TRMM_LBA_tke , kwargs = (;z_range = zr_hi, xlabel = "tke")), + (; func = APL.TRMM_LBA_tke_prescribed, kwargs = (;z_range = zr_hi, xlabel = "tke")), + + (; func = APL.ARM_SGP_u , kwargs = (;z_range = zr_lo, xlabel = "u")), + (; func = APL.ARM_SGP_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), + (; func = APL.ARM_SGP_q_tot , kwargs = (;z_range = zr_lo, xlabel = "q_tot")), + (; func = APL.ARM_SGP_tke , kwargs = (;z_range = zr_lo, xlabel = "tke")), + (; func = APL.ARM_SGP_tke_prescribed , kwargs = (;z_range = zr_lo, xlabel = "tke")), # (; func = APL.ARM_SGP_dqtdt , kwargs = (;z_range = zr_lo, xlabel = "dqdt")), # callable by `(Π, t, z)` (; func = APL.GATE_III_q_tot , kwargs = (;z_range = zr_lo, xlabel = "q_tot")), @@ -99,11 +108,12 @@ z_profiles = [ (; func = APL.GATE_III_dqtdt , kwargs = (;z_range = zr_lo, xlabel = "dqtdt")), (; func = APL.GATE_III_dTdt , kwargs = (;z_range = zr_lo, xlabel = "dTdt")), - (; func = APL.Dycoms_RF01_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), - (; func = APL.Dycoms_RF01_q_tot , kwargs = (;z_range = zr_lo, xlabel = "q_tot")), - (; func = APL.Dycoms_RF01_u0 , kwargs = (;z_range = zr_lo, xlabel = "u0")), - (; func = APL.Dycoms_RF01_v0 , kwargs = (;z_range = zr_lo, xlabel = "v0")), - (; func = APL.Dycoms_RF01_tke , kwargs = (;z_range = zr_lo, xlabel = "tke")), + (; func = APL.Dycoms_RF01_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), + (; func = APL.Dycoms_RF01_q_tot , kwargs = (;z_range = zr_lo, xlabel = "q_tot")), + (; func = APL.Dycoms_RF01_u0 , kwargs = (;z_range = zr_lo, xlabel = "u0")), + (; func = APL.Dycoms_RF01_v0 , kwargs = (;z_range = zr_lo, xlabel = "v0")), + (; func = APL.Dycoms_RF01_tke , kwargs = (;z_range = zr_lo, xlabel = "tke")), + (; func = APL.Dycoms_RF01_tke_prescribed, kwargs = (;z_range = zr_lo, xlabel = "tke")), (; func = APL.Dycoms_RF02_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), (; func = APL.Dycoms_RF02_q_tot , kwargs = (;z_range = zr_lo, xlabel = "q_tot")), @@ -116,6 +126,7 @@ z_profiles = [ (; func = APL.GABLS_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), (; func = APL.GABLS_q_tot , kwargs = (;z_range = zr_lo, xlabel = "q_tot")), (; func = APL.GABLS_tke , kwargs = (;z_range = zr_lo, xlabel = "tke")), + (; func = APL.GABLS_tke_prescribed , kwargs = (;z_range = zr_lo, xlabel = "tke")), (; func = APL.GABLS_geostrophic_ug , kwargs = (;z_range = zr_lo, xlabel = "u")), (; func = APL.GABLS_geostrophic_vg , kwargs = (;z_range = zr_lo, xlabel = "v")), @@ -126,7 +137,7 @@ z_profiles = [ (; func = APL.SP_geostrophic_u , kwargs = (;z_range = zr_lo, xlabel = "ug")), (; func = APL.SP_geostrophic_v , kwargs = (;z_range = zr_lo, xlabel = "vg")), - (; func = APL.DryBubble_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), + (; func = APL.DryBubble_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), (; func = APL.DryBubble_updrafts_θ_liq_ice , kwargs = (;z_range = zr_lo, xlabel = "θ_liq_ice")), (; func = APL.DryBubble_updrafts_area , kwargs = (;z_range = zr_lo, xlabel = "area")), (; func = APL.DryBubble_updrafts_w , kwargs = (;z_range = zr_lo, xlabel = "w")), diff --git a/src/profiles/ARM_SGP.jl b/src/profiles/ARM_SGP.jl index 9c26e1a..12e5981 100644 --- a/src/profiles/ARM_SGP.jl +++ b/src/profiles/ARM_SGP.jl @@ -30,6 +30,28 @@ function ARM_SGP_tke(::Type{FT}) where {FT} end end +""" TMP TKE profile for testing """ +function ARM_SGP_tke_prescribed(::Type{FT}) where {FT} + z_in = FT[22.0, 66.0, 110.0, 154.0, 198.0, 242.0, 286.0, 330.0, 374.0, 418.0, 462.0, 506.0, + 550.0, 594.0, 638.0, 682.0, 726.0, 770.0, 814.0, 858.0, 902.0, 946.0, 990.0, 1034.0, + 1078.0, 1122.0, 1166.0, 1210.0, 1254.0, 1298.0, 1342.0, 1386.0, 1430.0, 1474.0, + 1518.0, 1562.0, 1606.0, 1650.0, 1694.0, 1738.0, 1782.0, 1826.0, 1870.0, 1914.0, + 1958.0, 2002.0, 2046.0, 2090.0, 2134.0, 2178.0, 2222.0, 2266.0, 2310.0, 2354.0, + 2398.0, 2442.0, 2486.0, 2530.0, 2574.0, 2618.0, 2662.0, 2706.0, 2750.0, 2794.0, + 2838.0, 2882.0, 2926.0, 2970.0, 3014.0, 3058.0, 3102.0, 3146.0, 3190.0, 3234.0, + 3278.0, 3322.0, 3366.0, 3410.0, 3454.0, 3498.0, 3542.0, 3586.0, 3630.0, 3674.0, + 3718.0, 3762.0, 3806.0, 3850.0, 3894.0, 3938.0, 3982.0, 4026.0, 4070.0, 4114.0, + 4158.0, 4202.0, 4246.0, 4290.0, 4334.0, 4378.0] + tke_in = FT[0.2940, 0.0431, 0.0015, 0.0032, 0.0115, 0.0177, 0.0221, 0.0251, 0.0269, 0.0277, + 0.0274, 0.0263, 0.0242, 0.0212, 0.0174, 0.0128, 0.0078, 0.0032, 0.0006, 0.0001, + 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + return Dierckx.Spline1D(z_in, tke_in; k = 1) +end + """ [Brown2002](@cite) """ function ARM_SGP_time(::Type{FT}) where {FT} t_in = FT[0.0, 3.0, 6.0, 9.0, 12.0, 14.5] .* 3600 #LES time is in sec diff --git a/src/profiles/Bomex.jl b/src/profiles/Bomex.jl index ef2f834..05862da 100644 --- a/src/profiles/Bomex.jl +++ b/src/profiles/Bomex.jl @@ -32,6 +32,21 @@ Bomex_tke(::Type{FT}) where {FT} = z -> if (z <= 2500.0) else FT(0) end +""" TMP TKE profile for testing """ +function Bomex_tke_prescribed(::Type{FT}) where {FT} + z_in = FT[25.0, 75.0, 125.0, 175.0, 225.0, 275.0, 325.0, 375.0, 425.0, 475.0, 525.0, + 575.0, 625.0, 675.0, 725.0, 775.0, 825.0, 875.0, 925.0, 975.0, 1025.0, 1075.0, + 1125.0, 1175.0, 1225.0, 1275.0, 1325.0, 1375.0, 1425.0, 1475.0, 1525.0, 1575.0, + 1625.0, 1675.0, 1725.0, 1775.0, 1825.0, 1875.0, 1925.0, 1975.0, 2025.0, 2075.0, + 2125.0, 2175.0, 2225.0, 2275.0, 2325.0, 2375.0, 2425.0, 2475.0, 2525.0, 2575.0, + 2625.0, 2675.0, 2725.0, 2775.0, 2825.0, 2875.0, 2925.0, 2975.0] + tke_in = FT[0.3260, 0.4316, 0.4764, 0.4782, 0.4666, 0.4533, 0.4303, 0.3668, 0.2608, 0.1669, + 0.1264, 0.1129, 0.1127, 0.1183, 0.1258, 0.1322, 0.1367, 0.1403, 0.1434, 0.1456, + 0.1468, 0.1470, 0.1458, 0.1423, 0.1351, 0.1224, 0.1033, 0.0793, 0.0542, 0.0322, + 0.0162, 0.0068, 0.0024, 0.0007, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + return Dierckx.Spline1D(z_in, tke_in; k = 1) +end # Geostrophic velocity profiles """ :( """ diff --git a/src/profiles/Dycoms_RF01.jl b/src/profiles/Dycoms_RF01.jl index 8c912d1..64352df 100644 --- a/src/profiles/Dycoms_RF01.jl +++ b/src/profiles/Dycoms_RF01.jl @@ -24,3 +24,12 @@ Dycoms_RF01_tke(::Type{FT}) where {FT} = z -> if z <= 800.0 else FT(0) end +""" TMP TKE profile for testing """ +function Dycoms_RF01_tke_prescribed(::Type{FT}) where {FT} + z_in = FT[25.0, 75.0, 125.0, 175.0, 225.0, 275.0, 325.0, 375.0, 425.0, 475.0, 525.0, 575.0, 625.0, 675.0, 725.0, + 775.0, 825.0, 875.0, 925.0, 975.0, 1025.0, 1075.0, 1125.0, 1175.0, 1225.0, 1275.0, 1325.0, 1375.0, 1425.0, 1475.0] + tke_in = FT[0.2726, 0.5479, 0.6597, 0.7079, 0.7285, 0.7343, 0.7319, 0.7252, 0.7166, 0.7064, 0.6887, 0.6317, + 0.6362, 0.6266, 0.5832, 0.4633, 0.0504, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + return Dierckx.Spline1D(z_in, tke_in; k = 1) +end + diff --git a/src/profiles/GABLS.jl b/src/profiles/GABLS.jl index 05f63f5..0cc3fd0 100644 --- a/src/profiles/GABLS.jl +++ b/src/profiles/GABLS.jl @@ -22,6 +22,13 @@ GABLS_tke(::Type{FT}) where {FT} = FT(0) end +""" TMP TKE profile for testing """ +function GABLS_tke_prescribed(::Type{FT}) where {FT} + z_in = FT[25.0, 75.0, 125.0, 175.0, 225.0, 275.0, 325.0, 375.0] + tke_in = FT[0.4662, 0.3873, 0.2777, 0.0277, 0.0003, 5.89e-8, 0.0, 0.0] + return Dierckx.Spline1D(z_in, tke_in; k = 1) +end + """ :( """ GABLS_geostrophic_ug(::Type{FT}) where {FT} = z -> FT(8) """ :( """ diff --git a/src/profiles/LifeCycleTan2018.jl b/src/profiles/LifeCycleTan2018.jl index d489f06..54b8c89 100644 --- a/src/profiles/LifeCycleTan2018.jl +++ b/src/profiles/LifeCycleTan2018.jl @@ -41,6 +41,25 @@ LifeCycleTan2018_tke(::Type{FT}) where {FT} = FT(0) end +""" TMP TKE profile for testing """ +function LifeCycleTan2018_tke_prescribed(::Type{FT}) where {FT} + z_in = FT[20.0, 60.0, 100.0, 140.0, 180.0, 220.0, 260.0, 300.0, 340.0, 380.0, 420.0, 460.0, 500.0, + 540.0, 580.0, 620.0, 660.0, 700.0, 740.0, 780.0, 820.0, 860.0, 900.0, 940.0, 980.0, 1020.0, + 1060.0, 1100.0, 1140.0, 1180.0, 1220.0, 1260.0, 1300.0, 1340.0, 1380.0, 1420.0, 1460.0, + 1500.0, 1540.0, 1580.0, 1620.0, 1660.0, 1700.0, 1740.0, 1780.0, 1820.0, 1860.0, 1900.0, + 1940.0, 1980.0, 2020.0, 2060.0, 2100.0, 2140.0, 2180.0, 2220.0, 2260.0, 2300.0, 2340.0, + 2380.0, 2420.0, 2460.0, 2500.0, 2540.0, 2580.0, 2620.0, 2660.0, 2700.0, 2740.0, 2780.0, + 2820.0, 2860.0, 2900.0, 2940.0, 2980.0] + tke_in = FT[0.3216, 0.3469, 0.3570, 0.3442, 0.3285, 0.3168, 0.3072, 0.2935, 0.2611, 0.2014, + 0.1197, 0.0517, 0.0153, 0.0033, 0.0021, 0.0019, 0.0021, 0.0029, 0.0040, 0.0052, + 0.0065, 0.0078, 0.0092, 0.0106, 0.0119, 0.0130, 0.0138, 0.0142, 0.0140, 0.0131, + 0.0115, 0.0092, 0.0066, 0.0043, 0.0025, 0.0013, 0.0006, 0.0003, 0.0002, 0.0001, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0] + return Dierckx.Spline1D(z_in, tke_in; k = 1) +end + # Large-scale cooling """ [Tan2018](@cite) """ LifeCycleTan2018_dTdt(::Type{FT}) where {FT} = diff --git a/src/profiles/Nieuwstadt.jl b/src/profiles/Nieuwstadt.jl index 0dce104..08a3943 100644 --- a/src/profiles/Nieuwstadt.jl +++ b/src/profiles/Nieuwstadt.jl @@ -14,3 +14,42 @@ Nieuwstadt_tke(::Type{FT}) where {FT} = z -> if (z <= 1600.0) else FT(0) end + +""" TMP TKE profile for testing """ +function Nieuwstadt_tke_prescribed(::Type{FT}) where {FT} + z_in = FT[9.375, 28.125, 46.875, 65.625, 84.375, 103.125, 121.875, 140.625, 159.375, 178.125, 196.875, 215.625, + 234.375, 253.125, 271.875, 290.625, 309.375, 328.125, 346.875, 365.625, 384.375, 403.125, 421.875, + 440.625, 459.375, 478.125, 496.875, 515.625, 534.375, 553.125, 571.875, 590.625, 609.375, 628.125, + 646.875, 665.625, 684.375, 703.125, 721.875, 740.625, 759.375, 778.125, 796.875, 815.625, 834.375, + 853.125, 871.875, 890.625, 909.375, 928.125, 946.875, 965.625, 984.375, 1003.125, 1021.875, 1040.625, + 1059.375, 1078.125, 1096.875, 1115.625, 1134.375, 1153.125, 1171.875, 1190.625, 1209.375, 1228.125, + 1246.875, 1265.625, 1284.375, 1303.125, 1321.875, 1340.625, 1359.375, 1378.125, 1396.875, 1415.625, + 1434.375, 1453.125, 1471.875, 1490.625, 1509.375, 1528.125, 1546.875, 1565.625, 1584.375, 1603.125, + 1621.875, 1640.625, 1659.375, 1678.125, 1696.875, 1715.625, 1734.375, 1753.125, 1771.875, 1790.625, + 1809.375, 1828.125, 1846.875, 1865.625, 1884.375, 1903.125, 1921.875, 1940.625, 1959.375, 1978.125, + 1996.875, 2015.625, 2034.375, 2053.125, 2071.875, 2090.625, 2109.375, 2128.125, 2146.875, 2165.625, + 2184.375, 2203.125, 2221.875, 2240.625, 2259.375, 2278.125, 2296.875, 2315.625, 2334.375, 2353.125, + 2371.875, 2390.625, 2409.375, 2428.125, 2446.875, 2465.625, 2484.375, 2503.125, 2521.875, 2540.625, + 2559.375, 2578.125, 2596.875, 2615.625, 2634.375, 2653.125, 2671.875, 2690.625, 2709.375, 2728.125, + 2746.875, 2765.625, 2784.375, 2803.125, 2821.875, 2840.625, 2859.375, 2878.125, 2896.875, 2915.625, + 2934.375, 2953.125, 2971.875, 2990.625, 3009.375, 3028.125, 3046.875, 3065.625, 3084.375, 3103.125, + 3121.875, 3140.625, 3159.375, 3178.125, 3196.875, 3215.625, 3234.375, 3253.125, 3271.875, 3290.625, + 3309.375, 3328.125, 3346.875, 3365.625, 3384.375, 3403.125, 3421.875, 3440.625, 3459.375, 3478.125, + 3496.875, 3515.625, 3534.375, 3553.125, 3571.875, 3590.625, 3609.375, 3628.125, 3646.875, 3665.625, + 3684.375, 3703.125, 3721.875, 3740.625] + tke_in = FT[0.18704, 1.0066, 1.3312, 1.5290, 1.6691, 1.7759, 1.8612, 1.9314, 1.9902, 2.0403, 2.0834, 2.1207, + 2.1533, 2.1817, 2.2065, 2.2282, 2.2472, 2.2637, 2.2779, 2.2902, 2.3006, 2.3093, 2.3164, 2.3222, + 2.3266, 2.3297, 2.3318, 2.3328, 2.3328, 2.3320, 2.3303, 2.3275, 2.3245, 2.3191, 2.3142, 2.3071, + 2.2985, 2.2925, 2.2824, 2.2746, 2.2630, 2.2532, 2.2390, 2.2255, 2.2115, 2.2012, 2.1883, 2.1731, + 2.1615, 2.1482, 2.1353, 2.1155, 2.1043, 2.0874, 2.0662, 2.0580, 2.0419, 2.0221, 2.0049, 1.9880, + 1.9621, 1.9311, 1.8952, 1.8549, 1.8102, 1.7602, 1.7046, 1.6429, 1.5748, 1.5004, 1.4194, 1.3317, + 1.2373, 1.1361, 1.0283, 0.9145, 0.7963, 0.6770, 0.5626, 0.4616, 0.3830, 0.3303, 0.2988, 0.28, + 0.2668, 0.2553, 0.2438, 0.2314, 0.2178, 0.2030, 0.1863, 0.1676, 0.1465, 0.1228, 0.0969, 0.0704, + 0.0462, 0.0284, 0.0132, 0.0021, 1.25e-06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + return Dierckx.Spline1D(z_in, tke_in; k = 1) +end diff --git a/src/profiles/Rico.jl b/src/profiles/Rico.jl index 5660ebf..078dfab 100644 --- a/src/profiles/Rico.jl +++ b/src/profiles/Rico.jl @@ -58,3 +58,25 @@ function Rico_subsidence(::Type{FT}) where {FT} FT(-0.005) end end +""" TMP TKE profile for testing """ +function Rico_tke_prescribed(::Type{FT}) where {FT} + z_in = FT[20.0, 60.0, 100.0, 140.0, 180.0, 220.0, 260.0, 300.0, 340.0, 380.0, 420.0, 460.0, + 500.0, 540.0, 580.0, 620.0, 660.0, 700.0, 740.0, 780.0, 820.0, 860.0, 900.0, 940.0, + 980.0, 1020.0, 1060.0, 1100.0, 1140.0, 1180.0, 1220.0, 1260.0, 1300.0, 1340.0, 1380.0, + 1420.0, 1460.0, 1500.0, 1540.0, 1580.0, 1620.0, 1660.0, 1700.0, 1740.0, 1780.0, 1820.0, + 1860.0, 1900.0, 1940.0, 1980.0, 2020.0, 2060.0, 2100.0, 2140.0, 2180.0, 2220.0, 2260.0, + 2300.0, 2340.0, 2380.0, 2420.0, 2460.0, 2500.0, 2540.0, 2580.0, 2620.0, 2660.0, 2700.0, + 2740.0, 2780.0, 2820.0, 2860.0, 2900.0, 2940.0, 2980.0, 3020.0, 3060.0, 3100.0, 3140.0, + 3180.0, 3220.0, 3260.0, 3300.0, 3340.0, 3380.0, 3420.0, 3460.0, 3500.0, 3540.0, 3580.0, + 3620.0, 3660.0, 3700.0, 3740.0, 3780.0, 3820.0, 3860.0, 3900.0, 3940.0, 3980.0] + tke_in = FT[0.0976, 0.2051, 0.2481, 0.2623, 0.2642, 0.2608, 0.2550, 0.2427, 0.2037, 0.1469, + 0.1033, 0.0857, 0.0783, 0.0723, 0.0687, 0.0719, 0.0771, 0.0802, 0.0825, 0.0842, + 0.0853, 0.0860, 0.0865, 0.0868, 0.0869, 0.0869, 0.0868, 0.0866, 0.0864, 0.0861, + 0.0858, 0.0854, 0.0849, 0.0844, 0.0842, 0.0838, 0.0834, 0.0829, 0.0824, 0.0820, + 0.0816, 0.0815, 0.0815, 0.0816, 0.0810, 0.0785, 0.0724, 0.0617, 0.0477, 0.0325, + 0.0185, 0.0086, 0.0024, 0.0003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0] + return Dierckx.Spline1D(z_in, tke_in; k = 1) +end diff --git a/src/profiles/Soares.jl b/src/profiles/Soares.jl index 3e23c62..26599f1 100644 --- a/src/profiles/Soares.jl +++ b/src/profiles/Soares.jl @@ -19,3 +19,32 @@ Soares_tke(::Type{FT}) where {FT} = z -> if z <= 1600.0 else FT(0) end +""" TMP TKE profile for testing """ +function Soares_tke_prescribed(::Type{FT}) where {FT} + z_in = FT[12.5, 37.5, 62.5, 87.5, 112.5, 137.5, 162.5, 187.5, 212.5, 237.5, 262.5, 287.5, 312.5, 337.5, + 362.5, 387.5, 412.5, 437.5, 462.5, 487.5, 512.5, 537.5, 562.5, 587.5, 612.5, 637.5, 662.5, 687.5, + 712.5, 737.5, 762.5, 787.5, 812.5, 837.5, 862.5, 887.5, 912.5, 937.5, 962.5, 987.5, 1012.5, 1037.5, + 1062.5, 1087.5, 1112.5, 1137.5, 1162.5, 1187.5, 1212.5, 1237.5, 1262.5, 1287.5, 1312.5, 1337.5, + 1362.5, 1387.5, 1412.5, 1437.5, 1462.5, 1487.5, 1512.5, 1537.5, 1562.5, 1587.5, 1612.5, 1637.5, + 1662.5, 1687.5, 1712.5, 1737.5, 1762.5, 1787.5, 1812.5, 1837.5, 1862.5, 1887.5, 1912.5, 1937.5, + 1962.5, 1987.5, 2012.5, 2037.5, 2062.5, 2087.5, 2112.5, 2137.5, 2162.5, 2187.5, 2212.5, 2237.5, + 2262.5, 2287.5, 2312.5, 2337.5, 2362.5, 2387.5, 2412.5, 2437.5, 2462.5, 2487.5, 2512.5, 2537.5, + 2562.5, 2587.5, 2612.5, 2637.5, 2662.5, 2687.5, 2712.5, 2737.5, 2762.5, 2787.5, 2812.5, 2837.5, + 2862.5, 2887.5, 2912.5, 2937.5, 2962.5, 2987.5, 3012.5, 3037.5, 3062.5, 3087.5, 3112.5, 3137.5, + 3162.5, 3187.5, 3212.5, 3237.5, 3262.5, 3287.5, 3312.5, 3337.5, 3362.5, 3387.5, 3412.5, 3437.5, + 3462.5, 3487.5, 3512.5, 3537.5, 3562.5, 3587.5, 3612.5, 3637.5, 3662.5, 3687.5, 3712.5, 3737.5] + tke_in = FT[0.1909, 1.2210, 1.6242, 1.8691, 2.0420, 2.1735, 2.2781, 2.3638, 2.4353, 2.4959, + 2.5477, 2.5922, 2.6307, 2.6641, 2.6929, 2.7178, 2.7393, 2.7577, 2.7732, 2.7863, + 2.7971, 2.8057, 2.8125, 2.8176, 2.8210, 2.8230, 2.8236, 2.8231, 2.8213, 2.8186, + 2.8150, 2.8104, 2.8051, 2.7991, 2.7924, 2.7851, 2.7773, 2.7688, 2.7598, 2.7503, + 2.7403, 2.7297, 2.7185, 2.7068, 2.6946, 2.6821, 2.6695, 2.6569, 2.6435, 2.6268, + 2.6039, 2.5734, 2.5357, 2.4907, 2.4382, 2.3781, 2.3099, 2.2334, 2.1481, 2.0536, + 1.9496, 1.8356, 1.7113, 1.5765, 1.4310, 1.2756, 1.1118, 0.9437, 0.7788, 0.6293, + 0.5090, 0.4253, 0.3732, 0.3397, 0.3135, 0.2889, 0.2638, 0.2377, 0.2106, 0.1828, + 0.1543, 0.1251, 0.0954, 0.0660, 0.0393, 0.0185, 0.0029, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + return Dierckx.Spline1D(z_in, tke_in; k = 1) +end diff --git a/src/profiles/TRMM_LBA.jl b/src/profiles/TRMM_LBA.jl index e46c70c..acea950 100644 --- a/src/profiles/TRMM_LBA.jl +++ b/src/profiles/TRMM_LBA.jl @@ -78,6 +78,34 @@ function TRMM_LBA_tke(::Type{FT}) where {FT} FT(0) end end +""" TMP TKE profile for testing """ +function TRMM_LBA_tke_prescribed(::Type{FT}) where {FT} + z_in = FT[ 100., 300., 500., 700., 900., 1100., 1300., 1500., + 1700., 1900., 2100., 2300., 2500., 2700., 2900., 3100., + 3300., 3500., 3700., 3900., 4100., 4300., 4500., 4700., + 4900., 5100., 5300., 5500., 5700., 5900., 6100., 6300., + 6500., 6700., 6900., 7100., 7300., 7500., 7700., 7900., + 8100., 8300., 8500., 8700., 8900., 9100., 9300., 9500., + 9700., 9900., 10100., 10300., 10500., 10700., 10900., 11100., + 11300., 11500., 11700., 11900., 12100., 12300., 12500., 12700., + 12900., 13100., 13300., 13500., 13700., 13900., 14100., 14300., + 14500., 14700., 14900., 15100., 15300., 15500., 15700., 15900., + 16100., 16300.] + tke_in = FT[0.77933, 1.20996, 0.68111, 0.50049, 0.38931, 0.28228, 0.24522, + 0.31142, 0.39571, 0.46704, 0.46818, 0.48633, 0.58804, 0.58895, + 0.46073, 0.55947, 0.59531, 0.54179, 0.57923, 0.60628, 0.71299, + 1.05881, 1.12169, 1.32965, 1.42813, 1.47417, 1.51302, 1.53236, + 1.55512, 1.65502, 1.8333 , 1.9667 , 2.19276, 2.26542, 2.21068, + 2.23323, 2.3244 , 2.44234, 2.52974, 2.58182, 2.61271, 2.64374, + 2.68625, 2.73071, 2.75999, 2.77205, 2.77435, 2.78314, 2.79556, + 2.78548, 2.76144, 2.73695, 2.71783, 2.68483, 2.62265, 2.52798, + 2.44799, 2.44723, 2.49548, 2.51967, 2.45912, 2.28634, 2.04751, + 1.7938 , 1.56451, 1.37531, 1.17515, 0.96797, 0.61262, 0.26423, + 0.14929, 0.07465, 0.00635, 0. , 0. , 0. , 0. , + 0. , 0. , 0. , 0. , 0. ] + return Dierckx.Spline1D(z_in, tke_in; k = 1) +end + """ [Grabowski2006](@cite) """ function TRMM_LBA_radiation(::Type{FT}) where {FT}