brahmap.math.cg¶
An MPI-parallelized replacement of
scipy.sparse.linalg.cg().
It provides the conjugate gradient (CG) solver for the linear equation \(A \cdot x = b\) with an optional preconditioner \(M\) and an initial guess \(x0\).
This function replaces
np.linalg.norm()
with brahmap.math.parallel_norm() when
the parallel parameter is set to True. All matrices and vectors are assumed
to be real.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
A
|
LinearOperator
|
The primary linear operator or matrix \(A\) |
required |
b
|
NDArray[number]
|
The right-hand side vector (RHS) \(b\) |
required |
x0
|
NDArray[number] | None
|
The initial guess for the solution vector \(x0\), by default |
None
|
atol
|
float
|
The absolute tolerance for convergence, by default |
1e-12
|
maxiter
|
int
|
The maximum number of iterations allowed, by default |
100
|
M
|
LinearOperator | None
|
The preconditioner linear operator to accelerate convergence, by default |
None
|
callback
|
Callable | None
|
A callback function to be called after each iteration, by default |
None
|
parallel
|
bool
|
Whether to enable MPI parallelized computation of the 2-norm, by
default |
False
|
Returns:
| Type | Description |
|---|---|
tuple[NDArray[number], int]
|
A tuple containing the final computed output vector and the convergence status code. The status code 0 implies a successful convergence |
Source code in brahmap/math/linalg.py
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | |