Source code for planestress.analysis.solver

"""Methods used for solving linear systems and displaying info on tasks."""

from __future__ import annotations

from typing import TYPE_CHECKING

import numpy as np
import numpy.typing as npt
from scipy.sparse.linalg import spsolve


if TYPE_CHECKING:
    from scipy.sparse import csc_matrix


[docs] def solve_direct( k: npt.NDArray[np.float64], f: npt.NDArray[np.float64], ) -> npt.NDArray[np.float64]: """Solves a linear system using the direct solver method. Args: k: ``N x N`` matrix of the linear system. f: ``N x 1`` right hand side of the linear system. Returns: The solution vector to the linear system of equations. """ return np.linalg.solve(a=k, b=f)
[docs] def solve_direct_sparse( k: csc_matrix, f: npt.NDArray[np.float64], ) -> npt.NDArray[np.float64]: """Solves a sparse linear system using the direct solver method. Args: k: ``N x N`` sparse matrix of the linear system. f: ``N x 1`` right hand side of the linear system. Returns: The solution vector to the sparse linear system of equations. """ return spsolve(A=k, b=f) # type: ignore