Skip to content

Commit b477934

Browse files
authored
Merge pull request #571 from CliMA/he/refactor-2M-tests
lightly refactor 2M tests * Put args / assignments on one line where sensible * Print Float type in testset titles * Print whether limiters are used for a SB2006 rain pdf test
2 parents 505fe8d + c47b818 commit b477934

File tree

1 file changed

+40
-106
lines changed

1 file changed

+40
-106
lines changed

test/microphysics2M_tests.jl

Lines changed: 40 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,21 @@ function test_microphysics2M(FT)
2424

2525
# Seifert and Beheng 2006 parameters
2626
override_file = joinpath(
27-
pkgdir(CM),
28-
"src",
29-
"parameters",
30-
"toml",
31-
"SB2006_limiters.toml",
27+
pkgdir(CM), "src", "parameters", "toml", "SB2006_limiters.toml",
3228
)
3329
toml_dict = CP.create_toml_dict(FT; override_file)
3430
SB2006 = CMP.SB2006(toml_dict)
3531
SB2006_no_limiters = CMP.SB2006(toml_dict, false)
3632

3733
# Thermodynamics and air properties parameters
3834
aps = CMP.AirProperties(FT)
39-
wtr = CMP.WaterProperties(FT)
4035
tps = TD.Parameters.ThermodynamicsParameters(FT)
4136

4237
# Terminal velocity parameters
4338
SB2006Vel = CMP.SB2006VelType(FT)
4439
Chen2022Vel = CMP.Chen2022VelTypeRain(FT)
4540

46-
TT.@testset "2M_microphysics - unit tests" begin
41+
TT.@testset "2M_microphysics - unit tests ($FT)" begin
4742

4843
ρ = FT(1)
4944

@@ -93,7 +88,7 @@ function test_microphysics2M(FT)
9388

9489
end
9590

96-
TT.@testset "2M_microphysics - compare with Wood_2005" begin
91+
TT.@testset "2M_microphysics - compare with Wood_2005 ($FT)" begin
9792

9893
ρ = FT(1)
9994
q_liq = FT(0.5e-3)
@@ -149,7 +144,7 @@ function test_microphysics2M(FT)
149144
end
150145

151146
# 2M_microphysics - Seifert and Beheng 2006 double moment scheme tests
152-
TT.@testset "limiting lambda_r and x_r - Seifert and Beheng 2006" begin
147+
TT.@testset "limiting lambda_r and x_r - Seifert and Beheng 2006 ($FT)" begin
153148
#setup
154149
q_rai = [FT(0), FT(1e-3), FT(1e-4), FT(1e-2)]
155150
N_rai = [FT(1e1), FT(1e1), FT(1e3), FT(1e5)]
@@ -170,7 +165,7 @@ function test_microphysics2M(FT)
170165

171166
end
172167

173-
TT.@testset "2M_microphysics - Seifert and Beheng 2006 autoconversion and liquid self-collection" begin
168+
TT.@testset "2M_microphysics - Seifert and Beheng 2006 autoconversion and liquid self-collection ($FT)" begin
174169
#setup
175170
ρ = FT(1)
176171
q_liq = FT(0.5e-3)
@@ -260,7 +255,7 @@ function test_microphysics2M(FT)
260255
end
261256
end
262257

263-
TT.@testset "2M_microphysics - Seifert and Beheng 2006 accretion" begin
258+
TT.@testset "2M_microphysics - Seifert and Beheng 2006 accretion ($FT)" begin
264259
#setup
265260
ρ = FT(1.1)
266261
q_liq = FT(0.5e-3)
@@ -303,29 +298,26 @@ function test_microphysics2M(FT)
303298
end
304299
end
305300

306-
TT.@testset "2M_microphysics - Seifert and Beheng 2006 rain self-collection and breakup" begin
307-
#setup
308-
ρ = FT(1.1)
309-
q_rai = FT(1e-6)
310-
N_rai = FT(1e4)
301+
for SB in [SB2006, SB2006_no_limiters]
302+
sb_str = SB == SB2006 ? "with limiters" : "without limiters"
303+
TT.@testset "2M_microphysics - Seifert and Beheng 2006 rain self-collection and breakup ($sb_str) ($FT)" begin
304+
# Setup
305+
ρ = FT(1.1)
306+
q_rai = FT(1e-6)
307+
N_rai = FT(1e4)
311308

312-
for SB in [SB2006, SB2006_no_limiters]
313309
(; krr, κrr) = SB.self
314310
(; Deq, kbr, κbr) = SB.brek
315311
ρ0 = SB.pdf_r.ρ0
316312

