Skip to content

Commit 9dd3b48

Browse files
Move Trixi imports to TrixiAtmo.jl for all the equations (#115)
* first commit * add import AbstractShallowWaterEquations in equations.jl * fix typo * increase atol to make CI pass for MacOS * update atol * increase coverage * Apply suggestions from code review Co-authored-by: Hendrik Ranocha <[email protected]> * format --------- Co-authored-by: Hendrik Ranocha <[email protected]>
1 parent a8f8d47 commit 9dd3b48

File tree

8 files changed

+91
-84
lines changed

8 files changed

+91
-84
lines changed

examples/elixir_shallowwater_cartesian_geostrophic_balance.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ summary_callback = SummaryCallback()
6666
# results
6767
analysis_callback = AnalysisCallback(semi, interval = 200,
6868
save_analysis = true,
69-
extra_analysis_errors = (:conservation_error,))
69+
extra_analysis_errors = (:conservation_error,),
70+
extra_analysis_integrals = (energy_internal,
71+
energy_kinetic, pressure))
7072

7173
# The SaveSolutionCallback allows to save the solution to a file in regular intervals
7274
save_solution = SaveSolutionCallback(dt = (tspan[2] - tspan[1]) / n_saves,

src/TrixiAtmo.jl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,15 @@ using ForwardDiff: derivative
2323
using HDF5: HDF5, h5open, attributes, create_dataset, datatype, dataspace
2424

2525
@reexport using StaticArrays: SVector, SMatrix
26-
@reexport import Trixi: waterheight, varnames, cons2cons, cons2prim, prim2cons,
27-
cons2entropy, boundary_condition_slip_wall, flux, flux_ec,
28-
flux_chandrashekar, FluxLMARS, energy_total,
29-
max_abs_speeds, max_abs_speed_naive, max_abs_speed, energy_kinetic,
30-
energy_total, entropy, pressure, have_nonconservative_terms
26+
@reexport import Trixi: waterheight, varnames, cons2cons, cons2prim,
27+
prim2cons, cons2entropy, entropy2cons, velocity,
28+
max_abs_speeds, max_abs_speed_naive, max_abs_speed,
29+
have_nonconservative_terms, boundary_condition_slip_wall,
30+
energy_kinetic, energy_internal, energy_total, entropy, pressure,
31+
flux, flux_ec, flux_chandrashekar, flux_wintermeyer_etal,
32+
flux_fjordholm_etal, flux_nonconservative_wintermeyer_etal,
33+
flux_nonconservative_fjordholm_etal, FluxLMARS
34+
3135
using Trixi: ln_mean, stolarsky_mean, inv_ln_mean
3236

3337
include("auxiliary/auxiliary.jl")

src/equations/covariant_advection.jl

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ end
4848

4949
# The conservative variables are the scalar conserved quantity and two contravariant
5050
# velocity components.
51-
function Trixi.varnames(::typeof(cons2cons), ::CovariantLinearAdvectionEquation2D)
51+
function varnames(::typeof(cons2cons), ::CovariantLinearAdvectionEquation2D)
5252
return ("h", "vcon1", "vcon2")
5353
end
5454

@@ -73,23 +73,23 @@ end
7373
end
7474

7575
# Scalar conserved quantity and three global velocity components
76-
function Trixi.varnames(::typeof(contravariant2global),
77-
::CovariantLinearAdvectionEquation2D)
76+
function varnames(::typeof(contravariant2global),
77+
::CovariantLinearAdvectionEquation2D)
7878
return ("h", "v1", "v2", "v3")
7979
end
8080

8181
# We will define the "entropy variables" here to just be the scalar variable in the first
8282
# slot, with zeros in all other positions
83-
@inline function Trixi.cons2entropy(u, aux_vars,
84-
equations::CovariantLinearAdvectionEquation2D)
83+
@inline function cons2entropy(u, aux_vars,
84+
equations::CovariantLinearAdvectionEquation2D)
8585
z = zero(eltype(u))
8686
return SVector(u[1], z, z)
8787
end
8888

8989
# Flux as a function of the state vector u, as well as the auxiliary variables aux_vars,
9090
# which contain the geometric information required for the covariant form
91-
@inline function Trixi.flux(u, aux_vars, orientation::Integer,
92-
equations::CovariantLinearAdvectionEquation2D)
91+
@inline function flux(u, aux_vars, orientation::Integer,
92+
equations::CovariantLinearAdvectionEquation2D)
9393
z = zero(eltype(u))
9494
J = area_element(aux_vars, equations)
9595
vcon = velocity_contravariant(u, equations)
@@ -110,17 +110,17 @@ end
110110
end
111111

112112
# Maximum contravariant wave speed with respect to specific basis vector
113-
@inline function Trixi.max_abs_speed(u_ll, u_rr, aux_vars_ll, aux_vars_rr,
114-
orientation::Integer,
115-
equations::CovariantLinearAdvectionEquation2D)
113+
@inline function max_abs_speed(u_ll, u_rr, aux_vars_ll, aux_vars_rr,
114+
orientation::Integer,
115+
equations::CovariantLinearAdvectionEquation2D)
116116
vcon_ll = velocity_contravariant(u_ll, equations) # Contravariant components on left side
117117
vcon_rr = velocity_contravariant(u_rr, equations) # Contravariant components on right side
118118
return max(abs(vcon_ll[orientation]), abs(vcon_rr[orientation]))
119119
end
120120

121121
# Maximum wave speeds in each direction for CFL calculation
122-
@inline function Trixi.max_abs_speeds(u, aux_vars,
123-
equations::CovariantLinearAdvectionEquation2D)
122+
@inline function max_abs_speeds(u, aux_vars,
123+
equations::CovariantLinearAdvectionEquation2D)
124124
return abs.(velocity_contravariant(u, equations))
125125
end
126126

src/equations/covariant_shallow_water.jl

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,15 @@ struct CovariantShallowWaterEquations2D{GlobalCoordinateSystem, RealT <: Real} <
7777
end
7878

7979
# Until we implement bottom topography, there are no nonconservative terms
80-
Trixi.have_nonconservative_terms(::CovariantShallowWaterEquations2D) = False()
80+
have_nonconservative_terms(::CovariantShallowWaterEquations2D) = False()
8181

8282
# The conservative variables are the height and contravariant momentum components
83-
function Trixi.varnames(::typeof(cons2cons), ::AbstractCovariantShallowWaterEquations2D)
83+
function varnames(::typeof(cons2cons), ::AbstractCovariantShallowWaterEquations2D)
8484
return ("h", "h_vcon1", "h_vcon2")
8585
end
8686

8787
# The primitive variables are the height and contravariant velocity components
88-
function Trixi.varnames(::typeof(cons2prim), ::AbstractCovariantShallowWaterEquations2D)
88+
function varnames(::typeof(cons2prim), ::AbstractCovariantShallowWaterEquations2D)
8989
return ("H", "vcon1", "vcon2")
9090
end
9191

@@ -94,13 +94,13 @@ end
9494
# equations.global_coordinate_system (e.g. spherical or Cartesian). This transformation
9595
# works for both primitive and conservative variables, although varnames refers
9696
# specifically to transformations from conservative variables.
97-
function Trixi.varnames(::typeof(contravariant2global),
98-
::AbstractCovariantShallowWaterEquations2D)
97+
function varnames(::typeof(contravariant2global),
98+
::AbstractCovariantShallowWaterEquations2D)
9999
return ("h", "h_v1", "h_v2", "h_v3")
100100
end
101101

102102
# Convenience functions to extract physical variables from state vector
103-
@inline Trixi.waterheight(u, ::AbstractCovariantShallowWaterEquations2D) = u[1]
103+
@inline waterheight(u, ::AbstractCovariantShallowWaterEquations2D) = u[1]
104104
@inline velocity_contravariant(u,
105105
::AbstractCovariantShallowWaterEquations2D) = SVector(u[2] /
106106
u[1],
@@ -110,24 +110,24 @@ end
110110
::AbstractCovariantShallowWaterEquations2D) = SVector(u[2],
111111
u[3])
112112

113-
@inline function Trixi.cons2prim(u, aux_vars,
114-
equations::AbstractCovariantShallowWaterEquations2D)
113+
@inline function cons2prim(u, aux_vars,
114+
equations::AbstractCovariantShallowWaterEquations2D)
115115
h, h_vcon1, h_vcon2 = u
116116
h_s = bottom_topography(aux_vars, equations)
117117
return SVector(h + h_s, h_vcon1 / h, h_vcon2 / h)
118118
end
119119

120-
@inline function Trixi.prim2cons(u, aux_vars,
121-
equations::AbstractCovariantShallowWaterEquations2D)
120+
@inline function prim2cons(u, aux_vars,
121+
equations::AbstractCovariantShallowWaterEquations2D)
122122
H, vcon1, vcon2 = u
123123
h_s = bottom_topography(aux_vars, equations)
124124
h = H - h_s
125125
return SVector(h, h * vcon1, h * vcon2)
126126
end
127127

128128
# Entropy variables are w = (g(h+hₛ) - (v₁v¹ + v₂v²)/2, v₁, v₂)ᵀ
129-
@inline function Trixi.cons2entropy(u, aux_vars,
130-
equations::AbstractCovariantShallowWaterEquations2D)
129+
@inline function cons2entropy(u, aux_vars,
130+
equations::AbstractCovariantShallowWaterEquations2D)
131131
h = waterheight(u, equations)
132132
h_s = bottom_topography(aux_vars, equations)
133133
vcon = velocity_contravariant(u, equations)
@@ -153,8 +153,8 @@ end
153153
end
154154

155155
# Entropy function (total energy) given by S = (h(v₁v¹ + v₂v²) + gh² + ghhₛ)/2
156-
@inline function Trixi.entropy(u, aux_vars,
157-
equations::AbstractCovariantShallowWaterEquations2D)
156+
@inline function entropy(u, aux_vars,
157+
equations::AbstractCovariantShallowWaterEquations2D)
158158
h = waterheight(u, equations)
159159
h_s = bottom_topography(aux_vars, equations)
160160
vcon = velocity_contravariant(u, equations)
@@ -165,8 +165,8 @@ end
165165

166166
# Flux as a function of the state vector u, as well as the auxiliary variables aux_vars,
167167
# which contain the geometric information required for the covariant form
168-
@inline function Trixi.flux(u, aux_vars, orientation::Integer,
169-
equations::CovariantShallowWaterEquations2D)
168+
@inline function flux(u, aux_vars, orientation::Integer,
169+
equations::CovariantShallowWaterEquations2D)
170170
# Geometric variables
171171
Gcon = metric_contravariant(aux_vars, equations)
172172
J = area_element(aux_vars, equations)
@@ -217,9 +217,9 @@ end
217217
end
218218

219219
# Maximum wave speed along the normal direction in reference space
220-
@inline function Trixi.max_abs_speed(u_ll, u_rr, aux_vars_ll, aux_vars_rr,
221-
orientation,
222-
equations::AbstractCovariantShallowWaterEquations2D)
220+
@inline function max_abs_speed(u_ll, u_rr, aux_vars_ll, aux_vars_rr,
221+
orientation,
222+
equations::AbstractCovariantShallowWaterEquations2D)
223223
# Geometric variables
224224
Gcon_ll = metric_contravariant(aux_vars_ll, equations)
225225
Gcon_rr = metric_contravariant(aux_vars_rr, equations)
@@ -237,8 +237,8 @@ end
237237
end
238238

239239
# Maximum wave speeds with respect to the covariant basis
240-
@inline function Trixi.max_abs_speeds(u, aux_vars,
241-
equations::AbstractCovariantShallowWaterEquations2D)
240+
@inline function max_abs_speeds(u, aux_vars,
241+
equations::AbstractCovariantShallowWaterEquations2D)
242242
vcon = velocity_contravariant(u, equations)
243243
h = waterheight(u, equations)
244244
Gcon = metric_contravariant(aux_vars, equations)

src/equations/covariant_shallow_water_split.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@ end
5858

5959
# This alternative flux formulation has non-conservative terms even in the absence of
6060
# variable bottom topography
61-
Trixi.have_nonconservative_terms(::SplitCovariantShallowWaterEquations2D) = True()
61+
have_nonconservative_terms(::SplitCovariantShallowWaterEquations2D) = True()
6262

6363
# Flux as a function of the state vector u, as well as the auxiliary variables aux_vars,
6464
# which contain the geometric information required for the covariant form.
6565
# Note that this flux does not include the pressure term.
66-
@inline function Trixi.flux(u, aux_vars, orientation::Integer,
67-
equations::SplitCovariantShallowWaterEquations2D)
66+
@inline function flux(u, aux_vars, orientation::Integer,
67+
equations::SplitCovariantShallowWaterEquations2D)
6868
# Geometric variables
6969
J = area_element(aux_vars, equations)
7070

@@ -80,7 +80,7 @@ Trixi.have_nonconservative_terms(::SplitCovariantShallowWaterEquations2D) = True
8080
end
8181

8282
@doc raw"""
83-
Trixi.flux_ec(u_ll, u_rr, aux_vars_ll, aux_vars_rr,
83+
flux_ec(u_ll, u_rr, aux_vars_ll, aux_vars_rr,
8484
orientation::Integer,
8585
equations::SplitCovariantShallowWaterEquations2D)
8686
@@ -97,9 +97,9 @@ paper for the special case of the Euclidean metric $G_{ab} = \delta_{ab}$:
9797
The use of entropy-stable split-form/flux-differencing formulations for covariant
9898
equations is an experimental feature and may change in future releases.
9999
"""
100-
@inline function Trixi.flux_ec(u_ll, u_rr, aux_vars_ll, aux_vars_rr,
101-
orientation::Integer,
102-
equations::SplitCovariantShallowWaterEquations2D)
100+
@inline function flux_ec(u_ll, u_rr, aux_vars_ll, aux_vars_rr,
101+
orientation::Integer,
102+
equations::SplitCovariantShallowWaterEquations2D)
103103
# Geometric variables
104104
J_ll = area_element(aux_vars_ll, equations)
105105
J_rr = area_element(aux_vars_rr, equations)

src/equations/equations.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
@muladd begin
22
#! format: noindent
33

4-
using Trixi: AbstractEquations, AbstractCompressibleEulerEquations
4+
using Trixi: AbstractEquations, AbstractCompressibleEulerEquations,
5+
AbstractShallowWaterEquations
56

67
@doc raw"""
78
AbstractCovariantEquations{NDIMS,

0 commit comments

Comments
 (0)