Skip to content

Commit b372325

Browse files
committed
wip
1 parent 0e2e0bb commit b372325

File tree

2 files changed

+10
-31
lines changed

2 files changed

+10
-31
lines changed

src/prognostic_equations/implicit/manual_sparse_jacobian.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,11 @@ function jacobian_cache(alg::ManualSparseJacobian, Y, atmos)
7171
approximate_solve_iters,
7272
) = alg
7373
FT = Spaces.undertype(axes(Y.c))
74-
CTh = CTh_vector_type(axes(Y.c))
7574

7675
DiagonalRow = DiagonalMatrixRow{FT}
7776
TridiagonalRow = TridiagonalMatrixRow{FT}
7877
BidiagonalRow_C3 = BidiagonalMatrixRow{C3{FT}}
79-
TridiagonalRow_ACTh = TridiagonalMatrixRow{Adjoint{FT, CTh{FT}}}
78+
TridiagonalRow_ACT12 = TridiagonalMatrixRow{Adjoint{FT, CT12{FT}}}
8079
BidiagonalRow_ACT3 = BidiagonalMatrixRow{Adjoint{FT, CT3{FT}}}
8180
BidiagonalRow_C3xACT12 =
8281
BidiagonalMatrixRow{typeof(zero(C3{FT}) * zero(CT12{FT})')}
@@ -150,7 +149,7 @@ function jacobian_cache(alg::ManualSparseJacobian, Y, atmos)
150149
MatrixFields.unrolled_map(
151150
name ->
152151
(name, @name(c.uₕ)) =>
153-
similar(Y.c, TridiagonalRow_ACTh),
152+
similar(Y.c, TridiagonalRow_ACT12),
154153
active_scalar_names,
155154
) : ()
156155
)...,

src/utils/utilities.jl

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -222,43 +222,23 @@ Extracts the `g³ʰ` sub-tensor from the `gⁱʲ` tensor.
222222
"""
223223
function g³ʰ(gⁱʲ)
224224
full_CT_axis = axes(gⁱʲ)[1]
225-
CTh_axis = if full_CT_axis == Geometry.Contravariant123Axis()
226-
Geometry.Contravariant12Axis()
225+
N = length(full_CT_axis)
226+
g³ʰ_components_view = view(Geometry.components(gⁱʲ), N:N, 1:(N - 1))
227+
g³ʰ_components = if full_CT_axis == Geometry.Contravariant123Axis()
228+
g³ʰ_components_view
227229
elseif full_CT_axis == Geometry.Contravariant13Axis()
228-
Geometry.Contravariant1Axis()
230+
vcat(g³ʰ_components_view, 0)
229231
elseif full_CT_axis == Geometry.Contravariant23Axis()
230-
Geometry.Contravariant2Axis()
232+
vcat(0, g³ʰ_components_view)
231233
else
232234
error("$full_CT_axis is missing either vertical or horizontal sub-axes")
233235
end
234-
N = length(full_CT_axis)
235236
return Geometry.AxisTensor(
236-
(Geometry.Contravariant3Axis(), CTh_axis),
237-
view(Geometry.components(gⁱʲ), N:N, 1:(N - 1)),
237+
(Geometry.Contravariant3Axis(), Geometry.Contravariant12Axis()),
238+
g³ʰ_components,
238239
)
239240
end
240241

241-
"""
242-
CTh_vector_type(space)
243-
244-
Extracts the (abstract) horizontal contravariant vector type from the given
245-
`AbstractSpace`.
246-
"""
247-
function CTh_vector_type(space)
248-
full_CT_axis = axes(eltype(Fields.local_geometry_field(space).gⁱʲ))[1]
249-
return if full_CT_axis == Geometry.Contravariant123Axis()
250-
Geometry.Contravariant12Vector
251-
elseif full_CT_axis == Geometry.Contravariant13Axis()
252-
Geometry.Contravariant1Vector
253-
elseif full_CT_axis == Geometry.Contravariant23Axis()
254-
Geometry.Contravariant2Vector
255-
elseif full_CT_axis == Geometry.Contravariant3Axis()
256-
Geometry.ContravariantNullVector
257-
else
258-
error("$full_CT_axis is missing either vertical or horizontal sub-axes")
259-
end
260-
end
261-
262242
has_topography(space::Spaces.FiniteDifferenceSpace) = false
263243
has_topography(space) = Spaces.grid(space).hypsography != Spaces.Grids.Flat()
264244

0 commit comments

Comments
 (0)