317-
#action
318-
sc_rai =
319-
CM2.rain_self_collection(SB.pdf_r, SB.self, q_rai, ρ, N_rai)
320-
br_rai =
321-
CM2.rain_breakup(SB.pdf_r, SB.brek, q_rai, ρ, N_rai, sc_rai)
322-
sc_br_rai =
323-
CM2.rain_self_collection_and_breakup(SB, q_rai, ρ, N_rai)
313+
# Action
314+
sc_rai = CM2.rain_self_collection(SB.pdf_r, SB.self, q_rai, ρ, N_rai)
315+
br_rai = CM2.rain_breakup(SB.pdf_r, SB.brek, q_rai, ρ, N_rai, sc_rai)
316+
sc_br_rai = CM2.rain_self_collection_and_breakup(SB, q_rai, ρ, N_rai)
324317

325318
λr = CM2.pdf_rain_parameters(SB.pdf_r, q_rai, ρ, N_rai).Br
326319

327-
dNrdt_sc =
328-
-krr * N_rai * ρ * q_rai * (1 + κrr / λr)^-5 * sqrt(ρ0 / ρ)
320+
dNrdt_sc = -krr * N_rai * ρ * q_rai * (1 + κrr / λr)^-5 * (ρ0 / ρ)
329321

330322
Dr =
331323
(
@@ -339,14 +331,10 @@ function test_microphysics2M(FT)
339331

340332
dNrdt_br = -(ϕ_br + 1) * sc_rai
341333

342-
#test
334+
# Test
343335
TT.@test sc_rai dNrdt_sc rtol = 1e-6
344336
TT.@test CM2.rain_self_collection(
345-
SB.pdf_r,
346-
SB.self,
347-
FT(0),
348-
ρ,
349-
N_rai,
337+
SB.pdf_r, SB.self, FT(0), ρ, N_rai,
350338
) FT(0) atol = eps(FT)
351339
TT.@test br_rai dNrdt_br rtol = 1e-6
352340
TT.@test sc_br_rai isa NamedTuple
@@ -357,12 +345,9 @@ function test_microphysics2M(FT)
357345
q_rai = FT(0)
358346

359347
#action
360-
sc_rai =
361-
CM2.rain_self_collection(SB.pdf_r, SB.self, q_rai, ρ, N_rai)
362-
br_rai =
363-
CM2.rain_breakup(SB.pdf_r, SB.brek, q_rai, ρ, N_rai, sc_rai)
364-
sc_br_rai =
365-
CM2.rain_self_collection_and_breakup(SB, q_rai, ρ, N_rai)
348+
sc_rai = CM2.rain_self_collection(SB.pdf_r, SB.self, q_rai, ρ, N_rai)
349+
br_rai = CM2.rain_breakup(SB.pdf_r, SB.brek, q_rai, ρ, N_rai, sc_rai)
350+
sc_br_rai = CM2.rain_self_collection_and_breakup(SB, q_rai, ρ, N_rai)
366351

367352
#test
368353
TT.@test sc_rai FT(0) atol = eps(FT)
@@ -372,7 +357,7 @@ function test_microphysics2M(FT)
372357
end
373358
end
374359

375-
TT.@testset "2M_microphysics - Seifert and Beheng 2006 rain terminal velocity with limiters" begin
360+
TT.@testset "2M_microphysics - Seifert and Beheng 2006 rain terminal velocity with limiters ($FT)" begin
376361
#setup
377362
ρ = FT(1.1)
378363
q_rai = FT(1e-6)
@@ -393,22 +378,14 @@ function test_microphysics2M(FT)
393378
TT.@test vt_rai[2] vt1 rtol = 1e-6
394379

395380
TT.@test CM2.rain_terminal_velocity(
396-
SB2006,
397-
SB2006Vel,
398-
q_rai,
399-
ρ,
400-
FT(0),
381+
SB2006, SB2006Vel, q_rai, ρ, FT(0),
401382
)[1] 0 atol = eps(FT)
402383
TT.@test CM2.rain_terminal_velocity(
403-
SB2006,
404-
SB2006Vel,
405-
FT(0),
406-
ρ,
407-
N_rai,
384+
SB2006, SB2006Vel, FT(0), ρ, N_rai,
408385
)[2] 0 atol = eps(FT)
409386
end
410387

411-
TT.@testset "2M_microphysics - Seifert and Beheng 2006 modified rain terminal velocity without limiters" begin
388+
TT.@testset "2M_microphysics - Seifert and Beheng 2006 modified rain terminal velocity without limiters ($FT)" begin
412389
#setup
413390
ρ = FT(1.1)
414391
q_rai = FT(1e-6)
@@ -418,11 +395,7 @@ function test_microphysics2M(FT)
418395

419396
#action
420397
vt_rai = CM2.rain_terminal_velocity(
421-
SB2006_no_limiters,
422-
SB2006Vel,
423-
q_rai,
424-
ρ,
425-
N_rai,
398+
SB2006_no_limiters, SB2006Vel, q_rai, ρ, N_rai,
426399
)
427400

428401
λr =
@@ -448,60 +421,42 @@ function test_microphysics2M(FT)
448421
TT.@test vt_rai[2] vt1 rtol = 1e-6
449422

450423
TT.@test CM2.rain_terminal_velocity(
451-
SB2006_no_limiters,
452-
SB2006Vel,
453-
q_rai,
454-
ρ,
455-
FT(0),
424+
SB2006_no_limiters, SB2006Vel, q_rai, ρ, FT(0),
456425
)[1] 0 atol = eps(FT)
457426
TT.@test CM2.rain_terminal_velocity(
458-
SB2006_no_limiters,
459-
SB2006Vel,
460-
FT(0),
461-
ρ,
462-
N_rai,
427+
SB2006_no_limiters, SB2006Vel, FT(0), ρ, N_rai,
463428
)[2] 0 atol = eps(FT)
464429
end
465430

466-
TT.@testset "2M_microphysics - Chen 2022 rain terminal velocity" begin
431+
TT.@testset "2M_microphysics - Chen 2022 rain terminal velocity ($FT)" begin
467432
#setup
468433
ρ = FT(1.1)
469434
q_rai = FT(5e-4)
470435
N_rai = FT(1e4)
471436

472437
for SB in [SB2006, SB2006_no_limiters]
473438
#action
474-
vt_rai =
475-
CM2.rain_terminal_velocity(SB, Chen2022Vel, q_rai, ρ, N_rai)
476-
v_bigger =
477-
CM2.rain_terminal_velocity(SB, Chen2022Vel, q_rai * 2, ρ, N_rai)
439+
vt_rai = CM2.rain_terminal_velocity(SB, Chen2022Vel, q_rai, ρ, N_rai)
440+
v_bigger = CM2.rain_terminal_velocity(SB, Chen2022Vel, q_rai * 2, ρ, N_rai)
478441

479442
#test
480443
TT.@test vt_rai isa Tuple
481444
TT.@test vt_rai[1] 1.0738503635546666 rtol = 1e-6
482445
TT.@test vt_rai[2] 4.00592218028957 rtol = 1e-6
483446

484447
TT.@test CM2.rain_terminal_velocity(
485-
SB,
486-
Chen2022Vel,
487-
q_rai,
488-
ρ,
489-
FT(0),
448+
SB, Chen2022Vel, q_rai, ρ, FT(0),
490449
)[1] 0 atol = eps(FT)
491450
TT.@test CM2.rain_terminal_velocity(
492-
SB,
493-
Chen2022Vel,
494-
FT(0),
495-
ρ,
496-
N_rai,
451+
SB, Chen2022Vel, FT(0), ρ, N_rai,
497452
)[2] 0 atol = eps(FT)
498453

499454
TT.@test v_bigger[1] > vt_rai[1]
500455
TT.@test v_bigger[2] > vt_rai[2]
501456
end
502457
end
503458

504-
TT.@testset "2M_microphysics - Seifert and Beheng 2006 rain evaporation" begin
459+
TT.@testset "2M_microphysics - Seifert and Beheng 2006 rain evaporation ($FT)" begin
505460
#setup
506461
ρ = FT(1.1)
507462
q_rai = FT(1e-6)
@@ -540,37 +495,16 @@ function test_microphysics2M(FT)
540495
TT.@test evap.evap_rate_0 evap0 rtol = 1e-4
541496
TT.@test evap.evap_rate_1 evap1 rtol = 1e-5
542497
TT.@test CM2.rain_evaporation(
543-
SB,
544-
aps,
545-
tps,
546-
q,
547-
q_rai,
548-
ρ,
549-
FT(0),
550-
T,
498+
SB, aps, tps, q, q_rai, ρ, FT(0), T,
551499
).evap_rate_0 0 atol = eps(FT)
552500
TT.@test CM2.rain_evaporation(
553-
SB,
554-
aps,
555-
tps,
556-
q,
557-
FT(0),
558-
ρ,
559-
N_rai,
560-
T,
501+
SB, aps, tps, q, FT(0), ρ, N_rai, T,
561502
).evap_rate_1 0 atol = eps(FT)
562503
end
563504

564505
# test limit case: xr = 0 for SB with no limiters
565506
TT.@test CM2.rain_evaporation(
566-
SB2006_no_limiters,
567-
aps,
568-
tps,
569-
q,
570-
FT(0),
571-
ρ,
572-
N_rai,
573-
T,
507+
SB2006_no_limiters, aps, tps, q, FT(0), ρ, N_rai, T,
574508
).evap_rate_0 0 atol = eps(FT)
575509

576510
end
@@ -697,7 +631,7 @@ function test_microphysics2M(FT)
697631
end
698632
end
699633

700-
TT.@testset "2M_microphysics - Seifert and Beheng 2006 cloud distribution sanity checks" begin
634+
TT.@testset "2M_microphysics - Seifert and Beheng 2006 cloud distribution sanity checks ($FT)" begin
701635

702636
# example number concentration and specific content
703637
Nₗ = FT(1e3 * 1e6) # 1000 1/cm3

0 commit comments

Comments
 (0)