This repository has been archived by the owner on Mar 1, 2023. It is now read-only.
/
groups.jl
91 lines (86 loc) · 2.04 KB
/
groups.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
abstract type DiagnosticsGroupParams end
"""
DiagnosticsGroup
Holds a set of diagnostics that share a collection interval, a filename
prefix, an output writer, an interpolation, and any extra parameters.
"""
mutable struct DiagnosticsGroup{DGP <: Union{Nothing, DiagnosticsGroupParams}}
name::String
init::Function
fini::Function
collect::Function
interval::String
out_prefix::String
writer::AbstractWriter
interpol::Union{Nothing, InterpolationTopology}
params::DGP
DiagnosticsGroup(
name,
init,
fini,
collect,
interval,
out_prefix,
writer,
interpol,
params = nothing,
) = new{typeof(params)}(
name,
init,
fini,
collect,
interval,
out_prefix,
writer,
interpol,
params,
)
end
function GenericCallbacks.init!(dgngrp::DiagnosticsGroup, solver, Q, param, t)
@info @sprintf(
"""
Diagnostics: %s
initializing at %8.2f""",
dgngrp.name,
t,
)
dgngrp.init(dgngrp, t)
dgngrp.collect(dgngrp, t)
return nothing
end
function GenericCallbacks.call!(dgngrp::DiagnosticsGroup, solver, Q, param, t)
@tic diagnostics
@info @sprintf(
"""
Diagnostics: %s
collecting at %8.2f""",
dgngrp.name,
t,
)
dgngrp.collect(dgngrp, t)
@toc diagnostics
return nothing
end
function GenericCallbacks.fini!(dgngrp::DiagnosticsGroup, solver, Q, param, t)
@info @sprintf(
"""
Diagnostics: %s
finishing at %8.2f""",
dgngrp.name,
t,
)
dgngrp.collect(dgngrp, t)
dgngrp.fini(dgngrp, t)
return nothing
end
include("atmos_les_default.jl")
include("atmos_gcm_default.jl")
include("atmos_les_core.jl")
include("atmos_les_default_perturbations.jl")
include("atmos_refstate_perturbations.jl")
include("atmos_turbulence_stats.jl")
include("atmos_mass_energy_loss.jl")
include("dump_init.jl")
include("dump_state.jl")
include("dump_aux.jl")
include("dump_spectra.jl")