• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Atmospheric-Dynamics-GUF / PinCFlow.jl / 18600325485

17 Oct 2025 05:35PM UTC coverage: 64.858% (-1.1%) from 65.961%
18600325485

Pull #117

github

web-flow
Merge 6a432eb7e into 2192c9fbf
Pull Request #117: Removed density reconstructions and fluxes in Boussinesq mode and restructured the BC functions.

60 of 152 new or added lines in 13 files covered. (39.47%)

41 existing lines in 6 files now uncovered.

4889 of 7538 relevant lines covered (64.86%)

1417695.35 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

12.0
/src/Boundaries/set_tracer_vertical_boundaries!.jl
1
"""
2
```julia
3
set_tracer_vertical_boundaries!(
4
    state::State,
5
    variables::AbstractBoundaryVariables,
6
)
7
```
8

9
Enforce vertical boundary conditions for tracers by dispatching to the appropriate method.
10

11
```julia
12
set_tracer_vertical_boundaries!(
13
    state::State,
14
    variables::AbstractBoundaryVariables,
15
    tracer_setup::NoTracer,
16
)
17
```
18

19
Return for configurations without tracer transport.
20

21
```julia
22
set_tracer_vertical_boundaries!(
23
    state::State,
24
    variables::BoundaryPredictands,
25
    tracer_setup::TracerOn,
26
)
27
```
28

29
Enforce vertical boundary conditions for tracer predictands.
30

31
```julia
32
set_tracer_vertical_boundaries!(
33
    state::State,
34
    variables::BoundaryReconstructions,
35
    tracer_setup::TracerOn,
36
)
37
```
38

39
Enforce vertical boundary conditions for tracer reconstructions.
40

41
```julia
42
set_tracer_vertical_boundaries!(
43
    state::State,
44
    variables::BoundaryFluxes,
45
    tracer_setup::TracerOn,
46
)
47
```
48

49
Enforce vertical boundary conditions for vertical tracer fluxes.
50

51
```julia
52
set_tracer_vertical_boundaries!(
53
    state::State,
54
    variables::AbstractWKBBoundaryVariables,
55
    tracer_setup::TracerOn,
56
)
57
```
58

59
Enforce vertical boundary conditions for tracer WKB quantities by dispatching to the appropriate method.
60

61
```julia
62
set_tracer_vertical_boundaries!(
63
    state::State,
64
    variables::BoundaryWKBIntegrals,
65
    wkb_mode::Union{SteadyState, SingleColumn, MultiColumn},
66
)
67
```
68

69
Enforce vertical boundary conditions for tracer WKB integrals.
70

71
```julia
72
set_tracer_vertical_boundaries!(
73
    state::State,
74
    variables::BoundaryWKBTendencies,
75
    wkb_mode::Union{SteadyState, SingleColumn, MultiColumn},
76
)
77
```
78

79
Enforce vertical boundary conditions for tracer WKB tendencies.
80

81
# Arguments
82

83
  - `state`: Model state.
84

85
  - `variables`: Boundary-variable category.
86

87
  - `tracer_setup`: General tracer-transport configuration.
88

89
  - `wkb_mode`: Approximations used by MSGWaM.
90

91
# See also
92

93
  - [`PinCFlow.Boundaries.set_vertical_boundaries_of_field!`](@ref)
94
"""
95
function set_tracer_vertical_boundaries! end
96

97
function set_tracer_vertical_boundaries!(
6,180✔
98
    state::State,
99
    variables::AbstractBoundaryVariables,
100
)
101
    (; tracer_setup) = state.namelists.tracer
6,180✔
102
    set_tracer_vertical_boundaries!(state, variables, tracer_setup)
6,180✔
103
    return
6,180✔
104
end
105

106
function set_tracer_vertical_boundaries!(
6,180✔
107
    state::State,
108
    variables::AbstractBoundaryVariables,
109
    tracer_setup::NoTracer,
110
)
111
    return
6,180✔
112
end
113

114
function set_tracer_vertical_boundaries!(
×
115
    state::State,
116
    variables::BoundaryPredictands,
117
    tracer_setup::TracerOn,
118
)
119
    (; namelists, domain) = state
×
120
    (; tracerpredictands) = state.tracer
×
121

122
    for field in fieldnames(TracerPredictands)
×
123
        set_vertical_boundaries_of_field!(
×
124
            getfield(tracerpredictands, field),
125
            namelists,
126
            domain,
127
            -,
128
        )
129
    end
×
130

131
    return
×
132
end
133

UNCOV
134
function set_tracer_vertical_boundaries!(
×
135
    state::State,
136
    variables::BoundaryReconstructions,
137
    tracer_setup::TracerOn,
138
)
139
    (; namelists, domain) = state
×
140
    (; tracerreconstructions) = state.tracer
×
141

142
    for field in fieldnames(TracerReconstructions)
×
143
        set_vertical_boundaries_of_field!(
×
144
            getfield(tracerreconstructions, field),
145
            namelists,
146
            domain,
147
        )
148
    end
×
149

150
    return
×
151
end
152

UNCOV
153
function set_tracer_vertical_boundaries!(
×
154
    state::State,
155
    variables::BoundaryFluxes,
156
    tracer_setup::TracerOn,
157
)
158
    (; zz_size, nzz, ko, k0, k1) = state.domain
×
159
    (; tracerfluxes) = state.tracer
×
160

161
    @ivy if ko == 0
×
162
        for field in fieldnames(TracerFluxes)
×
163
            getfield(tracerfluxes, field)[:, :, k0 - 1, 3] .= 0.0
×
164
        end
×
165
    end
166

167
    @ivy if ko + nzz == zz_size
×
168
        for field in fieldnames(TracerFluxes)
×
169
            getfield(tracerfluxes, field)[:, :, k1, 3] .= 0.0
×
170
        end
×
171
    end
172

173
    return
×
174
end
175

UNCOV
176
function set_tracer_vertical_boundaries!(
×
177
    state::State,
178
    variables::AbstractWKBBoundaryVariables,
179
    tracer_setup::TracerOn,
180
)
NEW
181
    (; wkb_mode) = state.namelists.wkb
×
NEW
182
    set_tracer_vertical_boundaries!(state, variables, wkb_mode)
×
UNCOV
183
    return
×
184
end
185

186
function set_tracer_vertical_boundaries!(
×
187
    state::State,
188
    variables::BoundaryWKBIntegrals,
189
    wkb_mode::Union{SteadyState, SingleColumn, MultiColumn},
190
)
UNCOV
191
    (; namelists, domain) = state
×
192
    (; chiq0) = state.tracer.tracerforcings
×
193

194
    for field in (:uchi, :vchi, :wchi)
×
195
        set_vertical_boundaries_of_field!(
×
196
            getfield(chiq0, field),
197
            namelists,
198
            domain,
199
            +;
200
            layers = (1, 1, 1),
201
        )
202
    end
×
203

204
    return
×
205
end
206

UNCOV
207
function set_tracer_vertical_boundaries!(
×
208
    state::State,
209
    variables::BoundaryWKBTendencies,
210
    wkb_mode::Union{SteadyState, SingleColumn, MultiColumn},
211
)
UNCOV
212
    (; namelists, domain) = state
×
213
    (; chiq0) = state.tracer.tracerforcings
×
214

215
    for field in (:dchidt,)
×
216
        set_vertical_boundaries_of_field!(
×
217
            getfield(chiq0, field),
218
            namelists,
219
            domain,
220
            +,
221
        )
222
    end
×
223

224
    return
×
225
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc