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 |