Skip to content

tridiag

tridiag_solve(a, b, c, d, x, delta)

This stencil solves a square, k x k tridiagonal matrix system with coefficients a, b, and c, and vectors p and d using the Thomas algorithm:

###                                            ### ###  ###   ###  ###
#b(0), c(0),  0  ,  0  ,  0  ,   . . .  ,    0   # # x(0) #   # d(0) #
#a(1), b(1), c(1),  0  ,  0  ,   . . .  ,    0   # # x(1) #   # d(1) #
# 0  , a(2), b(2), c(2),  0  ,   . . .  ,    0   # # x(2) #   # d(2) #
# 0  ,  0  , a(3), b(3), c(3),   . . .  ,    0   # # x(3) #   # d(3) #
# 0  ,  0  ,  0  , a(4), b(4),   . . .  ,    0   # # x(4) #   # d(4) #
# .                                          .   # #  .   # = #   .  #
# .                                          .   # #  .   #   #   .  #
# .                                          .   # #  .   #   #   .  #
# 0  , . . . , 0 , a(k-2), b(k-2), c(k-2),   0   # #x(k-3)#   #d(k-3)#
# 0  , . . . , 0 ,   0   , a(k-1), b(k-1), c(k-1)# #x(k-2)#   #d(k-2)#
# 0  , . . . , 0 ,   0   ,   0   ,  a(k) ,  b(k) # #x(k-1)#   #d(k-1)#
###                                            ### ###  ###   ###  ###

Parameters:

Name Type Description Default
a FloatField

lower-diagonal matrix coefficients

required
b FloatField

diagonal matrix coefficients

required
c FloatField

upper-diagonal matrix coefficients

required
d FloatField

Result vector

required
x FloatField

The vector to solve for

required
delta FloatField

d post-pivot

required

masked_tridiag_solve(a, b, c, d, x, delta, mask)

Same as tridiag_solve but restricted to a subset of horizontal points.

Parameters:

Name Type Description Default
a FloatField

lower-diagonal matrix coefficients

required
b FloatField

diagonal matrix coefficients

required
c FloatField

upper-diagonal matrix coefficients

required
d FloatField

Result vector

required
mask BoolFieldIJ

Columns to execute the stencil on

required
x FloatField

The vector to solve for

required
delta FloatField

d post-pivot

required